dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
ChubbyClaw patch over @deepseek-ai/dsh-acp: a DeepSeek Harness profile that also reports AIR subagent and async-task background work over ACP.
A patch over @deepseek-ai/dsh-acp — the
automation-only ACP server inside DeepSeek Harness —
that also reports background work (subagents and detached jobs) over the ACP stream.
The upstream ACP surface carries only committed messages, thoughts, generic tool
lifecycle, configuration and context usage. A platform driving a harness agent
therefore cannot tell that the agent dispatched a subagent or left a shell
running in the background. This change adds exactly that, using the draft
agent-client-protocol#1992
notifications that claude-agent-acp already implements.
Emitted only to a client that negotiated the capability in
clientCapabilities._meta.jetbrains.air; every other client sees the stock ACP
surface, byte for byte.
| Capability | Emitted updates | Source |
|---|---|---|
nativeSubagentSessions | subagent_spawned, subagent_state_update | the harness session/created and subagent/end lifecycle |
asyncTasks | async_task_spawned, async_task_progress, async_task_state_update | the ctx.jobs registry |
It also answers the draft _session/async_task/stop extension request by
killing the named job, so a client can stop one detached job without touching
the main turn.
The harness stays stock DeepSeek Harness. This package is a profile for it, so the launch line still names the upstream binary:
npx -y @deepseek-ai/dsh@0.2.1-alpha.1 --profile chubbyclaw-full-acp
The package ships both halves:
lib/ — the patched bridge, a drop-in replacement for the stock acp row;profile/ — the ready chubbyclaw-full-acp profile: it disables the stock
acp row and inserts this bridge, and declares which dsh runtime it targets
(package.json → chubbyclaw.dshRuntimeVersion).cclaw prepares that profile for the owner with no pnpm, no clone and no extra
install step: npm pack @chubbyclaw/dsh-acp-full, extract lib/ into
$DSH_HOME/profiles/chubbyclaw-full-acp/node_modules/@chubbyclaw/dsh-acp-full/
and profile/ into the profile root, then launch the pinned dsh above. The
bridge's @deepseek-ai/dsh-* imports resolve to the harness installation, so no
dependency tree is installed.
This is the only repository: the change lives as a patch over upstream, not as a fork of the whole harness.
| Path | What it is |
|---|---|
lib/ | the built bundle and declarations — what npm ships |
profile/ | the chubbyclaw-full-acp DSH profile template |
patches/ | the change over upstream, one patch per commit |
scripts/build.sh | rebuilds lib/ from upstream at the pinned tag |
scripts/build.sh # clone upstream at chubbyclaw.dshRuntimeVersion, patch, build, copy lib/
scripts/build.sh --test # also run the upstream ACP test suite
DSH_UPSTREAM_TAG overrides the tag (default dsh-v<chubbyclaw.dshRuntimeVersion>).
Bumping to a newer harness means bumping chubbyclaw.dshRuntimeVersion, refreshing
the patch against the new tag, rebuilding, and publishing a new version.
@deepseek-ai/dsh-*@0.2.1-alpha.1; the peer versions are exact, so
the loader only activates the bridge on that runtime. Widen them (and re-verify)
only when a range has actually been tested._meta.jetbrains.air and read the raw
frames: the published @agentclientprotocol/sdk client rejects unknown
sessionUpdate variants in its strict schema, while the server sends them
unchanged.