跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

中級:從對話管理升級成 repo 管理

當四個習慣不夠用,你需要把規則從腦袋裡搬回 repo,讓 agent 不靠外部口頭上下文也能繼續工作。


情境:第 47 次跟同事解釋 AI 不能改 migration

你的團隊終於開始認真用 Claude Code / Cursor / Codex 做事。但你發現自己每天都在 Slack 打同一段話:

「記得叫它不要改 migrations/ 下面的檔案。也不能改 API response schema。測試一定要跑過才能交。」

這句話你已經講 47 次了。新人進來還是不知道。AI 每次開新 session 也是從零開始。

這就是中級最常見的訊號:你手上有規則,但規則從來沒進入 agent 的工作環境。中級的解法只有一個 — 把規則寫回 repo

OpenAI 在 2026 的實戰裡最值得注意的一點:他們把 plan、進度、decision log、technical debt 都視為一級工件,版本化後放回 repo,讓 agent 不依賴外部口頭上下文也能繼續工作。


一、中級要建立三種關鍵能力

能力核心問題代表產物
規則檔怎麼把人腦裡的規則變成 agent 可讀的上下文AGENTS.md / CLAUDE.md / .cursorrules
Tool boundary怎麼讓 agent 知道自己能碰哪裡權限分級表、approval 清單
Verification loop怎麼固定迴圈、不靠臨場發揮修改 → 測試 → 讀錯 → 修正 → 重跑

這三件事加起來,就是「從聊天對象變成可持續工作的 agent」的門票。


二、規則檔:把經驗寫進 repo

最典型的幾個檔名你一定會聽到:

  • AGENTS.md
  • CLAUDE.md
  • .cursorrules
  • tasks/plans/decision-log/

這些不是文件管理工具,它們是把「本來靠人腦記的事」轉成 agent 可讀的固定上下文

一份最小可用的 AGENTS.md 長這樣:

# AGENTS.md

## Repo map
- app/: FastAPI app
- tests/: pytest tests
- scripts/: local automation

## Commands
- dev: uvicorn app.main:app --reload
- lint: ruff check .
- format: ruff format .
- test: pytest -q

## Rules
- Do not edit migrations/ unless task explicitly asks.
- Do not change API schema without tests and docs.
- Always run lint + test before done.
- Summarize root cause before final response.

## Approval required
- delete files
- edit infra config
- change production secrets references

注意四個重點:

  1. Repo map — 讓 agent 知道這個 repo 有什麼。
  2. Commands — 讓 agent 用你統一指定的命令,而不是自己猜。
  3. Rules — 寫成祈使句,不要寫精神標語。
  4. Approval required — 明確列出哪些事必須先問人。

這份檔放進 repo 之後,agent 每次開新 session 都會看到,你就不用再在 Slack 重複第 48 次了。


三、Tool boundary:能力邊界即安全邊界

中級最起碼要做到這樣的權限分類:

類型例子風險
Read-only搜檔、看 log、讀 DB schema
Write-safe修改 app/tests/docs/
Destructive刪檔、改 migration、drop data
External side-effectdeploy、發 Slack、叫 API

這個分類在 2026 的 agent harness 實戰文章中反覆出現,因為很多真實事故都不是「模型太笨」,而是工具暴露太多、沒有權限分級

實作上,你至少要回答這三個問題:

  1. 哪些工具是常駐可用的(read-only、write-safe)?
  2. 哪些工具需要明確 approval(destructive、external side-effect)?
  3. 哪些工具根本不該讓 agent 碰(production secrets、金流、刪資料)?

四、Verification loop:固定迴圈,不靠臨場發揮

中級最實用的 loop 長這樣:

1. 理解任務
2. 列計畫
3. 執行修改
4. 執行測試 / lint / type check
5. 收集錯誤
6. 分析 root cause
7. 修正後重跑
8. 超過 N 次失敗則升級給人

第 8 步是最容易被忽略、但最重要的一步。沒有 escalation 條件,agent 就會無限打轉 — 有時候連跑 20 次重試還卡在同一個錯誤,token 燒掉你半天的預算。

實務上 escalation 條件可以是:

  • 失敗次數上限:連續 3 次同類型錯誤就升級。
  • 時間上限:超過 30 分鐘沒完成就升級。
  • 成本上限:token 用量超過 X 就升級。
  • 信心度不足:agent 自己表達「我不確定該怎麼做」就升級。

五、一份最小可行的中級 Harness 範例

假設你在維護一個 FastAPI 的電商訂單服務,你的中級 harness 可以長這樣:

1. AGENTS.md(前面已經給過範例,這裡是專案實際版)

# AGENTS.md — orders-service

## Repo map
- app/: FastAPI app
- app/routers/: API endpoints(含 /orders、/products、/checkout)
- app/models/: Pydantic models
- tests/: pytest tests
- migrations/: Alembic migrations(agent 不可改)

## Commands
- dev: uvicorn app.main:app --reload
- lint: ruff check .
- test: pytest -q
- test-one: pytest -q -k

## Rules
- 只能改 app/ 與 tests/。
- 不可改 API response schema(會影響前端合約)。
- 任何修改都必須有對應 regression test。
- 完成前必須執行 lint + test,兩者都綠才算 done。
- 完成後必須說明 root cause。

## Approval required
- 改 migrations/
- 改 .env / docker-compose.yml
- 任何涉及 payment provider 的改動

2. 任務模板

Goal: 修復 /orders API 空購物車時回 500 的錯誤
Constraints:
- 只能修改 app/ 與 tests/
- 不可修改 API response schema
- 必須新增一個針對空購物車情境的 regression test
Definition of done:
- pytest 全綠
- ruff check 全綠
- 說明 root cause
- 列出改動過的檔案清單

3. Verification loop(寫進 agent 的 system prompt 或 skill)

每次任務:
1. 先讀 AGENTS.md 與相關檔案。
2. 列計畫給人看,等確認。
3. 執行修改。
4. 跑 lint + test。
5. 如果失敗:分析 root cause、修正、重跑(最多 3 次)。
6. 3 次仍失敗:停下、整理目前狀況、請人介入。

這三樣加起來,已經不是單純的 prompt,而是一個最小可行的 project harness


六、中級常見誤區

  1. 規則散在 Slack / Notion,不寫回 repo — agent 每次都會重新失憶。
  2. 工具放太多 — Vercel 與社群案例都顯示:工具變少反而更穩。
  3. 規則只寫原則,不寫命令 — agent 要的是「可執行的資訊」,不是「精神標語」。
  4. 沒有 escalation 條件 — 失敗次數、成本、時間上限不定義,agent 就會無限打轉。

特別提醒一下第 2 點:你的直覺通常會想給 agent 更多工具,讓它更強大。但實戰經驗一再證明,工具越少反而越穩定。多的工具 = 多的誤用機會 = 多的 token 浪費。


AI 協作:學了這個,跟 AI 怎麼配合?

中級的關鍵是讓 agent 有一個「共同的工作環境」,而不是每次都從零開始。你花在寫 AGENTS.md 的 30 分鐘,會在接下來三個月幫你省下幾十小時的重複溝通。

你的人類優勢:

  • 只有你知道這個 repo 的歷史包袱、哪些檔案「看起來可以改但其實動不得」。
  • 只有你知道團隊的 approval 流程與真正在意的風險點。

可以這樣跟 AI 說:

我要為一個 [專案類型] 的 repo 寫第一版 AGENTS.md。請基於以下資訊產出草稿:[貼上 repo 結構、常用命令、已知禁區]。寫完後請列出 5 個你會想問我但我沒告訴你的問題(例如 approval 門檻、escalation 條件),而不是自己猜。


練習題


本堂重點回顧

  1. 規則必須寫回 repoAGENTS.md / CLAUDE.md 不是文件,是 agent 的工作環境。
  2. Tool boundary:能力邊界即安全邊界,預設走嚴格比較安全。
  3. Verification loop:固定流程 + escalation 條件 — 沒有 escalation,agent 就會燒錢打轉。
  4. 工具越少越穩定:你的直覺會想加工具,實戰會叫你刪工具。

下堂課:進階 — 當 agent 真的開始跑,你會需要 middleware、state、observability 這三樣東西,讓系統從「會跑」變成「可追、可修、可優化」。

挑戰任務

Task 1

挑一個你現在正在維護(或維護過)的專案,寫一份最小可行的 AGENTS.md。至少包含 Repo map、Commands、Rules、Approval required 四個區塊。Rules 至少 5 條,Approval required 至少 3 條。

Task 2

為你的 agent 設計一份 tool boundary 表,至少涵蓋 read-only、write-safe、destructive、external side-effect 四類。每類至少列 2 個具體工具或操作,並標註「預設可用 / 需 approval / 禁止」。

Task 3

為你的 agent 定義至少 3 條 escalation 條件。每一條寫清楚:(1) 觸發情境、(2) 觸發時 agent 要做什麼、(3) 你期待人介入時看到什麼資訊。

BackNext Lesson →