dsh-loop-continue: 补全模型只叙述未调用的工具

前言

在 DeepSeek Harness(DSH)中,当智能体的一步动作只输出了文本而没有调用工具时,当前的循环逻辑会将这一轮视为“已完成”。这会导致一个常见问题:模型虽然叙述了下一步动作(例如“现在重新应用更改”),但忘记了实际执行工具调用,导致工作未完成就被过早关闭。

dsh-loop-continue 插件解决了这个问题。它监听 agent/turn-stopping 事件,在回合结束前介入,通过重放当前回合的会话日志,并利用一个判断模型来确认是否还有未完成的工作。如果模型只是叙述了动作而未调用工具,插件会引导模型继续执行。

本插件由 yunxiyang 维护,采用 MIT 许可证,属于工作流类插件。

核心功能

  • 自动检测中断:监听 agent/turn-stopping 事件,当回合结束时仅包含文本步骤且此前至少调用过一次工具时触发。
  • 重放与判断:重放当前回合的会话日志,并使用一个独立的“判断模型”来决定回合是否应继续。
  • 单字决策:判断模型仅回答 true(继续)或 false(结束),输出被限制在 64 个 Token 以内。
  • 可控限制:提供三个核心配置项来防止无限循环或消耗过多资源:maxContinuations(每回合最大引导次数,默认 10)、maxSteps(提供给判断模型查看的最新步骤数,默认 6)、maxTailChars(尾部文本预算,默认 1500)。
  • 确定性门控:仅当回合结束在文本步骤且此前有工具调用时才会启动判断逻辑,避免对普通已完成回合产生额外开销。

安装与启用

使用 DSH CLI 安装到指定 Profile:

dsh plugin --profile <profile> add dsh-loop-continue

安装后,Profile 的 package.json 会增加依赖项,cordis.patch.yml 会自动将拦截器插入层级栈中。注意:对 lib/ 目录下的源码修改需要重启 Profile 才能生效。

典型用法与配置

安装后,插件会根据默认策略工作。你可以通过以下方式调整参数:

  1. 设置引导上限:在 ~/.dsh/settings.yaml 中设置 maxContinuations(默认 10),限制每回合的最大引导次数。
  2. 调整判断上下文:设置 maxSteps(默认 6)和 maxTailChars(默认 1500),控制判断模型看到的最新步骤数量和尾部文本长度。
  3. 自定义提示词:
    • judgePrompt:定义判断模型如何判定回合未完成。
    • steerText:当插件决定引导时,注入给模型的指令文本。

配置支持以下两种方式:
* UI 配置:在 Settings > Plugins > plugin config 中找到插件卡片。注意:提示词内容在失去焦点(Blur)时保存,而不是每输入一个字符保存一次。
* YAML 文件:在 ~/.dsh/settings.yaml 中添加 loop-continue 命名空间。

示例 YAML 配置:

loop-continue:
  maxContinuations: 10
  maxSteps: 6
  maxTailChars: 1500
  judgePrompt: "You inspect one coding-agent turn that just ended. Reply with exactly one word: true if the trailing text promises work that no tool call performed, false otherwise."
  steerText: "You described an action but did not call any tool. Emit the tool call now."

适用场景与注意事项

  • 适用场景:适用于模型经常出现“只描述不执行”的对话场景,特别是代码生成或复杂工具链操作。
  • 资源消耗:每次引导都会消耗一次判断模型的往返调用和一次额外的 Agent 步骤。因此插件内置了 maxContinuations 防止在无效引导上浪费预算。
  • 调试模式:开启 debug 模式需要重启 DSH 进程才能生效,该模式会记录每一次判断结果。
  • 无浏览器环境:插件支持无浏览器(Headless)运行,配置通过 YAML 文件管理。

总结

dsh-loop-continue 插件通过引入一个轻量级的判断机制,解决了模型在叙述性输出中遗漏工具调用的常见问题。它通过精简的上下文摘要和单字决策,在保证判断准确性的同时控制了 Token 消耗。如果你在使用 DeepSeek Harness 时频繁遇到模型“只说不做”的情况,这个插件是必要的补充。

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

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

小夜