前言¶
DeepSeek Harness(DSH)的 transcript 只有一个全局展示档位(transcriptView:compact / standard / detailed / verbose),没有「这一通对话用哪种阅读模式」的粒度。实际开发里,有的会话只想看结论,有的会话需要盯着 reasoning、工具调用和终端输出——这两类需求混在一个全局开关里并不合适。
dsh-verbose 是社区维护的 web 客户端插件,在会话标题栏的三点菜单里补上 dsh 原生缺少的形状:下载 session log、每个 chat 独立在 Normal 与 Verbose 之间切换,以及全局定义 Verbose 会展开哪些类别;另附带每轮底部的 metrics footer。数据只落在浏览器 localStorage,无后端、无遥测。
这是什么¶
- 名称:dsh-verbose(npm 包名同)
- 维护者:adithyanraj03
- 分类:客户端(
webprofile 注入) - 许可证:MIT(见仓库
package.json) - 当前版本:0.8.2(以仓库
package.json为准)
插件把「读这一通对话要多细」和「Verbose 具体展开什么」拆成两个作用域:前者按 session id 记在 localStorage,后者全局一份,避免每个 chat 各存一套类别导致配置漂移,也避免全局 Normal/Verbose 一次翻掉所有会话。
核心功能¶
会话头三点菜单¶
菜单替换内置 Session log 按钮的位置(同席位、同 id、较低优先级),标题栏仍只有一个三点控件。主要条目包括:
- Session log — 下载当前 session 的 log;若宿主未挂载对应 controller,则回退到导出 URL。
- Transcript view → Normal / Verbose — 只作用于当前打开的 chat,立即生效,并按 session 写入
localStorage。 - Verbose settings… — 全局对话框:Thinking / Tool calls / Terminal output 三类开关;Turn footer 下的 Turn metrics、Raw turn JSON;After a turn 下的折叠策略。改类别会立刻重算当前 chat;footer 开关全局生效,下一次渲染起应用。
- Compact settings… — 仅当挂载了
context-governor时出现(见 README 兼容性说明)。
Normal 下 transcript 保持 dsh 默认渲染。Verbose 在无法改 React 树的前提下,通过 dsh 已有的 disclosure 行([data-expandable][aria-expanded])按类别 programmatic 展开,并在流式回答继续追加行时重复执行。
| 类别 | 对应行 | 分类方式 |
|---|---|---|
| Thinking | reasoning 块 | closest('[data-variant="think"]') |
| Terminal | shell 样本 | closest('[data-sample="bash"]') |
| Tool calls | 其余 expandable | 默认 |
| Step groups | turn 内嵌套的「Ran commands」 | [data-process-activity] |
Thinking 优先判定:嵌在 reasoning 块里的 tool 行仍算 Thinking。
Verbose 展开范围(Expansion scope)¶
对话框中的 Only what is on screen(默认开启)控制 Verbose 的工作量:
- 开:步骤行进入视口才展开,滚出视口再折叠,长 transcript 不会堆满展开的步骤;滚回可见区域会再展开。
- 关:与旧版行为一致,启用类别一次性全部展开。
README 说明了双阈值(120px 内才开、260px 外才关)、滚动停止 600ms 后再折叠、以及 programmatic click 后 320ms 内抑制下一轮等规则,用于避免展开/折叠与滚动互相拉扯。
每轮底部 Turn footer¶
在 Normal 与 Verbose 下均可显示(由设置开关):
- Turn metrics — 例如
⏱ 12.3s · 47 nodes · 9 tools · 84.2k tokens。 - Raw turn JSON — 折叠展示,带 Copy。
实现挂在插件自己的 conversation.chat.turnTail 节点上,因 dsh 渲染器未提供对应开关。
运行方式与数据¶
- Runtime:offline · 100% local(README badge 表述)。
- 存储:两个
localStorage键 — 每 chat 的 Normal/Verbose 开关,以及全局类别集合。 - Node:>= 22(
package.jsonengines)。 - 依赖:
@deepseek-ai/dsh-typert-protocol^0.2.1-rc.3;README 写明在 dsh 0.2.1-rc.3 上测过webprofile。
安装与启用¶
需要已可用的 dsh,且使用 web profile。官方 README 安装方式如下:
dsh plugin --profile web add dsh-verbose
dsh --profile web
也可从 GitHub 或本地目录安装:
dsh plugin --profile web add github:adithyanraj03/dsh-verbose
dsh plugin --profile web add /path/to/dsh-verbose
README 强调:bundle 行与 governor bridge 在宿主侧,安装后需重启宿主;仅浏览器侧可 reload。成功后,会话头三点菜单应出现 Transcript view 与 Verbose settings…。
在 PowerShell 下可确认 bundle 是否写入(README 示例):
dsh --profile web --dump-config | Select-String "id: verbose"
应看到一行;没有则表示 bundle 行未写入。
典型用法¶
- 用
dsh --profile web打开 web 客户端,进入需要调试的一通对话。 - 打开会话头三点菜单 → Transcript view → Verbose,仅当前 session 切到 Verbose;其它 chat 保持各自记忆的模式。
- 打开 Verbose settings…:按需打开 Thinking、Tool calls、Terminal output;若 transcript 很长,保持 Only what is on screen 为开,随阅读位置展开步骤。
- 在 Turn footer 中打开 Turn metrics 或 Raw turn JSON,便于对比每轮耗时、节点数、工具次数与 token 体量。
- 需要离线留档时,用 Session log 下载当前 session log。
适用场景与注意¶
适合谁:经常在 DSH web 里读 agent 过程、需要在「只看结果」和「展开 reasoning / 工具 / 终端」之间按会话切换的开发者;希望在不改 dsh 核心的前提下,用语义 DOM 钩子驱动 disclosure 的场景。
注意:
- 插件以当前 dsh 进程的权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证。
- 社区目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系,属于 DSH「一切皆插件」生态中的第三方条目。
- Verbose 依赖 dsh 渲染出的
data-*属性;dsh 大版本若改动 transcript DOM,插件可能需要跟随更新。 - 与
context-governor共存时才会出现 Compact settings…;未挂载则没有该项。
结尾¶
dsh-verbose 把「每通对话的阅读模式」和「Verbose 展开哪些过程细节」拆开存,并通过会话头菜单、可选的视口内展开策略和 turn footer,补全 dsh web transcript 在 per-chat 阅读体验上的缺口,且全部留在浏览器本地。
- 目录页:https://www.skillhub.cn/plugins/adithyanraj03/dsh-verbose
- 仓库:https://github.com/adithyanraj03/dsh-verbose