#agent #ai #react #plantegg
学习笔记:使用 CrewAI 复刻 Claude Code 级的 AI Agent
1. 什么是 CrewAI?
CrewAI 是一个用于编排协同式 AI Agent 的 Python 框架。如果说 LLM(大语言模型)是一个聪明的“大脑”,那么 CrewAI 就是一个**“项目经理”**。
核心四元素:
-
Role (角色):定义 Agent 的身份(如:DBA 专家、技术作家)。
-
Task (任务):定义具体要做的事情。
-
Tools (工具):Agent 可以调用的技能(如:SSH 远程执行、数据库查询)。
-
Process (流程):规定 Agent 之间如何协作(顺序、层级等)。
2. 核心原理:ReAct 工作模式
文章中复刻 Claude Code 的核心逻辑是 ReAct (Reasoning + Acting),这是目前 Agent 最主流的工作方式。
ReAct 循环公式:
Thought (思考) → Action (行动) → Observation (观察) → Thought (再思考)
-
Thought:模型根据用户问题,思考当前需要什么信息。
-
Action:模型决定调用哪一个工具(Tool)以及参数是什么。
-
Observation:Agent 执行工具并拿到结果(如 Linux 报错信息或 SQL 查询结果)。
-
Next Thought:模型根据反馈结果,决定是继续调用工具,还是输出最终答案。
3. Agent 开发三要素
开发一个功能强大的 Agent,本质上是在配置以下三个部分:
| 要素 | 作用 | 示例 |
|---|---|---|
| LLM (大脑) | 提供推理和决策能力 | Claude 3.5 Sonnet, GPT-4o |
| Tools (手脚) | 让模型能与现实世界交互 | ssh_tool, mysql_query_tool |
| Prompt (指令) | 定义角色、规则和约束 | “你是一个资深 DBA,只允许执行读操作” |
4. 实战:从 0 到 1 组建运维 Agent
根据参考文章,构建一个 MySQL 运维 Agent 的步骤如下:
Step 1: 定义自定义工具
工具是 Agent 的“手脚”。每个工具必须包含 description,因为模型是靠这段描述来判断何时使用该工具的。
Python
|
|
Step 2: 配置 Agent 与 Task
Python
|
|
5. 关键洞察(踩坑总结)
-
模型没有记忆:每一轮 ReAct 交互,Agent 都会把之前的对话历史、工具返回结果打包成一个巨大的 Prompt 重新发给模型。这意味着 Token 消耗会随轮数剧增。
-
模型不会执行工具:大模型只输出“指令字符串”,真正去执行 SSH 或 Python 代码的是 CrewAI 框架。
-
工具描述至关重要:如果 Agent 总是用错工具,通常是因为
description写得不清晰。 -
安全边界:在运维场景下,必须在工具的 Python 代码层做好拦截(如禁止
DROP,DELETE等操作),不能仅靠 Prompt 约束。
6. 进阶方向
-
接入更多数据源:将 Prometheus 监控、日志平台 API 封装为 Tool。
-
多 Agent 协作:一个 Agent 负责搜集数据,另一个 Agent 负责编写最终诊断报告。
-
Human-in-the-loop:在执行高风险 Action 前,让 Agent 停下来等待人类授权。
笔记来源:基于 plantegg 博客 与 CrewAI 官方文档整理。