基于 ast-grep 的语法级 AST 代码结构检索与大纲提取工具。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-tool-ast-grep
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Jaylor-Wang/dsh-tool-ast-grep
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
专为 DeepSeek Harness (DSH) 打造的语法级 AST 代码检索与大纲提取插件,基于 Rust 高性能语法解析工具 ast-grep 驱动。
为 Coding Agent 提供精准的代码语法树(AST)检索能力与文件架构提取能力,在语义精度和 Token 消耗控制上彻底超越传统的纯文本正则搜索(grep)。
核心特性
ast_search(AST 结构化检索):- 使用 AST 模式语法与元变量(如
$NAME匹配单节点,$$$匹配任意多节点/参数)精准定位目标代码。 - 语法无关排版:不论是单行书写、换行还是空格格式差异,均能准确匹配。
- 支持节点类型(Kind)检索(如
class_declaration,interface_declaration,method_definition)。 - 支持严格度模式(
smart,relaxed,ast,cst)及文件 Glob 过滤。
- 使用 AST 模式语法与元变量(如
ast_outline(极速代码大纲提取):- 一键提取源码文件的结构化大纲(顶层函数、类、接口、类型别名、导出语句)。
- 相比把整个长文件塞进大模型上下文,可节省 80%–95% 的 Token 消耗。
- 支持深度控制:默认只看顶层接口,可展开类内部方法与构造函数。
- 消灭 Shell 引号与转义地狱:
- 采用 Node.js 原生参数列表调用,彻底规避 Windows Shell 下特殊字符(如
$VAR被吞、引号被截断)引发的运行报错。
- 采用 Node.js 原生参数列表调用,彻底规避 Windows Shell 下特殊字符(如
前置要求
使用本插件需要在系统中安装 ast-grep 命令行工具(二选一即可):
- 通过 npm 全局安装:
npm install -g @ast-grep/cli - 通过 Python pip 安装:
pip install ast-grep-cli - 通过 Cargo 安装 (Rust):
cargo install ast-grep --locked - macOS / Homebrew:
brew install ast-grep
验证安装:
ast-grep --version
自定义路径提示:若二进制安装在非标准路径或自定义 npm prefix,插件会自动探测系统
PATH目录。你也可以直接设置环境变量AST_GREP_PATH(指向ast-grep或ast-grep.exe的完整路径)。
在 DeepSeek Harness 中安装
方式 1:通过插件市场一键安装(推荐)
在 Web UI 导航至 设置 → 插件市场,搜索 dsh-tool-ast-grep,点击安装即可。
或在终端中运行:
dsh plugin --profile web add dsh-tool-ast-grep
方式 2:在智能体预设(Preset)中引入
在你的预设文件(如 ~/.dsh/.agent-presets/my-agent/agent.cordis.yml)中挂载:
id: my-agent
name: My Agent
tools:
- id: tool-ast-grep
name: dsh-tool-ast-grep
config:
maxResults: 50
timeoutMs: 60000
工具参数说明
1. ast_search
| 参数 | 类型 | 说明 |
|---|---|---|
pattern |
string |
AST 匹配模式,如 function $NAME($$$) { $$$ } 或 $OBJ.push($ITEM) |
kind |
string |
AST 语法节点类型,如 class_declaration, function_declaration |
path |
string |
搜索的目标目录或文件路径(默认为工作区根目录) |
lang |
string |
指定语言(ts, tsx, js, jsx, python, rust, go 等) |
globs |
string |
文件过滤规则(如 src/**/*.ts 或 !**/*.test.ts) |
limit |
integer |
最大返回条数(默认 50) |
2. ast_outline
| 参数 | 类型 | 说明 |
|---|---|---|
file_path |
string |
目标源码文件路径(相对路径或绝对路径) |
lang |
string |
指定语言(如省略则根据文件后缀自动推断) |
depth |
integer |
大纲深度:1 仅展示顶层定义(默认),2 展开类方法与构造器 |
支持的语言
TypeScript (ts, tsx), JavaScript (js, jsx), Python (py), Rust (rs), Go (go), Java (java), C (c, h), C++ (cpp, hpp, cc)。
许可证
MIT © Jaylor Wang (Jaylor-Wang)
链接
同类插件
DayuanJiang/next-ai-draw-io#dsh-plugin★ 36548
dsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
Tencent/WeKnora#dsh-weknora★ 36201
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 6962
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
T-Auto/dsh-ops★ 5011
为 Windows 的 DSH 提供 bash、PowerShell 7 及 Rust 高性能工具,减少 token 消耗。
sixtysevenlf/dsh-blender-plugin★ 1536
让 DSH agent 通过直连 TCP 通道驱动本地 Blender,提供 15 个工具:视口帧、自定义视角渲染、Python 执行、无头与作业卸载、事务回滚,以及 34 个 family / 228 个 op 的规划层。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1153
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。