DSH Progress Check
为正在工作的 DeepSeek Harness(DSH)会话定期生成一张进展卡片:把「当前进度 / 尚未确认 / 需要你确认」整理成几句话放进对话,让你不必翻完整轨迹就能知道任务走到了哪一步、有没有需要你拍板的事。
这不是 DSH 官方插件。
本项目是第三方独立开发的社区插件,与 DeepSeek Harness 官方团队无关,不随官方发行版交付,也不属于官方仓库。
- 官方不提供支持,也不承诺兼容;问题反馈与修复由本项目维护者负责。
- 它使用 DSH 的插件接口,DSH 升级后可能需要同步更新;版本不一致时 DSH 会直接拒绝安装(见「环境要求」)。
- 遇到问题请提到本仓库,不要提给 DSH 官方。
示例
只显示「当前进度」一组的进展卡片,以及运行中「用时…」文字后面的「生成进展」入口
图中这张卡片只有「当前进度」一组:当时「尚未确认」和「需要你确认」都没有内容,这两组就不会出现。右上角图标可折叠或展开本会话的全部卡片;运行中的「深度求索中,用时…」后面有「生成进展」,可随时手工生成一张。
主要功能
- 自动生成:会话运行期间累计到一定工作量后自动生成一张进展卡片,不打断也不延迟主任务。
- 三组条目:
当前进度 概括任务现状,尚未确认 列出确实拿不准的问题或技术决策,排除模型能自行查明或验证的客观事实,需要你确认 列出你可以并行推进的事项;没有内容的那一组不会出现在卡片里(两组都为空时卡片只显示「当前进度」)。
- 进度分行展示:较大任务的进度分三行(当前子任务、此刻的操作、下一步),较小任务分两行(当前进度、下一步)。
- 留在对话里:卡片跟随它生成时所在的上下文,刷新或重启后仍在原位置;滚动到对话区顶部时最新一张会吸顶。
- 一键折叠:卡片右上角图标可折叠/展开本会话的全部卡片(默认展开),折叠后只保留一行进度;各会话互不影响。
- 一键回复:「需要你确认」中的每一项后面有「回复」,点击会把该问题引用到输入框,你补充后自行发送,已有草稿和附件不受影响。
- 随时手工生成:点击用时文字后面的「生成进展」立刻生成一张,不必等待间隔或工作量门槛;同一会话同时只进行一次生成,已有生成在途时点击会并入同一次结果。
- 不打扰主任务:生成使用该会话当前的模型、消耗一次正常用量,但不会执行工具,也不会改动你的对话内容。手工生成失败会给出提示、可以再点一次;自动生成失败不弹提示,下个间隔自行重试。
环境要求
-
DSH 版本:0.2.1-alpha.2。版本不一致时 dsh plugin add 会直接拒绝安装(不会安装任何内容,命令以非零状态退出)。确需在别的版本上试用,可按命令输出的提示逐版本豁免,风险自负:
dsh plugin --profile web allow-version @kermanx/dsh-progress-check@<插件版本> --dsh-version <DSH 版本> --accept-risk
-
界面:Web 客户端(dsh web 等加载 Web 界面的 profile)。纯终端、无界面运行不会显示卡片。
-
pnpm:安装插件需要 pnpm(dsh plugin 会把包管理转发给 pnpm)。本仓库固定 pnpm@10.16.1,本机版本不同会让命令直接报错退出。
-
从源码构建:需要一份 DSH 源码 checkout,默认与本仓库同级(../deepseek-harness);如果放在别处,需要相应调整本仓库的本地依赖指向。
-
语言:卡片标签跟随 DSH 界面语言;生成报告使用英文提示词,并在每次请求时读取 DSH 保存的语言选择,动态指定报告语言。切换语言后新生成的报告使用新选择;未保存明确选择时沿用对话中用户的语言。
安装
从 GitHub 安装
每个版本都会把构建好的包附在 GitHub Release 里;安装时不需要 npm,也不需要在本机构建或授权构建脚本:
dsh plugin --profile web add https://github.com/kermanx/dsh-progress-check/releases/latest/download/dsh-progress-check.tgz
安装完成后启动(或重启)该 profile,例如 dsh web。可以用下面的命令确认插件所在的配置层已经生效:
dsh --profile web --dump-config
插件安装并保存在该 profile 中,只对使用这个 profile 的 DSH 进程生效;其他 profile 需要分别安装。
从源码安装
改代码或本地调试时,克隆仓库后构建,再把目录本身装进 profile:
git clone https://github.com/kermanx/dsh-progress-check
cd dsh-progress-check
pnpm install
pnpm run build
dsh plugin --profile web add "$PWD"
这条路径需要一份 DSH 源码 checkout(默认同级 ../deepseek-harness);只用上面的 Release 安装则不需要。
使用方式
自动生成
会话运行期间,同时满足下面两个条件时自动生成一张卡片:
- 距上次生成已经累计了
intervalMs 的工作时间(会话闲置时暂停计时,继续工作时接着计);
- 这期间新增的工具调用数严格超过
toolCallThreshold。
任一条件不满足都会顺延到下一个间隔,不会打断或延迟主任务。会话停止工作时不再生成;生成失败不弹提示,下个间隔自行重试。
手工生成
运行中的会话在「深度求索中,用时…」旁边显示「生成进展」:
- 点击后原地变成「生成中…」,跳过上面的时间和调用次数门槛,直接生成一张新卡片;
- 同一会话同时只进行一次生成。如果已有生成在途,点击会并入并等待同一次结果;本次点击处理期间按钮不可重复点击;
- 离开页面或停止会话会取消这次手工发起的生成;如果本次点击是并入已有的生成,则不会取消那一次;
- 失败会给出提示,可以重新点击。
卡片交互
- 查看:卡片按生成顺序留在对话流中,最新一张在滚到对话区顶部时吸顶,向上滚回后回到原位。
- 折叠/展开:点右上角图标控制本会话所有卡片(默认展开),后续生成的卡片沿用当前状态;折叠状态下只显示一行当前进度。
- 回复:点「需要你确认」后面的「回复」,问题会被引用到输入框当前光标位置,你补充后发送即可;输入框正在提交或处理命令时,回复按钮不可用。
配置
默认值随插件提供,无需任何配置即可使用。要调整时,在所用 profile 的 patch 层里按插件 id progress-check 覆盖,例如 Web 默认 profile:
# ~/.dsh/profiles/web/cordis.patch.yml
- id: progress-check
config:
intervalMs: 30000 # 例:改为 30 秒
toolCallThreshold: 5
maxConcurrent: 2
timeoutMs: 120000
maxResponseBytes: 262144
maxParseRetries: 3
includeSubagents: true
DSH 的 patch 按 id 整段替换该行的 config,不会逐键合并。请把你需要保留的键一起写出来;没有写出的键回到插件内置默认值(即下表中的默认值)。
| 字段 | 默认值 | 说明 |
|---|
intervalMs | 60000 | 两次自动生成之间累计的工作时间(毫秒)。会话闲置时暂停计时,重新开始工作后接着计;手工生成完成后也重新开始计时。最小 1。 |
toolCallThreshold | 5 | 新增工具调用数严格超过此值才自动生成;默认表示至少 6 次。设为 0 表示只要新增调用就满足。 |
maxConcurrent | 2 | 同一个 DSH 进程内同时进行的生成数上限;同一会话同时最多进行一次生成。最小 1。 |
timeoutMs | 120000 | 一次生成从进入队列到结束(含排队等待与重试)的超时(毫秒),超时按失败处理。最小 1。 |
maxResponseBytes | 262144 | 每次生成尝试接受的响应大小上限(字节,默认 256 KiB),超出按失败处理。最小 1。 |
maxParseRetries | 3 | 生成结果格式不合格时的重试次数,允许 0–3;加上首次请求最多共 4 次尝试。 |
includeSubagents | true | 是否也为子智能体自己的会话生成卡片;每个会话独立计时和计数。 |
数值键都必须写整数(步长 1),例如 intervalMs: 1500.5 会被拒绝。改完保存后,重新加载 profile 生效:重启 dsh web 即可;如果该 profile 开启了配置热重载(patchReload: live),插件会直接重载。
卸载
dsh plugin --profile web remove @kermanx/dsh-progress-check
重启 profile 后不再生成新卡片,已有卡片也不再显示。卸载不会删除已经写入会话的进展数据,重新安装后会再次出现。
开发
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run smoke:web 会在隔离环境中启动一次真实 Web 界面自检,用于检查卡片生成与交互;加 --manual 可验证手工生成入口。
许可
MIT,见 package.json 的 license 字段。