determine.log
← 全部文章

0基础入门agent笔记

本文迁移自 知识星球原文,保留原始发布日期;作者统一署名 determine。


一、什么是 Agent?


一个最简单的理解:Agent = 大模型(LLM)+ 工具(Tools)+ 记忆(Memory)+ 规划(Planning)。

传统的大模型只能"聊天"——你问一句,它答一句。Agent 则更进一步,它能自己思考、自己调用工具(比如执行命令、读写文件、搜索网页),再根据工具返回的结果继续思考,直到完成任务。

打个比方:如果大模型是一个"大脑",Agent 就是给这个大脑装上了"手"和"脚",让它不只是想,还能做。


二、核心概念拆解


2.1 LLM(大语言模型)


Agent 的"大脑",负责理解任务、制定计划、做决策。目前主流的大模型有 GPT-4、Claude、Gemini 等。


2.2 Tools(工具)


Agent 的"手脚"。大模型本身只能生成文字,但通过工具调用(Tool Call / Function Call),它可以:

  1. 执行命令行指令
  2. 读写文件
  3. 搜索互联网
  4. 调用 API
  5. 操作数据库
  6. 等等...


2.3 Memory(记忆)


Agent 的"笔记本"。分为两种:

  1. 短期记忆:当前对话的上下文,Agent 记得刚才说了什么、做了什么
  2. 长期记忆:跨会话保存的关键信息,比如"上次我们用的是 Flask + SQLite",下次启动时还能想起来

记忆让 Agent 不会"每句话都像第一次见面"。


2.4 Planning(规划)


Agent 的"施工图纸"。面对复杂任务时,不是想到哪做到哪,而是先拆解成步骤,理清依赖关系,再按顺序执行。


三、ReAct 模式:Agent 的基本工作方式


ReAct = Reasoning(推理)+ Acting(行动)。这是最基础的 Agent 工作模式。


3.1 核心循环



Thought(思考)→ Action(行动)→ Observation(观察)→ Thought → ... → Final Answer



每一步:

  1. Thought:Agent 思考"我现在该做什么?"
  2. Action:调用工具执行具体操作
  3. Observation:获取工具返回的结果
  4. 根据结果决定下一步,直到任务完成
  5. Final Answer:给出最终答案


3.2 一个简单例子


用户说:"帮我查一下北京今天的天气。"


Thought: 我需要获取北京今天的天气,应该使用天气查询工具。
Action: 调用 get_weather(city="北京")
Observation: {"temperature": 25, "condition": "晴"}

Thought: 已经拿到了天气数据,可以回答用户了。
Final Answer: 北京今天晴,气温 25°C。



这就是最基础的 ReAct 循环。对于简单任务,ReAct 完全够用。


四、Plan-ReAct 模式:复杂任务的利器


当任务变得复杂(比如"搭建一个博客系统"),纯 ReAct 就容易出问题了——可能做到一半发现顺序错了,或者遗漏了关键步骤。

这时就需要 Plan-ReAct 模式:先规划,再执行。


4.1 三阶段流程


第一阶段:Planning(规划)
↓
第二阶段:Execution(执行)
↓
第三阶段:Summary(总结)




4.2 第一阶段:规划


Agent 拿到任务后,先不急着做,而是制定一个详细的执行计划。计划中每个步骤包含:

  1. step_id:步骤编号
  2. description:步骤描述
  3. tool:需要用到的工具
  4. dependencies:依赖的其他步骤(必须先完成哪些步骤才能做这个)

同时输出 reasoning(推理理由),解释为什么这样安排。


4.3 第二阶段:执行


按照计划,逐步执行。每完成一步就更新状态:


==================================================
执行计划:
✓ Step 1: 创建项目目录结构 [execute_command]
✓ Step 2: 编写后端依赖 requirements.txt [write_file]
⏳ Step 3: 编写后端数据库模型 [write_file] (依赖: 2)
⏳ Step 4: 编写后端 API 路由 [write_file] (依赖: 3)
⏳ Step 5: 编写前端首页 HTML [write_file] (依赖: 1)
⏳ Step 6: 编写前端 JavaScript [write_file] (依赖: 5)
⏳ Step 7: 初始化数据库并运行后端 [execute_command] (依赖: 4)
⏳ Step 8: 测试 API 接口 [execute_command] (依赖: 7)
==================================================

✓ 表示完成,⏳ 表示待执行。依赖关系确保不会出现"前端写完了发现后端还没启动"的尴尬。

执行过程中,Agent 会持续存储关键信息到记忆中。


4.4 第三阶段:总结


所有步骤完成后,Agent 输出最终结果,包括项目结构、功能验证、启动方式等。同时存储记忆供后续会话使用。


五、记忆系统详解


记忆是 Agent 区别于普通"一次性的 AI 对话"的关键特性。


5.1 记忆的结构



## 相关记忆
[2026-03-21T10:30:00] 创建了 Flask 项目,包含基础路由
[2026-03-21T14:20:00] 使用过 SQLAlchemy 做数据库操作
[2026-03-22T09:15:00] 写过用户认证功能(session-based)

每条记忆包含时间戳和内容,方便 Agent 在规划阶段参考历史经验。


5.2 什么时候存记忆?


  1. 创建/修改了重要文件
  2. 完成了关键步骤
  3. 学到了新的技术方案
  4. 遇到并解决了问题


5.3 记忆的价值


假设你在周二搭建了一个博客系统,周四想要加一个新功能。Agent 加载相关记忆后,立刻知道项目用了 Flask + SQLite,数据库模型是 User 和 Post,API 有哪些路由——不需要你重新解释一遍。


六、实战案例:搭建完整博客系统


下面通过一个完整的实战案例来理解 Plan-ReAct Agent 的运作方式。


6.1 任务描述


搭建一个博客系统,包含:
1. 后端 API(Flask + SQLite)
2. 前端页面(HTML + CSS + JS)
3. 用户登录功能
4. 文章 CRUD 操作
5. 运行测试确保能用




6.2 System Prompt(系统提示词)


Agent 启动时,会收到以下系统指令:


你是 Plan-ReAct Agent。

## 相关记忆
[2026-03-21T10:30:00] 创建了 Flask 项目,包含基础路由
[2026-03-21T14:20:00] 使用过 SQLAlchemy 做数据库操作
[2026-03-22T09:15:00] 写过用户认证功能(session-based)

## 模式
先制定完整计划,再按步骤执行。

## 执行格式
Thought: [思考]
Action: [工具调用]
Observation: [结果]

Remember: [关键信息]
Final Answer: [最终答案]




6.3 第一阶段:生成计划


Agent 的 LLM 看到任务后,输出了以下计划:

json

{
"plan": [
{
"step_id": 1,
"description": "创建项目目录结构(backend/frontend/static/templates)",
"tool": "execute_command",
"dependencies": []
},
{
"step_id": 2,
"description": "编写后端依赖 requirements.txt",
"tool": "write_file",
"dependencies": []
},
{
"step_id": 3,
"description": "编写后端数据库模型(User, Post)和配置",
"tool": "write_file",
"dependencies": [2]
},
{
"step_id": 4,
"description": "编写后端 API 路由(认证 + 文章 CRUD)",
"tool": "write_file",
"dependencies": [3]
},
{
"step_id": 5,
"description": "编写前端首页 HTML 和基础 CSS",
"tool": "write_file",
"dependencies": [1]
},
{
"step_id": 6,
"description": "编写前端 JavaScript(登录、文章列表、创建文章)",
"tool": "write_file",
"dependencies": [5]
},
{
"step_id": 7,
"description": "初始化数据库并运行后端服务",
"tool": "execute_command",
"dependencies": [4]
},
{
"step_id": 8,
"description": "测试 API 接口(创建用户、登录、CRUD 文章)",
"tool": "execute_command",
"dependencies": [7]
}
],
"reasoning": "这是一个标准的多层 Web 应用,需要前后端分离。先搭建后端 API 确保数据流正常,再构建前端界面。数据库模型是核心依赖,必须在路由之前完成。最后集成测试验证端到端功能。"
}



关键观察:

  1. Step 1 和 Step 2 没有依赖 → 可以并行执行
  2. Step 3 依赖 Step 2 → 先确定依赖包,再写模型代码
  3. Step 4 依赖 Step 3 → 先有数据模型,再写 API 路由
  4. Step 7 依赖 Step 4 → 后端代码写完才能启动服务
  5. Step 8 依赖 Step 7 → 服务启动了才能测试

这就是 Plan 模式的核心价值:理清"先做什么、后做什么、什么可以同时做"。


6.4 第二阶段:逐步执行

Step 1:创建目录结构


Thought: Step 1 是基础设施,创建清晰的目录结构便于后续开发。
backend 放 Python 代码,frontend 放静态文件。

Action: execute_command("mkdir -p blog/{backend,frontend/{static/{css,js},templates}}")

Observation: [done]

状态更新: ✓ Step 1




Step 2:编写依赖文件


Thought: Step 2 无依赖,可并行执行。需要 flask 核心、
sqlalchemy 做 ORM、session 做登录状态保持。

Action: write_file("blog/backend/requirements.txt", "flask==3.0.0\n...")

Observation: created: blog/backend/requirements.txt

记忆存储: [记忆+] 创建文件 blog/backend/requirements.txt




Step 3:编写数据库模型


Thought: Step 3 依赖 Step 2 完成。设计 User 和 Post 模型,一对多关系。

Action: write_file("blog/backend/models.py", "...")

关键设计:
- User 模型:id, username, password_hash, created_at
- Post 模型:id, title, content, user_id(外键关联用户)
- 一对多关系:一个用户有多篇文章

Observation: created: blog/backend/models.py

记忆存储: [记忆+] 创建博客系统数据库模型




Step 4:编写 API 路由


依赖 Step 3 完成后,编写完整的 RESTful API:

注册路由:POST /api/register
登录路由:POST /api/login
退出路由:POST /api/logout
文章列表:GET /api/posts
创建文章:POST /api/posts
更新文章:PUT /api/posts/<id>
删除文章:DELETE /api/posts/<id>

权限控制:
- 只有登录用户才能创建文章
- 用户只能修改/删除自己的文章




Step 5-6:编写前端页面


Step 5 和 Step 6 与后端开发可以并行进行。

前端结构:
- index.html:登录表单、文章列表、发布文章
- app.js: 前端交互逻辑(fetch API 调用后端)
- style.css:页面样式




Step 7:初始化数据库并运行


Action: pip install -r requirements.txt
Action: python -c "创建数据库表"

Observation: DB initialized

记忆存储: [记忆+] 博客系统数据库初始化完成




Step 8:测试 API


测试内容:
1. 注册新用户 → 201 Created ✓
2. 用户登录 → 200 OK ✓
3. 创建文章 → 201 Created ✓
4. 查询文章 → 返回文章列表 ✓




6.5 第三阶段:最终总结


成功搭建完整博客系统!

项目结构:
blog/
├── backend/
│ ├── requirements.txt # Flask + SQLAlchemy + Session
│ ├── models.py # User, Post 模型
│ └── app.py # RESTful API(认证 + CRUD)
└── frontend/
├── static/
│ ├── css/style.css
│ └── js/app.js # 前端交互逻辑
└── templates/
└── index.html # 主页面

功能验证:
✓ 用户注册/登录(session-based 认证)
✓ 文章增删改查(RESTful API)
✓ 权限控制(只能修改自己的文章)
✓ 前后端分离(CORS 支持)

启动方式:
cd blog/backend && python app.py




七、Plan vs 无 Plan:关键对比


做到一半发现目录没建临时建目录,可能路径混乱不会,Step 1 已确保目录存在测试时发现缺依赖回头补装,打断流程不会,Step 2 已安装依赖前端写完发现后端没跑先后端启动,再重新测试前端不会,Step 7 明确在后端完成后任务中断后恢复不知道做到哪了看 Plan 状态,精确恢复


Plan 模式的核心价值一句话总结:复杂任务的"施工图纸",确保不遗漏、顺序对、可追踪。



八、Agent 的核心执行格式


一个标准 Agent 的每一步都遵循这个格式:

Thought: [我现在的思考,为什么要做这个操作]

Action: [具体调用的工具和参数]
例如:write_file({"path": "...", "content": "..."})
execute_command({"command": "..."})

Observation: [工具返回的结果]

Remember: [需要存到记忆中的关键信息,可选]

Final Answer: [任务完成后的最终输出]




九、什么时候用哪种模式?

纯 ReAct 模式(不用 Plan)


适用场景:

  1. 简单的一问一答
  2. 只需要调用 1-2 个工具
  3. 不需要规划顺序的任务

例子:"帮我查一下今天天气"、"把这段文字翻译成英文"


Plan-ReAct 模式


适用场景:

  1. 多步骤复杂任务(3 步以上)
  2. 步骤之间有依赖关系
  3. 需要用到多种不同的工具
  4. 任务可能被中断,需要可恢复
  5. 需要确保不遗漏任何步骤

例子:"搭建一个博客系统"、"从零创建一个 React 项目并部署"、"分析这个数据集并生成报告"


十、总结:一张图看懂 Agent


┌──────────────────────────────────────────────────┐
│ Agent │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ │
│ │ LLM │ │ Tools │ │ Memory │ │
│ │ (大脑) │ │ (手脚) │ │ (笔记本) │ │
│ └────┬────┘ └────┬────┘ └───────┬─────────┘ │
│ │ │ │ │
│ └────────────┼───────────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ Planning │ │
│ │ (施工图纸) │ │
│ └────────┬───────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ Execution │ │
│ │ Thought→Action │ │
│ │ →Observation │ │
│ └────────┬───────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ Summary │ │
│ │ Final Answer │ │
│ └─────────────────┘ │
└──────────────────────────────────────────────────┘




十一、下一步学习建议


  1. 理解 Function Call:这是 Agent 调用工具的技术基础,建议了解 OpenAI 或 Anthropic 的 Function Calling / Tool Use API 文档
  2. 尝试简单 Agent:用 LangChain 或直接调用 API,写一个能调用 1-2 个工具的简单 Agent
  3. 学习 Prompt Engineering:Agent 的行为很大程度上取决于 System Prompt 的设计
  4. 进阶阅读:了解 Multi-Agent(多 Agent 协作)、RAG(检索增强生成)、Agentic Workflow 等概念


笔记整理时间:2026年8月

核心参考:Plan-ReAct Agent 实战——搭建博客系统


上一篇:找实习-简历编写指北

下一篇:PLUSCO 全过程面经

参与讨论 ↓

评论与交流

评论管理 ↗

登录后参与讨论。评论将公开展示,请勿填写隐私信息。回复通知可在评论账号中设置。

评论正在加载…

音乐 / MUSIC

专辑封面

平凡之路

朴树

0:000:00
点击播放试听Apple Music ↗
悬浮 · 可拖动
音量随机试听 · 完整版请使用歌曲入口