从零学习 AI Agent:六阶段实战路线
按六个阶段从零学习 AI agent:先理解模型与工具调用,再亲手编写约 30 行循环,逐步加入工具、记忆、循环设计和安全,每阶段都有可构建的小项目。
六个阶段的学习路径
要从零开始学习 AI agent,请按顺序完成六个阶段:概念、第一次循环、工具、记忆、循环设计和安全。每个阶段都需要亲手构建一个东西。跳过前面的阶段是学习停滞的最常见原因,因为框架会隐藏你真正需要理解的部分。
AI agent 是围绕语言模型运行的循环,并且允许语言模型调用工具。这句话就是整个主题。后面的内容都在说明循环包含哪些部分、工具可能访问哪些对象,以及循环出错时如何停止。如果你能向别人解释这个循环,就说明你已经掌握了核心概念。如果你只能说出各种框架的名称,就还没有掌握。
下面的计划假设你通过构建来学习。阅读一个阶段,构建其中的小项目,然后故意让它出错,再继续下一个阶段。只读过但没有实际完成的阶段,就不算完成。
进入阶段 1 前的实际要求
实际的前置要求很少,比大多数课程页面列出的要求还少。
- 您能编写和阅读 Python 或 TypeScript,水平相当于能完成一个 50 行脚本。
- 您熟悉 Linux shell:安装软件包、编辑文件、读取日志。
- 您拥有托管模型的 API key,或者有一台能够运行本地模型的机器。
要求就这些。您不需要机器学习理论,也不需要训练过模型。智能体开发不涉及梯度或训练数据。只有在您决定自行运行模型时,显卡才有用;这是另一项技能,之后可以通过在 VPS 上托管 Ollama 以自行运行 LLM学习。
人们低估了 shell 这一部分的重要性。智能体经常因权限、路径、环境变量以及静默退出的进程而失败。如果看到有关 PATH 或文件模式的堆栈跟踪就想关闭终端,请先花一个周末学习 Linux 基础知识。这会帮您在之后节省一个月。
阶段 1:什么是代理,以及它不是什么
先发起一次 API 调用,不要使用循环。发送提示词,打印回复,并查看响应中的令牌数量。现在,您已经理解了成本单位和延迟单位。
然后学习工具调用。这是整个领域中唯一真正的新概念。您需要向模型描述一个函数,包括函数名称、说明以及用于定义输入的 JSON(JavaScript 对象表示法)架构。模型不会执行任何操作。它会返回一个结构化请求:使用这些参数调用 run_command。您的代码执行该函数,将输出作为消息发回,然后再次请求模型。模型负责读取文本和生成文本,是一个规划器。真正能够执行操作的是您的代码。
聊天机器人返回一次回复后就结束。代理会重复这一交互,直到模型不再请求调用工具。这种重复就是两者的全部区别,也解释了它们为何具有不同的故障模式。聊天机器人可能只给出一次错误答案。代理则可能根据错误答案连续执行多次操作,直到有人发现问题。
阶段 2:自己编写一次循环
不要从框架开始。先编写大约 30 行 Python,让这个程序的结构由你自己掌握。
sudo apt update && sudo apt install -y python3-venv
python3 -m venv ~/agent
source ~/agent/bin/activate
pip install anthropic
export ANTHROPIC_API_KEY=your-key-hereimport subprocess
import anthropic
client = anthropic.Anthropic()
tools = [{
"name": "run_command",
"description": "Run a read only shell command and return its output.",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string"}},
"required": ["command"],
},
}]
messages = [{"role": "user", "content": "How much disk space is free here?"}]
while True:
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
tools=tools,
messages=messages,
)
if response.stop_reason != "tool_use":
break
messages.append({"role": "assistant", "content": response.content})
results = []
for block in response.content:
if block.type == "tool_use":
done = subprocess.run(
block.input["command"], shell=True,
capture_output=True, text=True, timeout=10,
)
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": done.stdout or done.stderr,
})
messages.append({"role": "user", "content": results})
print(next(b.text for b in response.content if b.type == "text"))使用 python3 agent.py 运行。正常运行时,程序会输出一个段落,列出你的文件系统及其可用空间。这是因为模型请求了 df -h,你的代码执行了该命令,第二轮处理又将这张表转换成了句子。如果没有任何输出,说明循环在收到文本块之前就结束了。在循环中加入 print(response.stop_reason),观察这些值如何变化。
现在有意制造一个错误。删除 tool_use_id 行并查看错误信息。API 会拒绝没有匹配 id 的工具结果,这是初学者最常见的错误。提出一个需要执行两个命令的问题,观察循环运行两次。提出一个无法完成的问题,观察它是放弃,还是无限循环。
需要注意这个示例中的一个问题。它通过 shell=True 将模型输出直接传递给 shell。这在可以重装的临时机器上可以接受,但在其他环境中都不应这样做。阶段 6 会修复这个问题。循环背后的概念将在在 VPS 上构建自己的 AI agent中详细介绍。
第 3 阶段:代理尚未具备的工具
您的 run_command 工具可以正常工作,但真正的代理还需要访问外部系统的工具,例如工单系统、数据库和代码仓库。为每个服务、每个代理分别编写专用包装器无法扩展。
Model Context Protocol(MCP)是业界最终采用的方案。MCP 服务器通过标准传输协议公开一组工具,任何支持 MCP 的代理都可以直接使用,无需自定义集成代码。参考文件系统服务器只需运行一条命令:
npx -y @modelcontextprotocol/server-filesystem /home/you/projects这要求已安装 Node,并且目录参数是服务器唯一会访问的路径。这是该安全模型的简化示例:边界由服务器决定,而不是由模型决定。将客户端指向该服务器后,代理即可获得文件读取和写入能力,而这些功能无需由您自行编写。如何在服务账户下正确运行这些服务器,以及如何选择传输方式,请参阅在 VPS 上为 AI 编程代理运行 MCP 服务器。
本阶段的要点是,工具设计才是真正的工作。描述含糊会让模型自行猜测。工具返回四万字符会污染上下文窗口。能够删除内容的工具最终一定会删除内容。
第 4 阶段:记忆,主要就是文件
初学者通常会在这里使用向量数据库。至少现在不要这样做。
Agent 在两次调用之间不会保留记忆。每次调用时,您都要重新发送完整对话。这就是为什么长会话的每轮成本高于短会话。因此,记忆分为两个问题。第一个问题是当前上下文窗口能容纳哪些内容。您可以通过摘要、裁剪旧的工具输出,以及缓存提示词的稳定前缀来管理它,这样无需为稳定前缀支付全部费用。第二个问题是重启后仍能保留哪些内容,这属于存储问题。
对于第二个问题,在几乎所有第一个项目中,一个 Agent 可以读写的普通 Markdown 文件都比向量数据库更合适。为它提供一个文件,说明文件格式,并要求它在开始前读取该文件,在获知新信息后更新该文件。这样可以获得大部分收益,还能直接打开文件,查看 Agent 当前的认知。只有当笔记无法继续放入上下文窗口时,才应使用嵌入和检索。不要提前使用。
第 5 阶段:循环就是产品
现在,您已经可以构建一个在您观察时能够正常工作的代理。第 5 阶段要求它在无人看管时也能正常工作。
有 4 个问题决定了无人值守代理是否可以安全地独立运行。什么会触发它,确保它不会无缘无故运行。它运行在哪个边界内,确保错误的影响范围有限。如何验证结果,因为自行批改作业的代理总会判定自己通过。什么预算会停止它,可以按令牌数或实际运行时间计算。在 循环工程,以及该定义涵盖的内容 中,介绍了如何有意识地设计这 4 项。
练习:使用第 2 阶段的代理,为它分配一个需要 4 或 5 个步骤的任务,并添加硬性迭代上限。然后移除该上限,观察无界循环如何增加令牌费用。先用较小的预算执行一次,避免在较大预算下意外运行无界循环。
阶段 6:安全性、密钥和成本
此阶段不是可选项。之所以最后处理,只是因为在构建出可运行的系统之前,您无法真正感受到其中的风险。
让 agent 使用独立的非特权用户运行,绝不要使用 root,也不要使用您自己的账户。这样即使发生问题,影响范围也只是一 个目录,而不是整台机器。不要让模型接触凭据,因为上下文窗口中的任何内容都可能通过工具调用被原样输出。应按让密钥远离您的 AI agent中的说明,通过 helper 使用作用域受限且短期有效的令牌。为支出设置硬上限,因为无人监控的循环会为每次迭代计费;在始终运行的 VPS 上控制 AI agent 成本介绍了保持成本可控的上限和批处理方法。
成本需要一个具体数字。截至 2026 年 7 月,Claude Opus 5 的输入费用为每百万个 token $5,输出费用为每百万个 token $25。一个频繁发送消息的 agent 如果不断重新发送增长中的对话,单个任务就可能处理数十万个 token。提示缓存和用于常规步骤的较小模型,对成本计算的影响远大于调整提示词。
提示注入也属于此阶段。如果您的 agent 会读取网页、问题跟踪系统或收件箱,那么编写这些文本的人也在向您的 agent 编写指令。防御措施不是设计更巧妙的系统提示词,而是设置边界。因为无法删除仓库的 agent,也不会被诱导去删除仓库。
应当遵循哪张路线图?
选择一套课程并完成,不要同时浅尝六套课程。Microsoft ai-agents-for-beginners 仓库是最完整的免费课程,包含十八课。截至 July 2026,该仓库已获得超过 70,000 个 stars,并且与上文的阶段清晰对应。用于汇总热门 agent 仓库的文章有助于了解现有哪些项目,但不适合作为课程大纲,因为按 stars 排序体现的是受欢迎程度,而不是教学顺序。
需要用于实践的真实项目时,coding agent 是最适合的首个目标:反馈即时,工具明确,错误也容易撤销。在 VPS 上运行 coding AI agent会完整演示这一过程。如果您更希望研究现成系统,而不是从零开始构建,最佳自托管 AI agent中的比较会展示多个项目如何以不同方式实现同一个循环。
需要多长时间?
对于已经具备编程经验的人来说,第 1 和第 2 阶段需要一个晚上。第 3 阶段需要一个周末,其中大部分时间用于了解工具,而不是研究协议。第 4 和第 5 阶段需要几周的实际使用时间,因为只有观察代理遗忘,才能了解它会忘记什么。第 6 阶段不会真正结束,因为每授予代理一项新能力,都需要重新审视这一阶段。
持续利用晚间时间投入两个月,大多数人就能构建出一个可运行、边界明确且有实际用途的代理。花了一年的人,通常是因为一直阅读,而没有开始构建。
FAQ
构建 AI agent 需要了解机器学习吗?
不需要。构建 agent 意味着通过 API 调用模型,并将模型的工具请求连接到实际函数。这属于常规应用程序开发。您无需接触训练、梯度或数据集。决定 agent 能否正常运行的技能包括工具的 schema 设计、错误处理和 Linux 权限。只有在您进一步微调模型时,机器学习理论才会变得重要;那是另一类工作,前置要求也不同。
我应该从 LangChain 或 CrewAI 这样的框架开始吗?
先手写一个原始循环,再采用框架。框架会用一个配置对象替代第 2 阶段中的 30 行代码。等您了解它替代了什么后,这样做很方便;在此之前则容易造成困惑。当 agent 行为异常时,您需要直接分析消息列表和工具结果。如果您从未见过这些内容,处理起来会困难得多。自己完成一个循环后,框架可以节省时间,而不是隐藏底层机制。
学习 AI agent 需要多少钱?
如果设置上限,费用低于大多数人的预期。一个托管 API key 和一台小型 VPS 就足以完成这 6 个阶段。真正的风险不是小时费率,而是无限循环在您睡觉时为每次迭代持续计费。第一天就为 API 账户设置严格的消费上限,为编写的每个循环添加迭代次数上限,并在常规步骤中使用更便宜的模型。在本地运行模型可以免除 token 费用,但会转而产生硬件要求。
AI agent 和 chatbot 有什么区别?
chatbot 只回答一次。agent 会重复执行一个循环:模型请求工具,您的代码运行工具,结果返回给模型,然后模型决定下一步操作。正是这种重复过程,让 agent 能够通过多个步骤完成任务;这也是 agent 需要设置 chatbot 不需要的边界的原因。chatbot 给出错误答案时,结果是一段错误的文字。agent 给出错误答案时,结果是一段错误的文字,以及它据此执行的操作。