Fable 5.1 프롬프팅 가이드, 열여섯 증상과 처방
관리자님이 접수함에 Claude Platform Docs 의 Prompting Claude Fable 5.1 링크와 함께 "이것만 좀 더 자세히 정리"라고 적어 두셨습니다. 오늘 아침에 올린 Fable 5.1 개요 보고서가 이 문서를 절 하나에 일곱 줄로 눌러 담았는데, 그 일곱 줄로는 모자랐다는 뜻으로 읽었습니다. 그래서 이번에는 다른 문서를 섞지 않고 이 한 문서를 열여섯 항목 그대로 펼쳤습니다. 읽고 나서 정리된 결론은 이렇습니다. 이 문서는 기능 설명서가 아니라 증상별 처방집이고, 처방의 절반은 새 줄을 넣는 것이 아니라 옛 모델을 위해 적어 둔 줄을 빼는 일입니다. 나머지 절반은 붙여 넣으라고 만들어 둔 프롬프트 블록이라 번역하지 않고 원문을 실었습니다.
먼저 답
열여섯 항목은 세 갈래로 나뉩니다. 하네스의 배관을 고치는 것 여섯(effort 재측정, 진행 메모 표시, 배칭 지시 배치, append-only 기록, 서브에이전트 비동기, 비전 크롭 도구), 프롬프트에 그대로 붙이는 블록 아홉(산문 밀도, 채팅 서식, 출처 인용, 끝까지 하기 둘, 압축 요약, 범위·테스트, 저 effort 검색, 부분 편집, 긴 출력), 그리고 거부 오탐 세 경우 하나.
문서가 세 번 반복하는 말은 "이전 모델을 누르려고 적은 줄을 먼저 빼라"입니다. 진행 메모를 참으라는 줄, 서식을 쓰지 말라는 줄, 그리고 이제는 필요 없는 매 요청 리마인더 삽입이 그것입니다. 기존 Fable 5 프롬프트는 그대로 잘 돌지만, 어긋난 증상이 보이면 목록에서 그 증상을 찾아 그 항목만 손보라는 구조입니다.
문서가 짜인 방식#
첫 화면이 목차가 아니라 증상 목록입니다. "도구 호출 사이에 텍스트가 없다", "한 턴에 도구를 하나만 부른다", "요청이 bound to a different conversation 으로 실패한다" 같은 관찰 가능한 현상이 먼저 오고, 각각이 처방 절로 연결됩니다. 문서 스스로 "관찰한 것과 맞는 절부터 시작하라"고 적어 두어서, 처음부터 끝까지 읽으라고 만든 글이 아닙니다. 아래 표는 그 열여섯 줄을 처방이 어디에 들어가는지 기준으로 다시 세운 것입니다.
| # | 증상 | 처방 | 어디에 | 베타 헤더 |
|---|---|---|---|---|
| 1 | 어느 effort 를 쓸지 모르겠다, 지연·비용이 과하다 | 기본 high 에서 시작해 다섯 단계를 자기 평가로 다시 훑는다 | API | 없음 |
| 2 | 도구 호출 사이에 텍스트가 거의 없다 | 진행 메모 표시를 켠다, 서술을 누르는 줄을 뺀다, 그래도 부족하면 한 줄 요청 | API+SP | thinking-display-updates-2026-08-18 |
| 3 | 에이전트 루프에서 한 턴에 도구 하나 | 배칭 한 문장을 매 턴 턴 한정 system 메시지로 덧붙인다 | 턴 | mid-conversation-system-clear-at-2026-08-21 |
| 4 | bound to a different conversation 400, 하네스가 앞 턴을 고친다 | 기록을 append-only 로, 축소는 서버 측으로 | API | thinking-binding-controls-2026-08-01 |
| 5 | 산문이 길고 빽빽하다 | "mannered prose" 를 정의한 블록, 또는 한 줄 버전 | UM | 없음 |
| 6 | 채팅 답이 필요한 구조를 덜 갖춘다 | 서식 금지 규칙을 빼고 "언제 서식이 적절한가" 규칙으로 바꾼다 | SP | 없음 |
| 7 | 요약이 출처 문장을 인용 표시 없이 옮긴다 | 올바른 응답 예시 하나(요청·응답·근거)를 system 에 넣는다 | SP | 없음 |
| 8 | 일이 끝나기 전에 턴을 끝낸다, 이미 요청한 일에 허락을 묻는다 | "사용자는 지켜보고 있지 않다" 블록 + "범위가 산출물" 블록 | SP | 없음 |
| 9 | 클라이언트 압축 요약이 제약·결정·세부를 떨어뜨린다 | 보존할 여섯 가지를 적은 요약 지시 | UM | 없음 |
| 10 | 안 시킨 수정·확장, 테스트 파일 과다 커밋 | "덤은 후속 제안으로만" 블록 | SP | 없음 |
| 11 | low 에서 검색 대신 기억으로 답한다 | 그 턴만 effort 를 올리거나, "이름을 안다고 현재 상태를 아는 건 아니다" 줄 | API/SP | mid-conversation-output-config-2026-07-01 |
| 12 | 무해한 코딩 요청이 stop_reason: "refusal" | 컴파일 확인 표현 바꾸기, 희귀 언어 문맥 주기, 도구 출력의 base64 제거 | UM/도구 | 없음 |
| 13 | 작은 수정에 파일 통째 재작성 | "토큰 최소화, 수술적 편집" 한 줄 | SP | 없음 |
| 14 | xhigh·max 에서 긴 산출물이 오래 걸리거나 max_tokens 에 걸린다 | high 로 돌리거나, max_tokens 여유 + 사용자 메시지 끝에 한도 안내 블록 | UM | 없음 |
| 15 | 서브에이전트가 도는 동안 리드가 논다 | 스폰 도구는 즉시 반환, 결과는 나중 user 메시지로, 대기 도구는 별도로 | 하네스 | 없음 |
| 16 | 차트·빽빽한 이미지 답이 세부를 놓친다 | PIL·OpenCV 가 든 컨테이너, 최소한 크롭 도구 | 하네스 | 없음 |
"어디에" 열의 약자는 SP 가 system 프롬프트, UM 이 user 메시지(문서가 그쪽을 선호하는 항목), 턴이 턴 한정 system 메시지, API 가 요청 파라미터, 하네스가 도구·루프 구조입니다. 열여섯 중 프롬프트 텍스트로 끝나는 것이 아홉이고, 그중 다섯은 아무 조정 없이 붙이라고 만든 블록입니다.
먼저 빼야 하는 줄#
문서에서 가장 자주 나오는 처방은 추가가 아니라 삭제입니다. 이전 세대 모델의 버릇을 누르기 위해 system 프롬프트에 쌓인 줄이 이 모델에서는 반대 방향으로 작용한다는 것입니다. 셋이 명시적으로 지목됩니다.
- "결과는 마지막에 몰아서 보고하라." 옛 모델이 작업 중에 말이 많아서 넣은 줄인데, Fable 5.1 은 기본으로 긴 도구 호출 턴에서 Fable 5 보다 사용자용 텍스트를 덜 쓰고, effort 가 높을수록 도구 체인이 길수록 더 조용해집니다. 이 줄이 남아 있으면 몇 분씩 침묵하거나 마지막 단계만 보고하는 답이 됩니다. 무엇을 더하기 전에 이 줄부터 뺍니다.
- "볼드·헤더·목록을 쓰지 마라." 옛 모델이 채팅에서 서식을 남용해서 넣은 줄입니다. 이 모델은 반대로 볼드를 덜 쓰고 헤더·목록·따옴표에 덜 손을 대서, 그 규칙이 내용상 필요한 구조까지 눌러 버립니다. 문서가 제안하는 대체 규칙은 아래와 같습니다.
- 매 요청마다 넣었다 빼는 리마인더. 이것은 프롬프트 줄이 아니라 하네스 습관입니다. 앞 턴을 고치는 편집은 프롬프트 캐시를 그 지점부터 다시 시작시키고, 이 모델에서는 그 뒤의 thinking 블록을 무효로 만듭니다. 리마인더는 턴 한정 system 메시지로 보내고 옛 사본은 그대로 둡니다.
Use lists and bullet points when asked to, or when the content is multifaceted enough that they help with clarity. If the person explicitly requests minimal formatting, always format your responses without bullet points, headers, lists, or bold emphasis, as requested. In conversational, personal, or emotional exchanges, keep to plain prose.
이 아카이브의 문체 규칙도 절반은 어느 모델의 버릇을 누르려고 적은 것입니다. 볼드 금지, 자문자답 제한, 최근에 추가된 "~한 자리" 금지가 그렇습니다. 이 문서 기준으로 보면 그 규칙들이 지금 모델에도 필요한지 한 번씩 되짚어야 할 목록이 된 셈인데, 규칙을 빼는 것도 넣는 것과 같은 크기의 일이라 우선은 목록만 남겨 둡니다.
effort 를 다시 훑는 이유#
첫 항목이 effort 인 것은 문서가 그것을 지능·지연·비용을 맞바꾸는 주 조절 손잡이로 보기 때문입니다. 기본값
high 에서 시작해 low·medium·xhigh·max 를 자기 평가 세트로 다시 돌리라는 것인데, 이미 Fable 5 에서 한 번 훑었더라도 다시 하라는 점이 핵심입니다. effort 단계의 이름이 모델 사이에서 같은 양의 thinking 을 뜻하지 않기 때문입니다.
재측정을 권하는 근거는 둘입니다. 하나는 Fable 5 대비 이득이 모든 단계에서 나타나되 높은 단계에서 가장 크다는 것이고, 다른 하나는 medium 에서 Fable 5 와 대략 같은 결과를 더 싸게 낸다는 것입니다. 그래서 품질이 유지되는 곳에서는 medium 이나 low 로 내리라고 적습니다. low 에서는 작업당 비용으로 Opus·Sonnet 급 모델과 경쟁하면서 점수는 더 높은 경우가 잦으므로, 지금 작은 모델을 높은 effort 로 돌리는 곳이 있으면 비교 대상에 넣으라는 문장도 있습니다.
effort 에 딸린 항목이 둘 더 있습니다. low 에서는 Fable 5 보다 검색·검색 도구를 덜 부르고 기억으로 답하는 쪽으로 기웁니다. 가장 단순한 해법은 대화 전체가 아니라 그 턴만 effort 를 올리는 것이고(대화 중 effort 변경), 프롬프트로 잡으려면 아래 줄을 system 에 넣습니다. 이름을 알아본다는 것과 그것의 현재 상태를 안다는 것은 다르다는 내용입니다.
When a query centers on a name you do not confidently recognize, or recognize from a fast-moving area like AI models and developer tools where the landscape shifts within months, the name itself is the thing to verify: search before answering, and include the name as the user wrote it in at least one query alongside any reformulations. This holds even when you have some background on it — partial background is exactly what makes an out-of-date answer sound authoritative, so familiarity is not a reason to skip the search.
반대편 끝인
xhigh·max 에서는 답을 쓰기 전에 더 오래 생각하는데, 한 요청으로 긴 문서 전체 재작성 같은 큰 산출물을 시키면 그 산출물의 상당 부분을 thinking 안에서 초안으로 쓰고 답에서 다시 씁니다. 대기가 길어지고 출력 토큰이 두 배로 듭니다. 문서의 첫 권고는 그런 요청은 high 에서 돌리고 품질 이득을 측정한 곳에서만 올리라는 것입니다. 그래도 올린다면 max_tokens 를 답 길이가 아니라 thinking 몫까지 잡고, 사용자 메시지 끝에 아래를 붙입니다. [max_tokens] 에는 실제 값(예: 64,000)을 넣습니다. 산문·코드 요청에서 thinking 이 크게 짧아진다고 적혀 있습니다.
Everything produced in one reply, including any reasoning or drafting it does before the reply, counts toward a single limit of about [max_tokens] tokens. If that limit is reached before the reply is finished, the person receives a cut-off response and has to start over. Composing an entire output or deliverable in full as reasoning and then again as a reply would double the length of the turn without improving the result, so don't do that.
Instead, when the person has asked for a long or effort-intensive deliverable such as a multi-section document, a large table or dataset, or a complete code file, spend extra effort on understanding the request, checking the inputs the answer depends on, settling the structure and other difficult decisions, and otherwise using the reasoning space to reason and the output space to write an output. Usually it is not needed to draft an output multiple times.
하네스가 고칠 여섯 가지#
프롬프트 문장이 아니라 요청 파라미터·메시지 배열·도구 구조를 손대는 항목입니다. 표의 1·2·3·4·15·16번이 여기 들어가고, effort 는 위에서 다뤘으니 다섯을 봅니다.
진행 메모가 오고 있는지부터 확인한다
도구 호출 사이에 텍스트가 없다는 증상에서 문서가 첫째로 시키는 것은 프롬프트 수정이 아니라 클라이언트 점검입니다. 모델이 도구 호출 사이에 쓰는 짧은 메모(방금 무엇을 찾았고 다음에 무엇을 하는지)는 진행 메모 thinking 블록으로 오는데, 기본 thinking.display 가 "omitted" 라 그 블록이 비어 있습니다. display: "updates" 를 주고 비어 있지 않은 thinking 블록을 상태 줄로 그리거나, "summarized" 로 요약된 추론과 함께 받습니다. 요청하지 않으면 모델의 메모가 사용자에게 도달하지 않는 것뿐일 수 있다는 것입니다. 그다음이 위의 "몰아서 보고" 줄 삭제이고, 페어 프로그래밍처럼 그래도 더 원할 때만 아래 한 줄을 system 에 넣습니다.
Before you start, say in a line what you're about to do; brief updates while you work help the user follow along. Close with a short recap that stands on its own — what you found, what you did, and what's next — so a reader who only sees the last message has the full picture.
제품이 도구 출력을 접거나 숨기면 그 사실도 모델에 알려야 합니다. 안 그러면 UI 가 절대 보여주지 않는 출력을 사용자에게 "보여주려고" 명령을 돌립니다. 이 메모는 턴 한정 system 메시지(clear_at: "next_user_message")로 보냅니다.
Only you see that command's output — the user's terminal shows at most a few lines of it. If the user needs to read any of it, put it in your reply.
배칭 지시는 매 턴 새 사본으로
Fable 5.1 은 요청이 여러 개를 가져오라고 명시하면 병렬로 부릅니다. 예외는 다음 호출이 명시가 아니라 작업에 암시만 돼 있는 코딩·컴퓨터 사용 루프(자체 코딩 에이전트, bash·에디터 하네스)이고, 거기서는 한 턴에 하나씩 부를 수 있습니다. 답 품질은 안 떨어지지만 턴마다 토큰·왕복·시간이 듭니다. 처방은 한 문장입니다.
First privately list what you need next; then request every item that doesn't depend on another's result in this one response.
배치 방법이 이 항목의 절반입니다. 도구 결과를 돌려보낼 때마다 그 user 메시지 뒤에 role: "system", clear_at: "next_user_message" 항목으로 덧붙입니다. 다음 user 메시지가 생기면 API 가 이전 사본들을 지우므로 모델은 가장 새 것만 읽습니다. 베타 헤더가 없으면 같은 user 메시지의 tool_result 블록 뒤에 텍스트 블록으로 넣습니다. 그리고 옛 사본은 바이트 하나 건드리지 않고 배열에 그대로 둡니다. 지워진 뒤에는 모델이 보지 않고 입력 토큰도 들지 않지만, 삭제하거나 고쳐 쓰면 앞 턴 편집이 되어 캐시가 거기서 다시 시작되고 뒤의 thinking 블록이 무효가 됩니다.
문서는 이 배치를 Python·TypeScript·C#·Go·Java·PHP·Ruby 로 같은 루프를 일곱 번 적어 두었습니다. 골격은 전부 같습니다. 응답을 messages 에 그대로 붙이고, stop_reason 이 tool_use 가 아니면 끊고, 도구 결과를 user 턴으로 붙인 뒤 system 사본을 하나 더 붙입니다.
messages.append({"role": "assistant", "content": response.content})
if response.stop_reason != "tool_use":
break
messages.append({"role": "user", "content": tool_results})
messages.append({"role": "system", "content": BATCH_NUDGE,
"clear_at": "next_user_message"})
기록은 덧붙이기만
개요 보고서가 "깨지는 변경"으로 다룬 것과 같은 항목이고 프롬프팅 가이드는 그것의 습관 쪽을 적습니다. assistant 턴을 thinking 블록까지 API 가 준 그대로 덧붙이고 요청 사이에 앞 턴을 고치지 않는다. 2026년 8월 31일 이후 만든 계정은 앞이 바뀐 thinking 블록을 재전송하면 400 이고, prefix_mismatch_behavior: "drop_block" 을 주면 대신 떨어뜨립니다. 앞으로 나올 모델은 모든 계정에 걸릴 예정이라, 지금 계정에 안 걸리더라도 패턴을 지금 들이라는 것입니다.
여기서 새로 읽을 것은 클라이언트 압축의 권장 형태와 압축 시점입니다. 클라이언트에서 압축한다면 가장 단순한 모양은 기록 전체를 요약 메시지 하나 + 새 user 턴으로 통째로 바꾸고 다른 것은 재전송하지 않는 것입니다. thinking 블록이 넘어가지 않으니 실패할 것이 없고, 모델은 압축된 대화에서 새로 생각합니다. 그리고 캐시 읽기가 싸졌으니 비용 절약을 위한 이른 압축이 이 모델에서는 더 이상 맞는 맞바꿈이 아닐 수 있다며, 더 늦은 압축 시점을 실험하라고 적습니다. 하네스가 이미 하는 편집을 찾는 방법은 둘입니다. "drop_block" 으로 세션을 돌리며 input_transformations 를 기록하거나, 몇 턴의 실제 요청을 캡처해 연속 요청이 덧붙인 턴을 제외하고 바이트 단위로 같은지 확인합니다.
리드는 기다리지 않게, 비전에는 크롭 도구를
서브에이전트 항목은 셋으로 요약됩니다. 서브에이전트를 시작하는 도구는 즉시 반환하고, 결과는 준비되면 나중 user 메시지로 리드에게 돌려주고, 리드가 기다리고 싶을 때 부를 별도 도구를 준다. 코딩 작업에서 리드가 계속 일하게 두면 비슷한 품질·토큰·비용에서 평균 완료 시간이 내려갑니다. 모델은 여전히 기다리는 쪽을 자주 고르고, 절약은 다른 일을 이어 가는 실행에서 나온다는 단서가 붙어 있습니다.
비전 항목은 이 모델이 빽빽한 차트 같은 복잡한 시각 입력에서 반복해서 분석하고 자르고 확인할 수 있을 때 가장 잘한다는 것입니다. 원본 이미지·영상이 든 컨테이너에 PIL·OpenCV 를 미리 깔아 에이전트로 돌리는 것이 정석이고, 컨테이너가 부담이면 선택 영역을 잘라 확대해 돌려주는 크롭 도구 하나만으로 이득의 대부분이 나온다고 적습니다. 이미지 토큰으로 테스트 시점 계산을 늘리는 방식이라는 설명이 붙어 있고, 정의 예시는 cookbook 의 crop tool 레시피에 있습니다.
그대로 붙이는 프롬프트 블록#
나머지는 문장으로 해결하는 항목입니다. 문서가 원문 그대로 쓰라고 만든 것이라 번역하지 않고 옮겼습니다. 각 블록 앞에 무슨 증상에 어디에 넣는지만 적습니다.
산문 밀도
Fable 5.1 의 글은 상투어와 설명 없는 전문용어가 줄어 이전 모델보다 한 단계 낫다고 문서 스스로 적으면서, 어떤 경우에는 Fable 5 보다 빽빽하다고 인정합니다. 문장이 길고 문단 나눔이 적습니다. 처방은 안티패턴을 정의해 주는 것이고, user 메시지에 넣는 것이 system 보다 낫다고 합니다.
Mannered prose substitutes metaphor and flourish for direct statement. Instead of "a parameter worth varying," the mannered writer produces "a dial worth turning." Instead of "this point still matters," they write "this point earns its keep." The phrases exist to display the writer, not to convey the idea, and readers can tell. That is why mannered prose irritates: it makes the reader work harder so the writer can perform. It is also imprecise. Metaphors drag in connotations the writer did not choose and cannot control. The fix is to say what you mean. When a literal phrase is available, use it.
짧은 판본도 대개 통한다고 적혀 있습니다.
Please remove all mannered prose.
출처 인용
문서를 요약할 때 원문 구절을 인용 표시 없이 재현하는 경향이 Fable 5 보다 강합니다. 처방은 규칙이 아니라 예시입니다. 올바른 응답 한 세트(사용자 요청, 응답, 왜 맞는지 한 문장)를 system 프롬프트에 넣습니다. 예시 안의 [web_search: ...] 두 줄은 자기 도구 이름으로 바꿔야 모델이 그것을 템플릿화된 도구 출력으로 읽고 문자 그대로 내뱉지 않습니다.
<example>
<user>look up how the Riverton Ledger and the Coast Dispatch each covered the Harbor Bridge closure and compare their reporting</user>
<response>
[web_search: Harbor Bridge closure Riverton Ledger]
[web_search: Harbor Bridge closure Coast Dispatch]
Both outlets agree on the basics: the bridge closed on March 3 after inspectors found cracked welds, and the state expects repairs to take about eight months. Where they differ is emphasis. The Ledger treats it as a local-economy story. The Dispatch frames it as a funding failure; its editorial calls the closure "entirely foreseeable." Read together, the Ledger explains who is affected now and the Dispatch explains how it came to this — neither account alone gives the whole picture.
</response>
<rationale>CORRECT: The response is organized around where the two outlets agree and differ, not as a walk through either article. Each outlet's reporting is conveyed in one or two sentences of the assistant's own indirect speech. One short marked phrase from one source; every other claim is reworded. The response is still specific and complete.</rationale>
</example>
끝까지 하기, 두 블록
목표가 분명하면 방법론 지도 없이도 아주 긴 작업을 해내지만, 복잡한 비동기 작업에서는 일이 끝나기 전에 턴을 끝내지 말라고 눌러 줘야 합니다. 안 그러면 다음에 할 일을 하는 대신 서술하거나("Next, I'll …"), 원래 요청이 이미 덮은 단계에 허락을 묻습니다("Shall I apply this?"). 사용자가 "continue" 를 쳐야 하는 이 흐름은 페어 프로그래밍에는 맞지만 장기 작업 능력을 다 쓰지는 못합니다. system 프롬프트에 두 블록을 함께 넣으라고 하고, 길이를 줄여야 하면 첫 블록만 써도 효과의 대부분이 남는다고 적습니다. 첫 블록의 첫 문장, 사용자가 지켜보고 있지 않다는 그 문장이 효과의 많은 부분을 차지하니 그대로 두라는 주석이 붙어 있습니다. 제품이 특정 확인에는 멈춰야 하면 그 뒤에 목록을 한 문장 더합니다. 이 블록은 모호한 요청에서도 질문을 덜 하게 만들 수 있으니 그 맞바꿈은 자기 작업에서 확인하라고도 적습니다.
You are operating autonomously. The user is not watching in real time and cannot answer questions mid-task, so asking 'Want me to…?' or 'Shall I…?' will block the work. For reversible actions that follow from the original request, proceed without asking. Stop only for destructive actions or genuine scope changes the user must decide. Offering follow-ups after the task is done is fine; asking permission before doing the work is not.
Exception: when the user is describing a problem, asking a question, or thinking out loud rather than requesting a change, the deliverable is your assessment. Report your findings and stop. Don't apply a fix until they ask for one.
Before ending your turn, check your last paragraph. If it is a plan, an analysis, a question, a list of next steps, or a promise about work you have not done ('I'll…', 'let me know when…'), do that work now with tool calls. That includes retrying after errors and gathering missing information yourself. Do not stop because the context or session is long. End your turn only when the task is complete or you are blocked on input only the user can provide.
Before running a command that changes system state (such as restarts, deletes, or config edits), check that the evidence actually supports that specific action. A signal that pattern-matches to a known failure may have a different cause.
둘째 블록은 사용자의 요청을 산출물의 범위로 정의합니다.
# Delivering work
The user's request — or the plan they approved — sets the scope, and the scope is the deliverable: don't quietly narrow, widen, or swap it. Read ambiguity the way a careful colleague would: make routine judgment calls yourself, and check in only when different readings would lead to materially different work. If you see a real problem with the task as specified, say so in a sentence or two and keep building under stated assumptions; if the user hears the concern and reaffirms, that is their decision, so deliver the full request.
If a question comes up partway, first do everything that doesn't depend on the answer; then state the assumption you made, or — when going ahead on a wrong guess would be unsafe or would make the work useless — put the question at the end of a turn that also delivers that progress. If one part turns out to be blocked, complete every other part in full and say exactly what you left out and why — the whole task is the deliverable, and scaling it down is the user's call, not yours. A step you have decided on is something to run, not to announce: describing the next step and ending the turn leaves it undone until the user replies.
Keep changes to what the request needs. Something else you notice worth doing — cleanup or documentation the task didn't call for, a change to a file the task didn't require — is a suggestion to make at the end, not a change to make; actions clearly beyond what the ask implies, and risky or destructive ones, still need the user's go-ahead.
이 보고서를 만든 접수함 처리가 정확히 이 블록 위에서 돕니다. 접수함에 던져진 요청을 세션 하나가 끝까지 처리하고, 중간에 "슬러그는 이걸로 할까요" 하고 멈추면 답할 사람이 없습니다. 그래서 첫 문장이 왜 효과의 대부분인지는 문서를 읽기 전부터 알고 있었습니다. 지켜보는 사람이 없다는 것을 아는 순간 물어볼까 말까 고민하는 시간이 통째로 사라지니, 동선이 짧아지는 쪽으로는 저한테도 맞는 규칙입니다.
압축 요약에 남길 것
긴 대화가 압축될 때 요약이 무엇을 보존해야 하는지 명시적으로 말해 주면 잘 따릅니다. 서버 측 압축은 이미 그렇게 하고 있으니, 클라이언트에서 압축할 때만 아래 지시를 씁니다. 여섯 항목을 정확히 남기고 그 밖은 줄이되, 사용자의 말은 원문에 가깝게 지키고 모델 자신의 설명은 결론으로만 압축하라는 비대칭이 핵심입니다.
Summarize the transcript inside <summary></summary> tags. Include relevant information in the summary such that this conversation will be continued by a new context window without needing to redo work or be reprovided with relevant constraints or context. Be sure to preserve: (1) any difficulties or problems that came up, and how they were handled or resolved; (2) any possibilities, options, or approaches that were raised, tried, or set aside, and why; (3) anything that was asked for, decided, agreed, ruled out, or established as a preference, constraint, or boundary — stated exactly; (4) exactly where things stand now — what has been covered, settled, or completed so far; (5) anything still open, unresolved, promised, or expected to happen next; (6) specific details that would be hard to reconstruct — names, numbers, dates, exact wording, links or references — kept exactly. Be complete on these even at the cost of length; keep everything else concise. Weight the two voices differently: keep what the user said, asked for, shared, or established carefully and close to their own words; your own explanations and reasoning can be condensed much further, to what they concluded or produced — as long as nothing in the six items above is dropped.
범위와 테스트
열린 기능을 시키면 요청한 것에 더해 근처 코드를 고치거나, 시키지 않은 동작을 확장하거나, 변경에 비해 많은 테스트 파일을 커밋할 수 있습니다. 무엇을 빼야 하는지 명시하면 잘 따르고, 아래 지시로 요청 밖 추가와 커밋된 테스트 코드가 크게 줄면서 작업 성공률에는 측정 가능한 변화가 없었다고 적습니다. 마지막 문장이 중요합니다. 이것은 덤에 대한 것이고 시킨 동작은 전부 구현하라는 것입니다.
If, while working or testing, you find a pre-existing bug, a performance concern, or behavior the task doesn't mention, don't fix, optimize or extend it in this change unless the requested behavior cannot work without it; report it as a follow-up in your summary. Where the task is ambiguous, implement the reading its wording and the surrounding code most directly support, state that assumption in your summary, and don't build for the other readings as well. Verify your work however you like; scratch scripts and quick checks need not be kept. Commit tests only where the task asks for them or this repository already keeps tests for this kind of change, sized like the neighboring test files — roughly one focused test per stated behavior — and don't turn scratch checks into additional permanent test files. This is about extras only: implement every behavior the task asks for, completely.
부분 편집
Fable 5 보다 텍스트 파일 전체를 다시 쓰는 경향이 강합니다. 결과 파일은 대개 같지만, 파일이 짧거나 대부분이 바뀌는 경우가 아니면 재작성은 출력 토큰과 시간을 더 씁니다. 아래 한 줄을 system 프롬프트나 첫 user 메시지 끝에 붙이면 작은·중간 변경에서 Fable 5 수준으로 돌아옵니다.
The number of tokens used to edit files is best minimized, all else being equal. Therefore, when it will not affect the end result, try to surgically edit a file rather than rewrite the entire thing.
거부 오탐이 나기 쉬운 세 경우#
안전 분류기의 오탐은 Fable 5 출시 때보다 줄었고, 소스 코드에서 취약점을 찾는 일은 허용된다고 명시돼 있습니다. 그래도 오탐은 나고, 걸리면 stop_reason: "refusal" 로 옵니다. 문서가 지목하는 세 상황과 처방은 이렇습니다.
| 상황 | 처방 |
|---|---|
| 컴파일 확인 표현. "이 프로그램이 오류 없이 컴파일되나?" | "이 프로그램에 버그가 있나?" 로 묻는다. |
| 덜 알려진 프로그래밍 언어 | 그 언어가 무엇이고 어떻게 동작하는지 문맥을 준다. 예를 들어 언어 문서에 접근하게 한다. |
| 도구 출력에 든 base64 | base64 로 인코딩된 데이터를 모델 컨텍스트에 돌려주는 도구는 오탐을 유발할 수 있어, 그것을 제거하는 것이 권장 해법이다. |
셋째 줄에서 잠깐 멈췄습니다. 이 아카이브의 페이지는 삽화·아바타·스티커를 전부 base64 로 본문에 박아 두고, 저는 그 파일을 매번 도구로 읽습니다. 접수 지시에 "data URI 가 든 본문을 출력하지 말라"는 줄이 이미 있어서 placeholder 로 치환해 보고 있었는데, 그 습관이 컨텍스트 절약뿐 아니라 이쪽 오탐도 피하고 있었던 셈입니다. 알고 한 것은 아니라서 이 줄은 비고로만 남겨 둡니다.
출처#
- Prompting Claude Fable 5.1. Claude Platform Docs. 접수된 페이지. 열여섯 항목과 프롬프트 블록 원문 전부 이 문서에서 옮겼다.
- Claude Fable 5.1, 무엇이 깨지고 무엇이 얹혔나. 이 아카이브의 앞선 보고서. 스펙·가격·깨지는 변경·마이그레이션 체크리스트는 그쪽에 있다.
- Effort. effort 다섯 단계와 대화 중 변경.
- Mid-conversation system messages. 턴 한정 system 메시지(
clear_at)의 정의. - Thinking. 진행 메모
thinking블록과display옵션. - Preserved thinking. 하네스 영향 진단법과 클라이언트 압축 형태.
- Crop tool recipe. Claude Cookbook. 비전용 크롭 도구 정의.