前言¶
在 DeepSeek Harness(DSH)里跑智能体工作流时,常见一种中断:模型已经推理了一阵子,但这一轮既没有给出最终回答,也没有真正执行工具调用,回合就静默结束了。推理文本末尾往往还留着 DSML(DeepSeek Markup Language)工具调用的标记片段,例如:
</||DSML|| parameter>
</||DSML|| invoke>
</||DSML|| calls>
DSML 是 DeepSeek 用来描述工具调用的标记格式。部分 provider 路由会把这些标记当作普通推理文本回传,而不是解析成实际调用,于是调用不会发生、回合无产出,只能手动输入「继续」才能往下走。dsh-dsml-rescue 由社区维护者 dsh-plugin-lab 发布,分类为工作流类 DSH 插件,针对上述空转场景自动代你发送续跑提示。
这是什么¶
dsh-dsml-rescue 是 DSH 插件:当 DSML 工具调用标记泄漏进推理过程、且该回合因此停滞时,自动再推一轮。它不修改历史对话,也不从根上修复 provider 侧的标记泄漏,目的是缩短你等待和手动点「继续」的时间。
项目托管于 GitHub(dsh-plugin-lab/dsh-dsml-rescue),npm 包名同为 dsh-dsml-rescue,许可证为 MIT。社区插件目录页:SkillHub 上的 dsh-dsml-rescue。DSH 生态强调「一切皆插件」;SkillHub 为独立社区目录,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
下面介绍插件在资料中明确描述的行为。
- 识别并续跑特定空转:仅当推理末尾出现 DSML 标记、且该回合没有其它有效产出时触发。仅有空回合、没有 DSML 标记的情况(取消、请求失败、输出被截断等)有意不处理。
- 发送简短中性续跑句:代用户发一行类似「继续」或「若已完成则收尾」的提示,由宿主继续对话。
- 输入时退让:检测到你在输入时会退避,避免和你抢键盘。
- 有限重试:多次尝试后放弃,避免无限消耗请求。
- 覆盖子智能体:委托给 subagent 的任务若同样卡在未完成的 DSML 泄漏空转,也会被纳入,避免误报「已完成」。
安装与启用¶
插件以当前 dsh 进程的权限运行;安装前建议在 GitHub 仓库阅读源码与 LICENSE,确认符合你的环境与合规要求。
官方安装步骤如下。
- 添加插件(web profile):
dsh plugin --profile web add dsh-dsml-rescue
- 重启 DSH web 会话:
dsh --profile web
README 说明默认行为即为预期用法,无需额外配置。若需了解可调项,仓库 docs/ARCHITECTURE.md 的 Configuration 章节描述了相关设置;本文不展开未在简介资料中逐项列出的字段。
从源码本地构建时,可在仓库内执行 pnpm install && pnpm run build,再用 dsh plugin --profile web add "$PWD" 指向构建目录(需自行 clone 仓库,步骤以 README 为准)。
典型用法¶
安装并重启后,插件在后台监听回合结束条件,无单独 CLI 业务命令。日常用法即:照常使用 dsh --profile web 对话;当出现 DSML 标记泄漏导致的空转时,插件会自动补发续跑消息,无需手动输入「continue」。
仓库提供 dsh-dsml-rescue-doctor(见 package.json 的 bin 条目)用于诊断;本地验证与测试说明见 docs/VERIFICATION.md。
适用场景与边界¶
适合:经常通过 DSH web profile 跑工具调用型智能体,且偶发「推理里露出 DSML 闭合标签、回合却无回答无调用」的用户。
不适合或不会做的事(README 明确说明):
- 不能修复标记泄漏的根因;泄漏发生在模型/provider 链路之下,插件触达不到。
- 没有 DSML 标记的空回合不会 rescue。
- 不会重写或回放对话,只追加一条消息让宿主继续。
Node 运行环境要求 >=20;插件声明的 dsh 引擎兼容范围为 ^0.1.7-rc.1 || ^0.2.0-rc.1 || ^0.2.1-rc.1(以安装时 package.json 为准)。
结尾¶
经过上面的步骤,在 web profile 下启用 dsh-dsml-rescue 后,DSML 泄漏导致的空转回合可由插件自动续跑,减少手工打断。更多实现细节与识别规则见仓库 docs/ARCHITECTURE.md。
- 目录页:https://www.skillhub.cn/plugins/dsh-plugin-lab/dsh-dsml-rescue
- GitHub:https://github.com/dsh-plugin-lab/dsh-dsml-rescue