Introduction¶
The core philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” Directly controlling dsh agents in an IDE usually requires writing adapters or modifying the source code. dsh-acp provides an Agent Client Protocol (ACP) server and uses the JSON-RPC 2.0 stdio mechanism so editors such as Zed can directly drive dsh agents. It attaches to dsh’s stdin/stdout and works without modifying DSH itself.
What It Is¶
dsh-acp is a DSH plugin maintained by cnctem. It is based on the official @deepseek-ai/dsh-acp skeleton, runs as a profile bundle for dsh-base, and draws on the editor experience design of pi-acp. The plugin is released under the MIT License.
Core Features¶
Through JSON-RPC 2.0 stdio communication, dsh-acp maps DSH’s capabilities to the editor interface.
- Token and Thought Streaming: Displays model output and the thinking process in real time through
agent_message_chunkandagent_thought_chunkevents. - Tool Call Cards: Provides
tool_callandtool_call_updateevents to display tool type, file location, and line number. - Structured Diffs: Displays edit/write hunks along with before/after snapshots.
- Session Management: Supports
session/list,session/load, andsession/delete, and provides a session selector (write permission 3, model, thinking intensity). - Terminal Emulation: Renders Bash command output as terminal content, including the exit code.
- Context Usage Ring: Updates via
usage_update(used / size) to reflect in the IDE’s context indicator. - Todo List: Renders DSH’s
todo_writesnapshots as the IDE’s plan list (planupdate), automatically clearing it at the start of a turn. - Image Understanding: Supports ACP
imageprompt blocks (such as screenshots). It uses thedsh-attachmentseam in dsh 0.1.1 to pass images to the model asImageBlock. - Slash Commands: Advertises DSH’s
/commands throughavailable_commands_updateand executes them in the command plane (images can be passed to commands that support images). - User Questions: Guides responses to the
ask_user_questiontool through ACP forms, with an explanatory fallback for clients that do not support forms.
Installation and Enablement¶
Before installing, ensure Node.js ≥ 20, dsh (recommended 0.1.1-rc.2), and pnpm are available.
dsh plugin --profile acp add github:cnctem/dsh-acp
Configuration and Usage¶
The plugin uses DSH’s default model by default and can be overridden via environment variables.
- Model Override: Use the
DSH_ACP_PROVIDERorDSH_ACP_MODELenvironment variable. - Preset Selection: Use the
DSH_ACP_PRESETenvironment variable. The value directly maps to a preset ID. If unset or empty,standardis used; an unknown ID causes session creation to fail. Valid IDs include the built-instandard/minimal, as well as custom presets created by users under$DSH_HOME/.agent-presets/. - Zed Integration: Add a custom server configuration to Zed’s
settings.json.
{
"agent_servers": {
"dsh": {
"type": "custom",
"command": "dsh",
"args": ["--profile", "acp"],
"env": {}
}
}
}
- Multiple Presets Coexisting: Zed supports configuring multiple entries, and different presets can appear as independent options in the “+” menu.
Notes¶
- API Key: The plugin reuses DSH’s credentials, i.e.,
$DSH_HOME/.credentials.yamlorDEEPSEEK_API_KEY. - Special Preset Dependencies: The
codeandcordispresets require the global pluginscode-runtimeandcordis-host-runnerto be installed before they can be used. - Permissions: The plugin runs with the current DSH process permissions; review the source code and license before installing.
Conclusion¶
dsh-acp provides a complete editor integration solution, visualizing DSH’s agent capabilities through the ACP protocol. With editors such as Zed, developers can benefit from an enhanced experience with streaming output, structured diffs, and terminal interaction.