前言¶
在 DeepSeek Harness 的代码模式下,模型编写 TypeScript 程序来编排工具调用。这个程序接收所有子调用的参数和结果,而模型本身只能看到程序最终返回的内容。虽然 Session Log 记录了所有数据,但这三者之间存在一个观测断层:模型无法感知其内部程序触发的工具调用。
dsh-code-lens 插件专门填补这一断层。它提供两种能力:一是通过 codeLens 生成全量会话的投影视图,二是提供 code_lens 工具供模型事后审计自身程序。
插件定位¶
- 名称:
dsh-code-lens - 维护者:
lisycotana - 分类:工作流
- 许可证:MIT
- 核心价值:观测 DeepSeek Harness 代码模式中,由
run_code程序触发的、模型不可见的子调用。
核心功能¶
1. codeLens 会话投影¶
插件在 UI 层提供会话级别的汇总数据。视图展示的是整个会话的统计结果,无需直接操作日志文件。
{ "programs": 1, "dispatches": 2, "settled": 2, "errors": 1, "dispatchMs": 340, "hiddenBytes": 1027 }
在此 JSON 中,hiddenBytes 表示被程序消耗但模型上下文中从未出现的载荷字节数。
2. code_lens 工具¶
这是一个审计工具,允许在会话结束后查看程序内部的调用细节。
run_code call_abc: 2 sub-calls, 1 errors, 340ms, 1027B hidden from context
call_abc:code:1 bash ok 140ms 3B
call_abc:code:2 read error 190ms 1024B
安装与启用¶
通过官方插件目录安装:
dsh plugin --profile web add dsh-code-lens
安装后,使用指定 profile 启动 Harness:
dsh --profile web
典型用法¶
会话投影示例¶
在代码模式会话结束后,查看 UI 中的 codeLens 视图。若会话中包含一个 run_code 程序读取了 8 个文件,输出可能如下:
{ "programs": 1, "dispatches": 9, "settled": 8, "errors": 0, "dispatchMs": 23, "hiddenBytes": 1312 }
工具审计示例¶
在会话中调用 code_lens 工具(或在日志中查看),可以看到具体的子调用详情:
run_code call_00_lMDLou1XAHEXiQYgKbUR9330: 9 sub-calls, 0 errors, 23ms, 1312B hidden from context
call_00_lMDLou1XAHEXiQYgKbUR9330:code:1 read ok 6ms 164B
...
call_00_lMDLou1XAHEXiQYgKbUR9330:code:9 code_lens unsettled — 0B
注意最后一行 unsettled 状态,这是对未完成 settle 的子调用的正常观测。
技术设计与注意事项¶
依赖与运行机制¶
- 零依赖:插件不依赖任何外部库,通过手写验证器替代
zod等库,确保与宿主环境版本解耦。 - 只读不写:插件监听
session/event,但在事件发布窗口内运行,不会尝试追加数据,防止重入错误。 - 可选注册表:
sessionProjections和tools通过ctx.inject获取,因此即使在无 UI 的 Headless 模式下也能加载。
数据逻辑¶
- 子调用编号空缺:如果子调用被排队但最终未 settle(未结算),日志中既不会产生 start 事件也不会产生 end 事件。因此,出现编号不连续(如存在空缺)是正常现象,并非数据丢失。
- 配对规则:子调用通过
subCallId进行配对,时长数据来源于事件信封(event envelope)中的time字段,而非事件本身携带的 duration。
插件作者注意事项¶
在注册工具时,ctx.tools.register() 接收的是Wire Schema(完整的 JSON Schema 对象)。如果直接将简写对象(defineTool 的参数)传给 register(),会导致 type: null,从而被拒绝:
INVALID_REQUEST: Invalid schema for function 'x':
schema must be a JSON Schema of 'type: "object"', got 'type: null'.
该插件显式编写了对象根结构并自行验证参数,以保持依赖零依赖的特性。
适用场景¶
该插件适用于使用 DeepSeek Harness 进行代码模式开发的开发者。当你需要:
1. 监控模型编写的程序内部触发的工具调用。
2. 分析模型上下文中被“隐藏”的数据(hiddenBytes)。
3. 在无 UI 环境下审计会话内的子调用链路。
结尾¶
dsh-code-lens 是 DSH 生态中针对代码模式观测的补充工具,通过投影和工具两种形式,还原了模型视角之外的执行细节。