dsh-fork-inbox-guard: 丢弃分叉会话继承的待领提示词

前言

在 DeepSeek Harness(DSH)的工作流中,分叉(Fork)会话是一个常用操作。当源会话处于运行状态或存在排队消息时,如果直接进行分叉,子会话会继承源会话的待领提示词。这导致子会话优先执行源会话遗留的命令,而你刚刚发送的新提示词被推迟到下一轮。这不仅造成指令重复执行,还打乱了预期的对话流程。

dsh-fork-inbox-guard 是一个 Host 插件,它通过清理分叉后继承的待领消息队列,确保子会话的第一次交互直接响应当前发送的提示词。

核心功能

  • 丢弃继承消息:在创建子会话时,移除从源会话继承来的待领提示词。
  • 优先响应新提示:保证子会话的第一个回合回答的是你当前发送的消息。
  • 日志记录:将被丢弃的消息标记为 outcome: canceled,保留 agent/inbox/spliced 事件记录。
  • 入口覆盖:拦截侧边栏的 Fork 会话入口以及消息菜单的 Branch 入口,防止误操作导致继承旧队列。

安装与启用

在插件目录下执行以下命令进行安装:

dsh plugin --profile web add "link:$(pwd)"

安装完成后重启 dsh web 服务。卸载时使用:

dsh plugin --profile web remove dsh-fork-inbox-guard

本插件仅修改 Host 半区逻辑,不注册 Client 模块,因此不需要重新构建前端。

典型用法

插件生效后,可以通过子会话的日志确认行为。在分叉出的会话日志中查找 agent/inbox/spliced 事件,其 outcome 字段应为 canceled,且 removedCount 为 1。这条记录对应的是被丢弃的继承消息,随后的 user/message 事件则是你新发送的提示词。

插件本身会输出一条日志信息,表明丢弃了某个带种子会话的待领 Inbox:

fork-inbox-guard: dropped the pending inbox of seeded session "session-xxxx"

默认的 web profile 未安装控制台日志插件,该信息不会显示在终端。若需在终端查看,需要挂载 @deepseek-ai/cordis-plugin-logger-console。

适用场景与注意

  • 生效范围:仅对新建的子会话生效,不会反向修复已经建立的历史会话。
  • Fork 算法:不修改 Harness 内部的 fork 切点算法,因此子会话日志中仍会先出现源会话的 insert 事件,紧接着才是 canceled 的 splice 事件。
  • API 依赖:依赖 Harness 的公开 API(在 1.0 之前版本不保证稳定),升级 DSH 后建议重跑 just test。
  • 冲突处理:上游如果在 fork 时直接清空了子会话的 inbox,本插件检测到空队列时会跳过操作,不会产生冲突。
  • Resume 与无 Seed:resume 操作不受影响;对于没有新 seed 的新会话,插件也不会进行干预。

短结尾

该插件通过清理继承队列,解决了 Fork 操作中指令错位和重复执行的问题,适合需要精细化控制会话继承行为的场景。

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

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

小夜