dsh-repeat-stop:硬停止连续相同的 DeepSeek Harness 工具调用

前言

在开发 DeepSeek Harness (DSH) 智能体时,工具调用失败后,智能体往往不会自动停止,而是继续重复相同的调用。现有的 repeat-tool-reminder 插件仅提供提醒,不会强制阻断。dsh-repeat-stop 旨在解决这一问题,它通过硬停止机制,在连续调用达到阈值后直接拒绝下一次调用。

是什么

dsh-repeat-stop 是一个 DeepSeek Harness 插件,属于 dsh-wsl-kit 生态系统的一部分。它对“连续相同的工具调用”进行检测。这里的“相同”定义为相同的工具名称加上相同的参数。当连续调用的次数超过配置阈值时,该插件会阻止下一次调用。

核心功能

  1. 硬停止机制:默认情况下,允许 6 次连续相同的调用,第 7 次调用将被直接拒绝。
  2. 状态重置:当参数、工具名称发生变化,或接收到真实的用户消息时,计数器会自动重置,避免误杀正常的轮换调用。
  3. 白名单/黑名单:支持通过 exclude 列表排除特定工具名称(如 job_output),也支持 include 列表指定仅追踪特定工具。

安装与启用

安装该插件需要使用官方的 DSH 插件管理命令。安装后必须重启 dsh web 服务才能生效。

dsh plugin --profile web add github:173787247/dsh-repeat-stop

安装完成后,在 Web UI 的 Trajectory 中,如果调用被该插件阻止,通常会显示 dsh-repeat-stop: blocked。

配置说明

插件通过 YAML 配置文件进行控制。默认配置如下:

- id: dsh-repeat-stop
  name: dsh-repeat-stop
  config:
    enabled: true
    threshold: 6
    exclude:
      - job_output
      - job_list
      - job_kill
配置项 默认值 说明
enabled true 总开关,关闭后将不执行任何拦截
threshold 6 允许连续调用的最大次数,整数 ≥ 2
exclude job_* 不计入计数的工具名称列表
include [] 如果设置,仅追踪列表中的工具名称(支持通配符)

与 dsh-tool-budget 的区别

这两个插件在功能上互补,但侧重点不同:

插件名称 阻断对象
dsh-repeat-stop 连续相同的工具调用(时间窗口短)
dsh-tool-budget 整个会话内的工具总调用次数(全局限制)

注意事项

  1. 版本要求:该插件需要 DeepSeek Harness 版本 >= 0.1.2。
  2. 重启服务:安装或修改配置后,必须重启 dsh web 进程才能加载新插件。
  3. 生态定位:该插件与 dsh-tool-budget 配合使用效果最佳,前者防止死循环,后者控制总成本。

结语

dsh-repeat-stop 通过硬停止机制,有效防止智能体在工具调用失败时陷入无限循环。结合 dsh-tool-budget,可以构建更稳定的 DSH 智能体工作流。更多详情及源码可参考其 GitHub 仓库。

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

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

小夜