前言¶
在 DeepSeek Harness(DSH)里,同一工作区往往会同时开着多个独立 Session,各自写各自的 handoff 文档。常见结果是:每人只维护自己的那份,很少有人去读别人最新的一版,协作信息滞后。
手动在聊天里 @ 另一个 Session、或反复打开目录找 .md 文件,能凑合,但无法保证「同时」让所有对等方去读并更新。Handoff Hub 针对的是这一类交接文件协调问题;它故意不做工作流引擎、任务看板或通用记忆系统,只对齐你已经在用的 handoff 文件。
这是什么¶
dsh-handoff-hub(仓库 LiFePO2/dsh-handoff-hub)是社区维护的非官方插件,维护者为 LiFePO2,在 SkillHub 上归类为「记忆」相关能力;实现上它协调的是工作区内的 handoff 文档,而不是替代 DSH 自带的记忆插件。
一句话定位:为彼此独立的 DSH Session 提供交接文档索引、注册、一次性群发提醒,以及可选的目录变更提醒和 Session 群组管理面板。
插件本身不调用模型 API,而是通过 DSH 内置的 ctx.schedule 服务,向目标 Session 投递普通用户角色消息,由各自绑定的模型处理。
核心功能¶
四个 Agent 工具¶
| 工具 | 作用 |
|---|---|
handoff_board |
索引工作区 handoff「房间」:已注册对等方、各文档绝对路径与大小时间戳,以及未注册但在线的 Session 标题 |
handoff_join |
以显示名注册当前 Session,并原子写入(或指向)其 handoff 文档 |
handoff_nudge |
为每个目标创建一次性 Schedule 任务,同时请各对等方读取他人文档、更新自己的文档并重新注册;可带额外参考文档 |
handoff_leave |
仅从名册移除本 Session,不删除 handoff 文档 |
Session 群组面板¶
插件附带浏览器端(dsh.client),在侧边栏增加 Sessions 入口和完整管理页,可查看成员、文档大小与时间、在线状态、未注册 Session,并支持单独或全部 Nudge、移除成员、邀请未注册 Session、切换目录自动提醒等。页面通过本机 Host 路由 GET /handoff-hub/state 与 POST /handoff-hub/action 通信;写操作需请求头 x-handoff-hub: 1,插件不暴露 token,也不为页面读取文档正文。
目录变更提醒(可选)¶
默认关闭(autoRemind.enabled: false)。开启后监听房间顶层 *.md 的 mtime/size:去抖(默认 debounceSeconds 30 秒)、跳过变更文档作者、仅提醒那些自己的文档比变更更旧(或缺失)的已注册对等方,并在 mergeSeconds(默认 60 秒)内合并连发提醒。以启用时的目录为基线,不重放历史变更;未注册 Session 不会被定向提醒。
投递语义说明¶
handoff_nudge 为每个目标创建 timing.kind = "after"、target.kind = "session" 的一次性任务。工具返回的是排队回执,不是「已阅读」证明;每个目标还会收到 Schedule 服务生成的 [SCHEDULE CHANGE] 通知,实际提醒为第二条消息。重启后任务仍由 Schedule 恢复。每次提醒会消耗目标 Session 的一轮模型交互,这是设计上的预期成本。
安装与启用¶
环境要求(见 package.json):DeepSeek Harness >= 0.2.2-rc.1 且 < 0.3.0,Node.js ^22.19 || >=24,以及包含待协调 Session 的工作区。当前版本 1.1.0,许可证 MIT。包尚未发布到 npm,支持本地目录安装或通过 Discover 市场索引安装。
方式一:本地 bundle¶
先将仓库克隆到本机,再让 DSH Agent 执行 bundle 安装(plugin_manager 需完整权限批准):
git clone https://github.com/LiFePO2/dsh-handoff-hub.git
plugin_manager install_bundle target=<克隆目录的绝对路径>
路径含空格时需加引号,例如 target="D:\plugins\dsh-handoff-hub"。bundle 会插入名为 handoff-hub 的行,激活后各 Agent 可见上述四个工具;通常无需重启 DSH,但若更新已链接的包,需重载该行或重启 DSH 后生效。
安装任意 DSH bundle 会运行 profile 的包管理器。若你在 profile 的 node_modules 下手工打过补丁(例如自定义 @openai/codex),请先备份或固定版本;本插件无依赖,不会主动改动那些包。
方式二:Plugins Discover 市场索引¶
在 DSH 中打开 Plugins → Discover → Add market index,填入:
https://raw.githubusercontent.com/LiFePO2/dsh-handoff-hub/main/market/index.json
索引将发布 revision 固定到包含该插件的 commit,Discover 会安装经审阅的对应版本。
典型用法¶
各 Session 首次加入¶
在每个协作 Session 中执行一次(示例字段来自 README):
handoff_join
name: "codex"
doc: "2026-11-10-codex.md"
content: "# Handoff: codex\n\n## Current state\n...\n"
查看房间并群发同步¶
在任意 Session:
handoff_board # 谁在场、文档在哪
handoff_nudge # 请所有已注册对等方立即同步
定向提醒与附带参考文档¶
无需对方先注册也可对指定 Session 发起提醒(仍受工作区审计约束):
handoff_nudge
targets: ["session-..."]
note: "Please read the usage guide before continuing."
向每个目标附带额外可读路径:
handoff_nudge
references: ["work/handoff-hub/plugin/README.md"]
结束协作¶
handoff_leave
成功排队时,工具可能返回类似:
[handoff-hub] Queued a handoff sync reminder to 3/3 sessions (about 1s delay).
- codex: queued · task schedule-... · fires 2026-11-10T08:31:42Z
若目标 Session 不存在,对应行会标记 failed 及 [session_not_found]。
适用场景与注意¶
适合谁: 同一 DSH 工作区内有多模型或多 Agent Session 并行,且你们已经用 Markdown(或其它格式)维护 handoff 文件,需要「同时推一把」让大家读 peer 文档并更新自己那份,而不是搭建独立工作流平台。
不适合当作: 长期记忆库、任务追踪或跨工作区同步;它只协调当前工作区房间内的 handoff 文件。
安全与信任: 插件以当前 DSH 进程权限运行,会通过 Schedule 向其它 Session 注入用户消息。安装前应阅读仓库源码与 MIT 许可证,确认与你的工作区数据边界一致。本文为社区插件介绍,SkillHub 目录站与 DeepSeek / 幻方无官方从属关系,插件 README 亦声明非 DeepSeek 官方背书。
配置: 目录自动提醒相关项以仓库完整配置文档为准;资料中明确出现的默认项包括 autoRemind.enabled: false、debounceSeconds(30)、mergeSeconds(60)。
结尾¶
Handoff Hub 把多 Session 协作里最容易断裂的一环——交接文档是否被同级 Session 同时读到并回写——收成四个工具和可选 UI,依赖 DSH 自带的 Schedule 投递,而不替代你现有的 handoff 格式与写法。