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_chunk and agent_thought_chunk events.
  • Tool Call Cards: Provides tool_call and tool_call_update events 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, and session/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_write snapshots as the IDE’s plan list (plan update), automatically clearing it at the start of a turn.
  • Image Understanding: Supports ACP image prompt blocks (such as screenshots). It uses the dsh-attachment seam in dsh 0.1.1 to pass images to the model as ImageBlock.
  • Slash Commands: Advertises DSH’s / commands through available_commands_update and executes them in the command plane (images can be passed to commands that support images).
  • User Questions: Guides responses to the ask_user_question tool 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_PROVIDER or DSH_ACP_MODEL environment variable.
  • Preset Selection: Use the DSH_ACP_PRESET environment variable. The value directly maps to a preset ID. If unset or empty, standard is used; an unknown ID causes session creation to fail. Valid IDs include the built-in standard / 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.yaml or DEEPSEEK_API_KEY.
  • Special Preset Dependencies: The code and cordis presets require the global plugins code-runtime and cordis-host-runner to 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.