dsh-think-summary: DSH Real-time Segmented Summary Plugin for Long Thinking

前言

推理模型的思考链对调试和评估很有价值,但在聊天界面里它通常一滚而过:回答结束后想回头看「模型当时是怎么推的」,往往没有入口,只能翻原始日志。

dsh-think-summary 解决的就是这个问题。它是一个 DSH(Cordis 架构)双面插件:检测模型的长思考,边思考边分段、逐段产出摘要,实时展示在聊天区,附带设置页与历史持久化。下面按功能、安装、验证、注意事项的顺序介绍。

这是什么

插件名为 dsh-think-summary,仓库位于 https://github.com/oakcakerolls/dsh-think-summary ,许可证 MIT,当前版本 0.1.2。

它分两个半面:Host 半面(src/host/*,TypeScript)负责检测、分段、总结、精炼、持久化;客户端半面(src/client/*,纯 JS)负责实时面板、总结条、视图与设置卡。需要强调一点:总结不写回会话上下文,只做展示,对对话零污染。

核心功能

长思考检测与语义分段

Host 半面在 llm/stream 瀑布中实时观察 reasoning-delta,用轻量 token 计数(CJK 自适应、原始计数不取整)衡量思考量。超过阈值(默认 2000 token)自动进入分段模式;默认过滤 purpose 非空的旁路流(压缩、标题生成等辅助调用)。

分段采用双阈值:最小窗口 1500 token,达到后等待语义边界再切;硬上限 3000 token,到点强制切并回溯到最近的句末或行末。切分感知 Markdown 结构:围栏状态机保证代码块整体原子、表格整体保留、列表只在项边界切。缓冲区只缓存未总结的余量,内存有界,state 级哈希去重。

逐段总结与精炼

每段先由启发式提取产出摘要(0 token,即时可用);开启精炼后,可精炼的段会用会话 provider 的最小可用模型重新生成摘要,带输入预算与三档裁剪(头尾 / 仅尾部 / 完整保留,默认 headtail)。精炼并发池默认 3,任务互不打断,超时释放并发位,异常时自动回退启发式并在段上标注原因。段头同时显示原始输出 token 与精炼实际 token。

代码块和表格有三态处理:ignore(默认,内容不写内存、卡片不显示任何痕迹)、keep-skip(保留并做结构化摘要、跳过精炼)、keep-refine(保留并精炼)。

界面上的三个位置

1、实时面板:composer 上方,展示思考进度和滚动追加的分段摘要,仅「对话」视图显示。客户端每 1.5 秒轮询 /api/think-summary/state

2、聊天流内总结条:每条回复末尾(turnTail 槽位)显示该 turn 的思考总结,按每次思考(step)分组,默认折叠。

3、思考总结视图:会话头部的「思考总结」选项卡,列出当前会话全部被记录的思考,可折叠、自动滚底,折叠状态经 localStorage 持久化。

兜底与可选的自产小结

session/event 事件流断流或异常时,插件会补跑分段总结,兜底分段同样入队精炼(用会话默认模型),不丢摘要。

另有主模型自产小结,默认关闭:把 selfSummary 设为 prompt 后,向系统提示词注入小结指令,流内捕获【思考小结】标记直接展示。它只是展示层面的补充,不影响外部分段。

持久化与清理

思考总结保存到 ~/.dsh/dsh-think-summary.json,采用原子写(tmp+rename),每次状态变更同步落盘,重启 dsh 后仍可查看历史。支持已归档会话的自动/手动清理:自动清理默认关,归档保留天数默认 30,立即清理默认宽限保留最近 24 小时。

设置页与 HTTP 接口

设置页位于侧边栏「设置 → 插件配置 → think-summary」卡片,分组可折叠。由于官方设置桥只服务白名单命名空间,本插件自建了 loopback 设置桥,改动即时生效、无需重启。主要默认值:长思考阈值 2000、段最小窗口 1500、段硬上限 3000、精炼开(预算 1024 token、并发 3、超时 60 秒、模型 auto)、代码块/表格处理 ignore、自产小结 off。

Host 提供六个 HTTP 接口,浏览器同源直连:

GET  /api/think-summary/state               会话思考状态视图
GET  /api/think-summary/models              精炼模型下拉数据源
POST /api/think-summary/settings/describe   设置命名空间视图
POST /api/think-summary/settings/mutate     逐字段 set/unset
POST /api/think-summary/clear-archived      清理已归档会话总结
POST /api/think-summary/pause               切换全局暂停

其中 settings / clear-archived / pause 三个接口为 loopback-only,拒绝非本机来源。

安装与启用

npm 包方式一行命令完成安装:

dsh plugin --profile web add dsh-think-summary

本地开发安装(README 标⭐推荐,需要本机可用的 pnpm):

dsh plugin --profile web add link:/绝对/路径/to/dsh-think-summary
# Windows 示例:
dsh plugin --profile web add link:D:/Files/zzj/Programs/webs/dsh-plugins/dsh-think-summary

该命令在 ~/.dsh/profiles/web/ 下写入 link: 依赖、建立符号链接并把包加入 dsh.profile.bundles。卸载用 dsh plugin --profile web remove dsh-think-summary

如果只需要 Host 面,也可以在 cordis.yml 里手动加一行:

- path: /绝对/路径/to/dsh-think-summary
# 或
- pkg: dsh-think-summary

注意:手动 cordis.yml 方式只装载 Host 面,检测、分段、总结、精炼、持久化均可用,但没有设置页与实时面板。

使用与验证

1、向模型提出需要深度推理的问题,让思考量超过长思考阈值。

2、思考进行中,composer 上方出现实时面板 ● 思考中 · N tok · M 段,分段摘要滚动追加;开启精炼的段稍后标记「已精炼」。

3、思考结束,面板转为「思考结束」;下一次思考的积累期会保留上次总结作参照。

4、每条回复末尾出现可折叠的「思考总结」条,按 step 分组;会话头部的「思考总结」选项卡可查看当前会话全部历史总结。

阈值内的短思考不产出分段,不打扰正常对话。

本地开发与调试

克隆仓库后依次执行 npm installnpm run buildnpm run typecheck 即可构建。调试循环用 npm run watch:all 并行监听两端:客户端改动刷新浏览器即生效,Host 半面(src/host)改动需重启 dsh web。仓库还带两个回归脚本:

node scripts/seg-check.mjs    # 分段算法回归
node scripts/order-check.mjs  # 客户端 bundle 模块顺序检查

适用场景与注意

适合在 DSH web 上重度使用推理模型、需要回顾和检查模型推理过程的开发者与评估人员。

几点注意:

1、总结不写回会话上下文,不会影响模型后续输入;阈值内的短思考不产出分段。

2、手动 cordis.yml 或手动补丁方式只有 Host 面,看不到设置页与实时面板。

3、settings / clear-archived / pause 接口仅限本机访问,这是有意为之的安全边界。

4、插件以当前 dsh 进程权限运行,安装前建议先阅读源码与许可证(MIT)再决定是否启用。

结尾

经过上面的步骤,dsh-think-summary 把原本一滚而过的长思考变成了可实时观察、可事后回顾、可持久保存的记录,且对会话上下文零污染。项目地址:https://github.com/oakcakerolls/dsh-think-summary ;也可在社区目录查看:https://www.skillhub.cn/plugins/oakcakerolls/dsh-think-summary (该目录为独立社区站点,与 DeepSeek、幻方无官方从属关系)。

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

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

Xiaoye