09 AI Agent 基础

Agents 是个什么玩意儿

说实话,第一次听说 AI Agents 的时候,我还以为是什么营销概念。用了一段时间才发现,这东西真的挺有意思的。

跟普通的 AI 对话不一样,Agents 能够自主执行复杂的多步骤任务。它能规划、执行、验证,并在需要时调整策略。就像有个小助手,不仅能听懂你的指令,还能自己思考怎么做,然后一步步去执行。

我举个例子。你让它”重构这个模块,提高可维护性”,普通的 AI 可能会给你一堆建议,但 Agent 会真的去分析代码、识别问题、应用重构模式、验证改动,甚至还会运行测试确保功能不变。


跟普通对话有什么区别

普通对话基本上是你问它答,一次性解决问题。比如”解释这段代码”,它就解释一下,然后就结束了。

Agents 不一样,它有自主性和持续性。你说”为这个项目生成测试”,它会先扫描项目结构,识别需要测试的模块,然后为每个模块生成测试用例,覆盖边界情况,最后还会验证一下测试覆盖率。

这种多步骤、有状态、能自主决策的特性,让 Agents 更像是一个真正的”助手”,而不是简单的”工具”。


内置的几个 Agents

Claude Code 自带了几个挺好用的 Agents。

Explore Agent

探索代码库的时候特别有用:

1
claude --agent explore "找出这个项目中所有的 API 端点"

它会扫描项目结构、识别关键文件、分析代码模式、生成项目概览。我刚接手一个新项目的时候,常用这个 Agent 快速了解项目架构。

Test Agent

生成测试的时候很方便:

1
claude --agent test "为这个模块生成单元测试"

它会分析代码结构、生成测试用例、覆盖边界情况、生成断言。我试过几次,质量还挺不错的,尤其是边界情况考虑得挺全面。

Refactor Agent

代码重构的时候帮大忙:

1
claude --agent refactor "重构这个模块,提高可维护性"

它能识别代码异味、应用设计模式、改善代码结构,而且会保持功能不变。这个功能我用在维护老项目的时候,省了不少时间。


怎么用 Agents

其实挺简单的。

指定 Agent

1
2
3
4
5
# 明确指定用哪个 Agent
claude --agent explore "分析项目结构"

# 或者让 Claude 自己选择合适的 Agent
claude "重构这段代码" # 它会自动使用 refactor agent

我一般会明确指定 Agent,这样更可控。但如果你不确定用哪个,让 Claude 自己选择也行,它判断得还挺准的。

Agent 参数

有些 Agent 支持参数配置:

1
2
3
4
claude --agent test \
--coverage 80 \
--framework pytest \
"生成测试"

这样可以让 Agent 按照你的需求工作,比如指定测试框架、覆盖率目标之类的。

Agent 输出

Agents 通常会给你一个完整的执行过程:先告诉你它的计划,然后展示执行过程,最后给结果,有时候还会有验证报告。

这个流程挺好的,你能清楚看到它在做什么,也能随时打断调整。


配置 Agents

Agents 的行为是可以配置的。

全局配置

~/.claude/agents.json 里配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"agents": {
"test": {
"framework": "pytest",
"coverage_target": 80,
"auto_run": false
},
"refactor": {
"style_guide": "PEP 8",
"preserve_comments": true
}
}
}

这样所有项目都会用这个配置。

项目级配置

在项目的 .claude/agents.json 里覆盖全局配置:

1
2
3
4
5
6
7
8
{
"agents": {
"test": {
"framework": "jest",
"coverage_target": 90
}
}
}

我一般会在项目级配置,因为不同项目的要求不一样。比如前端项目用 Jest,后端项目用 pytest,这样更合理。


实用场景

说几个我常用的场景。

代码审查 Agent

1
claude --agent review "审查这次 PR 的所有更改"

它会获取所有更改文件、逐一审查、汇总问题、提供修复建议。我一般合并 PR 前都会用它过一遍,经常能发现一些问题。

文档生成 Agent

1
claude --agent docs "为整个项目生成 API 文档"

它会扫描所有源文件、提取函数签名、分析参数和返回值、生成 Markdown 文档。这个功能在接手文档缺失的项目时特别有用。

性能优化 Agent

1
claude --agent optimize "优化这个模块的性能"

它会分析代码瓶颈、提出优化方案、应用优化、验证性能提升。我试过几次,有时候能发现一些我自己没注意到的性能问题。


自定义 Agents

内置的 Agents 不够用?你可以自己创建。

简单的 Agent

1
2
3
4
5
6
7
8
cat > ~/.claude/agents/custom.json << 'EOF
{
"name": "database",
"description": "数据库操作助手",
"tools": ["sql", "schema", "migration"],
"instructions": "专注于数据库相关任务,包括查询优化、模式设计、迁移编写"
}
EOF

定义 Agent 技能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"name": "deploy",
"skills": [
{
"name": "deploy_app",
"description": "部署应用到生产环境",
"steps": [
"运行测试",
"构建应用",
"备份数据库",
"部署新版本",
"验证部署"
]
}
]
}

我试过创建几个自定义 Agent,感觉挺好用的。尤其是针对团队特有的工作流,自定义 Agent 能省不少事。


几个建议

用 Agents 处理这些任务比较合适:多步骤任务、需要验证的任务、重复性任务、复杂决策任务。

根据项目调整配置很重要:框架和工具、质量标准、验证要求,这些都要根据实际情况来。

始终要检查 Agent 的输出、运行相关测试、验证功能正确性。别完全依赖它,它只是助手,最终责任还在你。


高级玩法

Agent 链接

1
2
3
# 先探索,再重构
claude --agent explore "找出需要重构的模块" | \
claude --agent refactor "重构这些模块"

这种链式操作特别实用,可以把多个 Agent 串起来完成复杂任务。

并行 Agents

1
2
3
4
# 同时运行多个 Agents
claude --agent test "生成测试" &
claude --agent docs "生成文档" &
wait

这样可以加快速度,尤其是任务之间没有依赖关系的时候。

Agent 模板

1
2
# 创建可重用的 Agent 模板
claude "创建一个用于 API 开发的 Agent 模板"

我一般会把常用的 Agent 配置保存成模板,下次直接拿来用。


我的使用经验

Agents 真的能省不少时间,但也要会用。我觉得关键是选对任务,不是所有事情都适合用 Agent。

复杂的多步骤任务用 Agent 特别合适,比如”为整个项目生成测试”、”重构这个模块”、”优化性能”。简单任务就没必要了,直接问 Claude 更快。

配置也很重要。根据项目调整 Agent 的参数,能让它更好地适应你的需求。比如测试框架、代码风格、覆盖率要求,这些都要配好。

验证输出是必须的。Agent 给的结果你一定要检查,测试一下,确保没问题再用。我见过有人完全依赖 Agent,结果出了问题都不知道。


下一步

Agents 的强大之处在于它能自主执行复杂任务。但要用好它,还需要掌握一些最佳实践。

第十章:最佳实践

下一章我会分享一些使用技巧、常见陷阱和优化建议,帮你更高效地使用 Claude Code。