🤖 什么是 AI Agent?
An AI agent 是一种以 large language model 作为推理引擎的 AI 系统,能够自主感知其环境、规划行动、使用工具,并执行多步任务以实现目标——无需在每一步都有人类输入。
与标准 LLM 聊天机器人的关键区别是 agency: 在世界中采取有影响力行动的能力。A chatbot 回答问题。An agent 预订航班、编写并部署代码、发送电子邮件、查询数据库,并对结果进行迭代——所有这些都能自主完成。
📊 自主级别(L0–L5)
并非所有“agents”都具有相同的自主性。Anthropic 的框架将其定义为从完全由人控制到完全自主的一个光谱:
| Level | Name | Description | Example |
|---|---|---|---|
| L0 | 无 AI | 完全由人控制的软件 | 传统脚本、表单 |
| L1 | AI-assisted | AI 提建议;人类决定并采取行动 | GitHub Copilot 自动补全 |
| L2 | AI-driven | AI 行动;人类在执行前审查 | AI 起草 PR;开发者批准 |
| L3 | Semi-autonomous | AI 执行并设置选择性 HITL 检查点 | 编码 agent 自动运行测试,合并前请求确认 |
| L4 | Autonomous | AI 端到端执行;人类监控 | Agent 在没有人工步骤的情况下部署完整功能 |
| L5 | 完全自主 | AI 自我指导、自我修正、自我改进 | 仅研究阶段;未投入生产使用 |
当今大多数生产级 agents 运行在 L2–L3。L4 存在于特定领域(自动化交易、数据管道)。L5 仍处于理论阶段,并引发重大的对齐问题。
🧩 AI Agent 的核心组件
每个 agent —— 无论使用何种框架或提供商 —— 都由四个基础组件构成:
1. 感知(输入)
代理如何观察其环境。包括用户消息、工具调用结果、文件内容、API 响应、传感器数据以及任何被送入上下文窗口的信息。代理能感知信息的质量直接限制其能做的事情。
2. 记忆
代理可以记住什么以及记忆时长:
| 记忆类型 | Scope | Implementation |
|---|---|---|
| In-context | 仅限当前对话 | 上下文窗口中的消息 |
| 外部(短期) | 会话或任务持续时间 | Redis、内存存储、草稿文件 |
| 外部(长期) | 跨会话持久化 | Vector database (RAG)、SQL、文件系统 |
| 模型权重 | 内置于模型中 | 训练数据、微调 |
3. 工具(行动)
代理可调用以影响世界的函数。工具设计至关重要 —— 定义良好的工具带有清晰的描述和 schema,使 LLM 能正确使用它们。设计不良的工具会导致误用和失败。
- 读取工具: search_web, read_file, query_database, get_weather
- 写入工具: write_file, send_email, create_pr, post_message
- 执行工具: run_code, call_api, deploy_service
- Agent 工具: spawn_subagent, ask_human (HITL), delegate_task
4. 规划与推理
代理决定接下来做什么的方式。现代代理使用一种或多种规划模式:
- ReAct (Reason + Act): 在同一上下文中交错推理与工具使用
- Chain-of-Thought: 在行动前进行显式的逐步推理
- Tree-of-Thought: 探索多条推理分支,选择最佳方案
- Plan-and-Execute: 先创建完整计划,然后执行每一步
🔁 Agent 循环
大多数 agent 在感知-规划-行动循环中运行,重复直到任务完成或达到停止条件:
- 观察: 读取当前状态(消息、工具结果、记忆)
- 计划: LLM 推理下一步要做什么(可能生成草稿或 CoT)
- 行动: 调用工具、生成输出或请求人工输入
- 更新: 接收工具结果,更新记忆,追加到上下文
- 评估: 检查目标是否达成;如果没有,返回第 1 步
停止条件对于防止无限循环至关重要。常见方法包括:最大迭代次数限制、显式的“任务完成”工具调用,以及在 N 步后的人类参与检查点。
🛠️ Agent 框架与 SDK
AI agent 生态系统发展迅速。以下是截至 2026 年 4 月的主要框架:
| Framework | Language | 最佳用途 | 模型支持 |
|---|---|---|---|
| LangChain / LangGraph | Python、JS | 复杂的多步管道、有状态图 | Any (OpenAI, Anthropic, Ollama…) |
| AutoGen (Microsoft) | Python | 多代理对话、代码执行 | OpenAI、Azure、本地模型 |
| CrewAI | Python | 基于角色的多代理团队 | OpenAI、Anthropic、本地 |
| Claude Agent SDK (Anthropic) | Python、TS | Claude-native agents with MCP | Claude only |
| OpenAI Agents SDK | Python | OpenAI-native agents with handoffs | OpenAI only |
| Semantic Kernel (Microsoft) | Python、C#、Java | 企业级、插件架构 | Any |
对于新项目,建议从轻量级方法开始(直接 API 调用 + function calling),再考虑采用重量级框架。框架带来便利,但也增加复杂性和锁定风险。
💼 真实世界用例
软件开发
- 能够读取失败测试、定位 bug 并提交 PR 的编码代理(Devin、SWE-agent)
- 检查安全漏洞和风格违规的代码审查代理
- 读取源代码并生成 API 文档的文档代理
研究与分析
- 深入研究代理,搜索网络、阅读论文并综合报告
- 监控新闻并生成摘要的竞争情报代理
- 编写并执行 SQL/Python 并解释结果的数据分析代理
业务自动化
- 能够端到端解决工单的客户支持代理(不仅仅是起草回复)
- 调研潜在客户、起草外联并安排会议的销售代理
- 对账交易并生成异常报告的财务代理
个人效率
- 起草回复、安排会议并管理收件箱的邮件代理
- 按需查找、阅读并总结论文的研究助理
- 连接不同工具而无需定制集成的工作流自动化
🚫 何时不应使用 Agents
Agents 很强大,但并不总是合适。当更简单的解决方案可行时使用 agent 会增加成本、延迟和不确定性。
| Situation | 更好的做法 |
|---|---|
| 具有清晰输入/输出的单步任务 | 直接 LLM API 调用 |
| 确定性数据转换 | 传统代码(无需 LLM) |
| 高风险不可逆的大规模操作 | 在人类辅助下的工作流(L1–L2) |
| 对延迟敏感的用户功能 | 直接 API 调用;agent 会增加往返开销 |
| 严格的监管/审计要求 | 在 agent 起草但需人工介入的场景 |
了解 agents 如何通过 Model Context Protocol (MCP)连接到外部工具,理解自主行动的安全风险,请参阅我们关于 Prompt Injection 的指南.