dsh-limit-timeout:限制 DSH Agent 单次工具调用等待时长

前言

在 DSH(DeepSeek Harness)的工程实践中,工具调用通常通过 timeoutMs 或 job_output 的 timeout_ms 参数控制等待时间。这些参数由模型填写,若模型未指定或填写的值过大,部署侧通常缺乏细粒度的兜底机制,可能导致长时间阻塞或资源占用。

插件简介

dsh-limit-timeout 是一个由 azazo1 维护的管理安全类插件,用于在 DSH agent 单次工具调用执行前拦截并检查等待时长。

该插件在 tools/pre-execute 阶段介入,覆盖模型可控的等待参数。当调用请求超过配置的上限时,插件会拒绝该次调用,记录日志,并提供三条替代方案供模型参考(降低等待时间、改用后台执行、申请提升)。

安装与启用

安装前请确保 DSH 引擎版本满足要求:@deepseek-ai/dsh-* 需要大于或等于 0.2.0-rc.1 且小于 0.3.0。

Web 端安装需指定 web profile:

dsh plugin --profile web add azazo1/dsh-limit-timeout

安装完成后,重启 dsh web 以刷新页面。

桌面端不支持通过命令行直接安装(命令行会拒绝 --profile desktop 参数)。需在应用内的插件管理器中填写包名 azazo1/dsh-limit-timeout 进行安装,随后重启桌面端应用。

配置说明

设置入口位于 Settings > 等待上限。该页面为草稿式编辑,改动不会立即生效,需点击“保存”或“放弃更改”。

保存操作为原子写入,若配置冲突(如默认上限高于硬天花板),保存会被拒绝。

设置包含以下字段:

字段 默认值 说明
全局默认等待上限 (defaultLimitMs) 120000 单次调用可声明的最大等待时间,覆盖 timeoutMs 与 timeout_ms
硬天花板 (hardLimitMs) 1800000 即使批准了提升,实际等待也不会超过此值;调低它会收回已批准的提升
允许模型申请提升 (allowEscalation) 开 开启后模型可通过 request_wait_extension 申请提升,由部署侧审批
要求显式声明等待时长 (requireExplicitJobWaitMs) 关 开启后 job_output 的 wait: true 必须同时给出 timeout_ms
屏蔽重复调用提醒 (suppressRepeatToolReminders) 关 开启后 repeat-tool-reminder 注入的提醒不再进入模型请求

支持的时间格式包括:120000(毫秒)、500ms、90s、2m、1h。未编辑时,保存后与放弃更改后都会还原成合适的单位写法。

运行时行为

  • 拦截与拒绝:插件在 tools/pre-execute 阶段拦截调用。放行时继续进入下游策略(权限、沙箱)判断;超限时直接短路成错误结果,调用不会真正执行。
  • 拒绝日志:每次拒绝都会以 info 级别记入 Host 日志,包含工具名、调用 ID、当前上限与提升状态。
  • 提升机制:申请走 DSH 原生审批通道,批准后仅对当前进程内的会话生效。提升不写入会话日志,因此不可回放,也不能跨进程保留。
  • 重复提醒:通过 agent/pre-step 过滤 repeat-tool-reminder 注入的消息。此功能仅改变模型看到的内容,不影响会话日志与历史回放,被过滤的条数记入 debug 日志。

适用场景与边界

  • 边界检查:该插件仅覆盖模型可控的等待参数(timeoutMs、timeout_ms)。工具自身的部署超时(如 web_fetch 的 fetchTimeoutMs)不受本插件约束。
  • job_output 行为:当 job_output 仅写 wait: true 而不写 timeout_ms 时,等待时长由 dsh-tool-jobs 的 waitTimeoutMs 决定,默认配置下不受本插件约束。需严格限制时可开启“要求显式声明等待时长”。
  • 安全提示:插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证(MIT)。

开发

插件基于 TypeScript 开发,源码位于 src/ 目录,构建产物位于 lib/ 目录。

常用开发命令如下:

just install
just typecheck
just build
just test
just verify

结尾

该插件为 DSH 生态提供了一种在部署侧控制工具调用时延的手段。通过设置全局上限与硬天花板,结合模型申请提升机制,可以在保障系统稳定性的同时,给予模型灵活的执行空间。

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

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

小夜