前言¶
在 DeepSeek Harness(DSH)里做智能体开发时,任务和会话通常集中在 Harness 一侧;而 WorkBuddy、ZCode、Codex 等桌面或 CLI 编程助手会在本机各自目录里留下独立的会话日志。两边切换时,历史对话往往要手动对照路径或复制粘贴,难以在 DSH 里统一续聊。
社区插件 dsh-agent-sync(仓库 JiangHuai24/dsh-agent-sync,维护者 JiangHuai24,分类:工作流)做的是另一件事:轮询本机已安装应用的会话存储,把已封口的对话轮次追加写入 DSH 的 sessionPersistence,并按应用名挂到独立工作区,形成可读、可续聊的镜像任务。下面介绍它的定位、工作方式、安装配置与使用注意。
这是什么¶
dsh-agent-sync 是一个 DSH bundle 插件。安装后插件行 id 为 agent-sync,配置写在 cordis.patch.yml 中。
一句话:把本机上其他 AI 编程助手的会话,实时镜像成 DSH 的任务;每个应用自动分到自己的工作区,工作区名字就是应用名。
它解决的核心问题包括:
- 实时:外部应用每产生一轮新对话,几秒内追加到对应的 DSH 任务里;
- 分应用:WorkBuddy、ZCode、Codex 等各有独立工作区,互不混杂;
- 可续聊:镜像出来的是真正的 DSH 会话,可以直接在里面接着问;
- 不打扰:一旦你在 DSH 里接管了某个任务,该来源自动停止同步,不会两边互相覆盖。
插件以 MIT 许可证发布;package.json 中当前版本为 1.9.2,运行要求 Node ≥ 22.13(开发与测试场景)。
工作方式¶
数据从各应用的本机目录进入适配器,经轮次切分后走 Harness 自有写入路径,再按应用 attach 到工作区。README 中的示意如下:
WorkBuddy ~/.workbuddy/projects/**/*.jsonl ─┐
ZCode ~/.zcode/cli/db/db.sqlite ─┼─▶ 适配器 ─▶ 轮次切分 ─▶ sessionPersistence
Codex ~/.codex/sessions/**/*.jsonl ─┘ │
▼
每应用一个工作区(标题=应用名)◀── attachSession
三个关键设计值得单独说明:
- 只追加已封口的轮次。一轮对话在「出现下一条用户消息」或「静默超过
sealAfterMs」之后才写入,日志保持追加式,不需要回头改写。 - 走 Harness 自己的写入路径。通过
sessionPersistence.create/append/flush落盘、Workspace.attachSession加入工作区,而不是手工造文件或改workspace.json。 - 标题事件必须引用消息。非 user 来源的
session/title必须带上messageSeqs,否则整条日志会被判为 corrupt、读不出来——这是插件开发文档中强调的实现约束。
核心功能¶
多应用镜像¶
插件内置 13 个应用的候选数据目录;只对实际存在且能扫到会话的应用生效,不会产生空工作区。README 列出的 id 与数据来源包括(节选):
| id | 应用 | 数据来源 |
|---|---|---|
workbuddy |
WorkBuddy | ~/.workbuddy |
zcode |
ZCode | ~/.zcode/cli/db/db.sqlite |
codex |
Codex | ~/.codex/sessions |
codebuddy |
CodeBuddy | ~/.codebuddy 等 |
cline |
Cline | ~/.cline 等 |
完整表格见仓库 README「支持的应用」一节。未安装的应用不会产生任何工作区;若已安装但存储格式不同,状态文件 scanned 里会显示 0。TRAE 不在支持范围(v1.9.2 起移除相关代码):其 IDE 会话存放在加密的本地库,无法做成镜像。
侧边栏与会话搜索¶
- 在
sidebar.footer.action注册「刷新任务列表」:点击会重新加载页面,拉取刚写入的会话与标题(追加到已有任务不会自动触发侧边栏列表重绘)。 - 侧边栏底部另有「搜索会话」(快捷键
Ctrl/Cmd + K):可按标题或 Harness 消息索引关键词找到会话本体,结果合并去重。
设置与状态¶
「设置 → 外部会话同步」展示镜像任务数、各应用扫描数、错误数、工作区根目录等,数据来自 Host 只读接口 /agent-sync/status。
排错时可查看:
| 文件 | 内容 |
|---|---|
$DSH_HOME/storages/agent-sync/status.json |
每次轮询的应用、扫描数、每个来源的标题/轮数/错误 |
$DSH_HOME/storages/agent-sync/state.json |
镜像记账:id、已同步轮数、事件数、是否已脱管 |
顺序:先看 status.json 的 apps[].error 和 sources[].error,再看 Host 日志里 [agent-sync] 前缀行。
镜像保护¶
镜像会话日志在 DSH 自己的目录里,不依赖来源应用是否还在。默认不自动归档(sweepMissing: false);来源消失超过 orphanAfterMinutes(默认 60 分钟)后标记为 orphaned。插件启动时会快照 state.json 到 backups/。只有显式设置 sweepMissing: true 才会恢复「源消失即归档」行为。
安装与启用¶
插件是一个 DSH bundle。在 Harness 里用插件管理器安装本仓库目录:
plugin_manager action=install_bundle target=<本仓库目录的绝对路径>
或者直接放进 profile 的 bundle 列表后,按你当前 DSH 版本使用路径安装(README 写法:dsh plugin add <path>)。
安装前应自行阅读仓库源码与 MIT 许可证;插件以当前 dsh 进程权限运行,会读取本机各助手的数据目录,请确认环境可信。
社区目录页(与 DeepSeek / 幻方无官方从属关系):skillhub.cn/plugins/JiangHuai24/dsh-agent-sync。
配置¶
在 cordis.patch.yml 中插入或修改 agent-sync 行,例如默认片段:
- insert:
- id: agent-sync
name: '@local/agent-sync'
config:
pollMs: 3000
sealAfterMs: 12000
maxSessionsPerApp: 0
maxFilesPerApp: 4000
scanEveryMs: 5000
missingGraceMinutes: 30
workspacesRoot: ''
onlyApps: []
常用键含义(默认值以 README 为准):
| 键 | 默认 | 说明 |
|---|---|---|
pollMs |
3000 |
轮询间隔(毫秒),最小 500 |
sealAfterMs |
12000 |
会话静默多久后视为这一轮结束,最小 1000 |
maxSessionsPerApp |
0 |
每个应用最多同步多少个会话,0 = 全量 |
onlyApps |
[] |
只同步这些应用 id |
workspacesRoot |
空 | 工作区根目录;空则使用默认工作区父目录下的 agent-sync-workspaces |
还可配置 stateFile(覆盖状态文件位置)以及 apps.<id> 单应用覆盖(如 enabled: false、roots: [...])。
典型用法¶
只同步 WorkBuddy 和 ZCode,并把工作区放到指定盘符(README 示例):
config:
onlyApps: ['workbuddy', 'zcode']
workspacesRoot: 'D:\agent-sync-workspaces'
经过上面的步骤并安装 bundle 后:
- 在对应助手里正常对话,等待轮次封口(或下一条用户消息触发封口)。
- 回到 DSH,必要时点侧边栏底部「刷新任务列表」。
- 在按应用划分的工作区中打开镜像任务;若要在 DSH 内续聊,打开后即视为脱管,该来源停止同步。
适用场景与注意¶
适合谁:同时在多台/多种编程助手与 DSH 之间切换,希望在本机把外部会话汇总为 DSH 任务、并在 Harness 里续聊的开发者。
已知限制(均来自 README):
- 只读镜像:不会把 DSH 里的新对话写回原应用。
- 脱管即停:在 DSH 里打开/续聊某个镜像任务后,该来源停止同步,避免两个写者抢同一条日志。
- 仅文本:工具调用、图片、附件不入镜像,只保留用户与助手的文本。
- 未验证的格式:除 WorkBuddy / ZCode / Codex 外,其余解析器多为通用 Claude-JSONL 兜底,未在真实数据上验证。
结尾¶
dsh-agent-sync 用追加式、封口轮次同步,把 WorkBuddy、ZCode、Codex 等本机会话纳入 DSH 工作区,并配合刷新、搜索与状态接口便于日常使用。细节与更新以仓库为准。
- 目录页:https://www.skillhub.cn/plugins/JiangHuai24/dsh-agent-sync
- GitHub:https://github.com/JiangHuai24/dsh-agent-sync