Introduction

DeepSeek Harness (dsh) typically delivers agent capabilities as plugins and processes. For developers already using dsh, the common need isn’t to start a new agent, but to connect existing dsh agents to external clients, such as Zed or other clients supporting the Agent Client Protocol (ACP).

The dsh-acp-server solves this problem: it runs dsh as an ACP server, allowing external clients to create sessions, send prompts, receive streaming output, view plan updates, tool calls, and approval requests. Below, we introduce its capabilities, installation methods, and several typical use cases.

What It Is

dsh-acp-server is a DSH plugin maintained by dushaobindoudou, licensed under MIT.

It exposes a DSH agent as an ACP server, enabling control of the dsh agent from Zed and any ACP client. It can run as a standalone process or coexist with dsh web in the same process and port, providing both GUI and ACP interfaces.

Core Capabilities

The capabilities listed below are derived from the plugin description and verified ACP method support.

Sessions and Messages

Common ACP methods include:

initialize
session/new
session/prompt
session/list
session/resume
session/load
session/set_mode
available_commands_update
session/request_permission
session/cancel
session/close

Corresponding capabilities:

  • initialize: Declares full capabilities, including loadSession, promptCapabilities.image, and sessionCapabilities.list/resume/close.
  • session/new: Creates a durable dsh agent and announces modes and slash commands.
  • session/prompt: Supports streaming agent_message_chunk / agent_thought_chunk, plan updates, full tool-call lifecycle, image blocks, and /command routing.
  • session/list, session/resume, session/load: Handles persisted and live sessions.
  • session/set_mode: Switches between default and plan modes, pushing current_mode_update.
  • available_commands_update: Announces the dsh command registry per session, refreshing each turn.
  • session/request_permission: Bridges dsh approval decisions to the client.
  • session/cancel: Aborts the current turn, ending the prompt with cancelled.
  • session/close: Cancels, flushes, and disposes the agent.

Runtime Forms

dsh-acp-server supports two common forms:

dsh-acp-server
dsh web
  • dsh-acp-server: Can run as a standalone ACP server on stdio or provide a remote HTTP+SSE endpoint via serve.
  • dsh web: Can provide both GUI and ACP in a single process and port.

Additionally, dsh/* vendor methods expose read-only data for sessions, jobs, goals, skills, and the agent tree.

Installation and Enabling

The runtime environment requires Node.js >= 22 and the dsh CLI installed.

First, install dsh:

npm i -g @deepseek-ai/dsh

Then add the plugin to the acp profile:

dsh plugin --profile acp add dsh-acp-server

If installing from source, the prepare script may trigger a build of lib/. In environments with pnpm >= 10, you need to allow builds before re-executing add. The configuration is as follows:

allowBuilds:
  dsh-acp-server: true

To avoid build authorization, consider using the prebuilt npm package or tarball installation.

Using in Zed

dsh-acp-server can start as a stdio ACP server:

dsh-acp-server

Configure agent_servers in Zed’s Settings, for example:

{
  "agent_servers": {
    "dsh": {
      "type": "custom",
      "command": "dsh-acp-server",
      "args": []
    }
  }
}

After configuration, Zed can drive this dsh agent via ACP.

Providing GUI and ACP Simultaneously with dsh web

If you want GUI and ACP to start in the same process, use dsh web.

First, run the setup script:

node bin/setup-webacp.mjs

Then start:

dsh web

dsh web will provide the GUI at http://127.0.0.1:3080 and the ACP endpoint at /acp.

You can access this ACP endpoint using the following example script:

node bin/acp-chat.mjs --url http://127.0.0.1:3080

Providing Remote ACP with serve

If you need to access from a remote machine, shared agent scenarios, or via an HTTP client, use serve to start a long-lived HTTP+SSE endpoint.

Start locally:

dsh --profile acp serve --port 7800

serve binds to 127.0.0.1 by default. For remote access, you must explicitly configure the host and token:

dsh --profile acp serve --host 0.0.0.0 --port 7800 --token s3cret

HTTP routes include:

POST /acp
GET /acp/stream
DELETE /acp
GET /acp/healthz

dsh/* Read-Only Extensions

The ACP standard primarily describes the protocol capabilities of a session. Host-side data surrounding the session, such as sessions, jobs, goals, skills, and the agent tree, can be exposed via dsh/* vendor methods.

These methods are read-only and suitable for viewing current DSH host-side data for sessions, tasks, goals, skills, and the agent tree.

Use Cases and Notes

This plugin is suitable for the following scenarios:

  • You are already using dsh and want to drive the dsh agent from Zed or other ACP clients.
  • You want your editor to receive streaming output, plan updates, tool calls, and approval requests.
  • You want to host dsh web’s GUI and ACP in the same process and port.
  • You need a remote HTTP+SSE ACP endpoint.

Before use, note the following:

  • The plugin runs with the current dsh process permissions; review the source code and license before installation.
  • Requires Node.js >= 22 and the dsh CLI.
  • serve binds to the local address by default; remote access requires explicit configuration of host and token.
  • session/fork and elicitation are currently on the roadmap and remain UNSTABLE in the ACP SDK.
  • dsh/* vendor methods are read-only interfaces.

Links

Directory page:

https://www.skillhub.cn/plugins/dushaobindoudou/dsh-acp

GitHub:

https://github.com/dushaobindoudou/dsh-acp