dsh-progress-bar:长回合里让 Agent 主动汇报进度

前言

在 DeepSeek Harness(DSH)里跑复杂任务时,Agent 常会连续调用工具、长时间不面向用户说话。你很难判断它是在推进还是在空转,也不知道该不该打断。自己盯着步数或计时器又分散注意力。

dsh-progress-bar 是社区维护者 Kiru-Sama 发布的工作流类 DSH 插件(GitHub 仓库 Kiru-Sama/dsh-progress-bar,目录页 SkillHub)。它在累计步数或墙钟时间达到阈值时,通过宿主规定的通道提醒 Agent 简短汇报;同时在侧栏显示实时计数,在聊天区用横幅标明「上次提醒是什么时候」。插件零 npm 依赖,当前 package 版本为 2.0.0,MIT 许可证。

下面介绍它的定位、能力、安装方式与使用时的硬约束。

这是什么

一句话:累计每 N 步或每 N 秒,提醒 Agent 汇报一次进度;侧栏实时显示计数,阈值可在面板里改;附带余额低额提醒与 DeepSeek 官方峰谷时段指示。

提醒不是弹窗,而是通过 tools/post-execute 决策的 additionalContexts 注入一条合成 user 消息——这是模型能真正看见并照做的通道。消息带 source.kind = 'progress-nudge',不会被当成用户提示词污染历史。

核心功能

双触发器与共用计量

两个触发器,阈值均可调;任一命中就提醒一次,然后两个计量一起归零,避免步数刚提醒完、几秒后时间阈值又连击刷屏。

触发器 默认 含义
步数 10 步 自上次汇报起累计 N 次工具调用
时间 120 秒 自上次汇报起累计经过的真实墙钟时间

侧栏按钮显示「第 N/阈值 步 · 已过秒数」;展开面板有两条进度条、步数/时间阈值输入框、暂停/恢复、恢复默认,以及已提醒与已汇报次数。阈值输入防抖 350ms 后写入运行时配置,输入即生效、不写 profile、重启后回落默认值。

另有 minGapSeconds(默认 45)作两次提醒最小间隔,maxPerTurn(默认 20)作单回合提醒上限。默认不计步的工具包括 todo_write、ask_user_question。

计量与停表规则

时钟按墙钟推进,是否走表由 running 决定。暂停(面板暂停按钮)立刻冻结;回合结束(agent/turn-stopping)归零并停表;新用户消息(turn 编号变化)归零并起表;Agent 向用户输出可见文本(agent/assistant-stream 的 text-delta)归零并继续走表——思考(reasoning-delta)、工具调用增量、空白文本不会重置。不需要说话重置时,可在 cordis.patch.yml 将 resetOnSpeech 设为 false。

聊天区横幅

提醒对用户侧原本不可见(只有模型能看到注入消息)。插件在输入框上方用横幅补可见性:至少提醒过一次后常驻显示「上次提醒」时间(来自宿主 nudge.at,与服务器时钟一致);新提醒到达时高亮约 12 秒,显示步数与序号。越过阈值但仍在等当前工具步骤结束时,会显示「已到期 N 秒 · 等当前步骤结束后提醒」,而不是对着越界的进度条干猜。

余额监控

插件不自行调用外部 API,而是读取宿主 deepseekAccount 服务的余额(与设置页「账号与余额」同源,不碰你的 API key)。充值与赠送分开显示;默认按两者之和(balance.scope: total)判定是否低于 balance.thresholdCny(默认 1.5 元),避免赠金仍充足时误报。低额时在工具边界投递提醒,余额恢复时也会通知模型「不要再催充值」。未登录或服务不可用时静默,不编造数字。

峰谷时段

侧栏常驻显示 DeepSeek 官方 API 计费口径换算后的北京时间高峰/低谷:工作日 09:00–12:00、14:00–18:00 为高峰(界面标签「梁文峰」),其余含周末为低谷半价(「梁文谷」)。中国法定节假日无法离线判断,需在 tariff.holidays 手工填写 YYYY-MM-DD,否则面板会提示仅按周末与时段判断。走第三方中转站时是否适用以对方说明为准,不需要可关闭 tariff.enabled。

增强提醒(自适应退避)

侧栏「增强提醒」默认开启:若模型连续多次提醒仍只调工具不对用户说话,会逐步提高步数/时间阈值,并加强文案要求先输出文字再调工具,避免提高频率变成噪音。

安装与启用

DSH 插件是「一个包 + 在 profile 里登记两处」,全程不需要安装 npm 依赖。没有 dsh plugin add github:… 一类的一行命令;请按仓库 INSTALL.md 操作。

1、找到 profile 目录(Linux/macOS 默认 ~/.dsh/profiles/desktop;Windows 为 %USERPROFILE%\.dsh\profiles\desktop)。不确定时可在 DSH 设置页「打开配置文件」定位。

2、将插件目录解压到固定位置(例如 ~/Documents/dsh-progress-bar),目录内应直接可见 package.json、index.js、client.js。不要只丢进 profile 的 node_modules 而不登记 bundle。

3、编辑 profile 的 package.json,增加依赖与 bundle:

{
  "dependencies": {
    "dsh-progress-bar": "link:/Users/你/Documents/dsh-progress-bar"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-progress-bar"
      ]
    }
  }
}

link: 路径使用正斜杠。

4、在 profile 的 node_modules 下建立指向插件目录的符号链接(或整目录复制到 node_modules/dsh-progress-bar):

ln -s /Users/你/Documents/dsh-progress-bar \
      ~/.dsh/profiles/desktop/node_modules/dsh-progress-bar

5、完全退出并重启 DeepSeek Harness(不是只关窗口)。侧栏底部应出现类似 0/10 · 0秒 与峰谷标签;点开展开面板即表示加载成功。

持久化配置改插件包内的 cordis.patch.yml 后需重启;步数、秒数、余额阈值也可在侧栏面板直接改,无需重启。

典型用法

默认即可使用:Agent 每累计 10 次工具调用或距上次计量起点 120 秒,会在下一次工具执行结束后的步骤边界收到进度汇报提醒。

需要更长间隔时,在侧栏面板修改步数/时间阈值,或编辑 cordis.patch.yml,例如:

stepThreshold: 15
timeThresholdSeconds: 180
locale: zh
balance:
  enabled: true
  thresholdCny: 1.5
  scope: total
tariff:
  enabled: true
  holidays:
    - "2026-10-01"
    - "2026-10-02"

非法配置在插件激活时会直接抛错,不会静默回退。同一 profile 内不要重复注册两份相同插件配置,否则会冲突 /progress-nudge/api 路由导致插件树启动失败。

适用场景与注意

适合:长回合编码、调研、多步工具链任务,希望 Agent 定期用简短文字说明进展,而不是长时间 silent tool loop。

务必知晓的约束:

  • 提醒只能在 tools/post-execute 步骤边界投递;长时间运行的单条 shell 命令期间,时间阈值可能早已到期,提醒必须等命令返回。这是宿主 agent 循环机制决定的,不是插件能绕过的。
  • 插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,确认可接受其行为(读账户余额、注入合成消息等)。
  • INSTALL.md 写明目前主要在 Windows + DSH 桌面版实测;macOS/Linux 理论上可用 symlink 安装,多 profile 场景未充分验证。
  • SkillHub 为社区插件目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-progress-bar 把「该汇报了」这件事交给可调的步数/时间阈值和宿主认可的注入通道,并用侧栏计数、聊天横幅和 pending 状态把提醒是否发出、是否在等步骤结束说清楚;余额与峰谷指示是同一面板上的附加信息,可按需关闭。

  • 目录页:https://www.skillhub.cn/plugins/Kiru-Sama/dsh-progress-bar
  • GitHub:https://github.com/Kiru-Sama/dsh-progress-bar
羽毛球分组比赛记分
小程序二维码

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

小夜