shared-handoff-dsh:DeepSeek Harness 的跨平台任务状态管理与会话交接

在 DeepSeek Harness (DSH) 的开发流程中,保持仓库级的状态(如当前任务 ID)和会话间的上下文连续性是常见挑战。手动导出与导入往往缺乏一致性,且难以追踪证据。shared-handoff-dsh 插件封装了 shared-handoff-kit 的核心工作流,提供零依赖的解决方案,适配 macOS、Linux 和 Windows 平台,实现了 Codex 和 Claude 中类似的自动化行为。

核心定位

这是一个 DeepSeek Harness (dsh) 技能插件,由 eve1329 维护。它提供基于证据的会话交接和仓库本地任务 ID 状态管理技能,支持跨 Codex、Claude 和 dsh 互操作。该插件通过 DSH 事件系统模拟了原 Kit 的钩子行为,且不需要构建步骤。

安装与启用

安装过程仅包含一行命令。安装完成后,重启 dsh web,技能将自动加入技能目录,模型会通过 skill 工具加载它们。

dsh plugin --profile web add shared-handoff-dsh

核心功能

插件包含两个主要技能:

  1. 证据驱动的会话交接:支持导出和恢复会话上下文,并在 Codex、Claude 和 dsh 之间共享状态文件。
  2. 仓库本地任务 ID 状态管理:在 .agents/state/tasks/<task-id>/ 下管理任务状态,绑定当前 dsh 会话。

此外,它具备以下特性:
* 跨平台支持:原生支持 Windows 10 与 11 的 Python 环境差异。
* 自动化 Hook 等效行为:通过 agent/pre-step 和 session/event 事件监听,自动处理会话启动、任务路由、续写和压缩保护。
* 零依赖、无构建步骤:纯 Node.js 实现(基于 Node.js >=20.16.0)。

典型用法

安装后无需记忆命令,技能通过对话触发。

task-id-bootstrap:打开一个任务

在 dsh 聊天中输入指令即可启动新任务。例如:

新开task-id=init-kmp,然后开个 init-kmp 分支

模型会运行内置的 bootstrap 脚本。成功后,模型会输出三行关键信息以证明状态建立:

Task state: .../.agents/state/tasks/init-kmp
Current task: init-kmp
Session binding: /Users/you/.dsh/sessions/.../session.jsonl.zstd

后续在需要恢复时,只需说 继续,task-id=init-kmp。

注意:task-id-bootstrap 需要 Python 3.9+。如果系统中缺少 Python,插件不会静默安装,而是报告缺失并显示安装命令,必须获得明确同意后才会执行。

handoff:导出 / 恢复会话

当对话线程过长时,可以使用交接功能。输入:

帮我做个 handoff

模型会生成一段可直接粘贴到新线程的提示词,包含工作区、分支、完成状态和下一步骤。在新线程中,输入:

继续上次 handoff

模型会从状态文件重建上下文,而不是依赖聊天历史。触发词包括 交接、新开线程继续、继续上次、resume 等。

自动化机制

插件的自动化行为通过 DSH 事件系统实现,无需手动干预:

原始 Hook DSH 等效事件 行为说明
SessionStart agent/pre-step 将当前任务的 process.md 作为基线注入,提示完成里程碑后运行 handoff 技能。
UserPromptSubmit agent/pre-step 扫描消息中的 task=<id> 标记,绑定会话并切换当前任务。
Continuation agent/pre-step 识别 继续 等关键词,重新注入持久化的状态。
Stop session/event 在每次交互后刷新 process.auto.md,并将摘要追加到 process.md 的 ## Auto Log 部分。
PreCompact / PostCompact compaction/start / compaction/summary 在压缩前后写入快照,生成 context_guard.json,并在达到阈值时建议清理。

设计细节与限制

  • Subagents 是只读的:由父会话派生的子代理或 Fork,只能接收基线注入,不会写入状态(无快照、无 Auto Log、无任务绑定更新、无压缩保护更新)。
  • Session Binding:插件通过环境变量 DSH_SESSION_JSONL 获取当前会话记录路径,确保状态文件与 DSH 会话严格对应。
  • 互操作性:状态布局与 Codex/Claude 版本一致,session-tasks.json 可共享。context_guard.json 采用读-合并-写策略,确保交替使用不同运行时时仍能正确保护上下文。
  • 配置覆盖:如果默认行为不符合需求,可以通过 Profile Patch 覆盖配置项(如关闭基线注入、关闭自动快照、调整日志条目数等)。

许可证与资源

该插件采用 MIT 许可证。它以当前 DSH 进程的权限运行,安装前建议检查源码与许可证。

羽毛球分组比赛记分
小程序二维码

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

小夜