dsh-tool-ast-grep: AST-based Structural Code Search and Outline Tool

DeepSeek Harness (DSH) 采用插件化架构。当编码智能体需要在代码库中定位结构化信息时,传统的正则表达式搜索往往存在令牌消耗大、语义准确度低的问题。dsh-tool-ast-grep 旨在解决这一痛点,它基于 ast-grep 引擎,为 DSH 提供了基于抽象语法树(AST)的结构化代码搜索与语法大纲提取能力。

插件定位

该工具是一个为 DeepSeek Harness 供电的 AST 结构化代码搜索和语法大纲插件,由开发者 Jaylor-Wang 维护。它属于“模型推理”类别,通过提供比正则更高效的搜索方式,帮助智能体理解代码结构。

核心功能

插件主要提供以下三项核心能力:

  1. ast_search
    使用 AST 模式和元变量(如 $NAME、$$$)搜索代码结构。它支持跨多行匹配,不依赖具体的格式或空白字符,并能通过节点类型进行查询。
  2. ast_outline
    从源文件中提取超紧凑的结构大纲(函数、类、类型、接口、导出等)。相比读取完整文件,这能节省 80%-95% 的令牌,并支持深度控制(例如只看顶层方法或包含嵌套类)。
  3. 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 指定其完整路径。

典型用法

参数 说明
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)。

注意事项

  1. 插件依赖于预先安装的 ast-grep CLI,请确保已安装。
  2. 插件以当前 DSH 进程的权限运行,请在使用前检查源码与许可证。
  3. 该插件采用 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
羽毛球分组比赛记分
小程序二维码

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

小夜