dsh-tool-call-limit
在终端中运行以下命令:
dsh plugin install zhourenke/dsh-tool-call-limit
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在 DeepSeek Harness 中运行 dsh plugin install zhourenke/dsh-tool-call-limit 安装本插件(开源地址:https://github.com/zhourenke/dsh-tool-call-limit)。
插件介绍
在多 Agent、多步的 DSH 对话中,一个 step 内反复调用 web_search 或 grep 会迅速膨胀上下文、推高成本。maxParallelToolCalls 只约束并发宽度,并不限制单个 step 内某工具总共被调用多少次。dsh-tool-call-limit 正是补上这一缺口:按工具名、按 live Agent、按 step 分别设置独立配额,为每一步划定明确的调用上限。
插件在 tools/pre-execute 钩子中同步预占配额,因此同一 step 内的两个并行 web_search 调用最多只有一个能通过。名额一经消耗即不退还,即便工具随后失败、超时或被下游策略拒绝,也不会回补,从而防止重试循环绕过限制。不同工具名各自独立计数,一次 web_search 不会占用 grep 的配额。状态以 live Agent 对象为键保存在 WeakMap 中,step 结束、Agent 被销毁或进程重启时自动清理,不写入 session transcript,也不在多个 DSH 实例间共享。
适合在 DSH 上构建生产级多 Agent 应用、需要对每步工具调用频次施加硬性上限的开发者。插件约束的是进入 DSH ToolRuntime 的调用次数,不涉及单次 web_search 内部发出的多个 query、单次 bash 调用内的多条命令,或 MCP 及自定义工具内部的 API 请求,这些仍由各工具自身的配置负责。并发宽度由 maxParallelToolCalls 另行管理,本插件回答的是另一个问题:这一步中,某个工具总共最多能被调用几次?
使用场景
- 多 Agent 并行时防止某一个 Agent 在单步内反复调用搜索工具撑爆上下文窗口
- 阻断工具重试、超时后再次发起调用等循环,避免单步内无限消耗配额
- 生产环境为每个工具的每步调用设定硬性上限,降低不可预期的成本波动
适合人员
- 构建生产级多 Agent 应用的 DSH 开发者
- 需要在步骤粒度控制工具调用频率、而非仅限并发数的工程团队
- 关注上下文窗口与 LLM 调用成本管控的应用架构师