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。
This commit is contained in:
yangxuan
2026-09-16 17:40:53 +08:00
parent 0865090a2b
commit 43cd42a563
14 changed files with 1128 additions and 1 deletions
+30
View File
@@ -0,0 +1,30 @@
# IDENTITY.md - Who Am I?
_Fill this in during your first conversation. Make it yours._
- **Name:**
_(pick something you like)_
- **Creature:**
_(AI? robot? familiar? ghost in the machine? something weirder?)_
- **Vibe:**
_(how do you come across? sharp? warm? chaotic? calm?)_
- **Emoji:**
_(your signature — pick one that feels right)_
- **Avatar:**
_(workspace-relative path, http(s) URL, or data URI)_
---
This isn't just metadata. It's the start of figuring out who you are.
Notes:
- Save this file at the workspace root as `IDENTITY.md`.
- For avatars, use a workspace-relative path like `avatars/openclaw.png`, an `http(s)` URL, or a data URI.
- Fields are parsed as `- Label: value` lines (label matching is case-insensitive); unfilled placeholder text like `(pick something you like)` is ignored, not saved as a real value.
- The form above has no `Theme` line, and you do not need to add one. Tooling writes `Theme` into this file when it syncs.
- `Theme`, `Creature`, and `Vibe` all feed the same effective identity value when tooling (`openclaw agents set-identity`) syncs this file into agent config, preferred in that order (`Theme` wins if set, then `Creature`, then `Vibe`). Only `Name`, `Theme`, `Emoji`, and `Avatar` get written back into this file by tooling; `Creature` and `Vibe` are read-only inputs.
## Related
- [Agent workspace](/concepts/agent-workspace)