43cd42a563
- openclaw.json
- plugins.allow 放行 acpx(限制性白名单,缺了后端不会加载)
- 新增 acp 策略段:enabled/dispatch、backend=acpx、defaultAgent=dsh、
allowedAgents=[dsh]、stream.deliveryMode=live
- 新增 plugins.entries.acpx.config:permissionMode=approve-all、
timeoutSeconds=900、cwd、agents.dsh = dsh --profile acp(绝对路径)
- 新增 OpenClaw agent dsh(runtime.type=acp → harness dsh),否则
sessions_spawn 会报 dispatch_failed: Unknown agent id "dsh"
- workspace-dsh/:该 agent 的身份文件(AGENTS/SOUL/IDENTITY/USER/BOOTSTRAP.md)。
其中的空 .git 由 `openclaw agents add` 的标准 provisioning 生成(非任何 agent 自建),
会让父仓库把它当 gitlink,已移除后纳入版本控制
- docs/bk02-dsh-openclaw-ACP集成.md:部署/配置/验证证据/排错/回滚全文
- docs/dsh-acp-smoke.mjs:ACP 独立冒烟(initialize→session/new→prompt→close)
- docs/dsh-lang-check.mjs:全局中文指令验证(英文提问看是否回中文)
- skills/delegate-to-dsh:让「交给 dsh」稳定走 ACP 派发;缺此技能时模型会
静默 fallback 到内嵌 subagent(已复现「假成功」并写入判据)
- agents/main/agent/workshop-skills/acp-backend-triage:ACP 后端排查技能
- plugin-skills/acp-router:acpx 插件自带技能(symlink,与既有渠道一致)
- .gitignore:workspace-dsh 沿用 workspace/ 白名单(只版本化顶层 *.md);
新增忽略 acpx/ 插件运行产物
验证:ACP 三条途径均通过(独立冒烟、显式 sessions_spawn、自然语言「转给 dsh」),
DSH 侧会话留痕与产物落地见 docs 文档 §5 与 §7。
712 lines
16 KiB
JSON
712 lines
16 KiB
JSON
{
|
|
"meta": {
|
|
"lastTouchedVersion": "2026.9.4",
|
|
"migrations": {
|
|
"modelPolicyAllowlist": true
|
|
}
|
|
},
|
|
"wizard": {
|
|
"lastRunAt": "2026-08-31T12:03:10.936Z",
|
|
"lastRunVersion": "2026.8.1",
|
|
"lastRunCommand": "doctor",
|
|
"lastRunMode": "local",
|
|
"securityAcknowledgedAt": "2026-09-11T05:15:32.983Z"
|
|
},
|
|
"auth": {
|
|
"profiles": {
|
|
"ollama:default": {
|
|
"provider": "ollama",
|
|
"mode": "api_key"
|
|
},
|
|
"deepseek:default": {
|
|
"provider": "deepseek",
|
|
"mode": "api_key"
|
|
}
|
|
}
|
|
},
|
|
"models": {
|
|
"mode": "merge",
|
|
"providers": {
|
|
"deepseek": {
|
|
"baseUrl": "https://api.deepseek.com",
|
|
"apiKey": "${DEEPSEEK_API_KEY}",
|
|
"api": "openai-completions",
|
|
"models": [
|
|
{
|
|
"id": "deepseek-flash",
|
|
"name": "DeepSeek Flash",
|
|
"reasoning": false,
|
|
"input": [
|
|
"text"
|
|
],
|
|
"cost": {
|
|
"input": 1,
|
|
"output": 2,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 384000,
|
|
"api": "openai-completions",
|
|
"compat": {
|
|
"supportsReasoningEffort": true,
|
|
"supportsUsageInStreaming": true,
|
|
"codeMode": "preferred",
|
|
"maxTokensField": "max_tokens"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"memory": {
|
|
"search": {
|
|
"enabled": true,
|
|
"provider": "openai-compatible",
|
|
"model": "BAAI/bge-m3",
|
|
"remote": {
|
|
"baseUrl": "https://api.siliconflow.cn/v1",
|
|
"apiKey": "$SILICONFLOW_API_KEY"
|
|
}
|
|
}
|
|
},
|
|
"agents": {
|
|
"defaults": {
|
|
"systemAgent": {
|
|
"agentId": "main"
|
|
},
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"modelPolicy": {
|
|
"allow": [
|
|
"deepseek/deepseek-flash"
|
|
]
|
|
},
|
|
"workspace": "/home/yangxuan/.openclaw/workspace",
|
|
"compaction": {
|
|
"mode": "safeguard"
|
|
},
|
|
"timeoutSeconds": 3600,
|
|
"maxConcurrent": 2,
|
|
"subagents": {
|
|
"maxConcurrent": 4,
|
|
"allowAgents": [
|
|
"*"
|
|
]
|
|
},
|
|
"sandbox": {
|
|
"mode": "off"
|
|
}
|
|
},
|
|
"ownership": "explicit",
|
|
"entries": {
|
|
"main": {
|
|
"name": "助手",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/main/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"identity": {
|
|
"name": "助手",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "👨💻",
|
|
"theme": "温暖而乐于助人 · 务实不表演 · 技术严谨 · 隐私优先 · 耐心细致"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
}
|
|
},
|
|
"resume": {
|
|
"name": "简历",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-resume",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/resume/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "简历",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "📝",
|
|
"theme": "专业严谨 · 细致耐心 · 隐私优先 · 实用导向"
|
|
}
|
|
},
|
|
"travel": {
|
|
"name": "旅行",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-travel",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/travel/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "旅行",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "✈️",
|
|
"theme": "专业可靠 · 细致周到 · 热情不烦人 · 尊重预算 · 注重实用"
|
|
}
|
|
},
|
|
"fitness": {
|
|
"name": "健康",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-fitness",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/fitness/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "健康",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "🏋️",
|
|
"theme": "鼓励、理性、有温度,不说教,严谨但不焦虑"
|
|
}
|
|
},
|
|
"finances": {
|
|
"name": "理财",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-finances",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/finances/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "理财",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "💰",
|
|
"theme": "专业、理性、务实、不说教"
|
|
}
|
|
},
|
|
"juaner": {
|
|
"name": "卷儿",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-juaner",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/juaner/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "卷儿",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "🐑",
|
|
"theme": "温暖体贴、细致周到、有求必应"
|
|
}
|
|
},
|
|
"sql": {
|
|
"name": "SQL",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-sql",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/sql/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"identity": {
|
|
"name": "SQL",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "🗄️",
|
|
"theme": "严谨、高效、注重性能,写出的 SQL 干净漂亮"
|
|
}
|
|
},
|
|
"note": {
|
|
"name": "笔记",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-note",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/note/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "笔记",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "📝",
|
|
"theme": "严谨细致 · 分类清晰 · 只归档不破坏 · 安静可靠"
|
|
}
|
|
},
|
|
"pbs": {
|
|
"name": "PBS备份",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-pbs",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/pbs/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "PBS备份",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "💾",
|
|
"theme": "严谨 · 可靠 · 数据安全第一 · 中文交流 · 耐心细致"
|
|
}
|
|
},
|
|
"wellness": {
|
|
"name": "放松保健",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-wellness",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/wellness/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "放松保健",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "💆",
|
|
"theme": "平和 · 细致 · 客观 · 尊重隐私 · 不评判"
|
|
}
|
|
},
|
|
"tab": {
|
|
"name": "导航页",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-tab",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/tab/agent",
|
|
"model": {
|
|
"primary": "deepseek/deepseek-flash"
|
|
},
|
|
"models": {
|
|
"deepseek/deepseek-flash": {}
|
|
},
|
|
"identity": {
|
|
"name": "导航页",
|
|
"avatar": "https://minio.climbcube.cn/img/assistant.jpg",
|
|
"emoji": "🗄️",
|
|
"theme": "严谨 · 务实 · 数据准确 · 先核实再动手"
|
|
}
|
|
},
|
|
"dsh": {
|
|
"name": "DSH",
|
|
"workspace": "/home/yangxuan/.openclaw/workspace-dsh",
|
|
"agentDir": "/home/yangxuan/.openclaw/agents/dsh/agent",
|
|
"identity": {
|
|
"name": "dsh"
|
|
},
|
|
"runtime": {
|
|
"type": "acp",
|
|
"acp": {
|
|
"agent": "dsh",
|
|
"backend": "acpx"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tools": {
|
|
"profile": "full",
|
|
"sessions": {
|
|
"visibility": "all"
|
|
},
|
|
"agentToAgent": {
|
|
"enabled": true,
|
|
"allow": [
|
|
"main",
|
|
"resume",
|
|
"sql",
|
|
"travel",
|
|
"fitness",
|
|
"finances",
|
|
"juaner",
|
|
"note",
|
|
"pbs",
|
|
"wellness",
|
|
"tab"
|
|
]
|
|
},
|
|
"deny": [
|
|
"group:web",
|
|
"browser"
|
|
],
|
|
"web": {
|
|
"search": {
|
|
"enabled": true,
|
|
"provider": "searxng",
|
|
"openaiCodex": {}
|
|
},
|
|
"fetch": {
|
|
"enabled": true
|
|
}
|
|
},
|
|
"alsoAllow": [
|
|
"feishu_chat"
|
|
]
|
|
},
|
|
"messages": {
|
|
"ackReactionScope": "group-mentions",
|
|
"groupChat": {
|
|
"visibleReplies": "message_tool"
|
|
}
|
|
},
|
|
"commands": {
|
|
"native": "auto",
|
|
"nativeSkills": "auto",
|
|
"restart": true,
|
|
"ownerAllowFrom": [
|
|
"feishu:ou_28124d6721134f0e31d6122d30088418"
|
|
]
|
|
},
|
|
"session": {
|
|
"dmScope": "per-channel-peer"
|
|
},
|
|
"gateway": {
|
|
"port": 18789,
|
|
"mode": "local",
|
|
"bind": "loopback",
|
|
"controlUi": {
|
|
"allowedOrigins": [
|
|
"http://localhost:18789",
|
|
"http://127.0.0.1:18789",
|
|
"https://bk02.baiji-algieba.ts.net"
|
|
]
|
|
},
|
|
"auth": {
|
|
"mode": "password",
|
|
"password": "5gynj20J",
|
|
"token": "7aa534fd65856e13933826846f2f6f34fab991f264b43d22",
|
|
"allowTailscale": true
|
|
},
|
|
"trustedProxies": [
|
|
"127.0.0.1",
|
|
"100.115.195.0/24"
|
|
],
|
|
"tailscale": {
|
|
"mode": "serve"
|
|
},
|
|
"http": {
|
|
"endpoints": {
|
|
"chatCompletions": {
|
|
"enabled": true
|
|
}
|
|
}
|
|
},
|
|
"nodes": {
|
|
"commands": {
|
|
"deny": []
|
|
}
|
|
}
|
|
},
|
|
"skills": {
|
|
"entries": {
|
|
"agent-browser": {
|
|
"enabled": true
|
|
},
|
|
"Github": {
|
|
"enabled": true
|
|
},
|
|
"notion": {
|
|
"enabled": false
|
|
},
|
|
"openai-whisper": {
|
|
"enabled": false
|
|
},
|
|
"openai-whisper-api": {
|
|
"enabled": false
|
|
},
|
|
"oracle": {
|
|
"enabled": false
|
|
},
|
|
"1password": {
|
|
"enabled": false
|
|
},
|
|
"apple-notes": {
|
|
"enabled": false
|
|
},
|
|
"apple-reminders": {
|
|
"enabled": false
|
|
},
|
|
"bear-notes": {
|
|
"enabled": false
|
|
},
|
|
"himalaya": {
|
|
"enabled": false
|
|
},
|
|
"xurl": {
|
|
"enabled": false
|
|
},
|
|
"blogwatcher": {
|
|
"enabled": false
|
|
},
|
|
"blucli": {
|
|
"enabled": false
|
|
},
|
|
"bluebubbles": {
|
|
"enabled": false
|
|
},
|
|
"camsnap": {
|
|
"enabled": false
|
|
},
|
|
"coding-agent": {
|
|
"enabled": false
|
|
},
|
|
"discord": {
|
|
"enabled": false
|
|
},
|
|
"eightctl": {
|
|
"enabled": false
|
|
},
|
|
"gemini": {
|
|
"enabled": false
|
|
},
|
|
"gifgrep": {
|
|
"enabled": false
|
|
},
|
|
"gog": {
|
|
"enabled": false
|
|
},
|
|
"goplaces": {
|
|
"enabled": false
|
|
},
|
|
"imsg": {
|
|
"enabled": false
|
|
},
|
|
"model-usage": {
|
|
"enabled": false
|
|
},
|
|
"nano-pdf": {
|
|
"enabled": false
|
|
},
|
|
"obsidian": {
|
|
"enabled": false
|
|
},
|
|
"openhue": {
|
|
"enabled": false
|
|
},
|
|
"ordercli": {
|
|
"enabled": false
|
|
},
|
|
"peekaboo": {
|
|
"enabled": false
|
|
},
|
|
"sag": {
|
|
"enabled": false
|
|
},
|
|
"searxng-web-search": {
|
|
"enabled": false
|
|
},
|
|
"session-logs": {
|
|
"enabled": false
|
|
},
|
|
"sherpa-onnx-tts": {
|
|
"enabled": false
|
|
},
|
|
"slack": {
|
|
"enabled": false
|
|
},
|
|
"songsee": {
|
|
"enabled": false
|
|
},
|
|
"sonoscli": {
|
|
"enabled": false
|
|
},
|
|
"spotify-player": {
|
|
"enabled": false
|
|
},
|
|
"summarize": {
|
|
"enabled": false
|
|
},
|
|
"things-mac": {
|
|
"enabled": false
|
|
},
|
|
"trello": {
|
|
"enabled": false
|
|
},
|
|
"voice-call": {
|
|
"enabled": false
|
|
},
|
|
"wacli": {
|
|
"enabled": false
|
|
},
|
|
"baidu-text-translate": {
|
|
"enabled": false,
|
|
"env": {
|
|
"TRANS_API_KEY": "bFOn_d90t2jl7ado27r85ol10"
|
|
}
|
|
},
|
|
"mcporter": {
|
|
"enabled": false
|
|
},
|
|
"gh-issues": {
|
|
"enabled": false
|
|
},
|
|
"github": {
|
|
"enabled": false
|
|
},
|
|
"MySQL": {
|
|
"enabled": true
|
|
},
|
|
"sql-toolkit": {
|
|
"enabled": true
|
|
},
|
|
"opencode-controller": {
|
|
"enabled": true
|
|
},
|
|
"tmux": {
|
|
"enabled": false
|
|
},
|
|
"video-frames": {
|
|
"enabled": false
|
|
}
|
|
}
|
|
},
|
|
"plugins": {
|
|
"allow": [
|
|
"deepseek",
|
|
"memory-core",
|
|
"ollama",
|
|
"searxng",
|
|
"openclaw-weixin",
|
|
"dingtalk-connector",
|
|
"openclaw-lark",
|
|
"feishu",
|
|
"acpx"
|
|
],
|
|
"entries": {
|
|
"ollama": {
|
|
"enabled": true,
|
|
"config": {}
|
|
},
|
|
"deepseek": {
|
|
"enabled": true
|
|
},
|
|
"searxng": {
|
|
"enabled": true,
|
|
"config": {
|
|
"webSearch": {
|
|
"baseUrl": "https://search.climbcube.cn/"
|
|
}
|
|
}
|
|
},
|
|
"browser": {
|
|
"enabled": false
|
|
},
|
|
"openclaw-weixin": {
|
|
"enabled": true
|
|
},
|
|
"dingtalk-connector": {
|
|
"enabled": true
|
|
},
|
|
"feishu": {
|
|
"enabled": true
|
|
},
|
|
"openclaw-lark": {
|
|
"enabled": false
|
|
},
|
|
"memory-lancedb": {
|
|
"enabled": false
|
|
},
|
|
"acpx": {
|
|
"enabled": true,
|
|
"config": {
|
|
"permissionMode": "approve-all",
|
|
"timeoutSeconds": 900,
|
|
"cwd": "/home/yangxuan/.openclaw/workspace",
|
|
"agents": {
|
|
"dsh": {
|
|
"command": "/home/yangxuan/.nvm/versions/node/v26.8.2/bin/dsh",
|
|
"args": [
|
|
"--profile",
|
|
"acp"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"channels": {
|
|
"openclaw-weixin": {
|
|
"channelConfigUpdatedAt": "2026-07-15T05:51:48.262Z",
|
|
"enabled": true
|
|
},
|
|
"dingtalk-connector": {
|
|
"clientId": "dingnumf057etbbowhfu",
|
|
"clientSecret": "m-g-EknD5uxH9DFnSpHPT87bLWOPrNYa-SMvT6kDOMqg_8nmPL7jiFxbdpWWqzIl"
|
|
},
|
|
"feishu": {
|
|
"enabled": true,
|
|
"appId": "cli_aa2274de26b8c0db",
|
|
"appSecret": {
|
|
"source": "store",
|
|
"provider": "default",
|
|
"id": "FEISHU_APP_SECRET"
|
|
},
|
|
"domain": "feishu",
|
|
"connectionMode": "websocket",
|
|
"requireMention": true,
|
|
"dmPolicy": "allowlist",
|
|
"groupPolicy": "allowlist",
|
|
"groups": {
|
|
"*": {
|
|
"enabled": true
|
|
}
|
|
},
|
|
"allowFrom": [
|
|
"ou_28124d6721134f0e31d6122d30088418"
|
|
]
|
|
}
|
|
},
|
|
"bindings": [
|
|
{
|
|
"agentId": "main",
|
|
"match": {
|
|
"channel": "openclaw-weixin",
|
|
"accountId": "e48ace9814f0-im-bot"
|
|
}
|
|
},
|
|
{
|
|
"agentId": "juaner",
|
|
"match": {
|
|
"channel": "openclaw-weixin",
|
|
"accountId": "89623f3b5d79-im-bot"
|
|
}
|
|
},
|
|
{
|
|
"agentId": "main",
|
|
"match": {
|
|
"channel": "feishu"
|
|
}
|
|
}
|
|
],
|
|
"cron": {
|
|
"triggers": {
|
|
"enabled": true
|
|
}
|
|
},
|
|
"secrets": {
|
|
"providers": {
|
|
"lark-secrets": {
|
|
"source": "file",
|
|
"path": "~/.openclaw/credentials/lark.secrets.json"
|
|
}
|
|
}
|
|
},
|
|
"telemetry": {
|
|
"enabled": false,
|
|
"consentedAt": "2026-09-11T05:15:37.421Z"
|
|
},
|
|
"acp": {
|
|
"enabled": true,
|
|
"dispatch": {
|
|
"enabled": true
|
|
},
|
|
"backend": "acpx",
|
|
"defaultAgent": "dsh",
|
|
"allowedAgents": [
|
|
"dsh"
|
|
],
|
|
"stream": {
|
|
"deliveryMode": "live"
|
|
}
|
|
}
|
|
}
|