前言¶
用 DeepSeek Harness(DSH)跑智能体时,主对话界面通常只呈现最终回答和工具轨迹,模型的链式思考(reasoning)往往藏在事件流里。对排查「为什么绕路、卡在哪一步、某次工具在等什么」来说,缺了这一层可视化,调试成本会明显偏高。
直接把宿主吐出的思考事件逐条渲染也不可行:README 里给出的一组实测数据是,单个 turn 可达 53 步、约 1550 秒、思考量约 7.1 万字、工具调用 68 次;reasoning 每秒可产生数百个事件,逐事件重绘会把面板刷成幻灯片。
下面介绍社区客户端插件 dsh-think-flow(维护者 yfwu2020):在 DSH Web 右侧栏增加「思维链」标签页,把实时思考按 turn → step →(思考原文 + 工具调用) 聚合成可读结构,并区分「正在思考」与「正在等外部工具」。
这是什么¶
- 包名:
@yfwu2020/dsh-think-flow(当前发布版本 0.3.2,MIT 许可证) - 分类:客户端(Cordis patch + Web 侧 UI)
- 目录页:skillhub.cn/plugins/yfwu2020/dsh-think-flow
- 源码:github.com/yfwu2020/dsh-think-flow
一句话定位:DSH 思维链可视化——把模型的实时思考按轮次、步骤、思考原文与工具调用折叠展示,并在右侧栏提供目录、摘要与可选的中文机翻。
核心功能¶
按 step 聚合,而不是逐事件刷屏¶
宿主侧按 step 折叠,并通过 sseThrottleMs(默认 120ms) 合并推送,避免 reasoning 高频事件把 UI 拖垮。配置说明里明确建议不要把 sseThrottleMs 调到 0。
分层折叠与轮次窗口¶
长 turn(例如 53 步)默认不会全部展开:同类活动合并成阶段块;默认只展开最新一轮,且该轮只展开当前阶段;更早轮次收成一行,需要时再点开。生成过程中「实时看过」的那一轮不会自动收起,避免读到一半被顶掉位置。
正文侧默认常驻最近 20 轮(maxTurnsPerSession);更早轮次通过全轮目录按需折回,目录骨架最多记 2000 轮(maxIndexTurns),不必把上百轮正文一次性塞进内存。
显式标注「在等工具」¶
两步之间可能出现长时间零输出(README 举例:联网检索时约 47 秒)。面板会用例如 web_search 执行 · 已等 23s 这类高亮块标出等待外部接口,与界面卡死区分开。
轮次小结与步骤详情¶
某轮结束后可看到步数、思考 Token、工具次数,以及思考时间大致落在读代码、跑命令、改文件、外部检索、问用户等阶段的分布。
展开某一步时,顺序一般为:模型标题 → 由工具参数派生的次级标题 → 工具详情 → 按需取回的思考原文(及回答正文)。工具失败按宿主判定展示(isError + error.code),错误原因跟在对应工具行下方。
与主会话轨迹联动¶
在思维链面板里点击步骤行前的 #N,当主会话在「轨迹」页时,可跳转到对应助手行并选中该步(宿主身份里带 (轮, 步))。
中文思考(机翻,可选)¶
思考原文多为英文时,头部「中文」按钮可在 关 → 开 → 实时 → 关 之间切换:实时默认边流边翻;「开」仅在展开某一步时翻译该步;「关」不发起翻译请求。翻译走官方 translator 服务(Bing / Google 匿名端点),不占用模型调用;需要宿主安装 @deepseek-ai/dsh-experimental-translator(装 @deepseek-ai/dsh-experimental-cot-translation-bundle 会带上)。段落会发给第三方端点,不想外发应保持在「关」。
安装与启用¶
DSH 运行时要求 >= 0.1.7-rc(见 package.json 的 peerDependencies)。安装后需重启 dsh web 并对浏览器硬刷新(Cmd/Ctrl+Shift+R),之后 client 侧改动可由 client-hmr 热替换。
推荐从 npm 安装:
dsh plugin --profile web add @yfwu2020/dsh-think-flow
也可从 GitHub Release 的 tgz(与 npm 同产物)或本地开发目录安装:
dsh plugin --profile web add /path/to/yfwu2020-dsh-think-flow-0.3.2.tgz
dsh plugin --profile web add link:/path/to/dsh-think-flow
装完后典型落点包括:~/.dsh/profiles/web/package.json 中的依赖项、node_modules 下的包,以及 profile 的 dsh.profile.bundles 里按包名引用。
打开方式:会话头部的折线图标,或右侧栏标签条上的「思维链」。
典型用法¶
看结构还是看原文¶
面板头部可在 「看结构 | 看原文」 间切换;实时场景默认「看原文」,切到「看结构」会展开本轮阶段视图。
查历史轮次¶
双击第二行标题进入全轮目录(支持本地搜索);或用轮号两侧的 ‹ › 在相邻轮之间切换。
看某步在等什么¶
悬停该步骤行,可查看完整工具信息、机读码与失败原因。
调整常驻轮次与内存策略¶
在 profile 的 cordis.patch.yml 里找到 id: think-flow 的条目,覆盖其 config(不要用 insert 重复插入):
- id: think-flow
config:
maxTurnsPerSession: 20
常用键含义(完整表见 README):
| 键 | 默认 | 含义 |
|---|---|---|
maxTurnsPerSession |
20 | 每个会话正文窗口常驻多少轮(0 为不限;目录仍可看更多轮骨架) |
maxIndexTurns |
2000 | 全轮目录最多记录多少轮骨架 |
coldTtlMs / maxColdChars |
7200000 / 4000000 | 按需折回的冷轮正文:空闲 TTL 与字符硬上限,两条策略独立、先到先触发 |
sseThrottleMs |
120 | SSE 合并推送最小间隔 |
标题缓存默认在 ~/.dsh/think-flow/titles.json,译文缓存在 ~/.dsh/think-flow/translations.json;卸载插件不会删除这些文件,重装可复用。
适用场景与注意¶
适合谁
- 在 DSH Web 里调试复杂智能体,需要对照 reasoning 与工具调用顺序的开发者。
- 长会话、多轮、多工具任务,需要目录回溯和「等工具」状态可见的场景。
- 希望可选地把英文 CoT 段落机翻成中文、且接受第三方翻译端点的团队。
安装前建议
- 插件与 DSH 进程同权限运行,会订阅会话轨迹与 SSE;安装前应阅读 仓库源码与 LICENSE,确认符合你的安全与合规要求。
- npm 上部分
@deepseek-ai/*的latest可能偏旧;从源码构建时按各包package.json钉死的版本安装,勿盲目latest。 - 社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件为社区维护的客户端扩展。
结尾¶
dsh-think-flow 解决的是「思维链有、但主界面读不动」的问题:用 step 聚合、分层折叠、等工具显式化和全轮目录,把 turn 级 reasoning 变成右侧栏里可操作的视图。需要安装命令、配置项与界面行为细节时,以 README 为准。