Workflow & Automation
dsh-acp
cnctem/dsh-acp · ★ 5
ACP server for DeepSeek Harness — bridges Zed and other IDEs to dsh agents
Archived repository
安装
dsh plugin --profile web add github:cnctem/dsh-acpGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
[!WARNING] This project is no longer maintained. We recommend using openma-ai/deepseek-harness-acp instead.
dsh-acp

An Agent Client Protocol (ACP) server for DeepSeek Harness (dsh) that lets Zed and other editors drive dsh agents over JSON-RPC 2.0 stdio.
The shipped dsh acp profile is intentionally automation-only. This bundle is a drop-in replacement for its bridge: it keeps the standard automation surface (sessions, MCP, model selection, permissions) and adds the editor experience Zed needs on top.
Introduction
dsh-acp mounts one ACP server on dsh stdin/stdout. Zed launches dsh --profile acp; the plugin translates session/* requests into dsh Agent lifecycles. Installing this bundle requires no Zed configuration change because it disables both the shipped acp bridge and startup row, then mounts this implementation and the same stdin-lifetime provider under unique ids.
Features
- Standard ACP lifecycle —
initialize,session/new,session/list,session/resume,session/close,session/prompt, andsession/cancel - Lazy empty sessions —
session/newis provisional: the Agent, preset/MCP mounts, and durable session begin only after the first accepted prompt, while the slash-command catalog is already advertised so/works on the first message - Editor history extensions —
session/loadreplays durable history;session/deletecloses a live session and removes its persisted artifact when the backend exposes deletion - Token & thinking streaming —
agent/assistant-streamframes projected asagent_message_chunk/agent_thought_chunk - Tool cards —
tool_call/tool_call_updatewith kind, file location and line - Structured diffs — native tool hunks plus before/after file snapshots
- Bash terminal — command output rendered as terminal content with exit code
- Context-usage ring —
usage_update(used / size) - Todo list — dsh
todo_writesnapshots rendered as the stable ACPplanupdate - Goal in the task list — the current goal leads the ACP
plan(Goal: … · Round n/N · phase), and automatic continuation rounds advance that row while the checklist survives each round - Images — ACP image prompts admitted through the durable attachment seam; capability advertised when any selectable route supports images, and the exact pinned route is validated per prompt
- Slash commands — dsh commands advertised through
available_commands_update; recognized commands stay in the command plane and receive typed image attachments - Ask the user — dsh's scoped
user-questions/requestwaterfall answered through stable ACP formelicitation/create - Agent presets —
standard,ptc,minimal, andcordis(creation mode) are declared by this bundle and selected for the whole process throughDSH_ACP_PRESET - MCP servers — client-supplied stdio and Streamable HTTP MCP servers are validated and mounted into the Agent scope
- Turn-pinned model selection — model and reasoning changes affect later prompts; an in-flight turn keeps the route with which it was admitted
Installation
Prerequisites: Node.js ^22.19.0 || >=24.0.0, dsh@0.2.1-rc.2, and pnpm.
dsh plugin --profile acp add @cnctem/dsh-acp
From source:
git clone https://github.com/cnctem/dsh-acp.git
cd dsh-acp
pnpm install
pnpm run build
dsh plugin --profile acp add .
Existing installs upgrade with the same command; the effective acp profile now contains the custom bridge instead of the automation-only bridge.
Use as a package
@cnctem/dsh-acp is also importable from a Node/Cordis host. It is a plugin, not a standalone executable: the host must compose the dsh services required by its dependencies and peers before mounting it.
import * as acp from '@cnctem/dsh-acp'
ctx.plugin(acp, {
provider: 'deepseek-official',
model: 'deepseek-v4-pro',
preset: 'standard',
})
Configuration
DSH_ACP_PROVIDER/DSH_ACP_MODELoverride the default provider/model. Unset values follow dshagent-default-model.DSH_ACP_PRESETselects the process-level agent composition. Unset or empty uses the registry default,standard.- Built-in presets:
standard— coding tools, plan mode, todos, web, subagents.ptc— standard tools plus presentation/code-runtime behavior.minimal— a persistent shell and minimal persona.cordis— creation mode with plugin-manager and Cordis inspection tools plus the bundled authoring skills.
- The old
$DSH_HOME/.agent-presets/<id>directory scan is no longer supported. Presets are ordinary@deepseek-ai/dsh-agent-presetdeclarations in this bundle and can be overridden by a later profile patch. - API keys reuse dsh credentials (
$DSH_HOME/.credentials.yaml, account auth, orDEEPSEEK_API_KEY).
Integration
Add to Zed's settings.json if the entry does not already exist:
{
"agent_servers": {
"dsh": {
"type": "custom",
"command": "dsh",
"args": ["--profile", "acp"],
"env": {}
}
}
}
To expose multiple deployments, use separate Zed entries with different DSH_ACP_PRESET values. Each dsh process has one process-level preset selection.
Development
Source lives in src/; TypeScript generates committed ESM, declarations, and source maps in lib/.
pnpm run typecheck
pnpm test # hermetic in-process protocol smoke
pnpm run test:profile # real dsh profile acceptance in a temporary DSH_HOME
pnpm run verify # typecheck + smoke + generated-lib freshness
pnpm run test:profile requires a working dsh executable. Set DSH_BIN to test another binary.
Acknowledgements
- DeepSeek Harness and its
@deepseek-ai/dsh-acpimplementation pi-acp— the reference for the richer editor experience- Agent Client Protocol, Zed, and the ACP community