dsh-code-lens:DeepSeek Harness 代码模式子调用观测

前言

在 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 生态中针对代码模式观测的补充工具,通过投影和工具两种形式,还原了模型视角之外的执行细节。

羽毛球分组比赛记分
小程序二维码

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

小夜