使用手冊

Claude Code / Behavior Harness

讓 Claude Code 遵守 FABLE 工程紀律

Miguok/fable-harness 繁體中文實戰手冊:安裝方式、SessionStart / UserPromptSubmit / Stop hooks、FABLE-PROTOCOL、adversarial-review、模型分工與驗證 gate。

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

miguok/fable-harness
星標
—
分支
—
授權
—
資料截至
—
閱讀時間
9 分
更新日期
開啟原始報告
GitHub Stars
171
Latest Release
v1.0.1
Global Hooks
3
License
MIT

01工具定位

Claude Code 的行為底線

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

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

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

  1. Observe

  2. Orient

  3. Decide

  4. Act

  5. Verify

  6. Report

FABLE-PROTOCOL-V1-CANARY

— .claude/hooks/fable_protocol.md

02Install Flow

先備份, 再增量合併

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

bash
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 寫入設定。

bash
Install Fable Harness by following INSTALL.md.

全域 hook 與檔案複製

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

bash
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。

03Component 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 啟動SessionStart → inject_protocol.shsession 內可回報 FABLE-PROTOCOL-V1-CANARY
使用者送出每則 promptUserPromptSubmit → prompt_nudge.sh注入一行 OODA / DoD / 抗辯提醒
本輪改了程式碼但未跑測試Stop → verify_gate.py第一次結束時輸出 block JSON
架構、根因、生產或安全結論adversarial-review三鏡頭 verdict 表與 confirmed / 擋回裁決

04Protocol Rules

採信結論前先拿證據

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

OODA 每個任務必經

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

來源 · .claude/hooks/fable_protocol.md

重大結論必跑三鏡頭抗辯

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

來源 · adversarial-review/SKILL.md

每條獨立 finding 分開審

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

來源 · adversarial-review/SKILL.md

派工包必有七欄

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

來源 · model_dispatch_rules.md

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

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

來源 · .claude/hooks/fable_protocol.md

Verify gate 擋回後只有兩條路

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

來源 · cognitive_rubrics.md

第二次同方法失敗就換路

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

來源 · cognitive_rubrics.md

已有專用 harness 時退居底線

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

來源 · .claude/hooks/fable_protocol.md

05Worked Example

安裝流程的安全檢查

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

~/src/fable-harness · claude code · install flow


$ You ›
  Install Fable Harness by following INSTALL.md.


claude: Claude ›
  我會先讀 INSTALL.md,確認全域 settings 可解析,建立備份,再只做增量合併。


> pwd
# /Users/you/src/fable-harness


> python3 -m json.tool ~/.claude/settings.json >/dev/null
ok: settings.json parsed


> cp ~/.claude/settings.json ~/.claude/backups/settings.json.bak_20260709-103000
ok: backup exists


claude: 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: Claude ›
  安裝後請開新 session 並詢問 protocol codename。


$ New session ›
  What's your protocol codename?


ok: 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 的安全邊界

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.md、cognitive_rubrics.md、CHANGELOG.md:派工、降速與版本變更。

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

— .claude/hooks/fable_protocol.md