前言¶
DeepSeek Harness(DSH)是桌面端智能体应用,会话通常在应用内创建和操作。若你已经在 Claude Code 等支持 Model Context Protocol(MCP)的环境里写自动化或编排脚本,却希望把指令发到 DSH 里跑、并在应用里看到同一条会话,就需要一条稳定的桥接路径,而不是在多个界面之间手工复制粘贴。
stellarie/dsh-session-bridge 是社区维护的工作流类插件(非 DeepSeek 官方项目)。它在 DSH 进程内提供带令牌保护的本地回环 HTTP 桥,并附带一个通过 stdio 与 MCP 客户端通信的服务端,使外部客户端可以列出会话、打开会话、发送消息、等待回合结束并读取回复。目标 DSH 版本为 0.2.1-rc.2。
这是什么¶
一句话:@stellarie/dsh-session-bridge 让 MCP 客户端(例如 Claude Code)以 stdio 方式调用工具,间接操控 DSH 中的会话;会话在应用里与普通会话无异,可随时查看或接管。
维护者为 stellarie。包版本 0.1.0,许可证 MIT。插件目录页:SkillHub - dsh-session-bridge;源码与文档:GitHub - stellarie/dsh-session-bridge。
架构上分为两块:
- 宿主插件:运行在 DSH 应用内,提供 token 守卫的 loopback HTTP bridge。
- stdio MCP 服务器:由 MCP 客户端启动,每次调用时读取
endpoint.json,与桥通信。
环境与依赖¶
安装与运行前请确认:
- DeepSeek Harness
0.2.1-rc.2,且使用的 profile 可编辑。 - Node.js
^22.19.0或>=24.0.0。 - 支持 stdio 传输的 MCP 客户端。
核心能力:MCP 工具¶
MCP 侧暴露的工具及用途如下(与 README 一致):
| 工具 | 作用 |
|---|---|
dsh_list_sessions |
列出会话:id、标题、preset、工作目录、运行中或空闲。 |
dsh_open_session |
在指定 cwd 打开会话;同 preset 与同 cwd 下会复用最新的空闲会话,reuse: false 可强制新建。 |
dsh_send |
发送消息;queue 在当前回合之后执行,steer 加入正在运行的回合;返回 afterSeq。 |
dsh_wait |
等待会话在 afterSeq 之后结束一个回合;默认与最大等待均为 600 秒。 |
dsh_read |
读取 afterSeq 之后的用户提示与助手文本(不含 tool call 与 thinking)。 |
dsh_cancel |
中断当前回合;已排队消息仍保留在队列中。 |
典型往返顺序:先 dsh_open_session,再 dsh_send,接着 dsh_wait,最后用 dsh_read 取结果。dsh_open_session 的 preset 默认值为作者自用 preset yuu,实际使用应传入你自己的 preset id。
安装与启用¶
1. 安装 DSH 插件¶
使用 dsh CLI,将 default 换成你的 profile 名称:
dsh plugin --profile default add github:stellarie/dsh-session-bridge
安装会从源码构建,无需单独执行 build。也可手动编辑 profile:在 package.json 的 dependencies 中加入包,并在 dsh.profile.bundles 里放在 @deepseek-ai/dsh-web-app 之后,例如:
{
"dependencies": {
"@stellarie/dsh-session-bridge": "github:stellarie/dsh-session-bridge"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@stellarie/dsh-session-bridge"
]
}
}
}
包内带 cordis.patch.yml,会插入插件配置行。重启应用后,日志中应出现类似 session-bridge: serving http://127.0.0.1:…/session-bridge 的行。
2. 在 MCP 客户端注册服务器¶
指向 profile 目录内安装的 MCP 入口(<profile-dir> 为 DSH profile 目录):
claude mcp add dsh-session-bridge -- node <profile-dir>/node_modules/@stellarie/dsh-session-bridge/lib/mcp.js
不安装到 profile 时,也可用 npx:
claude mcp add dsh-session-bridge -- npx -y -p @stellarie/dsh-session-bridge dsh-session-bridge-mcp
其他 MCP 客户端同样可用;命令名为 dsh-session-bridge-mcp,传输为 stdio。MCP 服务器每次调用都会重新读取 endpoint 文件,因此仅重启 DSH 应用时不必重启 MCP 进程。
典型用法示例¶
README 给出的工具调用链如下(路径与 preset 需按你的环境替换):
dsh_open_session { cwd: "C:/repo", preset: "my-preset" } → { sessionId, reused }
dsh_send { sessionId, text: "Fix the failing test" } → { accepted, afterSeq: 41 }
dsh_wait { sessionId, afterSeq: 41 } → { ended: true, lastSeq: 58 }
dsh_read { sessionId, afterSeq: 41 } → { messages: [ … ] }
在 Claude Code 中注册 MCP 后,由客户端模型按任务选择上述工具即可完成「打开会话 → 发指令 → 等待 → 读回复」的闭环。
安全与配置¶
桥接具备对会话的完整所有者级控制能力,使用前建议通读 README 中的安全说明。
请求依次校验:拒绝带 Origin 的请求(浏览器页面会被挡下);Host 须为 loopback 且端口与服务器一致;Bearer token 常量时间比较;仅允许 POST、JSON body 不超过 1 MiB;方法须在白名单内(create、prompt、page、projections、list、cancel)。
每次启动插件会生成 32 字节随机 token,并写入 endpoint.json(含 url、token、pid、startedAt),POSIX 下权限为 0600,关闭时删除。应将 endpoint 文件视为密钥;桥接不单独开端口,与 DSH Web 服务器同址监听;桥接以应用所有者身份发言,经桥发送的 prompt 与在应用内输入等价。
| 配置项 | 位置 | 默认 |
|---|---|---|
endpointPath |
插件 cordis.patch.yml |
$DSH_HOME/session-bridge/endpoint.json |
DSH_SESSION_BRIDGE_ENDPOINT |
MCP 服务器环境变量 | 未设置 |
DSH_HOME |
环境变量 | ~/.dsh |
若移动 endpoint 文件路径,插件与 MCP 两侧须指向同一路径。
适用场景与注意¶
适合需要在 Claude Code 等 MCP 环境中编排任务、又希望执行落在 DSH 会话里的开发者;也适合在保留 DSH 可视化与会话管理能力的前提下,用脚本做批量或流水线式 prompt。
注意事项:
- 项目标明为 unofficial,与 DeepSeek 无隶属关系;SkillHub 等为社区目录,并非官方应用商店。
- 插件在 DSH 进程权限下运行,安装前请自行审阅源码与 MIT 许可证。
- 星标与后续版本以 GitHub 与目录页为准;当前资料中 GitHub 星标为 0。
结尾¶
dsh-session-bridge 把「MCP 客户端 ↔ 本地 token 桥 ↔ DSH 会话」串成一条可复现的工作流,适合在 DSH「一切皆插件」的生态里做跨工具协作。进一步了解可访问 SkillHub 插件页 与 GitHub 仓库。