dsh-tool-interrupt:单工具级手动中断,填理由、不杀会话

前言

在 DeepSeek Harness(DSH)里跑智能体会话时,工具调用可能拖很久或方向不对。若直接点停止,往往整段任务或会话被硬切掉,模型也拿不到「你为什么停」的上下文。社区插件 dsh-tool-interrupt(维护者 wlyzqm,分类:工作流)针对的是:只停当前这一次工具调用,先让用户写(或留空)中断理由,再把理由当作该次调用的工具结果回传给模型,同回合继续、会话不中断。下面介绍它是什么、怎么装、怎么用,以及使用时要注意的边界。

这是什么

dsh-tool-interrupt 是 DSH 的 Web 端插件,实现「单工具级手动中断」。会话运行时,在会话顶部的「后台任务」菜单里点某一行的停止按钮,不再直接杀任务,而是先弹出「为何中断」小窗;确认后只 abort 该次工具调用,理由(或未填理由时的固定文案)作为工具结果交给模型,回合照常推进。

与「整 job 两段式确认杀进程」的原生行为不同:对模型工具调用行,插件接管停止按钮的第一击;纯后台 job(非模型工具调用)仍走 DSH 原生确认,行为不变。

核心功能

以下能力均来自插件 README 说明,可按需对照 GitHub 仓库。

  • 单调用粒度:只中断所选的那次工具调用;同一并行批次里其他调用不受影响。
  • 理由回传:模型在同一回合读到 【用户手动中断】中断理由:…;未填理由则回传 【用户手动中断】未提供理由。
  • 会话不中断:中断被转换为该调用的错误工具结果(而非抛异常),步骤照常提交,回合继续。
  • 原生入口:接管 DSH「后台任务」菜单行停止按钮的第一击;主题使用 DSH token(--dsw-alias-*),亮暗自动适配。
  • 窗体交互:Esc 关闭;Ctrl/Cmd + Enter 提交。

安装与启用

插件通过 DSH 官方插件命令安装(须使用资料中的完整命令,不要自行拼接):

dsh plugin --profile web add github:wlyzqm/dsh-tool-interrupt

安装后需要完整重启 dsh web,并刷新浏览器页面,客户端脚本才会生效。

插件以当前 DSH 进程权限运行;安装前建议阅读 GitHub 源码 与 MIT 许可证,确认符合你的环境与合规要求。DSH 生态是「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

  1. 会话运行期间,点会话顶部的「后台任务」(例如「N 个后台任务运行中」)。
  2. 点目标行右侧的停止小方块。
  3. 在「为何中断」窗体中填写理由(可留空),点「中断」。
  4. 该工具调用立即结束;模型收到带理由的工具结果,在同一回合内据此调整计划。

工作原理(简要)

便于理解「为何不杀会话」,README 中的机制可概括为:

  • 宿主侧通过官方 tools/execute 的 around-dispatch waterfall,为每个派发的工具调用替换独立 AbortController 信号(与社区插件 dsh-tool-call-timeout-policy 同构思路)。
  • 用户中断时只 abort 该调用的信号;运行时将中止转换为该调用的错误结果,不是异常,因此回合可继续。
  • 前端轮询 GET /dsh-tool-interrupt/in-flight,点击停止时按行命令文本匹配在途调用;命中则插件接管,未命中则放行原生行为。

适用场景与注意

适合谁:需要在 Web UI 里精细控制某一次工具调用、并希望模型知道「人为叫停原因」的工作流开发者或日常 DSH 使用者——例如 shell 命令跑偏、单次 WebFetch 过久、想同回合改计划而不重开会话。

已知边界(安装前心里有数):

  • 不响应中止信号的极少数工具:中断会在其自然结束时才生效(运行时契约:Cancellation never abandons the body)。
  • run_code 嵌套子派发不参与匹配,只接管顶层工具调用。
  • 若未来 DSH 改动「后台任务」菜单 DOM(如 data-kill-state 选择器),可用 F12 控制台 [dsh-tool-interrupt] stop pressed { label, cached, matched } 日志排查。

结尾

dsh-tool-interrupt 把「停工具」从硬杀任务改成「填理由 → 单调用 abort → 结果回传模型」,在 DSH Web 工作流里补上一块可控的中断面。进一步了解可访问目录页 https://www.skillhub.cn/plugins/wlyzqm/dsh-tool-interrupt 与仓库 https://github.com/wlyzqm/dsh-tool-interrupt。

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

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

Xiaoye