Files
openclaw-config/openclaw.json
T
yangxuan 43cd42a563 feat(acp): 接入 DSH 作为 ACP harness,打通 微信→OpenClaw→DSH 派发链路
- 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。
2026-09-16 17:40:53 +08:00

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