概念篇:先把 Agent 的边界、组成和关键名词讲清楚。

总结
广义上,智能体是一个能观察环境、采取行动,并根据结果继续调整的系统。
狭义上, Agent 开发语境里。一句话:
LLM Agent 是一个让 LLM 自主使用工具、在循环中完成任务的系统。
它会:
- 看当前情况。
- 判断下一步。
- 使用工具行动。
- 读取行动结果。
- 没做完就继续。
判断一个系统有没有智能体结构,看四件事:
- 有没有
目标。 - 能不能观察
环境。 - 能不能采取
行动。 行动结果会不会影响下一轮决定。
从空调理解“智能体”
智能体不是 LLM 出现后才有。自动空调就有最简单的智能体结构:
- 目标:把温度维持在 26°C。
- 环境:当前房间。
- 传感器:温度探头。
- 决策:高于 26°C 就制冷。
- 执行器:压缩机和风扇。
- 反馈:继续读取温度。
什么叫“改变环境”
Agent 说“我已经修改了文件”,不算改变环境,文件内容真的变了,才算。
例子:
- 调天气 API:Agent 多了一条真实天气观察。
- 修改代码:文件内容发生变化。
- 运行测试:环境产生新的通过或失败结果。
- 提交订单:业务系统多了一条订单记录。
能指出行动前后哪里不一样,才有可验证的环境变化。
Chatbot、Workflow 和 Agent
区别在于谁决定下一步。
| 形态 | 谁决定下一步 | 特点 |
|---|---|---|
| Chatbot | 人不断提问 | 主要停在文字里 |
| Workflow | 程序员提前写好 | 稳定,但只能走预设路径 |
| Agent | LLM 根据环境结果决定 | 灵活,但更难控制 |
Agent 的四个核心部分
只记四个部分:
- 大脑:Model
- 工作台:Context
- 手脚:Tools
- 运行系统:Runtime / Harness
四个部分怎样配合:
一轮任务怎样循环:
安全、记录和评测 都围绕这四部分工作。
Prompt、Context 和 Harness 是三个不同层次
把 Agent 工程问题分成 Prompt、Context 和 Harness 三层,其实也是近几年经过的三个阶段:
- Prompt Engineering 教会我们如何「
与 AI 对话」。 - Context Engineering 教会我们如何「
让 AI 理解」。 - Harness Engineering 教会我们如何「
让 AI 做事」。
| 层次 | 核心问题 | 在 Agent 里负责什么 |
|---|---|---|
| Prompt Engineering | 任务怎么说 | 目标、规则、示例和输出格式 |
| Context Engineering | 这一轮给模型看什么 | 检索、筛选、压缩并组装相关信息 |
| Harness Engineering | 整个系统怎样稳定跑 | 循环、工具执行、State、权限、重试、停止、Trace 和 Eval |
它们的关系是:
- Prompt 是 Context 的一部分。
- Context 由 Harness 在每一轮动态组装。
- Harness 还负责把模型的输出变成真实行动,再把结果放回
下一轮 Context。
Runtime 和 Harness 的边界没有完全统一。更严格地说:
- Runtime 偏向执行 Agent Loop 的核心程序。
- Harness 通常更宽,包含 Runtime,以及 Context 管理、工具、规则、沙箱、可观测性和评测等外围工程。
大脑:Model 决定下一步
LLM 结合当前 Context,主要产生两类结果:
- ① 生成内容。
- ② 生成工具调用意图。
LLM 只提出下一步。它不会因为输出了一段 JSON,就自动改变外部世界。
Context 决定模型看见什么

“在模型眼里,一切都是 Token” 需要加一个工程边界:
只有送进模型的内容会被编码成 Token。文件、数据库、API、工具执行和真实环境仍然在模型之外。
模型看到的是它们被转换后的文本或结构化表示。Runtime 负责把外部状态转成模型能看懂的 Context,也负责把模型的工具调用意图变成真实执行。
Context 是这一轮送给模型的全部信息:
- 用户目标。
- 系统规则。
- 当前计划。
- 相关文件。
- 工具定义。
- 最近的工具结果。
- 当前任务状态。
Context 太少,模型会猜。
Context 太多,重点会被淹没。
Context Engineering 的目标是:
用最少但足够的高信号信息,帮助模型做对下一步。
Context、State、Session 和 Memory
四个词容易混:
- Context Window:模型这一轮能看到的内容。
- State:任务现在进行到哪里。
- Session:任务跨轮次暂停和恢复的记录。
- Memory:筛选后,未来还能复用的信息。
Session 不等于 Context Window。
长任务可以换一个新的 Context Window,但继续使用原来的 State。
Instructions 和 Skills
Instructions 告诉 Agent:
- 目标是什么。
- 哪些事情不能做。
- 什么算完成。
- 遇到风险什么时候停。
Skill 像一本项目手册。
它把某类任务需要的规则、步骤、脚本和参考资料放在一起。
这种按需加载叫渐进式披露。
像看书:
- 先看目录。
- 找到相关章节。
- 真需要时再看附录。
手脚:Tools
Tools 让 Agent 接触真实环境。
常见工具:
- API。
- 数据库。
- 文件系统。
- 终端。
- 浏览器。
- 代码执行器。
- 计算机界面。
- 其它 Agent。
好的工具应该:
- 名字清楚。
- 参数清楚。
- 返回值清楚。
- 和其它工具边界清楚。
- 失败时给出可处理的错误。
Function Call:调用意图不等于执行
Function Call 可以理解成:
模型填写工具申请单,Runtime 审核并执行。
MCP:工具的通用连接方式
MCP 可以先理解成 Agent 世界的通用插座。
MCP 不负责思考。也不负责 Agent Loop。
它只解决工具、资料和 Agent 应用怎样连接。
工具很多时,按需发现:
Runtime / Harness:真正把系统跑起来
Runtime 是普通程序。
它负责:
- 组装 Context。
- 调用模型。
- 执行工具。
- 回填
Observation。 - 保存 State。
- 处理错误和重试。
- 限制轮次、时间和成本。
- 暂停、恢复和停止。
// 循环
while (turns < maxTurns) {
const next = await model(buildContext(state), tools);
if (next.type === "final") {
if (acceptancePassed(state)) return next.output;
state.events.push("验收未通过,拒绝结束");
turns += 1;
continue;
}
if (next.type === "tool_call") {
const result = await runTool(next.toolCall);
state.events.push(result);
}
turns += 1;
}LLM 是大脑。
Runtime 才是把大脑、手脚和现场串起来的身体。
Guardrails、Sandbox 和 Human-in-the-loop
Agent 能操作文件、运行代码、访问网络,所以不能让它想干什么就干什么。
- Guardrails(护栏):给 Agent 定规矩。
- 检查它收到的任务、准备执行的操作和最终回答,发现不安全就拦住。
- Sandbox(沙箱):给 Agent 圈定活动范围。
- 只允许它访问指定文件、网络和程序,范围之外想碰也碰不到。
- Human-in-the-loop(人工确认):遇到高风险操作,先停下来问人。
- 比如删除文件、发送邮件、花钱之前,必须由人批准。
一句话记住:
Guardrails 是定规矩,Sandbox 是锁范围,Human-in-the-loop 是关键操作让人签字。
适合自动执行:
- 搜索代码。
- 读取文件。
- 运行测试。
通常需要确认: - 部署生产环境。
- 删除数据。
- 发送消息。
- 支付。
- 修改权限。
Trace 和 Eval
Agent 说“做完了”,不能只听它自己说,还要检查过程和结果。
可以把 Agent 当成一个会调用工具的函数:
Agent = 一个会自主执行任务的函数
Trace = 运行日志 / 调用链
Eval = 自动化测试
Output = 函数返回值
Outcome = 数据库、文件和系统的真实状态比如 Agent 返回:
{
"status": "success",
"message": "用户创建成功"
}这只是 Output。还要检查数据库里是否真的多了这个用户,这才是 Outcome。
- Trace:查看完整调用链。Agent 调用了什么工具、传了什么参数、哪里报错、重试了几次。
- Eval:像单元测试和集成测试。给 Agent 固定输入,再验证返回结果和系统状态。
- Output:Agent 的返回值,类似接口返回
200 OK。 - Outcome:真实副作用,例如文件创建了、数据库更新了、邮件确实发出了。
最形象的一句话:
Agent 说“完成”,就像接口返回了
200 OK;Trace 用来查日志,Eval 用来跑测试,Outcome 用来确认数据库和系统真的变了。
Single Agent 和 Multi-Agent
先做 Single Agent。
只有这些情况出现时,才考虑 Multi-Agent:
- 子任务能独立。
- 不同任务需要不同 Context 或工具。
- 并行能明显节省时间。
- 一个 Agent 的工具和规则已经互相干扰。
多 Agent 会增加通信、成本和 Context 丢失。
数量多,不代表能力强。
附录:RAG、RPA、CoT
RAG:先找资料,再回答
RAG 是检索增强生成。
RAG 是获取 Context 的一种方式。
它不是完整 Agent。
RPA:没有 API 时操作界面
RPA 是机器人流程自动化。
RPA 是一种工具。
界面变化就可能失败,所以必须回读。
CoT:模型怎样想
CoT 是思维链。
它指模型在得到答案前进行多步推理。
CoT 关注“怎样推理”。
Agent Loop 关注“怎样持续行动并根据结果调整”。
工程上不应依赖模型吐出完整的内部思维过程。保留简短理由、计划、工具调用和结果就够了。
最后压成一张图
记住五句话:
- LLM Agent 是 LLM 自主使用工具的循环。
- LLM 只决定下一步,Runtime 才真正执行。
- Context 要少而准。
- 工具调用意图不等于执行成功。
- 模型说“完成”不算,环境通过验收才算。
考考你
1. Agent 和普通 LLM 调用有什么区别?
- 普通调用通常输入一次、输出一次。
- Agent 还有 Tools、State 和循环。
Observation会影响下一步决定。
2. Workflow 和 Agent 怎么选择?
- 固定步骤优先 Workflow。
- 路径未知、需要根据环境反馈决定下一步时使用 Agent。
- 没有工具和验收条件时,先不要做 Agent。
3. Context、State 和 Session 有什么区别?
- Context 是这一轮给模型的信息。
- State 是任务当前进度。
- Session 让任务可以暂停和恢复。
4. Function Call 为什么不等于工具执行?
- 模型只生成工具名和参数。
- Runtime 还要校验、执行并读取真实结果。
5. Runtime / Harness 负责什么?
- 组织 Context、调用模型、执行工具、保存 State。
- 处理错误、轮次、成本、暂停、恢复和停止。
6. 怎样避免虚假完成?
- 预先定义验收条件。
- 保存 Trace。
- 检查真实环境 Outcome。
- 用 Eval 做回归。
7. Prompt Engineering、Context Engineering 和 Harness Engineering 的边界是什么?
- Prompt Engineering 决定任务怎么说。
- Context Engineering 决定这一轮给模型看什么。
- Harness Engineering 负责整个系统怎样组装、执行、记录和停止。
- Prompt 是 Context 的一部分,Context 由 Harness 动态组装。
参考
- Anthropic:Building effective agents
- 区分 Workflow 和 Agent;先用最简单能工作的方案。
- Anthropic:Effective context engineering for AI agents
- Context 要少而准;长任务使用压缩、结构化笔记和按需检索。
- Anthropic:Agent Skills
- Skill 使用渐进式披露。
- OpenAI Agents SDK
- Agent Loop、Tools、Sessions、HITL 和 Tracing。
- OpenAI Agents SDK:Running agents
- Tool Call、Handoff 和 Final Output 怎样驱动循环。
- OpenAI Agents SDK:Human-in-the-loop
- 高风险工具怎样暂停、保存 State 和恢复。
- OpenAI:Harness engineering
- Harness 不只是模型调用,还包括 Agent 能理解的环境、工具、约束、自动验证、可观测性和反馈回路。
- Anthropic:Demystifying evals for AI agents
- Eval 应检查 Trace 和环境 Outcome。
- MCP:Client best practices
- 工具多时按“目录 → 查看定义 → 执行”发现。
- 产品炼丹指北:看透 AI Agent 本质:Prompt、Context、Harness 的底层逻辑演进
- 用 Prompt、Context 和 Harness 三层区分 Agent 工程问题。
- 很早以前的个人文章
- Agent 是什么(2024 年版本)
- 当时最值得留下的是:
给出它任务,它能帮你搞定,它就是 Agent。
是否可以把写这篇文章的过程,查阅什么资料,如何排版,如何发布,直接搞成个 Agent,来帮我完成这些事情,其实已经是可以的了。