前言¶
DeepSeek Harness(DSH)采用“一切皆插件”的架构。在开发长对话或复杂任务的智能体时,如何自动判断会话何时适合交接给人工或另一个流程,是一个常见需求。dsh-session-handoff 是一个宿主插件(薄适配层),它不处理具体的交接逻辑,而是负责观测会话状态、在满足条件时触发建议,并引导用户或系统完成交接。
插件定位与核心价值¶
该插件由维护者 realpkuasule 开发,属于记忆类工具。它的核心价值在于将“会话健康度观测”与“交接动作触发”解耦。它通过一系列阈值判定,在会话进入特定阶段(如步骤过多、重试过多)时,通过确定性模板向会话尾部追加建议,并配合审批门控,最终调用全局 harness-automation CLI 完成实际操作。
安装与启用¶
本插件支持通过 DSH 的标准插件机制安装。请确保你的 Node.js 版本大于等于 20。
dsh --profile web plugin add github:realpkuasule/dsh-session-handoff
安装后,插件会自动挂载到配置中。你可以通过 dsh --profile web --dump-config 检查 dsh-session-handoff 是否出现在组成树中,随后重启 web 进程以生效。
核心功能¶
插件主要包含以下能力:
- 会话指标观测:投影单元
sessionHandoff持续记录会话的turns(轮次)、steps(步骤)、llmMs(耗时)、titles、retries(重试)和splices(前缀缓存操作)等数据。 - 阈值触发判定:插件读取策略文件中的阈值配置。当观测到的指标(如
turns ≥ 12、steps ≥ 150、llmMs ≥ 30min)超过阈值时,判定为“切换建议”状态。 - Append-Only 建议注入:命中阈值后,插件会在下一个 open turn 内注入一条确定性建议。该注入严格遵循 append-only 纪律,消息内容由固定模板渲染(不包含时间戳或随机数),且通过指纹去重机制确保不会重复追加。
- Approval 门控制:建议注入后,插件会在同 turn 内请求
ctx.approval。只有当allowed-once被批准时,才会调用 CLI 执行交接;拒绝或取消则不执行任何操作。 - 调用 harness-automation CLI:交接执行由全局
harness-automation session handoff命令完成,插件仅负责解析其 JSON 输出。
使用流程与限制¶
插件通过以下步骤工作:
- 观测:订阅会话的 change feed,持续更新投影视图。
- 判定:计算当前视图与策略文件阈值的差值。
- 触发:若未命中且指纹未存在,将该会话挂入 pending,在下一个 open turn 注入建议。
- 执行:用户在 turn 内批准后,CLI 执行交接。
重要约束与注意事项:
- 只读策略:插件在读取策略文件(默认为
.harness/session-workflow.yaml)时,绝不改写文件内容,仅作为只读触发依据。 - 注入纪律:注入消息仅允许追加到历史尾部,且不能在状态未改变时追加(防止零状态写入)。
- 审批时机:Approval 请求仅在 open turn 内有效,插件没有后台定时器,不会单方面终止会话。
- 配置解析:项目策略文件中的阈值解析器只认
thresholds:块下的标量数字键,不支持复杂的 YAML 结构。
适用场景¶
该插件适合需要在 DSH 生态中自动化管理长会话生命周期、需要严格审计交接过程以及希望将交接逻辑与观测逻辑分离的场景。由于插件仅做观测和触发,执行逻辑完全依赖外部 CLI,因此适合需要灵活配置交接策略的团队。
总结¶
dsh-session-handoff 是一个专注于“观测-判定-触发”链路的轻量级适配器。它通过严格的 append-only 注入和指纹去重机制,保证了会话状态的稳定性;通过 approval 门控和 CLI 调用,确保了交接流程的受控性。如果你正在使用 DSH 构建需要自动管理会话进度的应用,该插件提供了一个标准化的切入点。
- 项目目录:https://www.skillhub.cn/plugins/realpkuasule/dsh-session-handoff
- GitHub 仓库:https://github.com/realpkuasule/dsh-session-handoff