最适合机器人的视频基座模型:被中国团队开源了
2026-07-10
2026-07-12 0
打开任何一个对话式 AI 产品,你问一句,它答一句——这已经成了我们使用 AI 的肌肉记忆。

比如你对它说:“帮我写一封邮件。”它几乎立刻就能输出一封格式工整的邮件正文,然后……就结束了。
这就是普通 AI 对话的典型模式:一问一答,输出即终止。
笔记中把这总结为:问答机器,输出一次,没有后续。
这种模式在处理单轮、封闭式任务时非常高效。但当我们面对一个需要多步推理、信息搜集、动态决策的复杂任务时,这种“一次性输出”的范式就显得捉襟见肘了。
举个例子:如果我对普通 AI 说——“帮我调研三家竞品的最新动态,然后写一份分析报告。”
它大概率会给出一个看起来像模像样的回答,但仔细一看,内容要么是基于训练数据的陈旧信息,要么就是泛泛而谈的通用描述。它不会主动去搜索,不会去查财报,不会去对比数据——因为它的“生命”在输出完成的那一刻就结束了。
这就是普通 AI 对话的天花板:它没有“持续运转”的能力。
笔记中给出了一个很关键的定义:
这个描述把 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 就想到 LangChain、AutoGPT 这些框架,但 ReAct 本质上是一种思维范式,是一种工作方法论,而不是某个具体的代码库。
笔记中给出了一个很生动的场景:
第一轮:
第二轮:
第三轮、第四轮……
这个循环过程,完美诠释了 ReAct 的工作机制。
笔记中有一个非常精辟的比喻:
这句话点出了 Agent 能力的本质——思考很重要,但行动力更重要。
一个 Agent 再聪明,如果它不能调用外部工具,它的能力就被限制在了“文本生成”这个范畴里。而一旦它拥有了工具,它的能力边界就被大大扩展了。
笔记中列举了几类常见的工具:
| 工具类型 | 作用 | 典型场景 |
|---|---|---|
| 搜索工具 | 获取实时信息 | 查询最新新闻、政策、动态 |
| 代码执行器 | 运行代码并查看结果 | 数据分析、算法验证 |
| 文件读写 I/O | 读取和写入文件 | 处理文档、生成报告 |
| 浏览器操控 | 打开网页、点击、提交表单 | 自动化操作、数据采集 |
| API 调用 | 对接外部服务 | 调用数据库、第三方接口 |
笔记中还特别提到了一个观点:
这句话其实也给出了一个评判 Agent 产品优劣的实用标准——不要只看它的“脑子”有多聪明,更要看它的“手”能伸多远。
聊完了 Agent 的工作方式,再来看笔记中关于 Promise 的部分,会发现一个有趣的映射关系。
笔记中关于 Promise 的记录很简短:
这看起来是在讲 JavaScript 的异步编程,但如果我们把它放到 Agent 的语境下重新审视,会发现一些有意思的相通之处。
Promise 一旦从 pending 变为 fulfilled 或 rejected,就不可再变。这其实对应了 Agent 执行任务的一个特性:一个任务要么完成,要么失败,状态是确定的。
Agent 在循环执行 ReAct 的过程中,会在某个节点判断“任务完成”或“任务失败”(比如超出循环次数、达到 token 上限、连续得到相同结果等),然后终止循环。这和 Promise 的状态固化在逻辑上是同构的。
笔记中提到:
这是 Promise.all 的经典行为——快速失败。在 Agent 的多工具协作场景中,这种逻辑其实也经常出现:
比如 Agent 要完成一个任务需要依次调用三个工具——查询数据库、调用 API、生成报告。如果第二步的 API 调用失败了,那么第三步生成报告也就失去了意义。此时 Agent 就需要“快速失败”,而不是继续执行无意义的后续步骤。
笔记中附了一份完整的 HTML 代码,我们逐段来看,结合注释深入理解。
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:获取一句随机的一言(hitokoto)getRatp:获取一张随机图片它们都被定义为 async 函数,返回值是一个 Promise——这正好对应了笔记中关于 Promise 的笔记。
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 数组顺序一致。
注释中还提供了一种更简洁的链式写法:
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 的工作方式是“非阻塞”的:它发起一个工具调用后,不会“傻等”,而是会去处理其他事情,或者在循环中继续评估状态。这就像 Promise.all 并发执行多个异步任务一样——充分利用时间,提升效率。
Agent 的每一轮 ReAct 循环,都是基于当前状态(观察结果)来决定下一步动作。这类似于 Promise 的状态机:pending → fulfilled / rejected,状态的每一次变化都触发了后续的行为(.then() 或 .catch())。
Agent 的工具可以任意组合,就像 Promise 可以链式调用一样。一个 Agent 可以调用搜索工具 → 分析工具 → 报告生成工具,每个工具的输出成为下一个工具的输入。这种管道式组合的能力,是 Agent 和 Promise 共同的魅力所在。
回顾整篇笔记,我们可以提炼出一条清晰的逻辑线:
笔记中最让我印象深刻的一句话是:
这句话其实揭示了一个更深层的趋势:AI 的“思考力”正在快速普及,但“行动力”才是未来竞争的关键。
一个 AI 能写出多好的文章、生成多美的图片,这些固然重要——但更重要的,是它能否真正帮我们完成一个任务,能否自主地调用工具、获取信息、做出决策、交付结果。
从“问答机器”到“智能体”,本质上是 AI 从“大脑”到“完整的行动系统”的进化。而这种进化的核心,就是笔记中反复强调的——持续运转的循环结构和不断扩展的工具能力。
如果你对 AI Agent 的技术实现、工具生态或异步编程模式感兴趣,欢迎在评论区留言,我们一起探讨。