dsh-think-flow:在 DSH 右侧栏把思维链读清楚

前言

用 DeepSeek Harness(DSH)跑智能体时,主对话界面通常只呈现最终回答和工具轨迹,模型的链式思考(reasoning)往往藏在事件流里。对排查「为什么绕路、卡在哪一步、某次工具在等什么」来说,缺了这一层可视化,调试成本会明显偏高。

直接把宿主吐出的思考事件逐条渲染也不可行:README 里给出的一组实测数据是,单个 turn 可达 53 步、约 1550 秒、思考量约 7.1 万字、工具调用 68 次;reasoning 每秒可产生数百个事件,逐事件重绘会把面板刷成幻灯片。

下面介绍社区客户端插件 dsh-think-flow(维护者 yfwu2020):在 DSH Web 右侧栏增加「思维链」标签页,把实时思考按 turn → step →(思考原文 + 工具调用) 聚合成可读结构,并区分「正在思考」与「正在等外部工具」。

这是什么

一句话定位: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 为准。

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

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

Xiaoye