前言¶
在使用 DeepSeek Harness (DSH) 0.1.5 版本进行会话分支操作时,fork 出来的子会话会继承父会话的日志前缀。如果父会话有未处理的队列(即 agent/inbox/spliced 事件),这些事件会被重放进子会话的待办队列中。此时你在新分支输入的问题会被追加到继承队列之后,导致子会话的第一回合优先运行父会话的旧问题,你刚输入的问题看起来“消失”了。这个插件通过宿主机端 bundle 实现,无需修改核心代码。
插件信息¶
- 名称: dsh-branch-inbox-guard
- 功能: 移除 fork 子会话从父会话继承的已排队提示词,使新分支优先执行你输入的内容。
- 维护者: xine2009cn
- 许可证: MIT
核心功能¶
插件在每次 agent/created 事件触发时检查待办队列,移除那些插入在会话继承前缀(seq < session.inheritedEventCount)中的事件。具体行为如下:
- 移除继承项:对于在分叉点之前插入的队列项,将其作为
agent/inbox/spliced取消事件持久化删除。 - 保留自有项:对于会话自身生成的事件,保持不变。
- 支持子代理:支持 fork-context 下的子代理场景,防止其队列被父级污染。
- 幂等与保守:不会修改会话历史,不写外部文件,且只在确认来源为父级时才操作。
安装与启用¶
通过 npm 仓库安装,无需构建步骤。
dsh plugin --profile web add dsh-branch-inbox-guard
安装后,重启 DSH 进程(如 docker restart <container>)并重新加载 Web GUI。插件需要在 profile 的 dsh.profile.bundles 配置中列出,以便在启动时加载。
典型用法¶
- 在一个会话中排队一条消息,此时 Agent 正在运行。
- 在已完成的回合处分叉出一个新分支。
- 检查新分支的队列,应已清空继承的旧消息。
- 在新分支输入一个问题,应立即开始运行,而不是等待父级的旧消息。
日志验证:
当插件移除队列项时,DSH 日志中会出现如下记录:
[branch-inbox-guard] session-xxxxxxxx: dropped 5 inherited prompt(s) from its fork parent
兼容性与注意事项¶
- 版本兼容:已验证 DSH 0.1.5-rc.1 和 0.1.5-rc.2。在 DSH 0.1.1-rc.2 上,由于分叉时队列本就是空的,该插件为无操作状态。
- 无配置:无需任何额外配置。
- 权限:插件以当前 DSH 进程权限运行,建议安装前检查源码与许可证。
结语¶
dsh-branch-inbox-guard 提供了一种非侵入式的解决方案,用于修复 DSH 0.1.5 版本中 fork 分支继承队列导致的新输入被阻塞的问题。
- GitHub: https://github.com/xine2009cn/dsh-branch-inbox-guard
- DSH 生态目录: https://www.skillhub.cn/plugins/xine2009cn/dsh-branch-inbox-guard