AI 编程助手到底在用哪些工具?(Claude Code、Codex CLI、Aider 深度解析)
AI 编程助手到底在用哪些工具?
Claude Code、Codex CLI、Aider 如何读取文件、搜索代码库、运行测试并提交代码——深入底层
AI 编程助手用起来像魔法一样。你输入"在 dashboard 页面加一个登录表单",工具就能找到正确的文件、写好组件、检查编译是否通过、跑完测试,然后把 git diff 展示给你。
但这里没有任何魔法——只是一个不断循环调用同一批 Unix shell 工具的过程,而这些工具在你的电脑上已经存在几十年了。
本文将详细拆解 AI 编程助手工作时究竟运行了哪些程序,这对性能和安全意味着什么,以及如果你想自己构建一个这样的工具需要了解什么。
适合人群:已经在使用 Claude Code、GitHub Copilot 或 Cursor 的开发者,希望深入理解其工作原理。
AI 编程助手如何运作:智能体循环
所有主流编程助手——Claude Code、OpenAI Codex CLI、Aider、Cline、Cursor——都遵循相同的基本智能体循环:
1. 接收你的提示词
2. 思考:我需要哪些上下文?
3. 调用工具(rg, cat, git, npm...)
4. 观察输出结果
5. 思考:下一步是什么?
6. 重复,直到任务完成
LLM 是大脑,shell 工具是双手。助手做的事情,你在终端里手动也能做到——它只是做得更快,不需要每一步都问你。
理解这些工具,整个系统就不再神秘。
1. 搜索工具:AI 如何读懂你的代码库
AI 编程助手在写任何一行代码之前,需要先理解现有的代码。它使用的正是开发者每天都在用的搜索工具。
ripgrep(rg)——主力搜索工具
Ripgrep 是几乎所有编程助手中调用最频繁的工具。速度极快,能识别 .gitignore,处理大型代码库也不会变慢。
# 查找包含某函数的所有文件
rg "authenticate" --type ts
# 查找函数定义
rg "^export function" src/ -n
# 带上下文的搜索
rg "handleLogin" -C 3
# 只列出匹配的文件名
rg "useAuth" -l
当你说"给登录函数加上错误处理",助手会先跑 rg 定位登录逻辑在哪里——然后才会动任何文件。
fd ——快速文件查找
按文件名模式查找文件,而非按内容。
fd -e test.ts # 所有 TypeScript 测试文件
fd "*.config.js" # 配置文件
fd -t f -name "*.env" # 环境变量文件
find ——标准备用方案
在没有 fd 的环境中仍被广泛使用。
find src/ -name "*.py" -newer requirements.txt
grep ——通用备用方案
没有安装 rg 时,grep -r 能完成同样的工作,只是速度较慢。
性能小贴士:安装 ripgrep(
brew install ripgrep/apt install ripgrep),你的 AI 编程助手在大型代码库中的搜索速度会有明显提升。
2. 文件读取工具:摸清现有代码
定位到正确文件后,助手会用最简单的命令读取文件。
cat ——读取完整文件
cat src/auth/login.tsx
cat src/lib/api.ts
head / tail ——读取文件片段
适合大文件、长日志,或者只需了解文件结构而不用全部加载的场景。
head -50 src/api/routes.ts # 前 50 行
tail -100 logs/app.log # 日志最后 100 行
wc ——先确认文件大小
助手通常会先检查行数,再决定是否读取完整文件。
wc -l src/models/user.py
ls / tree ——了解目录结构
ls -la src/components/
tree src/ --depth 2
3. 文件写入与编辑工具:动手修改
这里才是真正生成代码的地方。AI 根据变更范围选择不同的编辑策略。
创建新文件
从零编写新文件:
cat > src/components/LoginForm.tsx << 'EOF'
import React, { useState } from 'react'
// ... 生成的代码
EOF
patch ——应用结构化差异
用于精确、可审查的编辑:
patch src/auth/login.tsx < changes.patch
sed ——原地查找替换
用于跨文件的精准替换:
sed -i 's/oldFunctionName/newFunctionName/g' src/utils.ts
内联 Python / Node 脚本
用于复杂的 JSON、YAML 或配置文件转换:
python3 -c "
import json
with open('config.json') as f:
data = json.load(f)
data['featureFlag'] = True
with open('config.json', 'w') as f:
json.dump(data, f, indent=2)
"
4. 代码执行与测试工具:验证结果
设计良好的 AI 编程助手不只是写代码——它还会验证代码能否正常运行。编辑-编译-测试的循环会自动进行。
测试运行器
# Python(Django / FastAPI 项目常用)
pytest tests/ -v
pytest tests/test_auth.py::test_login -x # 遇到第一个失败即停止
# JavaScript / TypeScript
npm test
npx jest src/auth/login.test.ts
# Go(微服务场景常用)
go test ./...
# Rust
cargo test
类型检查器
npx tsc --noEmit # TypeScript,不生成输出文件
mypy src/ # Python 类型检查
代码检查与格式化
npx eslint src/ --fix
ruff check src/
npx prettier --write src/
构建验证
npm run build
cargo build
go build ./...
make
整个流程是:写代码 → 测试 → 读取错误输出 → 修复 → 再测试。AI 执行的是和开发者完全一样的循环,只是不需要喝咖啡休息。
5. Git 工具:理解历史记录并保存工作
Git 在编程助手的工作流中处于核心位置。既用于在修改之前理解上下文,也用于在修改之后保存工作。
读取状态与历史
git status # 发生了哪些变化
git diff # 具体的行级变更
git log --oneline -20 # 近期提交历史
git log main..HEAD --oneline # 当前分支的变更
git blame src/auth/login.ts # 谁在什么时候改了什么
提交变更
git add src/components/LoginForm.tsx
git commit -m "feat: add login form component"
用 GitHub CLI(gh)处理 PR 工作流
gh pr diff 142 # 获取 PR 差异用于审查
gh pr create --title "..." --body "..."
gh pr checks # 检查 CI 状态
gh issue view 88 # 读取 Issue 上下文
6. 包管理器与运行时工具
具体调用哪些工具取决于你的技术栈。
JavaScript / TypeScript 项目
npm install
npm run dev
npx <tool>
bun install && bun run dev
Python 项目
pip install -r requirements.txt
python manage.py migrate
uvicorn main:app --reload
Docker 与容器
docker compose up -d
docker logs app_container
docker exec -it container_name bash
API 测试
curl -X POST http://localhost:8000/api/login \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","password":"pass"}'
实战案例:"在 /dashboard 添加发帖表单"
当你把这个提示词发给 Claude Code 这样的编程助手时,实际执行的 shell 命令序列如下:
# 第一步:了解项目结构
ls src/
tree src/pages --depth 2
# 第二步:找到 dashboard 页面
rg "dashboard" src/ --type tsx -l
cat src/pages/dashboard.tsx
# 第三步:寻找可复用的现有表单模式
rg "form" src/components/ -l
cat src/components/CommentForm.tsx
# 第四步:了解 API 调用方式
rg "fetch|axios|api" src/lib/ -l
cat src/lib/api.ts
# 第五步:确认现有的 post 相关接口
rg "POST" src/api/ -n
# 第六步:编写新组件
cat > src/components/PostForm.tsx << 'EOF'
...生成的组件代码...
EOF
# 第七步:在 dashboard 页面添加 import
sed -i "s/from '.\/CommentForm'/from '.\/CommentForm'\nimport { PostForm } from '.\/PostForm'/" \
src/pages/dashboard.tsx
# 第八步:验证 TypeScript 编译通过
npx tsc --noEmit
# 第九步:运行相关测试
npm test -- --testPathPattern=dashboard
# 第十步:查看变更内容
git diff
每一步都是普通的 shell 命令。智能之处在于知道该跑哪些命令、按什么顺序、如何解读输出结果。
为什么这对开发者很重要
理解底层工具层有四个实际意义。
性能:如果没有安装 rg,AI 会退回到 grep,在大型代码库中会慢很多。安装 ripgrep 是对任何 AI 编程助手免费的性能提升。
调试 AI 的错误:当助手做出错误编辑时,通常可以追溯到它读错了什么。问问自己:它搜索了什么,找到了什么?错误几乎总是在工具输出里,而不是在 AI 的推理逻辑中。
安全性:AI 调用的每个工具都以你的身份凭证在你的机器上运行。知道它会调用 git、npm、docker 和 curl,可以帮你清晰地判断它实际需要哪些权限,并通过白名单施加适当限制。
自己构建编程助手:如果想构建类似 Claude Code 或 Aider 的智能体,现在你已经了解了完整的工具面。LLM 层几乎是次要的——真正的工作在于围绕这些程序设计干净的工具接口。
AI 编程助手完整工具清单
| 类别 | 使用工具 |
|---|---|
| 内容搜索 | rg(ripgrep)、grep、awk |
| 文件查找 | fd、find、ls、tree |
| 文件读取 | cat、head、tail、wc |
| 文件写入 / 编辑 | patch、sed、tee、内联脚本 |
| 运行代码 | python、node、go、cargo、ruby |
| 运行测试 | pytest、jest、vitest、go test、cargo test |
| 构建 | npm run build、cargo build、make、gradle |
| 代码检查 / 类型检查 | eslint、tsc、mypy、ruff、prettier |
| 版本控制 | git、gh(GitHub CLI) |
| 包管理器 | npm、pip、cargo、brew、apt |
| 基础设施 | docker、docker compose、kubectl |
| 网络 / API | curl、wget、httpie |
常见问题
所有 AI 编程助手用的工具都一样吗?
核心工具——rg、git、cat 和测试运行器——在 Claude Code、Codex CLI、Aider 和 Cline 中都有。具体的调用方式和顺序有所不同,但底层程序是相同的。
AI 能访问我整个文件系统吗?
默认情况下,可以访问工作目录及其子目录。Claude Code 等工具支持权限白名单(例如 "Bash(git *)")来限制可执行的命令。
AI 为什么用 rg 而不是直接读所有文件?
读取大型代码库的所有文件会超出 LLM 的上下文窗口,消耗过多 token。先用 rg 搜索,让 AI 能精准定位真正需要读的内容。
用这些工具能自己构建编程助手吗?
可以。核心架构就是:LLM + 工具定义(bash、read、write、grep)+ 智能体循环。Aider 这样的开源项目提供了具体参考。shell 工具本身无需额外配置。
缺少某个工具会怎样?
AI 通常会优雅降级——rg → grep,fd → find。像 gh 这样的工具是可选的,没有安装时助手会跳过与 PR 相关的步骤。
总结
AI 编程助手之所以强大,不是因为它发明了处理代码的新方法——而是因为它极其擅长编排(orchestrate)已有的工具。在 Claude Code 底层运行的 rg、git、npm、patch 命令,和开发者多年来一直在用的那些完全相同。
AI 负责推理:该用哪个工具、搜索什么、如何解读输出。工具负责执行:实际地读取、写入和运行代码。
理解了这种分工,AI 编程助手就不再是黑盒。它变成了一个你可以推理、优化、调试,乃至自己动手构建的系统。
延伸阅读
- Claude Code 内置工具工作原理
- Aider 源代码 —— 开源编程助手
- learn-claude-code —— 逆向解析 Claude Code 架构
- ripgrep —— 为什么比 grep 更快
觉得本文有帮助?深入学习的最佳方式是开启 verbose 日志运行编程助手,观察它发出了哪些命令。一次会话能让你学到的,远比任何文档都多。
Get in Touch with us
Related Posts
- 如何将电商平台与ERP系统打通:实战指南(2026年版)
- 使用 Wazuh + 开源工具构建轻量级 SOC:实战指南(2026年版)
- 能源管理软件的ROI:企业电费真的能降低15–40%吗?
- The ROI of Smart Energy: How Software Is Cutting Costs for Forward-Thinking Businesses
- How to Build a Lightweight SOC Using Wazuh + Open Source
- How to Connect Your Ecommerce Store to Your ERP: A Practical Guide (2026)
- What Tools Do AI Coding Assistants Actually Use? (Claude Code, Codex CLI, Aider)
- How to Improve Fuel Economy: The Physics of High Load, Low RPM Driving
- 泰国榴莲仓储管理系统 — 批次追溯、冷链监控、GMP合规、ERP对接一体化
- Durian & Fruit Depot Management Software — WMS, ERP Integration & Export Automation
- 现代榴莲集散中心:告别手写账本,用系统掌控你的生意
- The Modern Durian Depot: Stop Counting Stock on Paper. Start Running a Real Business.
- AI System Reverse Engineering:用 AI 理解企业遗留软件系统(架构、代码与数据)
- AI System Reverse Engineering: How AI Can Understand Legacy Software Systems (Architecture, Code, and Data)
- 人类的优势:AI无法替代的软件开发服务
- The Human Edge: Software Dev Services AI Cannot Replace
- From Zero to OCPP: Launching a White-Label EV Charging Platform
- How to Build an EV Charging Network Using OCPP Architecture, Technology Stack, and Cost Breakdown
- Wazuh 解码器与规则:缺失的思维模型
- Wazuh Decoders & Rules: The Missing Mental Model













