dsh-progress-beat
IdentifiedMakes the agent narrate progress during long tool chains instead of staying silent until the final answer: a standing system-prompt rule that travels with every request, plus a notice injected after e
dsh-progress-beat
DeepSeek Harness(DSH)插件:让 agent 在长时间「思考 + 工具调用」中途输出用户可见的进度说明,而不是一路静默到任务结束才说话。
它解决什么问题
较新的 flash 类模型(如 1017 版本)在 agent 任务里倾向于「连续调用工具、只在最终答复时输出文本」。UI 上就表现为:几十分钟里只有工具卡片在滚,用户不知道模型在干什么。
本插件用两条互补机制把进度说话重新塞回执行过程:
| 机制 | 挂载位置 | 作用 |
|---|---|---|
| 进度规则 | ctx.systemPrompt.section()(order 4) | 每次请求都带上的常驻规则:预计多次调用时先说计划;每约 N 次工具调用或进入新阶段,先说 1–2 句进度再继续。 |
| 兜底提醒 | tools/post-execute → additionalContexts | 按工具调用次数计数,每 N 次注入一条 notice。模型想沉默也会被硬提醒一次,同时会话里留下一条可见的合成消息。 |
两条都不改会话内容、不吞工具结果、不阻塞调用:注入的 notice 走 source.form = 'notice',模型可见、带归属、可审计。
控制面板
插件列表里 dsh-progress-beat 这一行会多出一个配置入口,打开就是可视化表单,不用手改 YAML:
| 控件 | 字段 | 说明 |
|---|---|---|
| 节奏预设 | every | 一键切换 安静 8 / 标准 4 / 密集 2 |
| 播报步频 | every | 累计多少次工具调用后强制播报(2–50) |
| 单轮提醒上限 | maxRemindersPerTurn | 每个清零周期内最多注入多少条兜底提醒;0 表示关掉兜底 |
| 常驻进度规则 | injectPrompt | 是否注册 system prompt 规则 |
| 常驻规则文本 | promptText | 支持 {{every}} 占位符 |
| 兜底提醒文本 | nudgeText | 支持 {{every}} / {{count}} 占位符 |
面板是「暂存 + 保存」模型:改动先留在表单里,点保存才写入;每个字段可单独重置回默认,也可以全部重置。字段旁出现「已覆盖」徽标表示它被用户改过、不再跟随默认值。
保存走宿主的 settings 服务,写进 profile 的 cordis.patch.yml 并由 Loader 热应用——面板保存即生效,重启后仍然有效。插件侧的 Config schema 是这一切的依据:宿主把它投影成表单(ctx.configForms),面板只负责渲染与暂存,不自建存储。
面板注册在插件管理页的
plugins.row.config插槽,键为dsh-progress-beat#dsh-progress-beat。浏览器半侧随 Loader 行走,关掉这一行面板也随之消失。
配置
控制面板改的就是下面这份 Config;也可以直接在 profile patch 里写:
- insert:
- id: dsh-progress-beat
name: 'dsh-progress-beat'
inject: [systemPrompt]
config:
every: 4 # 累计多少次工具调用后强制播报(>=2)
maxRemindersPerTurn: 12 # 单轮最多注入多少次提醒,防刷屏 / 刷 token
injectPrompt: true # 是否注册 system prompt 规则
# promptText / nudgeText 可整段替换,支持 {{every}} / {{count}} 占位
安装
profile 名按你的入口选:桌面版 GUI 启动的是
desktopprofile,dsh web/ 浏览器版用的是webprofile。
方式一:从 GitHub 直接装(推荐)
dsh plugin --profile desktop add github:Mabinogi-Cichol/dsh-progress-beat
方式二:本地克隆后装
git clone git@github.com:Mabinogi-Cichol/dsh-progress-beat.git
dsh plugin --profile desktop add <克隆目录的绝对路径>
装完确认 profile 的 package.json 里 dsh.profile.bundles 含 dsh-progress-beat。运行中的 loader 会热加载新增条目;若 UI 的「插件列表」没刷新,切走再切回该标签页(它只在挂载时拉一次快照),或刷新页面让浏览器半侧重新入图。
注意:桌面版 GUI 启动的是
desktopprofile(%USERPROFILE%\.dsh\profiles\desktop),dsh web用的是webprofile。装错 profile 时插件在界面上完全不可见——「插件列表」是 cordis loader 条目的只读投影。
依赖解析:Host 半侧 import @deepseek-ai/schemastery(Config schema 需要可投影的 schema 对象)。以 link: 方式安装时,Node 从仓库目录向上解析,因此本机需要一个指向 DSH 安装的 node_modules:
$target = "<DSH>\resources\app\dsh\node_modules\@deepseek-ai"
New-Item -ItemType Junction -Path .\node_modules\@deepseek-ai -Target $target
node_modules/ 已在 .gitignore 内。缺少这一步时插件加载失败、进度播报整体不生效,而不仅是面板。
卸载
dsh plugin --profile desktop remove dsh-progress-beat
# 并从 profile package.json 的 dsh.profile.bundles 中删掉同名条目
自测
node test\smoke.mjs # Host:注入节奏、配额、block 透传、轮次清零
node test\panel-smoke.mjs # Client:注册键、注入面、summary/page 两视图
smoke.mjs 覆盖:section 注册与占位符替换、注入节奏、单轮配额、block 分支透传、无 agent 直连调用不计数、新用户提示词清零、关闭 prompt 注入。
panel-smoke.mjs 用 mock 的 ModuleLoader 与 React 执行浏览器半侧,覆盖:factory 能被 load() 接收、apply 不抛错、面板注册到 plugins.row.config 且键为 <包名>#<行 id>、注入面含表单控制器、五个字段与保存控件都被渲染。
限制
进度是否「说得好」本质仍是模型行为,插件只能通过常驻规则 + 周期提醒提高概率,不能 100% 程序化锁死。想让节奏更密就把 every 调到 2–3;觉得吵就调到 6–8 或把 injectPrompt 关掉只留兜底提醒。
Comments
Loading…
Similar plugins
by hzh5021
Reminds the agent to speak up when it runs several model steps without emitting any text, so long tool runs stop going silent.
★ 2
MIT
JavaScript
Oct 25, 2026
dsh plugin --profile web add dsh-progressMakes the agent narrate its process: every turn opens with how it reads the message and what it will do first, then short interim notes between tool-call batches, with in-app settings for style, sente
★ 2
MIT
JavaScript
dsh plugin --profile web add dsh-interim-narrationDeepSeek Harness plugin: counts silent tool-only rounds and injects a progress reminder into the next model request, with a Settings page for threshold, wording, language and Agent Teams scope.
★ 0
MIT
JavaScript
dsh plugin --profile web add dsh-progress-nudgeby cxv117793-blip
Counts agent steps and, every N of them, adds a progress-report instruction to the batch that is about to be sent, so the agent states what it is doing, what it finished and what comes next, then carr
★ 4
MIT
JavaScript
Oct 30, 2026
dsh plugin --profile web add dsh-step-pauseby LittleBlackTong
Interval heartbeat that wakes each root agent itself (followup injection) to proactively report progress, risks or blockers: busy-safe queuing, no stacking, auto-pauses when no human replies, re-arms
★ 3
↓ 2k/wk
MIT
JavaScript
Oct 30, 2026
dsh plugin --profile web add dsh-plugin-heartbeatby CAOGGL
Notifies you when a conversation finishes: plays a sound and shows a Windows notification when the agent goes idle (configurable sound file, volume, debounce/throttle).
★ 11
↓ 471/wk
MIT
JavaScript
Oct 25, 2026
dsh plugin --profile web add dsh-ding