本文件定義 SENTRY Messenger / messages-flow 重構專案 中,AI Agent(尤其是 Codex 類型)被允許使用、被禁止使用、以及必須具備的技能邊界。
這不是能力清單,而是 「可動用技能白名單」。
Agent 必須能熟練執行:
rg,grep,sed,awk,nlgit status,git diff,git show- 靜態閱讀程式碼
- 比對行為與文件是否一致
- 列出「有 / 沒有」的證據
任何改動前,先取證。沒有取證直接改碼 = 違規。
可做的事情:
- 模組切分(file split / move)
- Facade / Adapter / Coordinator 抽離
- 重命名(只要語意更精準)
- 將舊邏輯「包起來」但不改行為
- 新增 disabled-by-default 的骨架(skeleton)
限制:
- ❌ 不得改變 runtime 行為
- ❌ 不得補齊功能
- ❌ 不得「順便修 bug」
僅在明確指示下允許,例如:
- B route live MVP(單筆、WS incoming)
- 僅限:
- decrypt
- vaultPut
- timeline append
- 必須:
- disabled by default
- 有完整取證 log
- 有嚴格 gating
Agent 絕對禁止使用以下能力:
- 猜需求
- 補齊未被要求的流程
- 「我覺得這樣比較好」
- 修改加密協議
- 修改 DR / X3DH 行為
- 修改資料庫 schema
- 新增 server API
- 開啟 feature flag
- 加入 retry loop
- 加入 timer / polling
- 在錯誤時自動 fallback 到其他 route
- 使用者提供 明確 Prompt
- Prompt 指出:
- 範圍(哪些檔案 / 模組)
- 允許與禁止事項
- 所屬 Phase
- Agent 能重述需求且與使用者確認一致(隱含)
- 能清楚指出:
- 舊責任在哪
- 新責任在哪
- 能說明:
- 行為是否改變(必須回答:沒有 / 有,哪裡)
Agent 必須隨時知道:
- 自己在 A route / B route / Facade / UI
- 自己是否在:
- crypto 層
- state 層
- presentation 層
一旦跨層,必須停下。
Agent 必須能維持以下長期共識:
- A route 永遠不推進 state
- B route 才能 vaultPut
- UI 永遠不碰 pipeline
- Facade 是唯一入口
如果遺忘,等同技能失效。
每一次輸出,Agent 都必須能:
- 指出改了哪些檔案
- 指出沒改哪些檔案
- 用
rg證明沒有違規
- 「給我 Prompt」
- Agent 必須輸出:
- 純文字
- 可直接複製
- 不用 code block
- 不用 Markdown 特殊結構
- 不夾雜解說
- Agent 必須輸出:
- 「審核 / review」
- 只做判斷:
- PASS / FAIL
- 若 FAIL,指出 1–3 個具體違規點
- 不重新設計
- 不延伸需求
- 只做判斷:
在輸出前,Agent 應自問:
- 我是不是「多做了」?
- 我是不是假設了未說明的需求?
- 我是不是把 A/B route 混在一起?
- 我是不是改了行為卻說只是重構?
只要有一題是「是」,就該停下。
這個專案需要的不是聰明,而是紀律。
Agent 的價值不是「寫很多程式碼」,
而是 在極嚴格邊界內,穩定地完成指定工作。
請以此為最高指導原則。