关于 ast-grep-find
基于 AST 模式进行语法感知代码搜索与重构的技能,支持 Python、JavaScript、TypeScript、Go 等语言,并依赖 ast-grep MCP 服务。
主要功能
- 01搜索语法结构模式
- 02匹配调用、导入和定义
- 03替换匹配的代码结构
- 04通过 dry run 预览修改
- 05按路径或 glob 筛选搜索
适用场景
- 01忽略注释查找函数调用
- 02定位导入或类定义
- 03重构重复代码模式
- 04应用前预览修改内容
MCP 相关
该技能需要在 `mcp_config.json` 中配置 `ast-grep` MCP 服务,才能执行搜索和重构。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ parcadei/ continuous-claude-v3 --skill ast-grep-find安装后在 Claude Code 中输入/ast-grep-find确认已加载。
详细介绍
AST-Grep 查找
理解语法的结构化代码搜索。查找函数调用、导入、类定义等模式,而不只是搜索文本。
适用场景
- 查找代码模式(忽略字符串和注释)
- 搜索函数调用、类定义和导入
- 以 AST 精度重构代码
- 在整个代码库中重命名变量或函数
用法
搜索模式
uv run python -m runtime.harness scripts/ast_grep_find.py \
--pattern "import asyncio" --language python
在指定目录中搜索
uv run python -m runtime.harness scripts/ast_grep_find.py \
--pattern "async def \$FUNC(\$\$\$)" --language python --path "./src"
重构/替换模式
uv run python -m runtime.harness scripts/ast_grep_find.py \
--pattern "console.log(\$MSG)" --replace "logger.info(\$MSG)" \
--language javascript
试运行(预览更改)
uv run python -m runtime.harness scripts/ast_grep_find.py \
--pattern "print(\$X)" --replace "logger.info(\$X)" \
--language python --dry-run
参数
| 参数 | 描述 |
|---|---|
--pattern | 要搜索的 AST 模式(必填) |
--language | 语言:python、javascript、typescript、go 等 |
--path | 要搜索的目录(默认值:.) |
--glob | 文件 glob 模式(例如,**/*.py) |
--replace | 用于重构的替换模式 |
--dry-run | 预览更改但不应用 |
--context | 上下文行数(默认值:2) |
模式语法
| 语法 | 含义 |
|---|---|
$NAME | 匹配单个节点(变量、表达式) |
$$$ | 匹配多个节点(参数、语句) |
$_ | 匹配任意单个节点(通配符) |
示例
# Find all function definitions
uv run python -m runtime.harness scripts/ast_grep_find.py \
--pattern "def \$FUNC(\$\$\$):" --language python
# Find console.log calls
uv run python -m runtime.harness scripts/ast_grep_find.py \
--pattern "console.log(\$\$\$)" --language javascript
# Replace print with logging
uv run python -m runtime.harness scripts/ast_grep_find.py \
--pattern "print(\$X)" --replace "logging.info(\$X)" \
--language python --dry-run
与 morph/warpgrep 对比
| 工具 | 最适合 |
|---|---|
| ast-grep | 结构化模式(理解代码语法) |
| warpgrep | 快速文本/正则表达式搜索(比 grep 快 20 倍) |
需要语法感知匹配时使用 ast-grep。追求原始速度时使用 warpgrep。
需要 MCP 服务
需要在 mcp_config.json 中配置 ast-grep 服务。
评论
支持 Markdown