這是 Claude Fable 5 的完整 A–Z 解析:它到底是什麼,以及如何像一個 100 倍工程師一樣使用它。
這將徹底改變你使用 Claude 的方式。
在忘記之前,先把這 8 個建置項目收藏起來
簡介
你手上擁有目前最強大的通用模型,但你卻還在一個接一個地輸入提示詞。本指南將解決這個問題。
以下是截至 2026 年 7 月的現狀。Fable 5 可以無人值守地運行數小時,派遣自己的子 Agent,並在一夜之間完成一週的工作。它也是按量計費的(透過使用額度,輸入 $10/M,輸出 $50/M),當範圍沒有被明確界定時,它會超額交付,而且它為自己錯誤辯護的說服力,比大多數人為自己正確答案辯護的說服力還要強。
隨便使用的話,它是一種產生令人印象深刻但錯誤東西的昂貴方式。但在一個系統內使用它,它就是你每天花三美元就能僱到的最接近員工的東西。
本指南將建立這個系統。不是它的哲學:而是實際的檔案,按順序排列,每個步驟之後都有一個檢查點,這樣你在疊加下一個部分之前,就能知道它是否正常運作。
你最終將會擁有:
- 一個模型無法協商的 CLAUDE.md(建置 1)
- 一個日常循環,其中 Fable 5 做出所有決策,但幾乎不寫入任何 Token,由廉價模型執行工作,一個獨立的驗證者對其進行評分,而一個 Bash 腳本擁有最終決定權(建置 2-3)
- 一個信任帳本,根據測量到的通過率,自動授予和撤銷每個技能的自主權(建置 4)
- 一個目標目錄,你完成的所有事情都會每天、永久地持續被重新驗證,這樣就不會有東西默默地腐爛(建置 5)
- 一個能自我執行而非讓你吃驚的預算(建置 6)
- 四個可選循環(法定人數、棘輪、對練、堆肥),每個循環都附帶告訴你何時安裝它們的條件(建置 7)
- 一個 Cron 排程、一份針對系統可能引發的每個警報的運行手冊,以及一個 30 天的信任排程,讓它從受監督狀態過渡到自我擴展狀態。
這份指南是為誰準備的。 任何擁有儲存庫、終端機以及 Claude Code 訂閱或 API 金鑰的人。這些範例帶有程式碼風格,因為循環是圍繞程式碼庫發展起來的,但目標系統和一半的循環同樣適用於發票、報告和閱讀清單;其判斷條件只是 Shell 命令。
如何閱讀。 按順序閱讀,並執行檢查。建置 0 是官方的 Anthropic 設定和提示語言;之後的所有內容都是建立在它之上的系統。每個建置需要 10 到 20 分鐘。最後的 30 天不是閱讀時間;它們是漸進式信任排程,在此期間,系統將贏得在沒有你的情況下運行的權利。總動手時間:約 2 小時。
支撐一切的三大原則,讓你在閱讀之前就能預測任何設計決策:
- 規則是法律,不是建議。 每一條規則都有一個編號、一個「永不」,或者一個檢查它的命令。任何比這更寬鬆的東西都會被優化掉。
- 沒有人能給自己的作業打分。 規劃者、執行者、驗證者和閘門是四個不同的角色,而最後一個是確定性的。
- 任何曾經通過的東西都不會無人監管。 完成的工作會升級為一個持續被重新驗證的不變量。一個你只驗證一次的目標,只是一個帶有時間戳的假設。
從這裡開始不再有長篇大論。八個建置,每個都包含檔案、命令和一個檢查點。
先決條件
1claude CLI (Claude Code) 並具備 Fable 5 存取權 # 啟用使用額度,設定 /usage-credits 上限2llm CLI + OpenRouter 金鑰 # llm install llm-openrouter3jq, gh, git, make, cron4一個帶有測試命令的儲存庫
你正在建置的內容
1your-repo/2 CLAUDE.md # 建置 1:基本法則3 loop/4 loop.sh # 建置 3:心跳5 conductor.md # 建置 3:路由提示詞6 triage.md # 建置 3:廉價讀取器提示詞7 contract.md # 建置 2:三個清單8 workers/implement.md # 建置 39 workers/verify.md # 建置 310 guardrails/verify.sh # 建置 2:確定性閘門11 scripts/trust-log.sh # 建置 412 scripts/log-cost.sh # 建置 613 scripts/cost-check.sh # 建置 614 quorum.sh # 建置 7(可選)15 verify-goals.sh # 建置 516 goals/ # 建置 5:長期目標17 skills/ # 建置 4:每個員工一個檔案18 memory/19 STATE.md trust.tsv goal-ledger.tsv dispatch.tsv usage.log20 Makefile # 建置 8:tick / queue / trust / audit / dream
建置 0:配置引擎(來自官方 Fable 5 文件)
此建置中的所有內容均來自 Anthropic 自己的文件。在撰寫任何你自己的檔案之前,先設定好這些。
規格表:
設定
值
來源
模型字串
claude-fable-5
模型概覽
上下文 / 輸出
1M tokens / 每次請求最多 128k 輸出
入門文件
價格
輸入 $10/M,輸出 $50/M
入門文件
思考
自適應,始終開啟;
thinking: {type:"disabled"}
會被拒絕;思考輸出僅為摘要形式
入門 + 努力程度文件
努力程度
low
medium
high
xhigh
max
;
high
= 預設值 = 省略該參數
努力程度文件
API 形狀
output_config: {"effort": "..."}
在 Messages API 上
努力程度文件
五個會改變你建置方式的官方事實:
- max_tokens 是思考加上回應文字的硬性上限。 在 high 和 xhigh 努力程度下,將其設定為一個較大的值(從 64k 開始),否則 Fable 會在思考過程中空間不足。這適用於本指南中的每個 claude -p 呼叫。
- xhigh 官方用於「需要數百萬 Token 預算的長期代理任務(超過 30 分鐘)」。 在這個系統中,這是指揮官的位置,而不是其他任何東西。文件也提到,在 Fable 5 上使用較低的努力程度「通常會超過先前模型在 xhigh 下的表現」,因此請抵制升級 Worker 的誘惑。
- 拒絕是 HTTP 200。 Fable 5 會執行安全分類器(攻擊性網路、生物/生命科學、推理提取)。被拒絕的請求會以 stop_reason: "refusal" 作為 SUCCESS 回應返回。你的腳本必須檢查停止原因,而不是退出碼。官方補救措施:配置伺服器端後備方案或 SDK 中介軟體,以重新路由到 Opus 4.8。
- 永遠不要要求 Fable 複述其推理過程。 提示詞或技能中如果包含「展示你的思考過程」或「在回應中解釋你的推理」,會觸發 reasoning_extraction 拒絕類別並提升後備方案。在遷移時,審計每一個舊技能是否有此問題。請改為讀取結構化的思考區塊。
- 回合設計上就很長。 在較高的努力程度下,困難任務每次請求需要運行數分鐘;自主運行則會延續數小時。調整客戶端超時時間,並非同步檢查運行狀態(使用排程任務,而非阻塞等待)。這就是為什麼心跳是 cron,而不是一個阻塞循環。
官方提示詞包。 Anthropic 針對 Fable 5 的已知行為提供了經過測試的提示詞語言。這些內容應逐字放入你的提示詞中;不要將它們改寫得更簡略:
- 反過度規劃(適用於指揮官和任何互動式會話):
1當你有足夠的資訊可以行動時,就行動。不要重新推導對話中已經確立的事實,2重新爭論使用者已經做出的決定,或敘述你不會採取的選項。3如果你正在權衡一個選擇,請給出建議,而不是詳盡的調查。
- 反過度工程(適用於每個 Worker 提示詞;這是圍繞超額交付的官方圍欄):
1不要添加任務要求之外的功能、重構或引入抽象層。2錯誤修復不需要周邊的清理工作。不要為假設的未來需求進行設計:3做最簡單且有效的事情。不要為不可能發生的場景添加錯誤處理或驗證。4僅在系統邊界進行驗證。
- 基於證據的進度報告(適用於任何長時間運行;在 Anthropic 的測試中,這幾乎消除了虛假的狀態報告):
1在報告進度之前,根據本次會話中的工具結果審計每個聲明。2只報告你能指出證據的工作;如果某件事尚未驗證,請明確說明。3如果測試失敗,請連同輸出一起說明;如果某個步驟被跳過,也請說明。
- 自主管線提醒(適用於每個由 cron 驅動的提示詞;消除「我現在要執行 X」的過早停止):
1你正在自主運行。使用者沒有在觀看,也無法在任務中途回答問題。2對於遵循原始請求的可逆操作,請直接進行,無需詢問。3在結束你的回合之前,檢查你的最後一段:如果它是一個計劃、一個問題或一個關於你尚未完成工作的承諾,4請立即使用工具呼叫來完成該工作。僅在任務完成或你因只有使用者才能提供的輸入而受阻時才結束。
- 官方記憶格式(適用於夢想家和 memory/learnings/):
1每個檔案儲存一個經驗教訓,並在頂部附上一行摘要。2記錄修正和已確認的方法,包括它們為何重要。3不要儲存儲存庫已經記錄的內容;更新現有筆記而非重複;4刪除後來證明是錯誤的筆記。
- 官方驗證者指示(文件直接說明:「分離的、全新上下文的驗證者子 Agent 往往優於自我批評」):
1建立一個方法,在建置過程中每隔 [X] 時間檢查你自己的作品。2每隔 [X 時間間隔] 運行此方法,使用子 Agent 根據規格驗證你的工作。
文件中值得遵守的兩個建置順序建議: 從你難度範圍的頂端開始(只在簡單工作負載上測試 Fable 會低估它;給它最難的未解決問題,讓它自己界定範圍),以及重構舊技能(為先前模型編寫的指令通常對 Fable 5 來說過於具體,並會降低輸出品質;如果沒有某個指令時預設表現更好,就刪除該指令)。
檢查 0: 你腳本中的每個 claude -p 呼叫在支援的情況下都有一個明確的大型 max_tokens;你的腳本會檢查 stop_reason: "refusal";任何提示詞或技能中都沒有出現「展示你的思考過程」。
建置 1:基本法則 (CLAUDE.md)
為什麼,一句話:Fable 遵循法律並圍繞建議進行優化,所以每一行都需要一個編號、一個「永不」,或者一個檢查它的命令。
檔案的規則:四個區塊,少於 150 行,沒有「一步步思考」(推理始終開啟;那些是付費 Token),沒有預先定義的 Agent 角色(Fable 設計的團隊比你預先定義的要好),主要是停止標誌。
建立 CLAUDE.md:
1# CLAUDE.md23## 永不(法律;例外情況需要先詢問)4- 未經詢問,一次提交中不得超過 200 行改動。5- 未經監管,不得觸碰 src/auth/、src/billing/、migrations/ 或生產環境配置。6- 不得根據你自己的評估來報告工作已完成。完成 = 檢查通過。7- 不得發明密鑰、端點或慣例。停下來詢問。8- 不得添加依賴項。在 STATE.md 中提出建議並停下來。9- 在任何循環內部,努力程度不得超過 high。xhigh 僅用於一次性審查。10- 不得編輯或刪除測試以使其通過。那永遠是失敗。11- 不得在回應文字中複述、轉錄或解釋你的內部推理。12 (官方:在 Fable 5 上會觸發 reasoning_extraction 拒絕。)13- 當 /goal 條件通過時,在報告成功之前,先使用該條件作為其判斷條件來撰寫 goals/<name>.md。1415## 調度(路由每個任務;首個匹配優先;記錄到 memory/dispatch.tsv)16| 模型 | 邊際成本 | 胃口 | 智慧 | 品味 |17|-----------------|----------|------|------|------|18| claude-fable-5 | 2 (額度) | 3 | 10 | 10 |19| claude-opus-4-8 | 7 (訂閱) | 6 | 8 | 9 |20| claude-sonnet-5 | 9 (訂閱) | 8 | 7 | 7 |21| codex (第二訂閱) | 9 | 10 | 9 | 5 |221. 決策(規劃/審查/路由/僵局)-> fable-5,努力程度 high,唯讀。232. 讀取 >50k tokens(日誌/PDF/截圖)-> codex。絕不使用 fable。243. 交付給使用者(UI/API/文案)-> 品味 >= 8 獲得最終審核。254. 規格完成 -> sonnet-5,努力程度 medium。265. 其他情況 sonnet-5;未命中時無需詢問即可提升一級。2728## 詞彙29- 「智慧」= 在無監督下處理過的最困難問題30- 「品味」= UI/UX、程式碼品質、API 設計、文案31- 「完成」= 判斷條件通過;沒有其他含義32- 「小」= 少於 50 行改動;「快」= 花費你少於 10 分鐘33- 「清理」= 行為相同,前後 verify.sh 皆為綠色3435## 完成36- 每個任務在開始工作前都有一個機器可檢查的 done_when。37- 一個既未見過計劃也未見過草稿的全新上下文 Agent 會根據它進行驗證。38- guardrails/verify.sh 擁有最終決定權。39- 偏差:選擇保守選項,記錄到 IMPLEMENTATION.md,繼續。40- 製造者和檢查者意見不一致兩次 -> 停止,排入人類佇列。
將數字和路徑修改為你自己的。特定於工作流程的內容(PR 流程、發布檢查清單)放在 skills/ 中,而不是這裡。
檢查 1: 對於每一行,問:模型是否可能 80% 遵守並聲稱成功?如果是,用一個數字或一個「永不」來重寫它。wc -l CLAUDE.md 少於 150
建置 2:圍牆與閘門
為什麼:在第一次心跳之前必須宣告爆炸半徑,並且一個 Bash 腳本必須擁有最終決定權。
建立 loop/contract.md:
1## 可以獨自行動2在分支上建立草稿 PR;修復 lint/測試債務;更新 STATE.md;為 issue 打標籤34## 排入我的佇列5認證、付款、資料庫遷移;任何低於「自動」層級的技能;任何超過 400 行的差異67## 喚醒我8驗證在同一項目上失敗兩次9安全路由器在運行中交換了模型10每日預算被突破11任何東西請求密鑰12一個長期目標被違反
建立 loop/guardrails/verify.sh(根據你的技術棧進行編輯):
1#!/usr/bin/env bash2set -e3npm run typecheck --if-present4npm test --if-present5npm run lint --if-present
檢查 2: ./loop/guardrails/verify.sh 在你當前的儲存庫上運行並以 0 退出。如果它現在失敗了,先修復它;整個系統都依賴這個腳本。
建置 3:心跳
為什麼,三句話:將 Fable 作為 Worker 使用會產生四位數的帳單(50 萬到 100 萬 Token 的會話,輸出 $50/M);將 Fable 作為指揮官使用,則在做出 100% 決策的同時,僅產生 10-20% 的 Token。一個 $0.01 的模型讀取安靜的心跳。Agent 透過一個 JSON 模式進行交接,這樣任何模型都能適應任何位置。
建立 loop/triage.md:
1你接收最近的提交、開放的 issue 和 CI 運行。僅輸出發現:2- finding: <一行>3 evidence: <提交/issue/運行 ID>4 status: actionable | informational5不提供修復,不提供意見。沒有要報告的內容 = 精確輸出 "status: quiet"。6任何觸及 auth、payments、migrations、secrets 的內容 = 始終 actionable,7備註 "contract-sensitive"。
建立 loop/conductor.md:
1你是指揮官。你不寫程式碼。你不編輯檔案。21. 讀取下面的 STATE、TRUST LEDGER、CONTRACT。不要依賴對它們的記憶。32. 選擇一個價值最高的 actionable 項目。4 contract-sensitive、不明確或可能超過 400 行差異 -> action: queue5 沒有值得做的事 -> action: stop63. 否則 action: execute,並提供一個平庸模型也能遵循的規格。7僅輸出此 JSON:8{ "action": "execute|queue|stop", "item": "...", "skill": "<kebab-case,9跨運行穩定>", "spec": "...", "done_when": ["<可驗證的>", ...] }10你很昂貴。請簡潔。你的輸出是一個決策,不是一篇論文。
建立 loop/workers/implement.md:
1你收到一份工作訂單(JSON)。精確執行規格。2執行朝向 done_when 的下一步。小的差異獲勝。3缺少憑證或未記錄的決策 -> 停止,將問題寫入 IMPLEMENTATION.md。4絕不發明密鑰或慣例。5記錄你做了什麼以及為什麼(最多 3 行)到 IMPLEMENTATION.md。
建立 loop/workers/verify.md:
1你只收到一份 SPEC 和一個 DIFF,沒有其他東西。僅根據你面前的內容進行判斷。21. 這個差異是否滿足每個 done_when?引用行數。32. 是否有任何超出規格範圍的內容?立即失敗。刪除/跳過的測試?立即失敗。4僅輸出一行:"PASS: <原因>" 或 "FAIL: <原因>"。5製造者很有信心。但那不是證據。
建立 loop/loop.sh:
1#!/usr/bin/env bash2set -euo pipefail3cd "$(dirname "$0")"4MAX_ITERS="${MAX_ITERS:-10}"5DAILY_BUDGET_USD="${DAILY_BUDGET_USD:-5}"6CHEAP="${CHEAP:-openrouter/deepseek/deepseek-v4-flash}"7WORKER="${WORKER:-openrouter/moonshotai/kimi-k2.6}"89./scripts/cost-check.sh --budget "$DAILY_BUDGET_USD" || exit 31011for ((i=1; i<=MAX_ITERS; i++)); do12 # 1 分類:安靜心跳閘門,約 $0.0113 { git log --oneline -20; gh issue list --limit 20 2>/dev/null || true; \14 gh run list --limit 10 2>/dev/null || true; } \15 | llm -m "$CHEAP" -s "$(cat triage.md)" >> memory/STATE.md16 ./scripts/log-cost.sh triage 0.0117 grep -q "status: actionable" memory/STATE.md || { echo quiet; exit 0; }1819 # 2 指揮:Fable,xhigh,全新上下文,唯讀,JSON 輸出20 claude -p "$(cat conductor.md)21STATE: $(cat memory/STATE.md)22TRUST: $(./scripts/trust-log.sh --render)23CONTRACT: $(cat contract.md)" \24 --model claude-fable-5 --effort xhigh --allowedTools "Read" \25 --output-format json > /tmp/c.json26 ./scripts/log-cost.sh conductor 0.352728 # 2a 路由容錯:絕不在你未選擇的模型上迭代29 SERVED=$(jq -r '.modelUsage | keys[0] // "claude-fable-5"' /tmp/c.json)30 [[ "$SERVED" != *fable* ]] && { echo "rerouted" >> memory/STATE.md; exit 2; }3132 jq -r '.result' /tmp/c.json > work-order.json33 SKILL=$(jq -r .skill work-order.json); ACTION=$(jq -r .action work-order.json)34 [[ "$ACTION" == stop ]] && exit 035 [[ "$ACTION" == queue ]] && { echo "queued: $SKILL" >> memory/STATE.md; continue; }3637 # 3 執行:廉價 Worker,隔離工作樹38 WT="../wt-$i"; git worktree add "$WT" -b "loop/$SKILL-$i" >/dev/null39 ( cd "$WT" && llm -m "$WORKER" -s "$(cat "$OLDPWD/workers/implement.md")" \40 "$(cat "$OLDPWD/work-order.json")" > IMPLEMENTATION.md )41 ./scripts/log-cost.sh worker 0.104243 # 4 驗證:全新 Fable,無工具,僅看到規格 + 差異44 V=$(claude -p "$(cat workers/verify.md)45SPEC: $(jq -r .spec work-order.json)46DIFF: $(cd "$WT" && git diff)" \47 --model claude-fable-5 --effort high --allowedTools "" \48 --output-format json | jq -r .result)49 ./scripts/log-cost.sh verifier 0.405051 # 5 閘門:確定性;然後帳本;僅在自動層級交付52 if [[ "$V" == PASS* ]] && ( cd "$WT" && "$OLDPWD/guardrails/verify.sh" ); then53 ./scripts/trust-log.sh "$SKILL" pass54 if [[ "$(./scripts/trust-log.sh --tier "$SKILL")" == auto ]]; then55 ( cd "$WT" && git add -A && git commit -qm "loop: $SKILL" && gh pr create --fill || true )56 echo "- shipped: $SKILL" >> memory/STATE.md57 else58 echo "- review: $SKILL in $WT" >> memory/STATE.md59 fi60 else61 ./scripts/trust-log.sh "$SKILL" fail62 echo "- FAILED: $SKILL in $WT" >> memory/STATE.md63 fi64 ./scripts/cost-check.sh --budget "$DAILY_BUDGET_USD" || exit 365done66exit 1 # 達到迭代上限但未停止:檢查 STATE.md
退出碼對應:0 安靜/完成,1 上限,2 重新路由,3 預算。所有退出碼都有明確標籤,這是故意的。
檢查 3: chmod +x loop.sh guardrails/verify.sh 然後手動運行一次 ./loop.sh。確認:一個安靜的儲存庫以 0 退出,花費約一分錢;一個有 actionable 項目的儲存庫會產生包含所有五個欄位的 work-order.json 以及在 STATE.md 中的一條判決行。
建置 4:信任帳本
為什麼:「隨著信任增長而提高自主權」不是一個機制;一個帶有層級規則的 TSV 檔案才是。自主權是基於每個技能,而不是每個循環。
建立 loop/scripts/trust-log.sh:
1#!/usr/bin/env bash2# 用法:trust-log.sh <技能> <pass|fail> | --render | --tier <技能>3set -euo pipefail4F="$(dirname "$0")/../memory/trust.tsv"; touch "$F"5tier_of() { awk -v r="$1" -v p="$2" 'BEGIN{6 rate=(r>0)?p/r:07 if (r>=20 && rate>=0.95) print "auto"8 else if (r<10 || rate<0.90) print "watch"9 else print "queue"}'; }10case "${1:-}" in11 --render)12 printf "%-20s %5s %5s %6s %s\n" skill runs pass rate tier13 while IFS=$'\t' read -r s r p; do [ -z "$s" ] && continue14 printf "%-20s %5s %5s %5s%% %s\n" "$s" "$r" "$p" \15 "$(awk -v r="$r" -v p="$p" 'BEGIN{printf "%.0f",(r>0)?p/r*100:0}')" \16 "$(tier_of "$r" "$p")"; done < "$F";;17 --tier)18 line=$(grep -P "^${2}\t" "$F" || echo -e "${2}\t0\t0")19 tier_of "$(cut -f2 <<<"$line")" "$(cut -f3 <<<"$line")";;20 *)21 awk -v s="$1" -v r="$2" -F'\t' 'BEGIN{OFS="\t"; f=0}22 $1==s {f=1; print s,$2+1,$3+(r=="pass"); next} {print}23 END{if(!f) print s,1,(r=="pass")?1:0}' "$F" > "$F.t" && mv "$F.t" "$F"24 if [ "$2" = fail ]; then25 runs=$(grep -P "^${1}\t" "$F" | cut -f2)26 [ "$("$0" --tier "$1")" = watch ] && [ "$runs" -ge 10 ] \27 && echo "警報:$1 在 $runs 次運行後被降級為 watch" >&2 || true28 fi;;29esac
- 層級規則:auto = 20+ 次運行且 95%+ 通過率,可無人值守交付。queue = 已驗證的草稿等待你審查。watch = 少於 10 次運行或少於 90% 通過率,僅限草稿。降級是自動的,並輸出到 stderr,cron 會將其郵件發送給你。
- 初始化名冊:為每個重複性雜務(fix-lint-debt、fix-flaky-test、bump-deps、triage-issues 是標準的四個)建立 loop/skills/<name>/SKILL.md。每個檔案:前置資料(名稱、描述、何時執行)、步驟、一個「永不」清單、一個可驗證的完成條件。每個技能都從 watch 開始。
檢查 4: 運行 ./scripts/trust-log.sh demo pass 21 次,然後 --tier demo 會輸出 auto。在一個運行超過 10 次的技能上記錄一次失敗,並在 stderr 上看到警報。重置:> memory/trust.tsv。
建置 5:長期目標 + 目標帳本
為什麼,一句話:一個你只驗證一次的目標只是一個帶有時間戳的假設,所以完成的目標會升級為不變量,每天被重新驗證並記錄下來。
為每個完成的事情建立一個檔案,goals/<name>.md:
1predicate: cd $REPO && npm test -- tests/auth 2>&1 | tail -1 | grep -q passing2born: 2026-07-063source: /goal session 2026-07-06 (fix auth flake)4status: satisfied5last-pass: 2026-07-066on-violation: wake me. Do not auto-fix.7retire-when: auth module deleted. Retirement is a human decision, logged.
建立 loop/verify-goals.sh:
1#!/usr/bin/env bash2set -uo pipefail3LEDGER="memory/goal-ledger.tsv"; VIOLATIONS=04for g in goals/*.md; do5 [ -e "$g" ] || continue6 grep -q '^status: retired' "$g" && continue7 pred=$(grep '^predicate:' "$g" | cut -d' ' -f2-); name=$(basename "$g" .md)8 start=$(date +%s%3N)9 if timeout 60 bash -c "$pred" >/dev/null 2>&1; then r=pass10 sed -i "s/^status:.*/status: satisfied/; s/^last-pass:.*/last-pass: $(date +%F)/" "$g"11 else r=FAIL; VIOLATIONS=$((VIOLATIONS+1)); sed -i "s/^status:.*/status: VIOLATED/" "$g"; fi12 echo -e "$(date -Is)\t$name\t$r\t$(( $(date +%s%3N) - start ))" >> "$LEDGER"13done14[ "$VIOLATIONS" -gt 0 ] && { grep -l '^status: VIOLATED' goals/*.md; exit 1; }15echo "所有長期目標均成立"
啟動哨兵(僅檢測;修復通過正常管線進行):
1/loop 1d 運行 ./verify-goals.sh。如果非零:對於每個被違反的目標,2讀取其 last-pass 日期並列出自該日期以來合併的內容(git log --oneline --since=<日期>)。3報告目標、嫌疑犯、違反政策。不要修復任何東西。
畢業法則已經在 CLAUDE.md(建置 1)中:每個通過的 /goal 都會寫入自己的長期目標。完成即是註冊。
你實際上會用到的帳本查詢:
1awk -F'\t' '$3=="FAIL"{n[$2]++} END{for(g in n) print n[g],g}' memory/goal-ledger.tsv | sort -rn | head -5 # 最不穩定的2grep <goal> memory/goal-ledger.tsv | awk -F'\t' '$3=="FAIL"' | head -1 # 何時出錯的
不穩定的謂詞:隔離(狀態:已退役,備註「需要更好的謂詞」),永遠不要刪除。
檢查 5: 新增一個謂詞為 true 的目標和一個謂詞為 false 的目標。執行 ./verify-goals.sh 會退出並回傳 1,將第二個目標標記為 VIOLATED,且兩者都會出現在 ledger 中。刪除這些測試用的目標。
建置 6:預算
原因:每日成本 = 滴答數 × 分類成本 + 命中數 ×(調度成本 + 工作成本 + 驗證成本)。以實際價格(分類 $0.01,調度 $0.35,工作 $0.10,驗證 $0.40)計算:每日的基礎維護約為 $2.56/天;若使用 Fable 擔任分類角色進行 15 分鐘的監控,則為 $34/天,但結果完全相同。負責讀取安靜滴答的模型決定了最終帳單。
建立 loop/scripts/log-cost.sh:
1#!/usr/bin/env bash2echo -e "$(date -Is)\t$1\t$2" >> "$(dirname "$0")/../memory/usage.log"
建立 loop/scripts/cost-check.sh:
1#!/usr/bin/env bash2set -euo pipefail3F="$(dirname "$0")/../memory/usage.log"; touch "$F"; TODAY=$(date +%F)4case "${1:-}" in5 --budget)6 spent=$(awk -F'\t' -v d="$TODAY" '$1 ~ d {s+=$3} END{printf "%.2f",s}' "$F")7 awk -v s="$spent" -v b="$2" 'BEGIN{exit (s>=b)?1:0}' \8 || { echo "已花費 \$$spent,預算為 \$$2" >&2; exit 1; };;9 --report)10 awk -F'\t' -v since="$(date -d '7 days ago' +%F)" \11 '$1>=since{s[$2]+=$3;t+=$3} END{for(k in s) printf " %-10s $%.2f\n",k,s[k]; printf " TOTAL $%.2f\n",t}' "$F";;12esac
保持成本低廉的規則:節奏本身就是成本決策(將間隔減半會使最低成本翻倍);安靜的滴答必須花費幾分錢;在迴圈中,努力程度絕不能高於 high(xhigh 僅用於一次性審查;努力程度是針對每個步驟,而非每次執行)。
檢查 6: 經過一週的滴答後,執行 ./scripts/cost-check.sh --report 的結果應與公式計算結果在誤差範圍內相符。將 DAILY_BUDGET_USD 設定為一個你覺得浪費了也無所謂的數字。
建置 7:可選迴圈(當條件出現時才安裝)
- Quorum(當調度顯示 Fable 喚醒後產生了動作:停止時安裝)。三個便宜的模型進行投票;Fable 在獲得 2/3 同意時喚醒。投票者之間看不到彼此的答案。
1V=02for m in deepseek/deepseek-v4-flash qwen/qwen-3.6 moonshotai/kimi-k2.6; do3 llm -m "openrouter/$m" -s "$(cat triage.md)" < /tmp/signals.txt \4 | grep -q "status: actionable" && V=$((V+1))5done6[ "$V" -ge 2 ] && exec ./conduct.sh || echo "quorum: 安靜 ($V/3)"
- Ratchet(當某個數字至關重要時安裝)。單調改進或自動還原;該指標不能被操縱;完成後的最低標準成為一個常設目標。
1/goal 將 `npm run lint 2>&1 | grep -c warning` 的結果降至 0。2權限:可編輯 src/;每次修復後提交;每次變更後重新測量。3限制:數字絕不能上升;還原任何會提高數字或破壞測試的變更;絕不編輯 lint 配置來降低數字。4時間限制:若連續 3 次嘗試無進展則停止;報告剩餘問題。
- Sparring(當你每天都有程式碼上線時安裝)。建構者與破壞者,立場對立;雙方不得觸碰對方的輸出;爭議由你裁決。
1/loop 1d [破壞者] 閱讀昨天合併的差異。撰寫一個會失敗的測試,揭露一個真正的弱點。提交至 tests/sparring/ 並標記 @sparring。不要修復任何東西。若程式碼穩固,則直接說明,無需撰寫測試。2/loop 1d [建構者] 如果有任何 @sparring 測試失敗,修復程式碼直到測試通過。絕不編輯、削弱或刪除 sparring 測試;爭議事項排隊等待我處理。
- Compost(始終安裝,每週執行)。失敗變成規則;最多三個提案;需要人類簽署。
1/loop 7d 閱讀本週的廢棄輸出:STATE.md 中的 FAILED、trust.tsv 中的失敗、goal-ledger.tsv 中的 FAIL、以及關閉但未合併的 PR。最多提取 3 個提案:一條新的 CLAUDE.md 規則(引用具體事件)、一個技能修復(同一種失敗重複發生)、或一個我們缺少的常設目標。僅提出提案。若本週一切順利,則直接說明。
檢查 7: 在你的筆記中,每個可選迴圈旁邊都寫下了它的安裝條件。投機性地安裝它們是系統膨脹的原因。
建置 8:營運
建立 Makefile:
1tick: ; ./loop/loop.sh2queue: ; @grep -E "review:|queued:|FAILED:|rerouted" loop/memory/STATE.md || echo empty3trust: ; @./loop/scripts/trust-log.sh --render4audit: ; @./loop/scripts/cost-check.sh --report5goals: ; @./loop/verify-goals.sh6clean-worktrees: ; @git worktree list | awk '/wt-/{print $$1}' | xargs -rn1 git worktree remove --force
Cron 排程,從第二週開始:
10 7 * * 1-5 cd /path/to/repo/loop && ./loop.sh >> memory/cron.log 2>&1230 7 * * * cd /path/to/repo/loop && ./verify-goals.sh >> memory/cron.log 2>&1
30 天的信任進度表
不要跳過升級階段;每個階段都會解鎖下一個。
週數
等級
你的任務
畢業條件
1
L1 報告
建置 1-6;
每天手動執行
make tick
;閱讀所有輸出
連續 3 次執行的路由結果與你的判斷完全一致
2
L2 草稿
啟用 cron;
喝咖啡時執行
make queue
;審查結果回饋到 ledger
2 個技能跨越 20 次記錄的執行
3
L3 上線
對照公式執行
make audit
;最好的技能可無人看管
連續 1 週,零干預
4
L4 成長
compost 簽署;批准 1 個提案的技能;執行刪除流程
你移除了某個東西,且沒有任何東西出錯
操作手冊。 每個警報的含義及應對措施:
訊號
含義
行動
exit 2 (reroute)
安全路由器在執行中途更換了模型
讀取檢查點;明天重新執行該項目;絕不對已更換的輸出進行迭代
stop_reason: refusal
安全分類器拒絕(HTTP 200,非錯誤)
官方路徑:透過
fallbacks
或中介軟體回退到 Opus 4.8;如果同一技能重複出現此問題,請審核該技能是否存在推理回聲或與網路/生物相關的措辭
exit 3 (budget)
每日花費已達預算上限
執行
make audit
;找出哪個階段成本增加;修正努力程度映射,而非預算
ALERT demoted
一個已建立的技能低於 90%
閱讀其最近 3 次失敗;通常是規範模式問題,而非工作單元問題
goal VIOLATED
某個已完成的事項不再成立
哨兵會提供嫌疑對象;修復流程走正常管線
maker/checker standoff x2
雙方都不被假定為正確
由你決定,或執行僵局破解器(第三位全新審查者,評估證據,不得折衷)
verify-goals timeout
謂詞成本過高
這本身就是違規;降低謂詞的成本
規則(請列印出來)
- 是規則,不是建議:一個數字、一個「絕不」、或一個可檢查它的命令。
- 調度者規劃,工作單元執行,兩者都不負責驗證。--allowedTools 強制執行此規則。
- Agent 之間透過工作訂單溝通。done_when = 規格 + 停止條件 + 未來不變量。
- 在迴圈分支處投入心力。在迴圈中,努力程度絕不能高於 high。
- 安靜的滴答花費一分錢,否則迴圈會花費一千元。
- 如果 shell 腳本無法檢查它,就不要把它寫成目標。
- 目標會升級;它們不會關閉。verify-goals.sh 每天執行,永遠執行。
- 每個技能的自動化權限:20 次執行,95% 成功率,自動授予。降級是自動且大聲的。
- 兩個 ledger:信任(工作單元)和目標(工作)。喝咖啡時閱讀兩者。
- 在設定 cron 之前先計算新陳代謝。
- 儲存庫中的合約:獨立運作 / 排隊等待 / 喚醒我。
- 絕不對你未選擇的模型的輸出進行迭代。
- 哨兵負責偵測;管線負責修復。
- 喚醒 Fable 前需要 Quorum。Ratchet 然後焊接。每天 Spar。每週 Compost。
- 一次只專注一個畢業條件。每個月,刪除一些東西。
- 根據官方文件:max_tokens 限制思考加文字,拒絕是 HTTP 200,永遠不要要求回聲推理,舊技能會降低 Fable 效能,而全新上下文的驗證者優於自我批評。Anthropic 這麼說;系統強制執行。
結語
三十天後,如果你完成了所有檢查:一個迴圈在無人看管下完成無聊的工作,一個目標目錄重新驗證你曾經完成的一切,兩個 ledger 告訴你關於你的工作單元和你的工作的真相,而每週的 compost 執行會為你的簽署提出系統自身的下一個改進方案。
- 模型從來都不是最難的部分。最難的部分是圍繞它建立一個在你不再監視時仍能保持誠實的系統。這正是你剛剛建立的東西。
- 今晚就從那能證明一切的二十分鐘開始:建置 2 的 verify.sh、建置 3 的第一次手動滴答、以及為你剛完成的最後一件事設立一個常設目標。
- 當 verify-goals.sh 第一次在你確信已完成的事情上捕捉到一個無聲的迴歸時,你就不需要再對其餘部分抱有懷疑了。
免責聲明
本文是根據用戶的筆記撰寫,並由 Claude Opus 4.8 max 編輯。





