DeepSeek Harness 会话同步与跨设备续接

最后更新 2026-09-17 · MIT 许可 · 个人自托管免费

DeepSeek Harness(客户端标识 dsh)是接入列表里技术形态最特别的一个:它的会话不是普通的 JSONL,而是分代(generation)事件日志。

会话存在哪里

项 值
根目录 <DSH_HOME>,未设置时是 ~/.dsh
会话路径 sessions/--<工作目录 slug>--/<session-<uuid>>/session.vN.jsonl[.zstd]
当前代 适配器发布当前代 v3(每行一个 zstd 帧),同时把上一代冻结保留在旁边
依赖 读写都需要 zstandard(install-deps 脚本已包含)

接入同步

  1. 在接入帮助页选择 DeepSeek Harness → 下载客户端包(服务端地址已自动预填)。
  2. 解压后首次运行 install-deps.bat(Windows)或 ./install-deps.sh(macOS / Linux)—— DSH 的依赖脚本会额外装上 zstandard。
  3. 用页面给出的注册命令接入(工作区 API Key 已自动填入),客户端以 HERMES_SYNC_AGENT=dsh 启动。
  4. 重启 DSH(桌面版请确认 MCP 注册行已生效,见下)。

首次启动增量拉取;远端为空时自动推送本地数据完成配对;之后每 5 分钟同步一次。

桌面版注册的坑(值得单独说)

DSH 桌面版把同步客户端注册为 cordis.patch.yml 里的一行 @deepseek-ai/dsh-mcp-client(桌面 profile 名为 desktop)。这一行必须把 cwd 设成一个真实存在的目录:

  • 插件的 stdio 配置默认把 cwd 设为空字符串,空字符串会直接交给 spawn(),Node 抛 ENOENT;
  • 而默认的 failOnStartupError: false 会吞掉这个启动错误 —— 桌面版照常启动,但同步静默地从未运行(既没有 MCP 子进程,也没有 mcp__hermes-sync__* 工具)。

判断方法很简单:看桌面版的工具列表里有没有同步工具。排查时可以把 failOnStartupError 临时设为 true,让启动错误直接显形。cwd 填客户端的解压目录即可。

同步行为与注意点

  • 同步端负责完整的分代日志:文件头、turn/start / step/start 帧、连续序号都由写入方保证,所以同步下来的会话 DSH 能直接读。
  • 工作区信息由 DSH 自己从会话头重建,不需要你额外配置。
  • 不要手工改这些文件:分代日志的完整性一旦破坏,DSH 会拒绝把它当作会话读取。

跨设备与跨 Agent

两台机器各自接入同一工作区,sessions/ 下的会话就是同一份。DSH 上聊到一半的推理过程,可以换台机器继续,也可以交给别的 Agent 接手 —— 走的是同一个会话池。

相关