第七章:Agent 与自动化
Agent 模式让 Claude Code 从"问答工具"升级为"自主执行者"——它能拆解复杂任务、调用工具、启动子 Agent,甚至接入 CI/CD 流水线,实现真正的编程自动化。
7.1 Agent 工具详解
Claude Code 内置的 Agent 工具允许主 Claude 启动一个独立的子 Agent 来处理子任务,子 Agent 拥有独立的上下文和工具访问权限。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
description | string | 子 Agent 任务的简短描述(3-5 词) |
prompt | string | 给子 Agent 的完整任务说明,需自包含 |
subagent_type | string | 专用 Agent 类型(如 general-purpose、Explore 等) |
isolation | string | 设为 "worktree" 时在独立 Git 工作树中运行 |
run_in_background | boolean | 是否后台运行(不阻塞主 Agent) |
编写高质量 Prompt 的要点
子 Agent 没有主 Agent 的上下文记忆,prompt 必须自包含:
text
# ❌ 不好的 prompt(缺少背景)
修复这个 bug
# ✅ 好的 prompt(自包含)
修复 src/api/auth.ts 第 42 行的 JWT 验证 bug。
背景:当 token 过期时,代码抛出未捕获的异常而不是返回 401 状态码。
要求:
- 捕获 TokenExpiredError 并返回 { status: 401, message: "Token 已过期" }
- 不要修改函数签名
- 修改后运行 npm test 验证
7.2 Sub-agent 拆分策略
何时拆分为子 Agent
- 任务可以被明确划分为独立的子任务,且子任务之间无依赖
- 单个任务涉及的代码量超过 2000 行,超出单次上下文处理能力
- 需要对多个模块并行操作(如同时重构前端和后端)
- 需要保护主 Agent 的上下文不被大量中间结果污染
任务边界划分原则
| 原则 | 说明 |
|---|---|
| 单一职责 | 每个子 Agent 只负责一个明确的模块或功能 |
| 输入输出明确 | 子 Agent 的输入(文件/参数)和输出(结果/产物)要清晰定义 |
| 可独立验证 | 子任务完成后可以独立运行测试验证,不依赖其他子任务 |
| 避免共享写入 | 并行子 Agent 不应同时写入同一文件,防止冲突 |
典型拆分示例
text
# 主 Agent 任务:为项目添加国际化支持
# 拆分为 3 个独立子任务:
子 Agent 1:扫描 src/ 目录,提取所有硬编码中文字符串,
生成 locales/zh-CN.json 翻译文件
子 Agent 2:修改 src/components/ 中的 React 组件,
将硬编码文本替换为 t('key') 调用
子 Agent 3:安装和配置 react-i18next,
修改 main.tsx 初始化 i18n 配置
7.3 并行 Agent
在 CLAUDE.md 或自定义 Skill 中,通过在单条消息中发起多个 Agent 调用实现并行执行,可大幅缩短多任务的总用时。
💡
并行的核心原则
将多个 Agent 调用放在同一条消息中发出,Claude 会并发执行它们。如果分成多条消息,则是串行执行。
并行执行模式
text
# 对以下三个模块并行执行代码审查,同时发起所有任务:
[Agent 1] 审查 src/modules/user/ 下的所有文件,
重点检查:SQL 注入、权限校验、敏感数据暴露
[Agent 2] 审查 src/modules/payment/ 下的所有文件,
重点检查:金额计算精度、幂等性、事务完整性
[Agent 3] 审查 src/modules/notification/ 下的所有文件,
重点检查:消息队列可靠性、重试机制、错误处理
所有 Agent 完成后,汇总三个报告,给出整体安全评分。
结果汇总模式
text
# 并行收集多源信息,再统一分析
同时执行:
1. 搜索 GitHub Issues 中关于性能问题的最新讨论
2. 读取 src/db/queries.ts 中所有数据库查询
3. 读取最近一周的 error.log
三项完成后,综合分析性能瓶颈原因并给出优先级排序的优化建议。
7.4 Headless 模式
Headless 模式通过 claude -p 非交互式运行,适合 CI/CD 流水线、定时任务和脚本集成。
基本用法
bash
# 基本调用
claude -p "审查 src/ 目录下的安全漏洞,输出 Markdown 报告"
# 输出为 JSON
claude -p "列出所有 TODO 注释" --output-format json
# 指定工作目录
claude -p "运行测试并总结失败原因" --cwd /path/to/project
# 自动批准所有权限(用于 CI 环境)
claude --dangerously-skip-permissions -p "更新所有依赖包到最新版本"
GitHub Actions 集成示例
yaml
# .github/workflows/ai-review.yml
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run AI Code Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git diff origin/${{ github.base_ref }}...HEAD > changes.diff
REVIEW=$(cat changes.diff | claude --dangerously-skip-permissions -p "
审查这次 PR 的代码变更。
重点检查:
1. 安全漏洞(XSS、注入攻击、权限绕过)
2. 逻辑错误和边界条件处理
3. 性能问题
输出格式:
- 用 Markdown 格式
- 每个问题标注严重级别:🔴 Critical / 🟡 Warning / 🟢 Suggestion
- 最后给出总体评价
")
# 将审查结果发布为 PR 评论
gh pr comment ${{ github.event.pull_request.number }} --body "$REVIEW"
7.5 自动化工作流案例
案例一:自动化代码审查
结合 Git Hook 实现提交前自动审查:
bash
#!/bin/bash
# .git/hooks/pre-push
echo "🤖 Running Claude Code Review..."
DIFF=$(git diff origin/main...HEAD)
if [ -z "$DIFF" ]; then
echo "No changes to review."
exit 0
fi
RESULT=$(echo "$DIFF" | claude --dangerously-skip-permissions -p "
快速审查这次提交的代码变更(30秒内完成)。
只报告 Critical 级别的问题(安全漏洞、数据丢失风险)。
如果没有 Critical 问题,输出:APPROVED
如果有问题,输出:BLOCKED,然后列出问题。
")
if echo "$RESULT" | grep -q "BLOCKED"; then
echo "❌ Push blocked by AI review:"
echo "$RESULT"
exit 1
else
echo "✅ AI review passed"
exit 0
fi
案例二:定时技术报告生成
bash
#!/bin/bash
# 每周一早上 9 点通过 cron 运行
# 0 9 * * 1 /path/to/weekly-report.sh
cd /path/to/project
REPORT=$(claude --dangerously-skip-permissions -p "
分析本项目过去一周的活动,生成技术周报:
1. 运行 git log --since='7 days ago' --oneline 查看提交记录
2. 统计各模块的变更量
3. 识别本周主要完成的功能和修复的 Bug
4. 找出代码质量指标(如新增的 TODO、过长的函数)
5. 给出下周建议关注的技术债务
输出 Markdown 格式,附带关键数据统计。
")
# 发送到 Slack
curl -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-type: application/json' \
--data "{\"text\": \"📊 本周技术周报\n\`\`\`\n$REPORT\n\`\`\`\"}"
⚠️
Headless 模式安全注意事项
--dangerously-skip-permissions 会自动批准所有操作,在 CI 环境中务必通过 permissions.allow/deny 精确限制可操作的范围,防止 Claude 执行意外的破坏性操作。