dsh-openclaw-acp
A native DeepSeek Harness bundle that exposes a Harness profile to OpenClaw through the official Agent Client Protocol (ACP) transport.
The integration deliberately has three owners:
1. DeepSeek Harness owns the agent, model, tools, workspace sandbox, and session log. 2. OpenClaw ACPX owns ACP process lifecycle, dispatch, and conversation routing. 3. The OpenClaw channel plugin owns WeChat or any other messaging transport.
This package does not embed a WeChat SDK and does not duplicate Harness. It installs as a dsh.bundle and mounts the official @deepseek-ai/dsh-acp plugin.
Prerequisites
- pnpm 10 and a Node.js release supported by OpenClaw; stable OpenClaw
2026.7.1-2requires Node.js 22.22.3+, 24.15.0+, or 25.9.0+ - DeepSeek Harness
0.1.0-rc.6 - OpenClaw
2026.7.1-2or newer with the official@openclaw/acpxplugin DEEPSEEK_API_KEYavailable to the OpenClaw Gateway process- A configured OpenClaw channel, such as Tencent's
@tencent-weixin/openclaw-weixin
1. Install the Harness bundle
npm install -g @deepseek-ai/dsh@0.1.0-rc.6
dsh plugin --profile openclaw add https://github.com/BeAChanger/dsh-openclaw-acp/releases/download/v0.1.3/dsh-openclaw-acp-0.1.3.tgz
dsh --profile openclaw --dump-configThe command uses the prebuilt release artifact, so installation does not execute a repository build. The release page publishes a SHA-256 checksum asset.
The default route is deepseek-official/deepseek-v4-flash, with thinking enabled, max reasoning effort, a 1,000,000-token context window, and a 384,000-token output cap. Override the model in the Gateway environment when needed:
export DSH_OPENCLAW_PROVIDER=deepseek-official
export DSH_OPENCLAW_MODEL=deepseek-v4-pro2. Register Harness in OpenClaw
Install and enable OpenClaw's official ACP runtime:
openclaw plugins install @openclaw/acpx@2026.7.1
openclaw config set plugins.entries.acpx.enabled trueFor WeChat, install the Tencent channel version verified with this stack. The final login command displays a QR code and must be completed by the operator:
openclaw plugins install @tencent-weixin/openclaw-weixin@2.4.6
openclaw config set plugins.entries.openclaw-weixin.enabled true
openclaw channels login --channel openclaw-weixinAdd this configuration to the OpenClaw config:
{
acp: {
enabled: true,
backend: "acpx",
defaultAgent: "deepseek-harness",
allowedAgents: ["deepseek-harness"]
},
plugins: {
entries: {
acpx: {
enabled: true,
config: {
agents: {
"deepseek-harness": {
command: "dsh",
args: ["--profile", "openclaw"]
}
}
}
},
"openclaw-weixin": {
enabled: true
}
}
}
}Restart the Gateway, then verify the boundary before testing a channel:
/acp doctor
/acp spawn deepseek-harness --cwd /absolute/path/to/workspaceOn channels that support conversation binding, add --bind here. If a channel does not advertise ACP binding, use the unbound one-shot flow and let OpenClaw relay completion to the parent conversation.
3. Call it from WeChat
Once a WeChat channel is connected to the same Gateway, the message path is:
WeChat -> OpenClaw channel -> ACPX -> dsh --profile openclaw -> DeepSeek HarnessFor multiple logged-in WeChat accounts, isolate direct-message sessions by account, channel, and sender:
openclaw config set session.dmScope per-account-channel-peerNo WeChat token or user identifier crosses the ACP boundary. OpenClaw resolves the channel sender and session; Harness receives only the selected workspace and prompt content.
Security defaults
- OpenClaw's sandbox does not wrap external ACP processes. Harness enforces its own boundary through
DSH_PERMISSION_MODE. - Keep the Harness default
workspace-writemode unless the deployment explicitly requires more access. - Do not enable OpenClaw's ACPX MCP tool bridges for this target yet. Harness ACP
0.1.0-rc.6rejects non-emptymcpServers. - Run the Gateway and Harness under a dedicated OS account and restrict the allowed workspace roots.
- Treat
danger-full-accessas a break-glass mode, not a production default.
Known limitations
- Harness ACP currently supports new sessions only; it does not advertise load, resume, fork, or session listing.
- It returns committed assistant text, not live reasoning or tool events.
- Channel-level persistent binding depends on the OpenClaw channel adapter. Use one-shot parent relay where binding is unavailable.
- OpenClaw plugin tools are not injected into Harness because the current Harness ACP transport rejects non-empty
mcpServers.
Verification
npm install
npm test
npm run test:acp
npm run pack:checktest:acp installs the bundle into an isolated profile and runs two protocol checks: a direct real-dsh ACP negotiation with JSON-RPC-only stdout, then a custom-agent launch through the published acpx@0.11.2 runtime used by OpenClaw's official ACPX plugin. Both checks complete initialize and session/new. They do not call a model and do not require a real API key.
License
MIT