---
title: "08 - 實戰：被 Claude 指揮的雙手"
type: note
specialty: Programming
tags: [codex-cli從0開始使用教學, 08-實戰, herdr, orchestration]
created: 2026-08-04
updated: "2026"
modified: 2026-08-04
---

# 08 - 實戰：被 Claude 指揮的雙手

← [[07-MCP與擴充]] | [[00-Index]] | 下一篇 → [[09-疑難排解與速查表]]

---

## 這一章的定位

[[Programming/Herdr/Herdr從0開始使用教學/08-Claude當大腦-Codex當雙手|Herdr 08]] 從**編排者（Claude）的角度**講這件事。
這一章從 **Codex 的角度**講：**要讓 Codex 當一個好用的 worker，它那邊該怎麼設定。**

---

## Worker 的三層準備

```
① 全域 ~/.codex/AGENTS.md      ← 每個 session 都適用的護欄
② repo 的 AGENTS.md            ← 這個專案的慣例
③ 任務檔                        ← 這一批工作的規格
```

**三層都要有，因為 Codex 讀不到你的 Claude skill 和 CLAUDE.md。**

---

## ① 全域護欄

`~/.codex/AGENTS.md`：

```markdown
# 全域指示

## 語言
繁體中文回覆，技術與醫學名詞保留英文。

## 硬規則（違反 = 任務失敗）
1. **不要 git commit、不要 git push。** 我會統一處理。
2. **需要事實查證的內容不要編造**——醫學事實、PMID、DOI、trial 數據、
   財務數字、dosing。不確定就在該處標 `[需查證]` 並繼續，
   由審核者用 PubMed / 權威來源補。**你沒有查證工具，這不是你的責任。**
3. 你自己推論而非直接來自來源的內容，標 `(inferred)`。
4. 範圍之外的東西不要順手改。

## 回報格式
做完只回覆：`DONE <產出檔案路徑>` 加三行以內的摘要。
**不要貼出產出的全文**（會被讀輸出的工具截斷）。
```

**每一條都有理由**：

| 規則 | 為什麼 |
|---|---|
| 不要 commit | 兩個 repo 都規定 orchestrator 做唯一一次 commit |
| `[需查證]` 機制 | vault `CLAUDE.md` §4：無 PubMed 環境不得猜 PMID。**把「不知道」變成可交接的訊號，而不是編一個** |
| `(inferred)` | vault `CLAUDE.md` §0.1 的原文要求 |
| 不貼全文 | [[Programming/Herdr/Herdr從0開始使用教學/06-CLI與自動化基礎\|Herdr 讀 alternate screen]] 有限制 |

---

## ② config.toml 的 worker profile

```toml
[profiles.worker]
approval_policy = "never"          # 無人值守，不能停下來等
sandbox_mode = "workspace-write"   # 能改 repo，寫不出去
model_reasoning_effort = "medium"  # 量產不需要最高力度

[profiles.audit]
approval_policy = "never"
sandbox_mode = "read-only"         # 盤點類：物理上改不到
```

> 🔴 **盤點 / 稽核類任務一律用 `audit` profile。** `read-only` 是作業系統層級的保證，比 prompt 裡寫「不要改檔」可靠得多。你的筆記是查過 PubMed 才寫出來的，不可重建。

---

## ③ 任務檔範本

```markdown
# 任務：114 年心臟血管科 第 001–012 題 詳解草稿

## 你的角色
內科專科考試詳解的**起草者**。你不是最終審核者。

## 輸入
- 題目：`tmp_drafts/input/114-心臟-001-012.json`
- 撰寫規範：`docs/詳解撰寫規範.md`（**必讀，逐條遵守**）
- 品質標竿：`src/data/explanations.113.json` 裡的 `113-037`

## 輸出（唯一）
`tmp_drafts/out/114-心臟-001-012.json`
格式：`{ "114-001": { "text": "...", "status": "draft" }, ... }`

## 硬規則
1. 固定五段式：`### 本題觀念 / ### 選項分析 / ### 答案解析 / ### 核心知識點 / ### 參考資料`
2. **每一個選項都要分析**，指出錯誤選項是哪個概念的陷阱
3. `status` **一律 `draft`**，禁止寫成 `reviewed`
4. 正解依「該考試年度當時的標準」判定
5. ⚠️ **PMID / DOI / trial 數據不確定就標 `[需查證]`，不要編。**
   你沒有 PubMed 存取權——查證是審核者的工作，標記出來就是完成你的部分。
6. 禁止罐頭字句：「此選項常是相近疾病」「供後續醫師逐題校閱」「以下為 AI 起草」
7. **不要 git commit、不要 git push**

## 完成條件
- 輸出檔存在、是合法 JSON、含全部 12 題
- 每題五段齊全，每個選項都有分析

## 回報
只回覆 `DONE tmp_drafts/out/114-心臟-001-012.json` + 三行摘要。
如果有標 `[需查證]` 的地方，列出題號。
```

> 💡 **最後那句「列出標了 [需查證] 的題號」很值錢**——Claude 收尾時直接知道要查哪幾題，不用自己 grep 全部。

---

## 完整的一次編排

從 Claude 那邊看（在 Herdr pane 裡）：

```bash
# 1. 開背景 pane
split=$(herdr pane split --current --direction right --cwd "$PWD" --no-focus)
p=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')

# 2. 啟動 codex worker
#    ⚠️ 不要在這裡寫死模型名——讓 config.toml 的 profile 決定
herdr agent start w-心臟a --kind codex --pane "$p"

# 3. 丟任務（不等，讓多個 worker 平行跑）
herdr agent prompt w-心臟a "$(cat tmp_drafts/tasks/114-心臟-001-012.task.md)"
```

從 Codex 那邊看：它在一個真實終端裡跑，用 `worker` profile（`never` + `workspace-write`），讀任務檔的規格，寫出 JSON，回一句 `DONE`。

驗收（Claude 做）：

```bash
herdr agent wait w-心臟a --until idle --until done --timeout 1800000

# 看檔案，不看狀態
out=tmp_drafts/out/114-心臟-001-012.json
test -f "$out" && jq empty "$out" && [ "$(jq 'length' "$out")" = "12" ] \
  && echo "✅" || echo "❌ 需重派"

# 找出待查證的地方
grep -o '\[需查證\]' "$out" | wc -l
```

---

## 兩個常見的失敗模式

### 1. 任務範圍太大

`Taiwan_IM_board/CLAUDE.md` §5 的實測是 **一個 agent 10–12 題最穩**。用 Codex 之後 stream timeout 不再是限制（本機 process），但**批次小仍然有價值**：

- 出錯時重做的成本低
- 每個 pane 的 transcript 短，你巡場好讀
- Codex 額度是 5 小時滾動視窗，**小批次比較好控制消耗速度**

### 2. 規格沒帶夠

Codex **讀不到** `CLAUDE.md`、讀不到你的 skill、不記得上次的對話。

**症狀**：產出格式對但內容品質不對、或違反某條你以為它知道的規則。

**解法**：把規則搬進三層護欄裡。判斷標準是——

| 規則的性質 | 放哪 |
|---|---|
| 每個 session 都適用 | 全域 `~/.codex/AGENTS.md` |
| 這個 repo 適用 | repo 的 `AGENTS.md` |
| 這批任務適用 | 任務檔 |

---

## 額度管理

**Codex 的額度不是無限的**：ChatGPT Plus 是每 5 小時的滾動視窗，本機與 cloud task 共用，另有週上限。

實務建議：

- **2–3 個平行 worker** 比較穩，不要一次開 5 個全速跑
- 量產用 `model_reasoning_effort = "medium"`，不要一律最高
- ⚠️ **Codex 沒有 `--max-budget-usd` 這種內建煞車**（Claude Code 有），所以**控制範圍和批次大小是你唯一的手段**

---

## 一句話總結

> **Codex 是很好的執行者，但它什麼都不記得。**
> 你給它的護欄有多完整，它的產出就有多可靠。

---

## 🔗 相關筆記

- [[07-MCP與擴充]] — 上一步
- [[09-疑難排解與速查表]] — 下一步
- [[05-AGENTS-md與config-toml]] — 三層護欄的前兩層
- [[Programming/Herdr/Herdr從0開始使用教學/08-Claude當大腦-Codex當雙手|Herdr 08]] — 從編排者角度看同一件事
- [[Programming/Herdr/Herdr從0開始使用教學/09-實戰-刷題網站Taiwan-IM-board|Herdr 09]] — 詳解量產的完整流程
- [[Programming/Herdr/Herdr從0開始使用教學/10-實戰-Obsidian醫學筆記庫|Herdr 10]] — 職責分界表

---

*最後更新：2026-08-04*
