實戰手冊 · Field Manual 2026 夏季號
github.com/Miguok/fable-harness · 171 ★
f
Claude Code / Behavior Harness

讓 Claude Code
遵守 FABLE
工程紀律

Fable Harness 是 Miguok 維護的 Claude Code 行為協議套件。它透過 hooks、adversarial-review skill、三個反方子代理與治理文件,要求 agent 先蒐證、明說假設、重大結論先抗辯、改功能邏輯時提出 fail-then-pass 測試證據。

171
GitHub Stars
v1.0.1
Latest Release
3
Global Hooks
MIT
License
01
工具定位

Claude Code 的
行為底線

Fable Harness 是一套安裝到 Claude Code 全域設定的行為協議。README 將它描述為 hooks、skill 與子代理組成的小型 kit,會在每次 Claude Code session 中自動注入流程要求。

它不提供 sprint 管理或 CI pipeline。它要求 agent 在回答與改檔前執行 OODA:先觀察證據、定向假設、決定可驗證目標,再小步行動與驗證。

repo 的目的不是提升模型天生判斷力,而是把可重複執行的程序固定下來。重大結論須經三個反方子代理審查;改到功能邏輯時,報告需附自動化測試與 fail-then-pass 證據。

FABLE-PROTOCOL · 基本循環
Observe Orient Decide Act Verify Report
FABLE-PROTOCOL-V1-CANARY
— .claude/hooks/fable_protocol.md
02
Install Flow

先備份,
增量合併

INSTALL.md 明確說明本 kit 不提供 one-click installer。先 clone repo,再讓 Claude Code 依照 INSTALL.md 安裝,因為安裝會修改全域 ~/.claude/settings.json 與全域 skill / agent 目錄。

git clone https://github.com/Miguok/fable-harness.git fable-harness cd fable-harness pwd

交給 Claude Code 執行

在 clone 後的 repo 內開啟 Claude Code,輸入安裝指令。INSTALL.md 要求 Claude 先取得 repo absolute path、讀取並驗證全域 settings JSON、建立 timestamped backup,再用 temp file 與 atomic rename 寫入設定。

Install Fable Harness by following INSTALL.md.
增量合併要求。三個全域 hook 只能 append,不可刪除、重排或改寫使用者既有設定。若目標 skill 或 agent 已存在,INSTALL.md 要求停止並詢問使用者。

全域 hook 與檔案複製

安裝需把三個 hook command 指到 clone repo 內的腳本,並把 .claude/skills/adversarial-review/ 與三個 agents 複製到全域 ~/.claude

SessionStart → /absolute/path/to/fable-harness/.claude/hooks/inject_protocol.sh UserPromptSubmit → /absolute/path/to/fable-harness/.claude/hooks/prompt_nudge.sh Stop → /absolute/path/to/fable-harness/.claude/hooks/verify_gate.py Copy skill: .claude/skills/adversarial-review/ → ~/.claude/skills/adversarial-review/ Copy agents: .claude/agents/skeptic.md .claude/agents/red-team.md .claude/agents/simplifier.md

安裝驗證

開啟全新的 Claude Code session,詢問 protocol codename。成功時,回覆應包含 FABLE-PROTOCOL-V1-CANARY

03
Component Map

Hooks、Skill 與
三個反方

README 的 component table 將 Fable Harness 分成行為協議、每輪提醒、驗證 gate、多方抗辯 skill、三個 opposition agents、模型分工與治理文件。這些元件共同構成 Claude Code session 的流程約束。

Hook · 01
inject_protocol.sh
SessionStart 協議注入
SessionStart hook 讀取 fable_protocol.md,注入 FABLE-PROTOCOL,並寫入 marker 供 e2e 測試確認觸發。
Hook · 02
prompt_nudge.sh
每輪微提醒
UserPromptSubmit hook 注入一行提醒:先蒐證、亮假設、功能邏輯改動需 fail-then-pass 證據、重大結論先抗辯。
Hook · 03
verify_gate.py
Stop 驗證 gate
Stop hook 解析 transcript。若本輪改了程式碼檔卻未偵測到測試命令,輸出 block JSON 擋回一次;hook 自身故障時 fail-open。
Skill · 04
adversarial-review
多方抗辯
對架構決策、bug 根因、生產影響結論與安全判斷,平行派出 skeptic、red-team、simplifier 三個反方審查。
Agent · 05
skeptic.md
邏輯漏洞
抗辯流程中的反方鏡頭,專門尋找推理缺口、證據不足與結論跳躍。
Agent · 06
red-team.md
安全與失效風險
檢查安全風險、失效模式、生產事故與資料安全邊界。
Agent · 07
simplifier.md
過度工程刪減
尋找不必要抽象、可縮小範圍的實作與更簡單的決策路徑。
Routing · 08
CLAUDE.md
模型分工表
README 指出模型分工由 CLAUDE.md 管理:推理與裁決留給主迴圈,編碼與重構交給 Sonnet,搜尋與批次文字處理交給 Haiku。
Detector · 09
detect_harness.py
Harness 分流
只讀檢查專案是否已啟用 harnessmith、Superpowers 等專用開發 harness;若已啟用,Fable 退居流程底線。
Docs · 10
model_dispatch_rules.md
派工規則
定義 commander / worker 分工、派工包七欄、子代理回報格式、升級與降級規則。
Docs · 11
cognitive_rubrics.md
判斷力檢查表
用觸發條件規定何時放慢、何時問使用者、何時換方法與何時升級到更強推理。
Docs · 12
diagnostics / future_session_letter
故障模式與交接
README 將治理文件列為已知失效模式、子代理派工範本、降速規則與跨 session handoff notes。

元件與觸發對照

情境 觸發元件 可觀察結果
新 Claude Code session 啟動 SessionStartinject_protocol.sh session 內可回報 FABLE-PROTOCOL-V1-CANARY
使用者送出每則 prompt UserPromptSubmitprompt_nudge.sh 注入一行 OODA / DoD / 抗辯提醒
本輪改了程式碼但未跑測試 Stopverify_gate.py 第一次結束時輸出 block JSON
架構、根因、生產或安全結論 adversarial-review 三鏡頭 verdict 表與 confirmed / 擋回裁決
04
Protocol Rules

採信結論前
先拿證據

以下規則來自 repo 內的 protocol、skill 與 governance docs。它們定義 Claude Code session 中何時蒐證、何時委派、何時抗辯、何時測試與何時停止。

TIP 01

OODA 每個任務必經

fable_protocol.md 要求 Observe、Orient、Decide、Act。回答前先搜尋或讀取實際檔案,明說假設,把任務改寫成可驗證目標,再小步修改與驗證。

來源 · .claude/hooks/fable_protocol.md
TIP 02

重大結論必跑三鏡頭抗辯

架構決策、bug 根因判定、生產影響結論與安全判斷,需平行派出 skepticred-teamsimplifier。三鏡頭過半存活才可標示 confirmed。

來源 · adversarial-review/SKILL.md
TIP 03

每條獨立 finding 分開審

adversarial-review 規定多條 findings 不得打包成單一總結論。逐條各自抗辯,避免總結論稀釋單條 finding 的審查解析度。

來源 · adversarial-review/SKILL.md
TIP 04

派工包必有七欄

model_dispatch_rules.md 要求委派時包含 Goal、Scope、Non-goals、Allowed paths、Acceptance criteria、Report format、Stop conditions。缺任一欄為無效派工。

來源 · model_dispatch_rules.md
TIP 05

功能邏輯改動需要 fail-then-pass

Definition of Done 規定改到功能邏輯時,至少提供一個自動化測試與 fail-then-pass 證據。沒有證據時,只能回報「已修改、未驗證」。

來源 · .claude/hooks/fable_protocol.md
TIP 06

Verify gate 擋回後只有兩條路

cognitive_rubrics.md 規定被 verify gate 擋回時,補跑測試,或明確回報已修改未驗證。不得利用 gate 第二次放行的設計沉默結束。

來源 · cognitive_rubrics.md
TIP 07

第二次同方法失敗就換路

cognitive_rubrics.md 將同一方法連續失敗兩次列為換方法或升級的觸發條件。檔案不存在、API 簽名不同或結構不符時,回到 Observe 重蒐證。

來源 · cognitive_rubrics.md
TIP 08

已有專用 harness 時退居底線

protocol 規定若專案已明確啟用 harnessmith、Superpowers 等完整 SDLC harness,Fable 保留 OODA、範圍控制、安全、誠實回報、重大結論抗辯與證據要求,不重複接管主流程。

來源 · .claude/hooks/fable_protocol.md
05
Worked Example

安裝流程的
安全檢查

以下例子示範一次合格的安裝對話。重點不是手動複製指令,而是讓 Claude Code 按照 INSTALL.md 的順序執行可驗證的檔案操作。

~/src/fable-harness · claude code · install flow
You › Install Fable Harness by following INSTALL.md.
Claude › 我會先讀 INSTALL.md,確認全域 settings 可解析,建立備份,再只做增量合併。
$ pwd /Users/you/src/fable-harness
$ python3 -m json.tool ~/.claude/settings.json >/dev/null settings.json parsed
$ cp ~/.claude/settings.json ~/.claude/backups/settings.json.bak_20260709-103000 backup exists
Claude › 我會在 hooks section append 三個 entries。既有 top-level keys 與既有 hooks 不會被刪除、重排或改寫。
[append hook] SessionStart → /Users/you/src/fable-harness/.claude/hooks/inject_protocol.sh [append hook] UserPromptSubmit → /Users/you/src/fable-harness/.claude/hooks/prompt_nudge.sh [append hook] Stop → /Users/you/src/fable-harness/.claude/hooks/verify_gate.py
$ rsync -a .claude/skills/adversarial-review/ ~/.claude/skills/adversarial-review/ $ cp .claude/agents/skeptic.md ~/.claude/agents/ $ cp .claude/agents/red-team.md ~/.claude/agents/ $ cp .claude/agents/simplifier.md ~/.claude/agents/
Claude › 安裝後請開新 session 並詢問 protocol codename。
New session › What's your protocol codename?
FABLE-PROTOCOL-V1-CANARY
Install Fable Harness by following INSTALL.md.
— INSTALL.md

檢查點

通過狀態:settings JSON 可解析,backup 檔案存在,三個 hook 只增量加入,skill 與三個 agents 已複製,新 session 回覆 protocol codename。未通過狀態:settings 缺失或不可解析、backup 失敗、既有 hook 被改寫、目的地已存在但未詢問使用者。

此流程會修改全域 Claude Code 設定。遇到 symlink、junction、未知既有 hook 或 destination conflict 時,INSTALL.md 要求停止並回報。

06
限制與邊界

全域 hook 的
安全邊界

  • 安裝會修改全域 Claude Code 設定。INSTALL.md 要求先備份 ~/.claude/settings.json,且不可在設定缺失、空白或 JSON 解析失敗時自動建立新檔。
  • Hook command 必須使用 clone repo 的 absolute path。INSTALL.md 指出 hooks 是 path reference,不是複製檔案;安裝後 repo 不能移到別處。
  • 未知既有 hook 需要停下確認。安裝規則要求增量合併,不可刪除、重排或改寫使用者既有 hook、model setting、theme 或其他 key。
  • Symlink 與 junction 需要先解析。~/.claude/hooksskillsagentsCLAUDE.md 指向外部 dotfiles repo,不得默默寫入。
  • verify gate 是 soft gate。verify_gate.py 第一次偵測到改 code 但未跑測試時會 block;第二次結束會放行,用途是避免 session 卡死,不是跳過驗證。
  • verify gate fail-open。hook 自身解析錯誤時不阻斷 session。這保護使用者環境,但代表 gate 不可當成唯一品質保證。
  • 程序不是判斷力移植。README 明確限制:hooks 與 skill 能移植 procedure,不能移植模型天生判斷力。重大決策仍需證據與抗辯。
  • 全域、生產、資料與憑證風險需升級。protocol 與 rubrics 將生產、全域佈署、資料安全、憑證與金流列為停下確認或抗辯升級的範圍。
07
進階路徑

從安裝到
協議維護

Fable Harness 的維護重點是保持全域 hook、skill、agents 與治理文件一致。變更 protocol contract 時,依 repo 的 semantic versioning 規則判斷 MAJOR、MINOR 或 PATCH。

進階玩法地圖

1. 先跑安裝驗證。新 session 詢問 protocol codename,確認 FABLE-PROTOCOL-V1-CANARY 已注入。

2. 用 adversarial-review 校準重大結論。對架構、根因、生產與安全判斷,按 skill 要求整理待審包並同一則訊息平行派出三個反方。

3. 檢查 verify gate 測試契約。CHANGELOG 顯示 v1.0.1 修正了 --test 自測入口辨識。修改 gate 前先讀 tests/test_verify_gate.py

4. 用 dispatch packet 限制子代理範圍。每次委派補齊七欄,尤其是 Allowed paths、Acceptance criteria 與 Stop conditions。

5. 遇到既有 harness 時改成底線模式。若專案已有 harnessmith 或 Superpowers 類流程,Fable 只保留 OODA、證據、範圍控制與重大結論抗辯。

最該讀的三份延伸閱讀

README.zh-TW.md:繁體中文概念、元件表與版本規則。
INSTALL.md:全域設定備份、hook 合併、skill / agent 複製與 uninstall。
fable_protocol.md:OODA、多方抗辯、回報紀律、DoD、模型分工與 harness 分流。
adversarial-review/SKILL.md:三鏡頭抗辯流程與裁決規則。
model_dispatch_rules.mdcognitive_rubrics.mdCHANGELOG.md:派工、降速與版本變更。

完成定義:改了功能邏輯,至少一個自動化測試與 fail-then-pass 證據。
— .claude/hooks/fable_protocol.md