dsh-verbose:按会话切换 Normal/Verbose,并定义 Verbose 展开什么

前言

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
  • 分类:客户端(web profile 注入)
  • 许可证:MIT(见仓库 package.json)
  • 当前版本:0.8.2(以仓库 package.json 为准)

插件把「读这一通对话要多细」和「Verbose 具体展开什么」拆成两个作用域:前者按 session id 记在 localStorage,后者全局一份,避免每个 chat 各存一套类别导致配置漂移,也避免全局 Normal/Verbose 一次翻掉所有会话。

核心功能

会话头三点菜单

菜单替换内置 Session log 按钮的位置(同席位、同 id、较低优先级),标题栏仍只有一个三点控件。主要条目包括:

  1. Session log — 下载当前 session 的 log;若宿主未挂载对应 controller,则回退到导出 URL。
  2. Transcript view → Normal / Verbose — 只作用于当前打开的 chat,立即生效,并按 session 写入 localStorage。
  3. Verbose settings… — 全局对话框:Thinking / Tool calls / Terminal output 三类开关;Turn footer 下的 Turn metrics、Raw turn JSON;After a turn 下的折叠策略。改类别会立刻重算当前 chat;footer 开关全局生效,下一次渲染起应用。
  4. 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 内抑制下一轮等规则,用于避免展开/折叠与滚动互相拉扯。

在 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.json engines)。
  • 依赖:@deepseek-ai/dsh-typert-protocol ^0.2.1-rc.3;README 写明在 dsh 0.2.1-rc.3 上测过 web profile。

安装与启用

需要已可用的 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 行未写入。

典型用法

  1. 用 dsh --profile web 打开 web 客户端,进入需要调试的一通对话。
  2. 打开会话头三点菜单 → Transcript view → Verbose,仅当前 session 切到 Verbose;其它 chat 保持各自记忆的模式。
  3. 打开 Verbose settings…:按需打开 Thinking、Tool calls、Terminal output;若 transcript 很长,保持 Only what is on screen 为开,随阅读位置展开步骤。
  4. 在 Turn footer 中打开 Turn metrics 或 Raw turn JSON,便于对比每轮耗时、节点数、工具次数与 token 体量。
  5. 需要离线留档时,用 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye