前言¶
DeepSeek Harness (DSH) 的核心版本(>= 0.1.5)原生管理上下文預算和 Token 計數,負責工具結果的剪枝和溢出策略。dsh-context-lens 插件專注於語義層面的壓縮,解決的是“發送什麼內容給模型”的問題。它將冗長的源代碼文件轉化爲結構化的 AST 骨架,將巨大的測試或構建日誌壓縮爲關鍵錯誤和摘要,從而在保持語義完整性的前提下降低 Token 消耗。
插件定位¶
- 名稱:
goodandready/dsh-context-lens - 簡介:Semantic AST Code Skeletonizer & Test Log Condenser for DeepSeek Harness
- 維護者:GooDAnDReaDY
- 許可證:MIT
核心功能¶
1. 多語言 AST 結構骨架生成器¶
該功能支持 TypeScript、JavaScript、Python、Go、C/C++、Rust、Java 以及 SQL DDL。它通過純正則表達式實現,不依賴重型解析器。
處理邏輯如下:
- 保留內容:導入語句、類/結構體/接口定義、導出類型、函數簽名、文檔註釋。
- 移除內容:函數或方法內部的實現體。
這允許 AI 在不閱讀具體實現細節的情況下,理解代碼的結構、類型定義和依賴關係。
2. 智能測試與構建日誌壓縮¶
針對 Jest、Vitest、Pytest、Go test、Cargo、Webpack、Vite、TSC、Maven、Gradle 等工具的輸出,插件提供三種壓縮模式:
- raw:移除噪聲行,保持執行順序。
- balanced:保留失敗部分及其周圍的上下文窗口(默認模式)。
- aggressive:僅提取錯誤行和堆棧幀。
無論日誌大小如何,插件都會自動提取失敗信息、斷言差異(Expected ... Received ...)以及測試摘要,而忽略成功的運行記錄。
3. 路徑焦點管理¶
在進行代碼編輯任務時,可以指定當前活躍的目標文件或文件夾。
- 焦點文件:返回完整的實現代碼。
- 非焦點文件:應用 AST 骨架化處理。
焦點狀態嚴格限定在當前會話內(sessionId),用於在處理大型項目時,將上下文聚焦在當前修改的文件上。
Agent 工具使用¶
該插件提供兩個工具,嚴格遵循 DSH 工具規範,返回結構化輸出。
1. context_lens_code¶
| Action | 說明 |
|---|---|
skeleton (默認) |
生成 AST 骨架。可指定 code、language、maxDepth、filePath。 |
focus |
設置當前會話的焦點路徑。 |
get_focus |
獲取當前會話的焦點路徑。 |
clear_focus |
清除當前會話的焦點路徑。 |
2. context_lens_log¶
用於壓縮測試或構建日誌。可指定 text (或 log)、mode (raw/balanced/aggressive)、maxLines、auto、command。
- 在
auto: true模式下,僅對識別爲測試/構建輸出的文本進行處理。
配置項¶
配置通過 DSH 設置頁面(plugins.row.config / plugins.item)管理:
| 屬性 | 類型 | 默認值 | 描述 |
|---|---|---|---|
compressionMode |
string | 'balanced' |
日誌壓縮的激進程度。 |
astSkeletonMaxDepth |
number | 3 |
AST 骨架生成的最大深度。 |
autoCompressThreshold |
number | 4000 |
觸發自動壓縮日誌的字符閾值(0 爲禁用)。 |
注意事項¶
- 核心版本依賴:上下文預算和 Token 計數由 DSH 核心(>= 0.1.5)管理,本插件僅負責語義壓縮。
- 實現方式:基於純正則表達式,無原生依賴。
- 會話隔離:路徑焦點狀態是會話隔離的。