docs: draft near-apply multi-agent config patch

This commit is contained in:
Eve
2026-04-08 08:25:19 +08:00
parent 062540c1d6
commit a97fd07ec7
3 changed files with 308 additions and 0 deletions

View File

@@ -406,3 +406,23 @@ Schema 核對後,每個 `agents.list[]` entry
- 是否加入 per-agent `tools` - 是否加入 per-agent `tools`
- 是否另外用 prompt / workflow 檔補足制度邊界 - 是否另外用 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` 空陣列在 runtime 是否符合預期
- 是否還要細化 per-agent tool policy

View File

@@ -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

View File

@@ -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"
]
}
}
}