dsh-dump-manager:在 DSH 里查看与管理 LLM 请求转储

前言

在 DSH 上跑智能体时,每一轮请求往往带着 system、工具定义、注入上下文和完整对话历史。排查「模型为什么这样答」、对比压缩前后差异、或把某段对话导出给同事审阅,若只能翻日志或手抄 JSON,成本很高。dsh-llm-dump 负责把请求按会话落盘;dsh-dump-manager 则在桌面客户端侧提供侧栏入口、会话列表、按条目浏览与两种导出,并可在对话界面挂载「LLM Dump」页签,与轨迹、统计并列查看同一条条目流。

下面按定位、能力、安装与典型操作流程说明该插件。事实以仓库 README 与 package.json 为准;版本 0.1.1,许可证 MIT,维护者 wannaknowhys。

这是什么

dsh-dump-manager 是 DeepSeek Harness(DSH)的客户端插件:面向 dsh-llm-dump 已捕获的转储数据,提供侧栏面板、条目查看器、Markdown/JSON 导出,以及「导出本轮」等 UI。它不替代采集插件,而是读 %DSH_HOME%\llm-dumps(默认)下的会话目录,并把用户自选条目或「最新一轮」写到同级 exports\ 目录。

插件在 SkillHub 目录 归类为客户端;源码与说明见 GitHub。

界面层级与分工

README 用五个层级描述入口,便于对照实际 UI:

层级 作用
panel(侧栏按钮) 仅会话级:查看、打开文件夹、删除
viewer(查看) 单会话内按 entry 选择并导出
tab(LLM Dump) 同一条流挂载在「轨迹 / 统计」旁
header(导出本轮 ▾) 按过滤器导出最新一轮
settings(Plugins 页) 与上述选项共用存储

Host 侧提供路由与导出逻辑,浏览器侧负责侧栏卡片、面板、页签与设置页。README 注明:编辑 Host 模块后不会热重载,需切换 bundle 让 Host 重新导入模块。

核心功能

侧栏面板(Panel)

侧栏底部「Settings」旁显示 LLM Dumps \<size> · Exports \<size>;进入面板后表头重复容量并给出会话数、请求数。

表格列包括:session/workspace、requests、size、last write、actions。行操作:

  1. view:进入该会话的条目查看器。
  2. folder:在资源管理器中打开该会话转储目录。
  3. delete:两步确认删除。

会话转储默认在 <outputDir>(默认 %DSH_HOME%\llm-dumps,一会话一目录);导出文件在旁的 exports\。

条目查看器(Viewer)

查看器不以「第几次请求」为维度,而以 entries 为单元。类型含义如下:

type 含义
system 组装后的 system prompt
tools 工具定义块
user / assistant 对话消息(assistant 中含 tool call)
tool 工具结果消息

最后一行可能是 tail entry:来自 responses.jsonl 的最新回复,尚未作为历史重发;带「最新回复」标记(流被截断时为「最新·中断」)。

交互要点(摘自 README):

  • 连续列表:复选框、类型徽标、单行摘要、展开开关。
  • 缩略:可读文本(工具调用形如 → name(args));详细:完整 JSON。
  • 每次加载 100 条,滚到底分页;页脚显示「已渲染/总数」;⤓ 到底部 一次渲染本段剩余条目并跳至末尾。
  • 类型行可全选某类或点击名称隐藏该类(默认不隐藏);展开时才拉取正文。
  • 全选本段;Shift+点击 在可见顺序上选区间(隐藏类型不会被选入)。
  • 当某次请求改写历史(压缩、重建)时,条目流会分段,每段一个页签;仅一段时不显示页签栏。

对话页签(LLM Dump)

与 viewer 展示同一条 entry 流,挂在会话 UI 里,便于边跑边对照轨迹与统计。

导出种类

两种导出均写入 exports 目录(<outputDir>\..\exports),不覆盖已有文件(自动 -1、-2… 后缀)。

种类 内容 文件
transcript 仅选中条目,Markdown;多段用 ## 段 N · seq a–b 分隔;tail entry 会注明来自 response 流 .md
payload 每个涉及段落的完整请求快照(lastSeq):展开 messages、tools、采样等,每段一行紧凑 JSON .json

README 举例:全选某 132 次请求的会话时,transcript 约 1.2 MB,而「每请求一快照」模型约 162 MB——适合需要可读摘要以外的精简分享。

导出本轮(Newest-turn export)

会话标题旁的 导出本轮 ▾ 从最后一次对话请求的快照导出最新一轮(不是从 entry 流拼):

  • 一轮从最后一条 source.kind === 'user' 的真实用户消息起算;time-context、runtime-context、agent-instructions、skill-catalog、compact-checkpoint 等注入类 user 消息不能作为一轮起点。
  • 对该请求的回复读自 responses.jsonl(尚不在任何 snapshot 中)。
  • 无 assistant 且无 user 的「一次性」调用会跳过。

三个持久化过滤器写在 %DSH_HOME%\llm-dumps\ui.json:

选项 默认 效果
include user input 开 保留 kind === 'user' 消息
include tools 开 保留 tool call 与 tool 结果
include injected context 关 保留其余 user 角色注入消息

用户 prompt 已被压缩掉时,一轮可能跨多个 segment;仅当跨段边界符合 compaction 语义时才会合并导出,否则返回 409(如 NO_DUMP、NO_USER、FORK),UI 会弹窗并建议用手动分段导出。输出文件:<title>_latest_<stamp>.md 或 .json,落在 exports 目录。

设置页

Settings → Plugins → LLM Dump Settings 含两组:

  1. Newest-turn export:与标题栏菜单相同的三个过滤器与格式,后端为 ui.json。
  2. Capture (dsh-llm-dump):代管 config.json 中的输出目录(改目录需两步确认,已有转储不会自动搬迁);未知键在重写时保留,文件原子替换。提供目录浏览(含 Windows 盘符、/、Home、UNC 等)。

数据格式与兼容

读取 dsh-llm-dump 数据格式 version 1:每会话 append-only 的 requests.jsonl、objects.jsonl(内容去重)、responses.jsonl(最新回复)。未知字段忽略。

启动及每次 overview 时,Host 解析 dsh-llm-dump/package.json 的 dsh.formatVersion,与当前构建支持的 1 比较;写端更新时仅在 Host 日志与面板顶行警告一次,不阻断读取。环境变量 DSH_LLM_DUMP_PACKAGE 可指向另一份 package 做并排检查。

Host API 仅 loopback,例如 GET /api/dsh-dumps/overview、/stream、/entry,以及 prefs、capture 的 GET/POST(详见 README 表格)。

安装与启用

运行环境:Node >= 20。在已配置 DSH desktop profile 的机器上执行:

# 从 npm 安装
dsh plugin --profile desktop add dsh-dump-manager

# 从本地 checkout 安装(路径按你本机为准)
dsh plugin --profile desktop add github:wannaknowhys/dsh-dump-manager

# 卸载
dsh plugin --profile desktop remove dsh-dump-manager

插件管理器也接受等价写法:install_bundle target = dsh-dump-manager 或 checkout 目录。

安装前建议自行查看 源码仓库 与 MIT 许可证。DSH 插件在当前 dsh 进程权限下运行,与官方应用商店无从属关系;社区目录由 SkillHub 等站点独立维护。

典型用法

以下流程在 README 中有对应行为描述,可按顺序复现。

1. 确保已有转储

先安装并启用 dsh-llm-dump,让会话写入默认或自定义的 outputDir。dsh-dump-manager 只负责读取与导出。

2. 从侧栏进入面板

打开侧栏底部 LLM Dumps 入口,查看各 session 的请求数与体积;对目标会话点 view。

3. 在查看器里筛选并导出 transcript

在类型行隐藏不需要的 tools 或注入类条目;勾选若干 entry,或使用 全选本段 / Shift 区间选择。执行 transcript 导出,到 exports\ 取 Markdown 文件。

4. 需要完整请求快照时导出 payload

对同一会话选中覆盖某段的条目,导出 payload,每段一个 .json 行文件,便于与上游 API 形态对照。

5. 快速带走「当前最后一轮」

在 viewer 或 LLM Dump 页签的标题旁打开 导出本轮 ▾,在 Settings 中调好三个过滤器后导出;若遇 409,按弹窗提示改用 viewer 手动分段导出。

6. 改采集目录

在 LLM Dump Settings → Capture 中修改输出目录并完成确认步骤,避免误以为旧目录数据会自动迁移。

适用场景与注意

适合:已在用 dsh-llm-dump 的 DSH 桌面用户,需要会话级总览、按 entry 精读、压缩分段对照,以及比「每请求一文件」更轻的 Markdown 分享。

注意:

  • 必须与 dsh-llm-dump 配合;单独安装 manager 不会产生转储。
  • 修改 Host 代码后需 toggle bundle 才能生效。
  • 写端格式版本高于 reader 支持范围时仅警告,但若 llm-dump 引入不兼容语义,仍以 llm-dump 文档为准。
  • UI 文案来自 lib/strings.js(中英);浏览器端使用同步后的内联副本。

结尾

dsh-dump-manager 把 LLM 转储从「目录里一堆 jsonl」变成侧栏可管、条目可读、导出可控的工作流:面板管会话,viewer 与 LLM Dump 页签看同一条流,transcript/payload 与「导出本轮」覆盖日常调试与交接需求。

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

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

小夜