🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

yukitakasama/dsh-context-lens

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

把单个 DeepSeek Harness 会话的上下文「解剖」开给你看。

基本兼容但装前注意:npm 同名包「dsh-context-lens」归属 gordonlu/dsh-context-lens,装到的可能不是本插件 · 最近上游提交 2026/9/25 · 已提供中文文档

DSH Web GUI 的单会话上下文剖析:归因、余量规划,以及上下文 × 轨迹时间线——而不是又一本用量账本。

综合分
30.7
GitHub 分
30.7
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add yukitakasama/dsh-context-lens
npm 同名包「dsh-context-lens」归属 gordonlu/dsh-context-lens,装到的可能不是本插件,改用 GitHub 源安装
信任档位:仅索引本站尚未对其实装验证,仅收录元数据
是什么
dsh 原生插件 · tool
装得上吗
静态安装检查有提示项,装前建议看一眼 README
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 1 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

数据截至 2026/9/26(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-context-lens @ 0.3.1
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

npm 同名包「dsh-context-lens」归属 gordonlu/dsh-context-lens,装到的可能不是本插件

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/23 21:25:43

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-context-lens

把单个 DeepSeek Harness 会话的上下文「解剖」开给你看。

GUI 已经给了一个上下文百分比和一个轨迹视图,但它们回答不了会话变贵时你真正
想知道的那个问题:到底是什么在吃窗口,我还剩几轮?

dsh-context-lens 增加一个 上下文透视镜 面板,回答四件事:

1. 满了多少、还剩多少? 占用率、剩余 token,以及按当前增速的可支撑轮数估计。
2. 它是由什么构成的? 系统提示 / 工具 schema / 消息三段的占比条与真实 token 数。
3. 它是怎么长起来的? 上下文 × 轨迹时间线,逐步增长与每次压缩的回收。
4. 这个数字是哪来的? 供应商实报还是启发式估算,直说,并附上已知误差来源。

不是又一个用量账本。 社区已有十多个 token 计数器。本插件的范围严格限定在
单个会话的上下文解剖,且刻意不做计费对账。完整范围边界见
docs/COMPATIBILITY.md。

它长什么样

面板从侧边栏底部的 上下文 动作打开,同时也可以作为右侧栏的可停靠标签页。

- 占用率 —— 环形图 + 已用 / 窗口,附剩余 token 与按近期平均增速估算的轮数。
- 构成 —— 系统提示、工具 schema、消息的堆叠条。
- 余量规划 —— 最近 N 步的每步增速,以及下一轮是否可能超出窗口。
- 缓存经济性 —— 未缓存输入、缓存读、缓存写、输出,以及提示侧的缓存命中率。
- 时间线 —— 采样得到的上下文规模走势,标记出压缩回收点,并附逐点台账。
- 口径 —— 占用率数字来自哪个锚点。

每个数字要么是 harness 已经算好的值,要么是明确标注的估算。面板不编造它没有的精度。

安装

从 npm(已构建产物)
dsh plugin --profile web add dsh-context-lens

从 tarball(已构建产物)
pnpm pack           # 产物名带清单版本号,以它实际打印的名字为准
dsh plugin --profile web add ./dsh-context-lens-.tgz

直接从 GitHub(安装时从源码构建)
dsh plugin --profile web add github:yukitakasama/dsh-context-lens

从 GitHub 直装(源码安装)

git 安装取到的是源码,不是构建产物,因此本包带 prepare 脚本,安装时从源码
构建 lib/。pnpm ≥ 10 在显式放行前拒绝执行 git 依赖的 prepare,第一次安装会报
ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED。pnpm 会打印它要的完整键 —— 请把那一行
原样抄进 profile 的 pnpm-workspace.yaml。它不是单纯的包名,而是带着已解析的
commit,所以「pin」是内建的:

allowBuilds:
dsh-context-lens@git+https://github.com/yukitakasama/dsh-context-lens.git#: true

然后重跑安装。请把这个放行理解为「允许该包在安装时在你的机器上执行代码」。
之所以需要它,只是因为构建是真构建 —— git 里没有提交任何预构建产物。

已在 dsh 0.1.5-rc.1 上端到端验证:放行键存在时,pnpm install 会执行
prepack、构建 lib/,随后 profile 正常解析出 # == dsh-context-lens 层。

想自己 pin 到某个版本:

dsh plugin --profile web add github:yukitakasama/dsh-context-lens#

如果你 fork 了仓库,把账号名换成你自己的。

构建要求

从源码工作时注意:浏览器侧是构建产物,改 src/client/ 不重建就不会生效:

node scripts/build.mjs     # 产出 lib/index.js 与 lib/client.js
node scripts/check.mjs     # manifest 与合规断言
node --test "tests/.spec.mjs"

scripts/build.mjs 零依赖,手写复刻官方 lazy-CJS bundle 格式 —— 因为官方
clientBundle() 预设并未对第三方包发布。

lib/ 被 gitignore,而测试套件读的是构建产物,因此必须先构建再测试:
host.spec.mjs 从 lib/ 导入宿主半,bundle / degradation / externals 三个 spec
读 lib/client.js。在全新 clone 上先跑 node --test 而不先跑
node scripts/build.mjs 是跑不过的:host.spec.mjs 直接加载不到被测模块,
而读 lib/client.js 的几个 spec 会随之一起失败。

配置

所有可调项都是经过校验的 Config 字段,非法值会在加载期抛错而不是被静默忽略:

| 键 | 默认 | 范围 | 含义 |
|---|---|---|---|
| sampleStride | 1 | 1–10000 | 采样间隔多少个日志 revision。 |
| maxSamples | 2000 | 1–50000 | 单会话采样点上限;溢出上报为 truncated。 |
| cacheTtlMs | 15000 | 0–600000 | 同一会话结果缓存时长。 |
| paceWindow | 10 | 1–200 | 估算可支撑轮数时平均的最近步数。 |

- insert:
- id: context-lens
name: dsh-context-lens
config:
sampleStride: 2
paceWindow: 20

工作原理

纯消费者。 插件不新增会话事件、不改 agent-loop、不暴露任何模型可见内容。
它只是把日志里已有的数据再读一遍。

客户端不折叠事件。 界面上每个值都是宿主已经算好的成品,经官方会话投影送达
—— contextPressure、contextBreakdown、tokenUsage、sessionStats。

唯一一处诚实的例外。 时间线需要一条序列,而 harness 不提供现成的序列。因此
宿主半在「步骤边界」与「压缩边界」观察 ctx.tokenMeter.measure(),并通过一个只读
路由送出。两个后果都明说、不藏:

- 时间线只覆盖插件加载之后观察到的事件。payload 的 coverage 字段如实标注,
界面也会说明。
- measure() 是 O(surface),所以采样只在边界事件驱动,绝不按 token 增量,且有上限。

数据路径

宿主投影 ─┐
├─→ 客户端视图模型(纯函数、可单测)─→ 面板
宿主计量 ─┘

兼容性

已在 dsh 0.1.5-rc.1 与 0.1.5-rc.2 上验证 —— 同一份构建产物两端都能装载,
两版的基线模块表、投影键与槽位均未变。宿主半不声明任何必需服务,这是有意
的设计:依赖 webServer 会让插件在 TUI profile 里永远停在 PENDING,进而拖死整个
profile。所有可选能力(sessions、sidebarRightTabs、settings、tokenMeter、
webServer)都用 ctx.get 探测,缺一个只关掉一个座位。

完整矩阵、降级分层与可复跑验证命令见 docs/COMPATIBILITY.md。

开发

node scripts/build.mjs                # 先跑这个:构建两个半体到 lib/
node scripts/check.mjs                # manifest / 合规断言
node --test "tests/.spec.mjs"        # 测试

两条命令各自打印自己的总数,因此上面不手写份数 —— 写进散文的数字就会漂移。
这些数字由 tests/docs.spec.mjs 对着文档断言。

scripts/check.mjs 强制那些类型检查管不到的规则:禁止 default 导出(会静默丢掉
inject)、禁止字面色值、禁止宿主半出现裸运行时 import、宿主半不得声明服务。

许可

MIT —— 见 LICENSE。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(yukitakasama)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群