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 生態中針對代碼模式觀測的補充工具,通過投影和工具兩種形式,還原了模型視角之外的執行細節。

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

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

小夜