dsh-command-context: View Context Window Occupancy in DSH Sessions

前言

在 DeepSeek Harness(DSH)里跑长会话时,工具输出、历史消息和系统注入会一起挤占模型的上下文窗口。窗口接近上限时,压缩策略会触发,但「到底用了多少、还剩多少、哪一类内容占大头」往往只能靠猜。Claude Code 有 /context 这类命令做可视化;DSH 生态里也需要同样只读、不发起模型调用的观测手段。下面介绍社区插件 dsh-command-context(维护者 Lovenndme,分类为客户端),它在任意 agent 里注册全局斜杠命令 /context,用 Harness 自带的 token 计量回放会话日志,给出占用比例、剩余空间与按类别拆分。

这是什么

dsh-command-context 为 DSH 提供 /context 斜杠命令:在会话中输入即可查看当前上下文窗口已用量、剩余空间,以及 prompt 各组成部分的 token 占比。数字来自 Harness 的 ctx.tokenMeter.measure 等能力,而不是插件自己平行记账;README 写明其思路受 Claude Code /context 启发,但计量口径与 DSH 一致。插件在 npm 包名为 dsh-command-context,当前资料中版本为 0.4.6,许可证 MIT,依赖 DSH 版本 >=0.2.1-rc.5 <0.3.0-0。

核心功能

总览与进度条

执行 /context 后,报告默认以中文展示(/context en 切英文,/context zh 切回)。典型输出包含:当前模型与路由、占用条(用 # / - 而非块字符,避免在 <pre> 里行高错位)、已用 / 总容量 token 与百分比,并标注 实测(measured,来自可复用的 provider usage)或 估算(estimated,回退到字符启发式)。同时显示剩余空间,以及默认压缩策略下的 压缩触发点(可达 compaction 后端时用其策略,否则标注 (default policy))。

按类别拆分

在 headline 占用之下,表格按 surface node 归类(不是对文本切片),每行共享同一分母(实测压力),因此各类合计与标题一致;无法解释的部分归入 未计入差额(Unaccounted)。常见类别包括:系统提示、记忆文件、技能、注入上下文、用户消息、助手回复、工具结果、工具定义、MCP(mcp__* 工具结果及相关 schema 份额)等。README 用表格说明了各类对应的事件类型;例如带 workspace instructions / skills are available 的 <system-reminder> 会从「用户消息」中拆出,避免 AGENTS.md、技能目录把用户输入行虚高。

最大节点:/context top [N]

要回答「具体是哪几次 read / grep / 助手回复在吃上下文」,可用 /context top [N](/context 3 等价于 top 3)。默认 N=5,上限 20。列表按 node token 排序;工具结果会从对应 tool/call 解析工具名,便于一眼看到 oversized 输出。

客户端展示

Host 侧注册命令并生成报告;Client 侧(platform: web)仅对 context 命令占用键位 conversation.chat.commandview,使结果 默认展开 显示。其他命令仍用内置折叠卡片。无 Chat UI 的组合里 Host 仍可用,走通用卡片。

安装与启用

在目标 profile 下安装(命令须与 README 一致):

dsh plugin --profile <profile> add dsh-command-context

也可在插件目录的 bundle 里插入 Host-only 条目(无 client 半部、无需额外 compose 服务):

- insert:
    - id: dsh-command-context
      name: dsh-command-context

安装后命令 全局注册,该 profile 下每个 agent 均可使用 /context。

典型用法

  1. 在会话输入 /context,查看占用条、剩余空间与按类别表格。
  2. 需要定位大户时输入 /context top 10 或 /context 5。
  3. 英文界面需要时输入 /context en;切回中文用 /context zh。

README 中的示例输出(数字为说明用)如下结构,便于对照实际会话:

上下文占用: deepseek-v4.1-flash (myapi)
[##########----------]  497.5k / 1.00M tokens (49.8%)  实测
剩余空间: 502.5k tokens (50.2%)

按类别(合计 497.5k tokens)
  系统提示      2.1k  (0.4%)
  ...

斜杠面板里该命令的描述为中文:查看当前会话的上下文窗口占用,与中文 UI 下内置命令风格一致。

适用场景与注意

适合谁: 在 DSH 里调试长对话、工具链或 MCP 的开发者;需要区分系统提示、技能注入、工具定义与历史消息占比时,此命令只读、不追加 session 事件、不触发模型调用。

计量与局限(来自 README):

  • 报告是 估算视角,不是账单:标题在无可复用 usage 时为启发式;分项与标题可能不同尺度,未计入差额 反映的是差额而非独立类别。标题本身为启发式时,表格可完全加总且无未计入行。
  • 工具定义 行来自 contextBreakdown 投影的 toolsTokens,与上方 per-message 路由计价可能不一致;投影不可用时该行会省略。
  • Host 依赖 ctx.commands.register、ctx.tokenMeter.measure、Session.requestContext 等;缺少这些服务时插件 加载失败,而不是打印错误数字。

安全与信任: 插件以当前 DSH 进程权限运行,会读取会话计量与投影数据。安装前请自行查看 GitHub 仓库 源码与 MIT 许可证;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

经过上面的步骤,你可以在 DSH 会话里用 /context 和 /context top 把上下文窗口占用拆清楚,并在有 Web 客户端时直接展开阅读报告。更多细节与 CHANGELOG 见仓库 README(含 README.zh.md)。

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

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

Xiaoye