dsh-agent-sync:把 WorkBuddy、ZCode、Codex 等会话镜像进 DSH

前言

在 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

三个关键设计值得单独说明:

  1. 只追加已封口的轮次。一轮对话在「出现下一条用户消息」或「静默超过 sealAfterMs」之后才写入,日志保持追加式,不需要回头改写。
  2. 走 Harness 自己的写入路径。通过 sessionPersistence.create/append/flush 落盘、Workspace.attachSession 加入工作区,而不是手工造文件或改 workspace.json。
  3. 标题事件必须引用消息。非 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 后:

  1. 在对应助手里正常对话,等待轮次封口(或下一条用户消息触发封口)。
  2. 回到 DSH,必要时点侧边栏底部「刷新任务列表」。
  3. 在按应用划分的工作区中打开镜像任务;若要在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye