前言¶
在 DeepSeek Harness(DSH)里跑长任务时,「思考」区块往往是两套都不舒服的体验:折叠时只有一行摘要不说明白在干什么,展开则是按流式顺序堆出来的整段内心独白,几千字很难扫。OpenAI Codex 侧有模型自己产出的 reasoning-summary 通道;DSH 默认渲染的是原始 chain-of-thought,没有等价通道。要在本地得到「每步一两句进度、完整推理仍一点开就看」的体验,只能在每个推理步落定后额外做一次便宜的摘要调用——这正是社区插件 dsh-think-summary(npm:@drifter-yh/dsh-think-summary,维护者 Drifter-yh)要做的事。下文按安装、配置、行为与边界说明,事实与 GitHub 仓库 README 一致。
这是什么¶
dsh-think-summary 是挂在 DSH Cordis 体系上的社区插件(非 DeepSeek 官方维护)。它在每个 assistant-step 落定后,用你配置的 LLM 路由把该步推理压成一两句白话(README 示例为带「› 思考 · 进度」的短行);点击该行仍可展开,按原先方式看完整 Markdown 推理。简介中的「1–3 bullet points」与 package 描述一致;界面上的呈现以 README 前后对比为准。
分类上在 SkillHub 目录中归于模型推理;当前仓库星标为 0(以目录页为准)。许可证 MIT,package 版本 0.2.0,要求 Harness >=0.2.2-rc.1 <0.2.3-0,已在 0.2.2-rc.1 的 desktop profile 上验证。
核心功能¶
界面上的变化¶
折叠态不再只是无信息量的 excerpt,而会变成类似:
› 思考 · 进度
我读完了插件的两半代码,确认摘要走的是本地端点;接下来改客户端的额度逻辑。
展开后仍是原始推理全文,渲染规则与内置 renderer 对齐。
Codex 式「只显示进度、不反复展开」¶
若希望最新一轮在收到下一条用户消息前保持展开、且每步只出现进度行,可在 profile 的 cordis.patch.yml 里为 ui-chat 设置 collapseTiming: next-input(README 说明)。这与插件摘要配合,更接近「步进式进度条」的阅读流。
运行机制(摘要)¶
客户端在 conversation.chat.node、优先级 -1 上影子替换 assistant-step 的渲染;仅在步 落定 时请求摘要,不在流式中途调用。宿主进程提供 POST /summarize,经 ctx.llm.stream() 用配置里的 provider/model 生成 1–2 句结果;对(截断后的)推理文本做 SHA-1 内容哈希缓存,相同文本不重复计费。任意失败(无路由、超时、截断、空输出)会降级为内置的一行 excerpt,README 明确:插件不会让对话比 stock 更差。
工具调用仍由 Harness 自身渲染;只 shadow assistant-step 节点。
安装与启用¶
安装命令须使用 README 原文(勿用 github:owner/repo 自行拼接):
dsh plugin --profile <your-profile> add @drifter-yh/dsh-think-summary
部分构建可在 Settings → Plugins 里从 registry 添加;否则用上述命令。安装后需重启 Harness 一次:宿主半以 fork 模块加载,不能热替换。
插件以当前 DSH 进程的权限运行;安装前建议自行审阅 源码 与 MIT 许可证。社区目录站 SkillHub 插件页 与 GitHub 无 DeepSeek / 幻方官方从属关系。
配置¶
配置写在 profile 的 cordis.patch.yml,或使用插件配置面板。README 给出完整示例:
- id: think-summary
name: '@drifter-yh/dsh-think-summary'
config:
provider: opencode-go # any registered LLM route
model: deepseek-v4.1-flash # a cheap, fast model is the point
enabled: true # master switch; false = no model calls at all
maxOutputTokens: 2000 # budget for (reasoning + answer) tokens
maxInputChars: 6000 # longer reasoning is clamped head+tail
maxCallsPerSession: 300 # per-session cost ceiling
maxCallsTotal: 600 # per-process cost ceiling
常用项含义(默认值以 README 表格为准):
| Key | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关;false 保留 UI 但不发起模型调用 |
provider / model |
opencode-go / deepseek-v4.1-flash |
摘要用的路由 |
maxInputChars |
6000 |
超长推理头尾截断 |
maxOutputTokens |
2000 |
单次 completion 预算 |
timeoutMs |
25000 |
单次调用超时 |
minChars |
160 |
短于该长度的步不调用 |
maxCallsPerSession / maxCallsTotal |
300 / 600 |
会话 / 进程硬上限 |
cacheFile |
~/.dsh/storages/think-summary/cache.json |
本地持久缓存 |
浏览器应急关闭(不改 profile):在控制台执行 localStorage.setItem('dsh-think-summary.enabled', 'false'),仅对当前页停请求。
成本、延迟与限流¶
每个落定步对应一次廉价调用。README 在 deepseek-v4.1-flash 上给出典型单步约 3–20 s、输入数千 token、输出约三行短文的量级;40 步量级在多数路由上「远不到一个货币单位」,但仍是付费能力,故配置里有 session/process 上限。
超过三小时的历史会话不会回填摘要,避免打开旧对话触发调用风暴。客户端另有10 分钟滑动窗口 60 次自限流;窗口满时行内显示「摘要已暂停」,滑出窗口后自动恢复。宿主侧 budget/disabled 的 skipped 会在十分钟内抑制重复请求,避免滚动重复打端点。
隐私与安全¶
推理文本仅发向你配置的 provider(与对话同源)。摘要缓存在本地 cacheFile 路径。HTTP 端点 /dsh-think-summary/* 仅接受 loopback,请求体上限 512 KB,摘要须 POST,并发模型调用最多 2。README 声明无遥测、无除模型请求外的额外出网。
适用场景与注意¶
适合:长时间 Harness 任务、需要扫读「现在在干什么」又不想丢完整 CoT 的开发者;已具备可注册的便宜快速模型路由(默认 deepseek-v4.1-flash 即为此设计)。
注意:
- 依赖 Harness 对
assistant-step节点契约;大版本变更可能破坏 shadow renderer(有 error boundary 回退纯文本)。 - Prompt 要求中文要点;README 写明暂不支持其他语言 bullet。
- 文中
@path文件提及目前按纯文本显示。 - 部分路由的 reasoning effort 无法关闭,
maxOutputTokens需为 thinking 留空间,默认 2000 即出于此因。
故障排查(节选)¶
| 现象 | 建议检查 |
|---|---|
| 完全没有要点 | 插件是否启用;curl http://127.0.0.1:<port>/dsh-think-summary/status |
| 显示「摘要已暂停」 | 悬停看原因:限流窗口或 budget;可调高 maxCallsPerSession / maxCallsTotal |
| 宿主日志「摘要输出超长」 | 提高 maxOutputTokens 或降低 maxInputChars |
| Harness 升级后摘要停掉 | 带版本与控制台错误到仓库提 issue |
结尾¶
dsh-think-summary 用「每步额外一次本地摘要调用」补上 DSH 没有 reasoning-summary 通道的空档:界面保持 Codex 式的可扫读进度,完整推理仍在单击之内。安装用 dsh plugin --profile <your-profile> add @drifter-yh/dsh-think-summary,配好 cordis.patch.yml 中的 provider/model 与预算项后即可使用。
- 目录页:https://www.skillhub.cn/plugins/Drifter-yh/dsh-think-summary
- 源码与文档:https://github.com/Drifter-yh/dsh-think-summary