DeepSeek Harness (DSH) 采用插件化架构。当编码智能体需要在代码库中定位结构化信息时,传统的正则表达式搜索往往存在令牌消耗大、语义准确度低的问题。dsh-tool-ast-grep 旨在解决这一痛点,它基于 ast-grep 引擎,为 DSH 提供了基于抽象语法树(AST)的结构化代码搜索与语法大纲提取能力。
插件定位¶
该工具是一个为 DeepSeek Harness 供电的 AST 结构化代码搜索和语法大纲插件,由开发者 Jaylor-Wang 维护。它属于“模型推理”类别,通过提供比正则更高效的搜索方式,帮助智能体理解代码结构。
核心功能¶
插件主要提供以下三项核心能力:
- ast_search
使用 AST 模式和元变量(如$NAME、$$$)搜索代码结构。它支持跨多行匹配,不依赖具体的格式或空白字符,并能通过节点类型进行查询。 - ast_outline
从源文件中提取超紧凑的结构大纲(函数、类、类型、接口、导出等)。相比读取完整文件,这能节省 80%-95% 的令牌,并支持深度控制(例如只看顶层方法或包含嵌套类)。 - Zero Shell Quoting Issues
通过子进程安全调用,免疫 Windows Shell 转义和引号问题,确保在不同操作系统上的调用稳定性。
安装与启用¶
在使用插件前,需确保机器上已安装 ast-grep CLI 工具。支持以下安装方式:
# npm
npm install -g @ast-grep/cli
# pip
pip install ast-grep-cli
# cargo
cargo install ast-grep --locked
# brew (macOS/Linux)
brew install ast-grep
安装 ast-grep 后,通过以下命令安装 DSH 插件:
dsh plugin --profile web add dsh-tool-ast-grep
如果 ast-grep 安装在非标准路径,可以通过设置环境变量 AST_GREP_PATH 指定其完整路径。
典型用法¶
ast_search 参数¶
| 参数 | 说明 |
|---|---|
pattern |
AST 模式,例如 function $NAME($$$) { $$$ } 或 $OBJ.push($ITEM) |
kind |
AST 节点类型,例如 class_declaration |
path |
搜索路径,默认为工作区根目录 |
lang |
语言覆盖(如 ts, python, rust) |
globs |
文件通配符(如 src/**/*.ts) |
limit |
最大返回结果数(默认 50) |
ast_outline 参数¶
| 参数 | 说明 |
|---|---|
file_path |
待检查的文件路径 |
lang |
语言覆盖(省略则自动检测) |
depth |
深度控制,1 仅顶层(默认),2 包含类方法 |
支持的语言¶
支持 TypeScript (ts, tsx)、JavaScript (js, jsx)、Python (py)、Rust (rs)、Go (go)、Java (java)、C (c, h) 以及 C++ (cpp, hpp, cc)。
注意事项¶
- 插件依赖于预先安装的
ast-grepCLI,请确保已安装。 - 插件以当前 DSH 进程的权限运行,请在使用前检查源码与许可证。
- 该插件采用 MIT 许可证。
总结¶
dsh-tool-ast-grep 是 DeepSeek Harness 生态中用于提升代码搜索效率的重要工具。通过引入 AST 级别的搜索能力,它显著降低了智能体处理代码时的令牌消耗,同时保证了语义的准确性。
- 插件目录: https://www.skillhub.cn/plugins/Jaylor-Wang/dsh-tool-ast-grep
- GitHub 仓库: https://github.com/Jaylor-Wang/dsh-tool-ast-grep