前言¶
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)管理,本插件仅负责语义压缩。
- 实现方式:基于纯正则表达式,无原生依赖。
- 会话隔离:路径焦点状态是会话隔离的。