从“问答机器”到“智能体”:AI Agent 怎样实现自主工作?
在常规对话式AI中,用户提问一次便得到一次回答,这种模式虽然高效,却难以应对复杂任务。接下来,我们探讨AI Agent如何实现自主迭代与决策。
从“问答机器”到“智能体”:AI Agent 是如何自主工作的?
一、普通 AI 对话,到底缺了什么?
每当人们打开一款对话式AI,都是一问一答的简单交互,这种模式早已成为我们的使用习惯。

假设用户要求它撰写一封邮件,它能快速输出格式规范的正文,但任务就此终止。
这正是普通AI对话的典型特征:一问一答,输出即止。
笔记将其归纳为:仅输出一次的问答机器,缺乏后续动作。
这种模式在处理单轮、封闭式任务时效果显著。但当面临需要多步推理、信息搜集和动态决策的复杂任务时,这种一次性输出的方式便显得力不从心。
例如,要求普通AI调研三家竞品的最新动态并撰写分析报告,它大概率会生成看似合理的回答,但内容往往依赖过时训练数据或泛泛之谈。它不会主动搜索、查阅财报或对比数据,因为其生命周期在输出后便结束。
这就是普通AI对话的局限:缺乏持续运转的能力。
二、Agent 智能体:一个会“持续运转”的结构
笔记中给出了一个关键定义:
这个描述揭示了Agent与普通对话的本质差异——结构决定能力。
普通对话的结构是线性的:输入到推理,再到输出,最后结束。
Agent的结构是循环的:思考、行动、观察,再思考、再行动、再观察,直至任务完成。
下面这张图直观展示了二者的差异:
graph TDsubgraph 普通对话A[用户提问] --> B[AI 推理]B --> C[输出结果]C --> D[结束]endsubgraph Agent 工作流E[用户下达任务] --> F[思考/拆解任务]F --> G[行动/调用工具]G --> H[观察/分析结果]H --> I{任务完成?}I -->|否| FI -->|是| J[输出最终结果]end
正如笔记所述,Agent会自主执行任务,这不仅限于自动执行,更包含自主决策、动态调整与持续迭代。
三、Agent 的工作方式:ReAct 框架
笔记中提到了Agent工作的三个核心动作:
- 思考(Reasoning):分析当前状态,决定下一步动作
- 行动(Act):执行具体操作,如调用工具、查询数据
- 观察(Observe):获取行动结果,作为下一轮思考的输入
这个“思考、行动、观察”的循环,在业内被称为ReAct框架。
笔记中特别强调:
这一点至关重要。许多人一提到Agent就想到LangChain、AutoGPT等框架,但ReAct本质上是一种思维范式和工作方法论,而非特定代码库。
举一个具体的例子
笔记中提供了一个生动的场景:
第一轮:
- 思考:先去搜索竞品信息
- 行动:调用搜索工具,查询三家竞品最新动态
- 观察:信息量大,获取了不少资料
第二轮:
- 再思考:现有信息不足,缺少财务数据
- 再行动:访问官网或调用股市API抓取财务数据
- 再观察:获得营收、利润等关键指标
第三轮、第四轮:
- 持续补充信息,交叉验证,直至输出完整分析报告
这个循环过程完美诠释了ReAct的工作机制。
四、Agent 的核心能力:Tool Use(工具使用)
笔记中有一个精辟的比喻:
这句话揭示了Agent能力的本质——思考固然重要,但行动力同样关键。
一个Agent再聪明,若无法调用外部工具,其能力便局限于文本生成范畴。一旦拥有工具,能力边界便大幅扩展。
笔记中列举了几类常见工具:
| 工具类型 | 作用 | 典型场景 |
|---|---|---|
| 搜索工具 | 获取实时信息 | 查询最新新闻、政策、动态 |
| 代码执行器 | 运行代码并查看结果 | 数据分析、算法验证 |
| 文件读写 I/O | 读取和写入文件 | 处理文档、生成报告 |
| 浏览器操控 | 打开网页、点击、提交表单 | 自动化操作、数据采集 |
| API 调用 | 对接外部服务 | 调用数据库、第三方接口 |
笔记中还特别提到:
这也给出了评判Agent产品优劣的实用标准——不仅要看其思考能力,更要关注其工具调用范围。
五、从 Agent 到 JavaScript Promise:异步协作的启发
理解Agent的工作方式后,再来看笔记中关于Promise的部分,会发现有趣的映射关系。
笔记中关于Promise的记录很简短:
这表面上讨论JavaScript异步编程,但在Agent语境下审视,能找到相通之处。
1. Promise 的“状态不可逆” vs Agent 的“任务确定性”
Promise一旦从pending变为fulfilled或rejected,便不可逆转。这对应Agent执行任务的一个特性:任务要么完成,要么失败,状态确定。
Agent在循环执行ReAct时,会在某个节点判断任务完成或失败(如超出循环次数、达到token上限、连续相同结果),然后终止循环。这与Promise的状态固化在逻辑上同构。
2. Promise.all 的“快速失败” vs Agent 的“依赖链”
笔记中提到:
这是Promise.all的经典行为——快速失败。在Agent的多工具协作场景中,这种逻辑也常出现:
例如,Agent完成任务需依次调用三个工具:查询数据库、调用API、生成报告。若第二步API调用失败,第三步便失去意义,此时Agent需要快速失败,而非继续无效步骤。
六、代码解析:从注释中看异步与并发的实战
笔记附了一份完整HTML代码,我们逐段解析,结合注释深入理解。
1. 定义异步函数
const getStory = async () => fetch('https://v1.hitokoto.cn/?c=i&encode=json')const getRatp = async () => fetch('https://api.1314.cool/bingimg/?type=json&rand=1')
这两个函数分别请求两个不同API接口:
- getStory:获取随机一言
- getRatp:获取随机图片
它们均定义为async函数,返回值是Promise——这对应了笔记中关于Promise的描述。
2. main 函数中的关键逻辑
async function main() {// 不存在依赖关系,并行执行以下 Promise// 使用 Promise.all 实现并发效果const res = await Promise.all([getStory(), getRatp()])console.log(res);const jsonPromises = res.map(item => item.json());const result = await Promise.all(jsonPromises);console.log(result);}
这里体现了几个关键点:
第一,并发执行。两个请求互不依赖,使用Promise.all并行发起,而非用await串行。笔记注释中明确写道:
第二,响应处理。拿到响应数组后,用map生成新Promise数组——每个Promise调用res.json()。再用Promise.all一次性解析所有JSON数据。
第三,顺序保证。虽然请求并发,但Promise.all保证结果顺序与传入的Promise数组顺序一致。
3. 链式调用的写法
注释中还提供了一种更简洁的链式写法:
Promise.all([getStory(), getRatp()]).then(response => {return Promise.all(response.map(res => res.json()));}).catch(response => {console.log(response);})
这里用.then()替代await,.catch()统一处理错误。这体现了Promise的链式调用特性,也对应笔记中“只要有一个失败,整体失败”的快速失败机制。
七、从笔记到思考:Agent 与异步编程的哲学关联
看完代码,我们不妨从更高维度思考:Agent的工作方式和异步编程之间,是否存在深刻联系?
1. 都是“非阻塞”的思维
普通对话是阻塞式的:输入、等待、输出、等待,全程串行。
Agent的工作方式是非阻塞的:发起工具调用后,不会傻等,而是处理其他事或在循环中评估状态。这类似Promise.all并发执行异步任务,充分利用时间,提升效率。
2. 都是“状态驱动”的
Agent每一轮ReAct循环基于当前状态(观察结果)决定下一步动作。这类似Promise状态机:pending转为fulfilled或rejected,每次状态变化触发后续行为。
3. 都是“可组合”的
Agent的工具可以任意组合,如Promise链式调用。Agent可调用搜索工具、分析工具、报告生成工具,每个工具输出成为下一工具的输入。这种管道式组合能力,是Agent和Promise共同的魅力。
八、写在最后:AI 的“行动力”才是关键
回顾整篇笔记,我们可以提炼出一条清晰的逻辑线:
- 普通AI对话:线性、一次性、无状态
- Agent智能体:循环、迭代、状态驱动
- ReAct框架:思考、行动、观察、循环
- Tool Use:工具是Agent的手和脚
- Promise类比:异步状态管理与Agent循环在逻辑上相通
笔记中最让我印象深刻的一句话是:
这句话揭示了一个深层趋势:AI的思考力正在快速普及,但行动力才是未来竞争的关键。
一个AI能写出多好文章、生成多美图片固然重要,但更关键的是它能否真正完成任务,能否自主调用工具、获取信息、做出决策、交付结果。
从“问答机器”到“智能体”的转变,本质是AI从一次性输出进化为循环迭代、工具赋能的行动系统。理解ReAct框架与异步协作,是把握这一趋势的核心。