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