Files
reporting-governance-plugin/docs/plans/2026-04-07-openclaw-config-draft.md

445 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenClaw 多代理 Config 草案2026-04-07
本文件是把前面確認過的流程設計,轉成可實際落地的 OpenClaw 設定草案。
目標不是立刻套用,而是先把:
- agent 名單
- workspace 規劃
- 權限邊界
- agent-to-agent 允許圖
- session 可見性
- 模型配置
整理成一份可審、可再修的正式草案。
---
## 1. 設計原則
### 1.1 唯一入口
- Eric 總管只對 **Eve / coder 主會話** 下旨
- 不直接與下游功能型 agent 對話
### 1.2 下游只對 Eve 回報
- `prompt-optimizer`
- `reviewer`
- `research`
- `engineering`
- `ops`
以上 5 個 agent 都只接受 Eve 派工,並只向 Eve 回報。
### 1.3 不做過重 routing
第一版不做複雜朝廷式多層 routing也不讓 Telegram 直接綁到其他 agent。
### 1.4 強調防失聯
- 任務可失敗,但不可失聯
- 任務可中斷,但不可無聲中斷
- Eve 必須是持續追蹤與回報者
---
## 2. Agent 清單草案
建議第一版 agent list
1. `coder`Eve 主會話)
2. `prompt-optimizer`
3. `reviewer`
4. `research`
5. `engineering`
6. `ops`
### 2.1 各 agent 定位
- `coder`Eve本體總調度
- `prompt-optimizer`:整理執行版任務單
- `reviewer`:驗收與複核
- `research`:查找、比較、整理研究資訊
- `engineering`:程式、除錯、測試、技術實作
- `ops`部署、設定、服務、容器、log、系統診斷
---
## 3. Workspace 規劃
建議在 `~/.openclaw/` 下建立獨立工作區:
- `/home/alice/.openclaw/workspace``coder`Eve沿用現有主工作區
- `/home/alice/.openclaw/workspace-prompt-optimizer`
- `/home/alice/.openclaw/workspace-reviewer`
- `/home/alice/.openclaw/workspace-research`
- `/home/alice/.openclaw/workspace-engineering`
- `/home/alice/.openclaw/workspace-ops`
### 3.1 工作區原則
- Eve 使用主工作區
- 每個功能型 agent **必須擁有自己獨立的 workspace**
- **禁止多個 agent 共用同一個工作目錄**
- 獨立工作區的目的是避免互相污染上下文、memory、tasks、logs 與操作痕跡
- 若需要共享規格文件,可用明確同步方式,不靠隱晦 prompt 假設
- config 草案中應盡量為每個 agent 明確寫出 `workspace`,不要依賴共享 default workspace
---
## 4. Session / Tool 邊界建議
### 4.1 `tools.sessions.visibility`
Schema 核對後,可選值重點如下:
#### 選項比較
- `self`:只看當前 session太窄
- `tree`**預設值**;可看當前 session + 自己 spawn 出來的 subagent sessions
- `agent`:可看同一個 agent id 下的 sessions但仍不等於跨 agent 調度
- `all`:可看所有 sessions若要跨 agent仍需搭配 `tools.agentToAgent`
### 建議
**本架構第一版仍建議用 `all`**,但搭配嚴格 `tools.agentToAgent.allow`
原因:
- Eve 需要查其他 agent 的 session / history / send
- `tree` 雖然較保守,但只涵蓋當前 session 與其下游,不足以支撐完整多代理中樞協調
- `all` 不是單獨放行;跨 agent 仍受 `tools.agentToAgent` 約束
---
## 5. Agent-to-Agent 草案
### 5.1 是否啟用
建議:`enabled: true`
因為如果 Eve 要穩定派工與收件,多代理之間需要正式的 agent-to-agent 能力。
### 5.2 Allowlist 設計
第一版建議 allowlist 只放:
- `coder`
- `prompt-optimizer`
- `reviewer`
- `research`
- `engineering`
- `ops`
### 5.3 關係規則
雖然 allowlist 會包含全部 6 個 agent但實際制度規則應限定為
- `coder` 可派給全部其他 agent
- `prompt-optimizer` 只回 Eve不再往下派
- `reviewer` 只回 Eve不再往下派
- `research` 原則上只回 Eve
- `engineering` 原則上只回 Eve
- `ops` 原則上只回 Eve
### 注意
OpenClaw schema 對 `tools.agentToAgent` 目前只確認有:
- `enabled`
- `allow`
也就是說config 層目前只能做「名單放行」,無法細緻表達「誰可以找誰」的單向圖。
所以真正的單向制度,必須再由 prompt / workflow 規則約束。
---
## 6. 模型配置建議
### 6.1 Eve / coder
建議沿用:
- `cowbay/gpt-5.4`
理由:
- 要做總調度、驗收、判斷、整合
- 需要較穩定的理解與管理能力
### 6.2 prompt-optimizer
建議:
- `cowbay/gpt-5.4`
或較便宜但仍穩的型號
理由:
- 需要理解模糊需求與整理結構
- 若品質差,後面整條鏈都會歪
### 6.3 reviewer
建議:
- `cowbay/gpt-5.4`
理由:
- reviewer 的價值在嚴格判斷,不宜太弱
### 6.4 research / engineering / ops
可先統一:
- `cowbay/gpt-5.4`
之後再視成本與品質,分別調整。
### 第一版建議
**先全部用同一個穩定主模型,確認流程正確後再分模型。**
---
## 7. Agent 草案結構schema 已確認)
Schema 核對後,每個 `agents.list[]` entry
### 必要欄位
- `id`
### 第一版建議明確寫出的欄位
- `name`
- `workspace`
- `model`
### Schema 另有支援、可留待第二版評估的欄位
- `default`
- `agentDir`
- `skills`
- `identity`
- `tools`
- `subagents`
- `runtime`
- `thinkingDefault`
- `reasoningDefault`
- `fastModeDefault`
### 已額外核對到的可用欄位細節
- `identity`:目前可放 `name` / `theme` / `emoji` / `avatar`
- `skills`:是字串陣列,可作 agent skill allowlist
- `tools`:可做 per-agent 工具限制(如 `allow` / `alsoAllow` / `deny` / `profile` 等)
- `subagents`:目前至少確認可放 `allowAgents` / `model` / `thinking`
- `runtime`schema 有保留,但這次 lookup 沒展開出更細子欄位,暫不建議先寫死
因此,第一版 ready draft 先聚焦在:
- 穩定 agent id
- 明確 workspace
- 明確 model
- 先不把 prompt 制度細節誤塞進 config schema 不保證的欄位
### 概念草案
```json
{
"agents": {
"defaults": {
"model": {
"primary": "cowbay/gpt-5.4"
}
},
"list": [
{
"id": "coder",
"name": "Eve"
},
{
"id": "prompt-optimizer",
"name": "Prompt Optimizer",
"workspace": "/home/alice/.openclaw/workspace-prompt-optimizer"
},
{
"id": "reviewer",
"name": "Reviewer",
"workspace": "/home/alice/.openclaw/workspace-reviewer"
},
{
"id": "research",
"name": "Research",
"workspace": "/home/alice/.openclaw/workspace-research"
},
{
"id": "engineering",
"name": "Engineering",
"workspace": "/home/alice/.openclaw/workspace-engineering"
},
{
"id": "ops",
"name": "Ops",
"workspace": "/home/alice/.openclaw/workspace-ops"
}
]
}
}
```
---
## 8. 權限與制度邊界
### 8.1 Eve 的權限定位
- 可接旨
- 可派工
- 可追蹤
- 可驗收
- 可整合回報
### 8.2 子代理共通限制
- 不直接對總管發話
- 不自行宣告正式完成
- 高風險動作未授權前不可自行執行
- 必須如實回報卡點、錯誤與風險
### 8.3 Reviewer 特別定位
- 不是對上窗口
- 不是第二個 Eve
- 是 Eve 的驗收輔助與嚴格審查者
---
## 9. 第一版最小可行配置建議
若要先求穩,不必一次裝滿全部能力。
### Phase 1
先開:
- `coder`
- `prompt-optimizer`
- `reviewer`
- `engineering`
用這組先驗證:
- 接旨
- prompt 優化
- 單線技術任務
- 驗收/退件
- 正式回報
### Phase 2
再加:
- `research`
- `ops`
驗證:
- 研究支線
- 運維支線
- 並行任務
這樣比一次全開更穩。
---
## 10. 建議下一步
下一步建議分三件事做:
### A. 保持「說明文件」與「ready draft JSON」分離
- `openclaw-config-ready-draft.json` 應只保留 schema-backed config 欄位
- `meta``phase``implementationNotes` 這類設計說明,應留在 markdown不要混進可套用 JSON
### B. 第二輪優先決定哪些進階欄位要進第一版 config
建議優先順序:
1. `identity`(可讀性高、風險低)
2. `skills`(可限制每個 agent 看到的 skill 範圍)
3. `subagents.allowAgents`(若要進一步約束誰能派誰,值得優先研究)
4. `tools`(高價值,但需非常小心別把 agent 卡死)
5. `runtime` / `agentDir`(先保守)
### C. 真正的制度邊界,分清楚哪裡該放 config、哪裡該放 prompt
適合放 config
- workspace
- model
- sessions visibility
- agentToAgent allowlist
- per-agent tool policy
- skill allowlist
不適合假裝只靠 config 解決:
- 只准 Eve 對總管回話
- 子代理只能回 Eve
- reviewer 不可越權判定完成
- 失聯超時後的回報責任
### D. 再建立各 agent 工作區與 prompt 檔案布局草案
例如:
- `SOUL.md`
- `AGENTS.md`
- 是否共用某些規格文件
---
## 11. 結論
這份 config 草案的核心不是「多加幾個 agent」而是把制度落地成一個穩定的中樞模式
- 總管只對 Eve 下旨
- Eve 再決定是否走 optimizer
- Eve 派給對應功能 agent
- 所有結果先回 Eve
- Eve 驗收後才正式回報
如果照這份草案走,後續實作時就不會再回到那種多層朝廷式、難控、容易失聯的狀態。
## 12. 下一輪收斂建議(往 config.patch 靠攏)
若要再往前一步,我建議下一輪直接產出兩份:
### 12.1 `config.patch` 候選版本
只包含:
- `agents.defaults`
- `agents.list`
- `tools.sessions.visibility`
- `tools.agentToAgent`
### 12.2 `policy-notes.md` 或沿用本檔
專門保存:
- Eve 才是唯一對上窗口
- 子代理只能回 Eve
- reviewer 的角色界線
- 失聯 / 超時 / 重派的程序正義
這樣可避免把制度描述誤塞進 schema 不保證存在的欄位,之後真的套用 config 時也較不容易踩坑。
## 13. 已產出的候選 patch 檔
本輪已另外落出兩份審查用文件:
1. `docs/plans/2026-04-07-openclaw-config-candidate-patch.json`
2. `docs/plans/2026-04-07-openclaw-config-candidate-patch-notes.md`
### 13.1 候選 patch 的策略
- 以 live config 為基準做**最小必要變更**
- 使用 JSON Merge Patch 語義
- 明確以 `agents.defaults.workspace: null` 刪除共享 default workspace
- 以完整 `agents.list` 替換現有單一 `coder` list
### 13.2 為什麼這份是 candidate patch不是直接套用版
因為在真正送進 `gateway config.patch` 前,仍需先確認:
- 各工作區是否先建好
- 是否加入 `identity`
- 是否加入 `skills`
- 是否加入 per-agent `tools`
- 是否另外用 prompt / workflow 檔補足制度邊界
## 14. Near-Apply Candidate Patch2026-04-08
本輪已進一步產出:
1. `docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch.json`
2. `docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch-notes.md`
### 14.1 相較前一版 candidate patch 的新增內容
- 每個 agent 補 `identity`
- 每個 agent 補最小 `skills` allowlist
- 每個下游 agent 補保守的 `tools.deny`
-`subagents.allowAgents` 進一步表達派工邊界
### 14.2 這版仍然不是直接套用版
雖然已接近可套用,但仍需先審查:
- `skills` 是否過窄
- `tools.deny` 是否卡住實際流程
- `subagents.allowAgents: []` 只代表不能跨 agent 派工,不等於完全禁用 `sessions_spawn`
- 若要真正禁止下游 agent 再往下派,需搭配 per-agent `tools.deny: ["sessions_spawn"]`
- 是否還要細化 per-agent tool policy
## 15. Final Review Checklist2026-04-08
本輪已再產出:
1. `docs/plans/2026-04-08-openclaw-multi-agent-final-review-checklist.md`
### 15.1 用途
這份文件不是再發散設計,而是把 near-apply 版進入真正套用前,還需要人工確認的點壓成 checklist。
### 15.2 焦點
- skill allowlist 是否過窄
- per-agent `tools.deny` 是否合理
- `coder` 與下游 agent 的 delegation 邊界是否符合預期
- 套用後需要用哪些驗證動作確認 policy 真的生效