> For the complete documentation index, see [llms.txt](https://levon.gitbook.io/agent-engineering/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://levon.gitbook.io/agent-engineering/00agent-gong-cheng-shi.md).

# 第 0 课——Agent 工程史

2023 年 3 月，Auto-GPT 从一份目标与工具设想的 Prompt，发展出连续执行命令的原型。早期代码会让模型选择下一步，再停下来等待人工授权。\[1]

名字里写着 Auto，执行前还得有人敲回车。模型选择动作，与程序允许动作发生，从一开始就是两件事。

这张地图聚焦大语言模型参与后的工程变化。它不罗列所有产品，而是看几个转折：模型能做什么了，运行它的程序又得补上什么。

## 1. 2022～2023：模型开始使用外部结果

2022 年的 ReAct 把推理、行动和观察交替组织起来：模型做出选择，通过外部行动获得信息，再据此调整下一步。\[2]

2023 年的 Toolformer 研究另一件事：通过训练，让模型学会何时调用哪个 API、传什么参数，以及怎样使用返回结果。\[3]

```
ReAct：怎样边行动、边观察、边调整
Toolformer：怎样通过训练学会使用工具
```

它们都推动了工具使用，但没有替应用定义完整的权限、状态保存和故障恢复系统。

Auto-GPT 的早期循环则把“模型继续选择动作”放进可运行程序。最早的提交只有 Prompt，不能当作完整实现；后来的命令循环已经包含逐步授权和结果回传。\[1]

2023 年 6 月，OpenAI 发布 Function Calling。开发者描述函数，模型返回结构化的名称与参数，应用再执行并回传结果。\[4] 程序可以更可靠地识别调用申请，却仍要判断工具能否执行、参数是否合适，以及执行以后怎样记录。

从这些工作可以看到两条相连的线：模型越来越会提出动作，外部程序仍然承担执行责任。

## 2. 2023～2024：代码任务需要看真实结果

Agent 能修改仓库以后，一段“修复完成”的回答不够用了。

2023 年出现的 SWE-bench 把真实仓库问题整理成评测任务：给出代码和 Issue，要求系统生成修复，再检查结果。\[5]

2024 年的 SWE-agent 则研究怎样让模型更有效地操作仓库。导航、编辑、执行测试，以及错误怎样返回，都会影响它下一步能做什么。这套交互界面被称为 Agent-Computer Interface。\[6]

```
SWE-bench：用什么任务检查能力
SWE-agent：参加这些任务的 Agent 系统
```

两者把一个问题变得具体：同一个模型，拿到不同工具和反馈，表现可能不同。只返回“失败”，与返回错误行、退出码和相关上下文，会给下一步判断提供不同条件。

因此，本书既讨论模型，也讨论模型之外的 Runtime。检查 Agent 是否进步，要看它完成了什么，而不仅是回答得像不像已经完成。

## 3. 任务变长：历史要选择，状态要能恢复

会话越来越长，全部历史不可能永远留在模型窗口里。2023 年的 MemGPT 借鉴分层内存，让系统在有限 Context 与外部存储之间管理信息。\[7] 后面上下文工程课程会继续处理这个问题：原始记录保留在哪里，本轮给模型哪些内容。

长任务还会等待用户、遇到失败或跨进程继续。2024 年 LangGraph v0.2 的 Checkpointer 将步骤状态保存下来，支持继续会话、错误恢复和人工介入。\[8]

保存状态仍然不等于确认外部动作。假设邮件已经发出，进程却在记录成功前崩溃：恢复点只能说明最后存到了哪里，不能证明邮件没有发，也不能决定是否再发一次。

所以，会话状态、上下文和执行回执需要分别处理。这些责任可以相互配合，不能靠一个“已恢复”的标志全部代替。

## 4. 2024～2025：连接逐渐标准化

同一份外部能力接入不同应用，如果每次都要重写连接代码，维护成本会不断增加。

2024 年发布的 MCP 提供共同协议，让 AI 应用连接工具和数据等外部能力。\[9] 2025 年发布的 A2A 则面向不同 Agent 系统之间的协作，支持发现能力、交换消息与处理任务。\[10]

```
接入外部工具和数据能力：MCP
与另一个 Agent 系统协作：A2A
```

两者可以配合使用。连接成功只证明通道可用，是否应该调用、权限如何限制、结果怎样保存，仍是应用的工作。它们也不是每个最小 Agent 都必须先接入的前置条件。

这里讨论的是协议解决的连接问题。具体字段与版本会继续变化，不需要在开始学习时全部记住。

## 5. 看见新能力，也看见新增的责任

这些项目并没有按一条统一路线依次发展。下面是为了理解本书而整理的工程关系，不是某个框架的升级清单：

| 新能力        | 随之要处理的问题         | 对应的工程工作                    |
| ---------- | ---------------- | -------------------------- |
| 模型申请工具     | 谁检查并执行申请？        | Tool Calling Loop、Runtime  |
| 连续推进任务     | 历史怎样保留，重启后从哪里继续？ | Session、Context、Checkpoint |
| 改变外部世界     | 动作成功但回执丢失，能否重做？  | 幂等、Ledger、对账               |
| 执行文件和命令操作  | 批准以后，最多能影响什么？    | 权限、Sandbox                 |
| 长时间运行并持续改动 | 失败在哪里，旧能力是否退步？   | Trace、Evaluation           |

右栏的名字会在后续课程逐个出现。这些办法有不少来自已有的 API、数据库、安全和测试实践；它们被放进 Agent 系统，是为了处理模型与真实动作连接后出现的具体问题。

以后看到一个新框架，先问它补上了哪种责任。如果只展示“会调用工具”，就继续检查停止条件、状态、权限和结果验证有没有落实。

本书从一个最小工具循环开始，逐步补齐这些能力。第 1 课先回答一个更早的问题：眼前这个任务，究竟需不需要 Agent？

## 资料与延伸阅读

1. [Auto-GPT：最早 Prompt 提交](https://github.com/Significant-Gravitas/AutoGPT/commit/b099adcb0830ab00c003749c2ae2cf0f5ec5524a)；[早期命令循环](https://github.com/Significant-Gravitas/AutoGPT/blob/68640a58640156398aea344da21683a5f7f27487/AutonomousAI/main.py)
2. [ReAct v3](https://arxiv.org/abs/2210.03629v3)
3. [Toolformer v1](https://arxiv.org/abs/2302.04761v1)
4. [OpenAI：2023 年 Function Calling 公告](https://openai.com/index/function-calling-and-other-api-updates/)
5. [SWE-bench v3](https://arxiv.org/abs/2310.06770v3)
6. [SWE-agent v3](https://arxiv.org/abs/2405.15793v3)
7. [MemGPT v2](https://arxiv.org/abs/2310.08560v2)
8. [LangGraph v0.2 公告](https://www.langchain.com/blog/langgraph-v0-2)
9. [MCP 发布公告](https://www.anthropic.com/news/model-context-protocol)
10. [A2A 发布公告](https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/)
11. [历史资料核验与后续版本索引](https://github.com/unix2dos/agent-engineering-book/tree/main/research/00-agent-engineering-history-sources.md)
12. 早期 Agent 理论背景：[Intelligent Agents: Theory and Practice](https://doi.org/10.1017/S0269888900008122)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://levon.gitbook.io/agent-engineering/00agent-gong-cheng-shi.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
