gordonlu/dsh-context-lens ↗★ 1
dsh-context-lens
Request Context Profiler for DeepSeek Harness — see what changed between model requests, and how cache reuse changed with it.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:gordonlu/dsh-context-lens说明文档
阅读完整 README ↗
dsh-context-lens
DeepSeek Harness 请求上下文分析器 — 看清每次模型请求之间发生了什么变化,以及缓存复用如何随之改变。
这是什么
dsh-context-lens 是 DeepSeek Harness 插件(服务端单元 + 客户端视图),持续回答一个问题:"这次发给模型的内容是什么,与上一次请求相比变了什么?" 它是纯粹的观察者——只读取会话日志,不写入任何事件,也不触碰任何模型调用。
对每个真实 LLM 请求记录一张紧凑卡片:
- 请求身份 — turn:step、服务商、模型、上下文窗口、状态(完成 / 失败 / 中止)。
- 已提交的请求上下文 — 系统提示、工具集(每个工具的 schema 哈希 + 估算 token)、请求配置、工具声明顺序的规范化指纹。只比较真正提交给模型请求的状态;harness 的可变内存状态从不被观察。
- 缓存复用读数 — 严格由服务商互斥的用量桶计算(未缓存输入 + 缓存读取 + 缓存写入 = 计费输入)。缺失字段保持缺失(
unavailable),绝不为零。 - 与上次请求的差异 — 模型、服务商、配置、系统提示、工具集(+新增/−移除/~修改)、工具顺序、估算表面增量、缓存复用百分点边界。
- 回落警报 — 复用率跨过阈值回落时,按固定优先级列出同时发生的变化(仅相关,不构成因果),并附明确免责声明。
视图(conversation.view 插槽,中/英双语)包含概览条、最近请求列表(最新在最后,最多保留 100 条)以及带回落横幅的单请求检查器。
准确度边界
左侧是真正可观测的;右侧从不声称。
| 可以确定 | 无法确定(也绝不声称) |
|---|---|
| 提交给请求的系统提示、工具集、工具 schema、声明顺序、请求配置 | 服务商内部缓存键的构造方式 |
| 每个请求的模型与服务商 | 前缀缓存断点的确切 token(KV 因果性) |
| 服务商上报的用量桶(未缓存输入 / 缓存读取 / 缓存写入 / 输出 / 推理) | 是哪一项变化导致回落——只有相关性 |
| 复用率及其相邻请求间的百分点差 | 离开 100 条窗口的会话/请求的缓存状态 |
| 启发式表面估算(字符/4 + 每块 + 每角色开销) | 有关 harness 内存状态的任何内容 |
架构
服务端 — 一个纯的、可重放的投影单元(contextLens)折叠会话日志:request/header 事件(epoch 式记录,仅在变化时提交)定义每个 step/start 时刻生效的快照;步骤内到达的 header 事件替换它(那才是服务商实际看到的 header)。请求在 turn/end 定稿(崩溃遗留的孤儿步骤在下一次 step/start 时以 failed 关闭)。重试不会产生新记录。无关事件原样返回同一状态引用——即注册表的零开销 Object.is 门。
重放一致性是经过测试的不变量:增量折叠(在线)与从 init 重放同一日志产生完全相同的状态与投影。
客户端 — 在 conversation.view 插槽注册 context-lens 条目(order 30),通过框架的 useProjection('contextLens') 席位读取投影,并自带中英双语 locale 命名空间。选中状态为组件内状态。无重依赖 UI;CSS Modules 由 lightningcss 编译并以幂等的 `` 标签注入。
零开销 — 不产生新会话事件、不注入模型工具、不修改提示词、不模拟 KV 缓存。一个 no-op 伴生插件(context-lens-invariant)仅用于在 harness 的 invariants 服务下保留包名。
安装与构建
harness 各包的 npm 快照不完整: 与 被依赖/peer 引用但从未发布,而 pnpm ≥ 10/11 会自动安装 peer —— 因此纯 registry 安装必然失败。本仓库在 下以类型专用(type-only)快照的形式 vendor 了八个 包(仅 + 净化后的 ; 附带 3 行品牌构造器运行时)。 走真实安装。详见 → "npm snapshot gaps"。