🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

进度摘要 tastynoob/dsh-progress-summary

DeepSeek 客户端
tastynoob13 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

用小模型把实时思考压成一行进度提示

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/tastynoob/dsh-progress-summary.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
  • 写入本地文件
    index.js:211
    writeFileSync(path, `# progress-summary ${new Date().toISOString()}\n`)
  • 读取本地文件
    index.js:217
    if (statSync(path).size > DEBUG_LOG_LIMIT) return
  • 写入本地文件
    index.js:218
    appendFileSync(path, `${new Date().toISOString()} ${message}\n`)
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 插件:为 Web UI 和 dsh-tui 提供带外进度播报

README

由 DeepSeek 最新模型翻译生成
dsh-progress-summary 给 DeepSeek Harness 加一条旁路生成的进度摘要:不打扰主模型,用一个小模型把实时思考压成一行"人话",同时出现在 Web UI 的输入区上方和 dsh-tui 的状态行。 显示在哪 - Web:输入框上方的那一行(composer 的 dock),不是对话流里的过程组标题。 - dsh-tui:输入区上方的状态行。 - 开关:设置 → 通用 → 显示进度摘要。关掉后不产生任何模型调用,TUI 行也会立即清空。 其它参数(模型、间隔、token 阈值、语言)在 Plugins 页的插件表单里。 - 对话流里的"工作步骤展示"是另一套东西(Chat 的四种模式 + 摘要模式补丁),本插件不改它。 为什么是旁路 Codex 的进度摘要来自模型/API 的独立通道(reasoning.summary + commentary 消息), DeepSeek 只有原始 reasoning_content,没有这一层。两条替代路线: - 提示词法(现成的 working-activity / progress-narrator 用的):要求主模型每步先说一句。 便宜,但和主任务抢输出预算,OpenAI 自己的 Codex 迁移指南明确建议删掉这类"preamble"提示。
展开完整文档(README 剩余 1 节)
dsh-progress-summary

给 DeepSeek Harness 加一条旁路生成的进度摘要:不打扰主模型,用一个小模型把实时思考压成一行"人话",同时出现在 Web UI 的输入区上方和 dsh-tui 的状态行。

显示在哪

- Web:输入框上方的那一行(composer 的 dock),不是对话流里的过程组标题。
- dsh-tui:输入区上方的状态行。
- 开关:设置 → 通用 → 显示进度摘要。关掉后不产生任何模型调用,TUI 行也会立即清空。
其它参数(模型、间隔、token 阈值、语言)在 Plugins 页的插件表单里。
- 对话流里的"工作步骤展示"是另一套东西(Chat 的四种模式 + 摘要模式补丁),本插件不改它。

为什么是旁路

Codex 的进度摘要来自模型/API 的独立通道(reasoning.summary + commentary 消息), DeepSeek 只有原始 reasoning_content,没有这一层。两条替代路线:

- 提示词法(现成的 working-activity / progress-narrator 用的):要求主模型每步先说一句。
便宜,但和主任务抢输出预算,OpenAI 自己的 Codex 迁移指南明确建议删掉这类"preamble"提示。
- 旁路法(本插件):主模型完全不动,另开一次低思考强度的短请求读最近的思考片段,写一行。

代价是额外调用;收益是不影响主任务,且摘要始终是"给用户看的"。

触发策略

分两层:零成本的行每个边界都更新;模型生成的行只在工具调用前触发。

| 触发点 | 产出 | 成本 |
| 轮次开始(可选) | 「正在分析需求」 | 0 |
| 每个工具调用(可选) | 由工具名+参数推出的行 | 0 |
| 工具调用前且满足两个阈值 | 小模型写一句「人话」 | 1 次调用 |
| 轮次结束 | 发 idle 清空 | 0 |

模型行的两个阈值必须同时满足:

1. 时间:距上次播报 ≥ minIntervalMs(默认 20s);
2. token:自上次播报以来新增内容折算 ≥ minTokens(默认 600,charsPerToken 默认 3,即约 1800 字符)。

为什么把工具调用当作唯一的模型触发点:工具调用是"这段思维链已经写完"的唯一确定信号。模型已经决定并提交了一个动作,它前面的推理一定是完整的;而流停顿、token 速率变化都不能证明这一点。这样也天然避免拿半截思维链去总结。

阈值不满足时不会丢弃内容:新增的字符留在缓冲区里,下一次工具调用重新判断。调用失败也一样,会把这一次消费掉的字符还回去,下一个边界重试。

没有工具调用的轮次(纯问答)不会产生模型摘要——只有起始行;这是这个策略的取舍:宁可少一次播报,也不在思维链中途切一刀。

前两行默认关闭(quickLines: false):这个位置是摘要,不是第二份命令日志。提示词也明确禁止复述工具名、命令或路径——工作步骤里已经显示过了。

上限:每轮最多 maxPerTurn(默认 40)次调用,单次输出 ≤96 token,effort=off。

安装

从 git 标签安装(不需要 npm)

dsh plugin --profile web add "github:tastynoob/dsh-progress-summary#v0.1.0"
dsh plugin --profile dsh-tui add "github:tastynoob/dsh-progress-summary#v0.1.0" # 可选

dsh plugin add 会把 spec 转给 pnpm,所以 pnpm 支持的 git 写法都行: github:user/repo#tag、git+https://github.com/user/repo.git#tag、或直接的 https://github.com/user/repo#tag。标签用来固定版本;本包没有构建步骤,pnpm 克隆后直接从 registry 装依赖即可。

从 npm 安装(发布后)

dsh plugin --profile web add dsh-progress-summary
dsh plugin --profile dsh-tui add dsh-progress-summary # 可选:TUI

包声明了 dsh.bundle.patch,dsh plugin add 会把它加进 profile 的 bundle 层列表; cordis.patch.yml 插入 progress-summary 行,dsh.client 让 Web 端加载浏览器半区。

插件不依赖任何 DSH 核心包:session 模块和写记录的函数都在运行时从 Loader 自己的模块实例取,所以安装它不会把不同版本的核心包带进 profile,也就不会顶掉宿主正在用的版本。

卸载:dsh plugin --profile web remove dsh-progress-summary。

本地开发(link:)

cd /path/to/dsh-progress-summary
npm install --omit=dev
dsh plugin --profile web add "link:$PWD"

link: 只是开发期便利:profile 里是一个软链,改完源码重启 DSH 就能看到效果,不必每次打包发布。它不影响发布——发布后用户走上面的 npm 路径,拿到的是正常安装的包。

配置

两种方式,效果相同。

Plugins 页:打开 Plugins → 已安装插件 → dsh-progress-summary,页面中间就是「摘要模型」表单(model / provider / effort)。同一份表单也挂在行 progress-summary 的 Configure 下面。三个字段标了 .volatile(),保存后下一次摘要就生效,不需要重启。

profile YAML:在 $DSH_HOME/profiles/<name>/cordis.patch.yml 按 id 覆盖:

- id: progress-summary
config:
model: auto # 跟随会话;也可写 deepseek-flash 固定 effort: 'off' minIntervalMs: 20000 maxPerTurn: 40 lang: zh tui: true publish: true

| 键 | 默认 | 说明 |
| enabled | true | 总开关 |
| provider / model | auto / auto | auto = 跟随会话当前模型;也可固定成任意已配置的路由(Plugins 页可改,立即生效) |
| effort | off | off / low / high / max;路由不接受时自动降级为不传 |
| maxTokens | 96 | 单次输出上限 |
| timeoutMs | 8000 | 单次调用超时,超时静默放弃 |
| minIntervalMs | 20000 | 两次播报的最小间隔(可在线改) |
| minTokens | 600 | 触发所需的估算 token 数(可在线改) |
| charsPerToken | 3 | token 估算除数(中英混排约 3 字符/token) |
| excerptChars | 700 | 送给模型的思考尾部长度 |
| maxLineChars | 128 | 渲染行硬上限(字符数,不是 token);界面按两行折行 |
| maxPerTurn | 40 | 每轮调用上限(成本天花板) |
| lang | auto | auto 跟随 DSH_TUI_LANG / LANG,否则 zh / en |
| quickLines | false | 是否启用轮次开始/工具边界的零成本行(默认关) |
| subagents | false | 是否也播报子智能体会话 |
| debug | true | 把阶段日志写到 ~/.dsh/progress-summary-debug.log(上限 256KB) |
| publish | true | 提交 ignorable 插件记录,供 Web 端投影 |
| tui | true | 向组合了 TUI 的进程注册 ctx.tuiStatus 行 |

两个界面怎么拿到数据

- Web:宿主把摘要写成 plugin:progress-summary/line(ignorable: true,不影响 resume),再折叠成 progressSummary 会话投影;浏览器的停靠组件用 useProjection 读取, conversation.input.dock 里第 16 位(在 working-activity 的 15 之后)。
- TUI:直接 ctx.tuiStatus.set('progress-summary', line),轮次结束传 undefined 清空。
走的是 dsh-tui 的 XI 号稳定 seam(keyed status line),不需要 Web 的那条记录。

两个 profile 各自装载同一个包,宿主侧代码完全相同,只差有没有对应服务。

已知限制

- 每接受一条摘要就写一条会话记录(即使 ignorable)。默认节流下每轮约 10 条;介意日志体积就把 publish 关掉,Web 就没得看,只剩 TUI。
- 摘要读的是原始 CoT,模型若用英文思考,摘要仍按 lang 输出中文,但细节取舍会受原文影响。
- 冷启动(resume)时投影会把上一轮的最后一条记录折叠进来;turn/start 和 turn/end 会把它清成 idle,所以不会残留"运行中"。
- 辅助模型路由必须已注册。配错 provider/model 时调用静默失败,界面只是没有这一行。

测试

node --test test/*.test.mjs

16 项:行清洗、触发节流、每轮上限、轮次结束清理、失败静默、投影折叠、接线冒烟。

摘要模型怎么选

默认 auto:插件在会话每次发请求时读取该会话记录的 request/header,拿到 provider + model,再用同一个 ctx.llm 服务发起辅助调用。也就是你用什么模型聊天,就用什么模型播报,不需要额外配 key、路由或模型目录。

想省钱或要更快,就把 model 固定成更小的型号(例如 deepseek-flash);effort 保持 off 即可。路由不认 off 时插件会自动退化成"不传 effort"再试一次,不会因此报错。

之所以默认跟随而不是默认固定:DSH 的模型目录因账号/供应商而异,写死一个型号在别人的 profile 里很可能不存在;跟随会话则永远可用。
预览分享卡片长什么样 ↓tastynoob/dsh-progress-summary
分享 · DeepSeek Harness Hub
tastynoob/dsh-progress-summary

用小模型把实时思考压成一行进度提示

这是你的仓库?认领条目

回到顶部