From a97fd07ec72eeb4fbc0516571af92dcd67a895b9 Mon Sep 17 00:00:00 2001 From: Eve Date: Wed, 8 Apr 2026 08:25:19 +0800 Subject: [PATCH] docs: draft near-apply multi-agent config patch --- .../plans/2026-04-07-openclaw-config-draft.md | 20 ++ ...config-near-apply-candidate-patch-notes.md | 57 +++++ ...law-config-near-apply-candidate-patch.json | 231 ++++++++++++++++++ 3 files changed, 308 insertions(+) create mode 100644 docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch-notes.md create mode 100644 docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch.json diff --git a/docs/plans/2026-04-07-openclaw-config-draft.md b/docs/plans/2026-04-07-openclaw-config-draft.md index 62e0ce6..384710d 100644 --- a/docs/plans/2026-04-07-openclaw-config-draft.md +++ b/docs/plans/2026-04-07-openclaw-config-draft.md @@ -406,3 +406,23 @@ Schema 核對後,每個 `agents.list[]` entry: - 是否加入 per-agent `tools` - 是否另外用 prompt / workflow 檔補足制度邊界 +## 14. Near-Apply Candidate Patch(2026-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` 空陣列在 runtime 是否符合預期 +- 是否還要細化 per-agent tool policy + diff --git a/docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch-notes.md b/docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch-notes.md new file mode 100644 index 0000000..a630b92 --- /dev/null +++ b/docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch-notes.md @@ -0,0 +1,57 @@ +# 2026-04-08 OpenClaw Near-Apply Candidate Patch Notes + +這份 near-apply candidate patch 是在前一版 candidate patch 基礎上,再補進第一輪值得落進 config 的進階欄位: +- `identity` +- `skills` +- per-agent `tools.deny` +- `subagents.allowAgents` + +## 1. 設計策略 +本版仍維持: +- 每個 agent 獨立 workspace +- `tools.sessions.visibility = "all"` +- `tools.agentToAgent.enabled = true` +- `tools.agentToAgent.allow = 6-agent allowlist` + +但額外補強: +- 讓每個 agent 在 UI / prompt 注入層面有更清楚的身份 +- 讓每個 agent 只看到與自己任務相稱的 skill 範圍 +- 用 per-agent `tools.deny` 先保守收掉不應直接使用的高影響工具 +- 用 `subagents.allowAgents` 表達 Eve 可以派下游、下游原則上不再往下派 + +## 2. 為什麼先用 `tools.deny` +這一版先採保守 deny: +- `message` +- `gateway` +- `cron` +- `nodes` + +原因: +- 這些工具最容易越過 Eve 的單一對上窗口 +- 也容易導致對外發送、改 config、排程、裝置互動等高影響動作 +- 先收緊,再視實際需要局部放開,比一開始放太寬安全 + +## 3. `subagents.allowAgents` 的角色 +- `coder`:允許派給 5 個下游 agent +- 其餘 5 個 agent:先設為空陣列,表達原則上不再往下派 + +注意: +這有助於把制度往 config 靠攏,但仍不等於完整的程序正義。真正的「只能回 Eve、不可越權完成」仍需 prompt / workflow 一起約束。 + +## 4. `skills` 的策略 +這一版只放最小、角色對應的 allowlist: +- `prompt-optimizer`:偏任務整理 +- `reviewer`:偏驗證與 code review +- `research`:偏搜尋與資料整理 +- `engineering`:偏測試、驗證、技術交付 +- `ops`:偏健康檢查與維運研究 + +## 5. 套用前最後仍需確認的點 +1. `tools.deny` 是否會與實際流程衝突 +2. `skills` allowlist 是否過窄,導致 agent 看不到必要 skill +3. `subagents.allowAgents: []` 是否在實際 schema / runtime 下等價於完全禁止往下派 +4. 是否還要補 per-agent `tools.exec` / `tools.elevated` / `tools.fs` 細節 + +## 6. 建議定位 +- 這份檔案已比前一版更接近可套用 +- 但仍應先做人工審查,不建議直接拿去 patch live gateway diff --git a/docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch.json b/docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch.json new file mode 100644 index 0000000..a61f962 --- /dev/null +++ b/docs/plans/2026-04-08-openclaw-config-near-apply-candidate-patch.json @@ -0,0 +1,231 @@ +{ + "agents": { + "defaults": { + "workspace": null + }, + "list": [ + { + "id": "coder", + "name": "Eve", + "workspace": "/home/alice/.openclaw/workspace", + "model": { + "primary": "cowbay/gpt-5.4", + "fallbacks": [ + "ollama/minimax-m2.5:cloud", + "cowbay/minimax/minimax-m2.5:free", + "cowbay/kilo-auto/free" + ] + }, + "identity": { + "name": "Eve", + "theme": "gentle coordinator and overseer", + "emoji": "🤖" + }, + "skills": [ + "using-superpowers", + "executing-plans", + "requesting-code-review", + "verification-before-completion", + "writing-plans", + "using-git-worktrees", + "subagent-driven-development" + ], + "subagents": { + "allowAgents": [ + "prompt-optimizer", + "reviewer", + "research", + "engineering", + "ops" + ] + } + }, + { + "id": "prompt-optimizer", + "name": "Prompt Optimizer", + "workspace": "/home/alice/.openclaw/workspace-prompt-optimizer", + "model": { + "primary": "cowbay/gpt-5.4", + "fallbacks": [ + "ollama/minimax-m2.5:cloud", + "cowbay/minimax/minimax-m2.5:free", + "cowbay/kilo-auto/free" + ] + }, + "identity": { + "name": "Prompt Optimizer", + "theme": "task clarification and execution drafting", + "emoji": "🧭" + }, + "skills": [ + "using-superpowers" + ], + "tools": { + "deny": [ + "message", + "gateway", + "cron", + "nodes" + ] + }, + "subagents": { + "allowAgents": [] + } + }, + { + "id": "reviewer", + "name": "Reviewer", + "workspace": "/home/alice/.openclaw/workspace-reviewer", + "model": { + "primary": "cowbay/gpt-5.4", + "fallbacks": [ + "ollama/minimax-m2.5:cloud", + "cowbay/minimax/minimax-m2.5:free", + "cowbay/kilo-auto/free" + ] + }, + "identity": { + "name": "Reviewer", + "theme": "strict verification and evidence review", + "emoji": "🛡️" + }, + "skills": [ + "using-superpowers", + "verification-before-completion", + "requesting-code-review" + ], + "tools": { + "deny": [ + "message", + "gateway", + "cron", + "nodes" + ] + }, + "subagents": { + "allowAgents": [] + } + }, + { + "id": "research", + "name": "Research", + "workspace": "/home/alice/.openclaw/workspace-research", + "model": { + "primary": "cowbay/gpt-5.4", + "fallbacks": [ + "ollama/minimax-m2.5:cloud", + "cowbay/minimax/minimax-m2.5:free", + "cowbay/kilo-auto/free" + ] + }, + "identity": { + "name": "Research", + "theme": "source-based investigation and comparison", + "emoji": "🔎" + }, + "skills": [ + "using-superpowers", + "tavily-search", + "serpapi", + "github" + ], + "tools": { + "deny": [ + "message", + "gateway", + "cron", + "nodes" + ] + }, + "subagents": { + "allowAgents": [] + } + }, + { + "id": "engineering", + "name": "Engineering", + "workspace": "/home/alice/.openclaw/workspace-engineering", + "model": { + "primary": "cowbay/gpt-5.4", + "fallbacks": [ + "ollama/minimax-m2.5:cloud", + "cowbay/minimax/minimax-m2.5:free", + "cowbay/kilo-auto/free" + ] + }, + "identity": { + "name": "Engineering", + "theme": "implementation debugging and validation", + "emoji": "🧰" + }, + "skills": [ + "using-superpowers", + "test-patterns", + "requesting-code-review", + "verification-before-completion" + ], + "tools": { + "deny": [ + "message", + "gateway", + "cron", + "nodes" + ] + }, + "subagents": { + "allowAgents": [] + } + }, + { + "id": "ops", + "name": "Ops", + "workspace": "/home/alice/.openclaw/workspace-ops", + "model": { + "primary": "cowbay/gpt-5.4", + "fallbacks": [ + "ollama/minimax-m2.5:cloud", + "cowbay/minimax/minimax-m2.5:free", + "cowbay/kilo-auto/free" + ] + }, + "identity": { + "name": "Ops", + "theme": "operations diagnostics and safe change planning", + "emoji": "⚙️" + }, + "skills": [ + "using-superpowers", + "healthcheck", + "github" + ], + "tools": { + "deny": [ + "message", + "gateway", + "cron", + "nodes" + ] + }, + "subagents": { + "allowAgents": [] + } + } + ] + }, + "tools": { + "sessions": { + "visibility": "all" + }, + "agentToAgent": { + "enabled": true, + "allow": [ + "coder", + "prompt-optimizer", + "reviewer", + "research", + "engineering", + "ops" + ] + } + } +}