大模型应用
需要按代码语法结构搜索或重构时,用 ast-grep 做…
在代码库中按 AST 结构搜索函数调用、导入、类定义等模式,并进行安全重构/替换。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要按代码语法结构搜索或重构时,用 as特定
解决思路
- 使用前在 `mcp_config.json` 中配置 `ast-grep` server。
- 用 AST 结构化搜索查找代码模式,匹配时会忽略字符串/注释中的干扰。
- 用 AST 搜索函数调用、类定义、导入等结构。
- 用 AST 精确重构代码:通过 `--pattern` 匹配原结构,用 `--replace` 替换。
- 跨代码库重命名变量/函数:用 `--pattern` 匹配旧名,`--replace` 替换为新名,并先 `--dry-run` 预览。
- 搜索简单模式:`uv run python -m runtime.harness scripts/ast_grep_find.py --pattern "import asyncio" --language python`。
- 在指定目录搜索:追加 `--path "./src"`,例如 `uv run python -m runtime.harness scripts/ast_grep_find.py --pattern "async def \$FUNC(\$\$\$)" --language python --path "./src"`。
- 重构/替换模式:同时传 `--pattern` 和 `--replace`,例如 `uv run python -m runtime.harness scripts/ast_grep_find.py --pattern "console.log(\$MSG)" --replace "logger.info(\$MSG)" --language javascript`。
- 预览替换:加 `--dry-run`,例如 `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` 匹配单个节点(变量、表达式)。
- 在模式中用 `$$$` 匹配多个节点(参数、语句)。
- 在模式中用 `$_` 匹配任意单个节点(通配符)。
- 查找所有函数定义:`uv run python -m runtime.harness scripts/ast_grep_find.py --pattern "def \$FUNC(\$\$\$):" --language python`。
- 查找所有 `console.log` 调用:`uv run python -m runtime.harness scripts/ast_grep_find.py --pattern "console.log(\$\$\$)" --language javascript`。
- 替换 `print` 为 `logging` 并先预览:`uv run python -m runtime.harness scripts/ast_grep_find.py --pattern "print(\$X)" --replace "logging.info(\$X)" --language python --dry-run`。
- 需要语法感知的结构化模式匹配时,选 ast-grep。
- 需要快速文本/正则搜索时,选 warpgrep(原文称比 grep 快 20 倍)。
适用边界 · 注意事项
- 只需要快速文本或正则搜索时,改用 warpgrep,不要用 ast-grep。
- 未在 `mcp_config.json` 中配置 `ast-grep` server,或无法运行 `uv run python -m runtime.harness scripts/ast_grep_find.py` 时不可用。
- 只需要简单字符串匹配、不关心代码语法结构时,不必使用 AST 匹配。