dsh-context-explorer:在 Web UI 里看清 Session 发给模型的上下文

前言

在 DeepSeek Harness(DSH)里跑 Session 时,模型实际收到的是一整段渲染后的 prompt:系统提示、工具 schema、历史消息等,都占同一块上下文窗口。日志里往往只有对话摘要,看不到各块各占多少 token、顺序如何、截断发生在哪一段。调试上下文膨胀、工具定义过长或 compaction 效果时,缺少直观视图会多猜很多步。

dsh-context-explorer 是社区维护的客户端插件,在 Harness Web UI 右侧边栏增加「上下文 / Context」标签页,用 token 方格网格和分区列表展示 Session 提交给模型的内容构成。下面介绍它的定位、面板能力、安装方式,以及使用时应接受的限制。

这是什么

dsh-context-explorer(npm 包名 dsh-context-explorer,当前版本 0.1.1)由 LionNatsu 维护,MIT 许可,与 DeepSeek 无隶属或背书关系。插件分 Host 与浏览器两半:index.js 把 Session 折叠成视图,client.js 渲染标签页、网格与列表。

一句话定位:在 DSH Web UI 中可视化「最后一次请求视角下」的上下文窗口——系统 prompt、工具块、每条消息各占多少、整窗如何被填满。

核心功能

安装并加载 profile 后,右侧面板会出现 上下文 / Context Explorer 标签(多语言名见 locale/*.json)。

标题行

显示 已用 {used} / {total}:used 为提供商对上一次请求报告的 prompt 大小;在尚未有报告前,用面板自身统计的总数。total 为上下文窗口长度;Host 尚未提供窗口大小时显示 —。悬停可看各数字含义。

组成芯片(Composition chips)

按内容类型列出当前视图中存在的种类,按 token 从多到少排序。每项含 8×8 色块、类型名、token 数及占面板总量的比例;同时作为网格图例。点击某芯片可只列出该类型分区,再点一次取消筛选。

Token 方格网格

整张上下文窗口(含未使用部分)被切成等份,每格代表窗口中的一段。已占用格按该段内占比最大的内容类型着色;若第二类型在同一格内至少占 35%,则对角混色。超出实际上下文长度的区域以「空闲」深色平铺。每格 7 设备像素、间隔 1 像素,不同缩放下一格物理大小一致。悬停显示类型名;点击打开该格主要归属的分区详情。

分区列表

每一行对应模型看到顺序中的一个 region:色块、一行摘要、必要时 已截断 / clipped 标记,以及 token 数与占比。提供商直接统计的数字原样显示;插件用 Harness 同款启发式估算的数字带 ≈。摘要用于在未展开前说明「这段是什么」——例如仅含工具调用的轮次会按调用名概括,JSON 结果按 leading 字段,其余取首行 prose。点击行展开的是模型实际收到的那一段 fragment(含 role 标记等),不是摘要;截断说明在展开正文中由 detail.clippedNote 承担。可在「模型顺序」与「按大小排序」之间切换。

无可用视图或视图中无 region 时,面板会明确提示,而不是空白壳。折叠失败时在标题上方打印错误;渲染错误会替换整个标签内容。

数字从哪来

标题行的已用量优先用提供商对最后一次请求的计数。各 region 在提供商有分项计数时用该数,否则用与 DSH 上下文计量相同的固定启发式(约每 4 个 UTF-16 码元 1 token,另加 content block 与 message 的固定开销),并标 ≈。估算反映构成而非账单精度,随文本语言会有漂移。

安装与启用

在目标 profile 下执行(dsh plugin 会把参数转给该 profile 的 pnpm,--profile 指定 profile 名):

dsh plugin --profile <name> add dsh-context-explorer

也可在 Web UI 的 Plugins 页:Add plugin,输入包名、GitHub 地址或本地目录路径完成同样安装。

包声明 dsh.bundle.patch → ./cordis.patch.yml,profile 下次加载时会应用 Host 侧一行配置。运行时代码为仓库内 JavaScript,无构建步骤、无 install script,因此通过 github: 安装时不需要 build 权限。要求 Node ^22.19.0 或 >=24.0.0。README 写明在 @deepseek-ai/dsh 0.2.0-rc.2 上验证;插件未声明版本门控,若上游扩展点变更,可能表现为面板缺失或为空而非安装拒绝。

Host 半侧变更通常需重启 DSH 进程;浏览器半侧由客户端模块系统加载,会自行热更新。修改 Host 侧 index.js、serve.js、estimate.js 后,默认 HMR 不监视源码目录时,需重启、在 profile patch 中为 hmr 配置 root,或换路径重装才能生效。

典型用法

1、按上文命令把插件装进常用 profile,启动或重载 Harness,打开 Web UI。

2、选中要观察的 Session,在右侧边栏打开 上下文 / Context 标签。

3、发起或等待一次模型调用,使面板能获得提供商报告的 prompt 大小;查看标题行 已用 / 总量 与网格中各色块占比。

4、用组成芯片筛选某一类内容(如工具 envelope、系统 prompt),在列表中点开行,核对展开 fragment 是否与预期一致;注意带 已截断 的行只保留 fragment 开头(单条 message fragment 上限 4000 UTF-16 码元)。

5、在列表排序方式间切换,快速找出占用最大的 region。

以上流程均来自 README 对面板交互的描述,无需额外配置文件。

适用场景与注意

适合谁: 在 DSH 里开发或调试 Agent、需要核对系统 prompt 与工具 schema 是否挤占过多上下文、或要理解 compaction / 多轮消息后窗口如何被填满的开发者。

权限与安全: 插件以当前 DSH 进程权限运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,并知悉 THIRD_PARTY_NOTICES.md 中自 DeepSeek 项目复用的 estimate.js、serve.js。

已知限制(使用前应接受):

  • 展示的正文是对官方 serving 实现的重建(serve.js 转写),不是从 API 抓取的原始请求体;Session 日志不存 request body。
  • 面板按 region 分片展示,不是一条连续 prompt;系统 prompt(最早一次 hoist)、## Tools 块等各成一片;长 message 会被截断并标记 clipped。
  • 无自动化浏览器视觉测试,布局依赖人工查看。

社区插件目录见 SkillHub 条目;该站点为社区生态索引,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-context-explorer 把「Session 发给模型的上下文」从黑盒变成可读的网格与分区列表,便于在 Web UI 内做 token 构成分析与截断排查。需要安装命令、限制说明与架构细节时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/LionNatsu/dsh-context-explorer
  • GitHub:https://github.com/LionNatsu/dsh-context-explorer
羽毛球分组比赛记分
小程序二维码

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

小夜