dsh-api
Local HTTP API for DeepSeek Harness: expose DSH session control to other agents
AI Analysis
核心用途是暴露本地 HTTP 接口以控制 DSH 会话。适合需要通过外部脚本或其他 AI 智能体程序自动化控制 DSH 的开发者。
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full README ↗dsh-api
Local HTTP API for DeepSeek Harness (DSH). Other AI agents use it to control DSH through plain HTTP instead of the GUI.
Milestone one covers session control: list and create sessions, read history,
send prompts, stream replies, and cancel turns. Everything else remains
available through the raw /api/* passthrough.
Install
Install the plugin into a DSH web profile:
dsh plugin --profile web add link:C:/path/to/dsh-api
Enable it in the profile cordis patch:
{
"plugins": {
"dsh-api": {}
}
}
Settings live in the GUI Settings page under dsh-api and apply immediately.
Settings
| Field | Type | Default | Notes |
|---|---|---|---|
| enabled | bool | true | server on/off |
| port | int | 4777 | 1-65535, loopback only |
| token | secret | generated on first run | fixed bearer token |
Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /health | Public health check. |
| GET | /api/sessions | List sessions: { items: SessionSummary[] }. |
| POST | /api/sessions | Create session; body { cwd?, workspaceId?, agentPreset? }. |
| GET | /api/sessions/:id/history | Read history; query beforeSeq?, maxMessages?. |
| POST | /api/sessions/:id/prompt | Send prompt; body { content, mode? }. |
| POST | /api/sessions/:id/cancel | Cancel the running turn. |
| GET | /api/sessions/:id/stream | SSE stream filtered to this session. |
| POST | /api/* | Raw official ApiProxy JSON RPC passthrough. |
| GET | /api/events.mux | Raw official aggregated SSE stream. |
Convenience routes win over the passthrough; any other request whose path
starts with /api/ is forwarded verbatim to the official ApiProxy transport.
Authentication
All routes except /health require Authorization: Bearer . The
server binds 127.0.0.1 only. Missing or wrong tokens get 401.
SSE
curl -N -H "Authorization: Bearer $DSH_API_TOKEN" \
http://127.0.0.1:4777/api/sessions//stream
Frames are official MuxFrame objects, filtered by session id. A prompt whose
single text block starts with / runs as a slash command, like the GUI.
Smoke test
With the plugin enabled in a running DSH:
DSH_API_TOKEN= node scripts/smoke.mjs
DSH_API_URL defaults to http://127.0.0.1:4777.
Scope
Out of milestone one: ergonomic wrappers for approvals, subagents, goals, jobs, settings, credentials, and workspace mutation; TLS; remote bind; multi-user tokens.