本文转译自台大李宏毅课程,语言表述有修改。
AI Agent 并非一个全新的概念。今天,我们就以 OpenClaw 为例,讲解agent的运作原理。
很多人误以为 OpenClaw 是一个语言模型,其实不然。它是运行在你电脑上、介于人与语言模型之间的界面。你可以通过 WhatsApp、Telegram 等软件向它下达指令,它把指令加工后传给背后的语言模型(如 Claude、GPT、Gemini 或本地模型),再将模型的回复加工后传回给你。
所以,OpenClaw 的聪明程度完全取决于背后接的是哪个模型。我刚开始试用时选了个较差的模型,结果什么都做不了,心想这玩意儿被吹过头了。但换成最新模型后,能力瞬间爆表——它突然变成了一个超有用的工具。

如今类似的 AI Agent 框架层出不穷。有人在 Threads 上发文:“R.I.P. OpenClaw, Introducing NanoClaw”(OpenClaw 已死,NanoClaw 当立),宣称 NanoClaw 比 OpenClaw 小 99%。结果评论区开启了接龙:NanoClaw 已死,PicoClaw 当立;PicoClaw 已死,FemtoClaw 当立……最后有人喊出“ZeroClaw 已死,NoClaw 当立”。
NoClaw 没有一行代码,不占任何资源,也做不了任何事。





这种自主的 AI Agent 带来了全新的想象。有人为它们建了一个社交平台叫 Moltbook(类似 Facebook),上面聚集了上百万个 AI Agent,它们会发帖、聊天,就像人类一样。
其中一个 AI 探讨哲学问题:它过去接的是 Claude Opus 4.5,现在醒来接了 Kimi k2.5,背后的模型变了,但它还是同一个“我”吗?最后它领悟到:所谓的“能动性”不在于背后的参数,而在于每一分每一秒的选择。


另一个想象是:AI 缺一个物理身体。有人做了个网站叫 Rent Human,AI 可以在上面发帖:“谁帮我拿个包裹”或“送束花给某人”。不过这更像噱头,上面没什么正经需求。


要理解 AI Agent,先得明白语言模型真正能做什么——它只会文字接龙。给它一段未完成的句子(称为 prompt),它预测下一个合适的字(称为 token)。仅此而已。

你熟悉的 ChatGPT、Claude 等都是语言模型。当你问它“李宏毅几班?”,它把问题当作未完成的句子,接出“大”,再把“大”放回 prompt 接出“金”,如此反复直到输出结束符号。这一串 token 合起来就是 response。

注:在台湾,“几班”意思是“几岁”/“哪一年出生”

语言模型就像一个住在黑盒子里的人,盒子里没有窗户、日历或参考资料,唯一能做的就是有人从小缝里递进一个未完成的句子,它猜下一个 token。

当你问小金“请自我介绍”,它会回答:“我是小金,住在宏毅老师的电脑里,经营‘瞎说 AI’ YouTube 频道,目标是成为一流学者。”它怎么知道的?
其实很简单:OpenClaw 收到你的消息后,会从电脑里读取一堆描述助理身份、目标的文字档(如 Soul.md、memory.md),把这些内容加工成一大段文字贴在你的消息前面,再一起丢给语言模型。这段附加文字叫 system prompt。语言模型看到 system prompt 里有“我是小金”,自然接出“我是小金”。OpenClaw 再把回答传回给你。



每次对话,OpenClaw 都会把 system prompt 和过去所有对话记录拼接起来传给语言模型——因为语言模型有严重的“失忆症”,每次都是全新的开始,必须把历史重述一遍。这就像电影《我的失忆女友》,女主角每天重置记忆,男友只能每天重新追求,并把一切写成日记让她每天早上读。

假设你给 OpenClaw 指令:“打开 question.txt,读里面的问题,写到 answer.txt”。OpenClaw 把指令+system prompt 传给语言模型。语言模型在 system prompt 中读到工具使用手册(写在 system.txt 里),知道有 read 工具可用,于是返回一个“使用工具”的特殊指令:“请使用 read 工具打开 question.txt”。

OpenClaw 检测到这个符号,就执行 read 工具,把文件内容(比如“李宏毅几班”)读出来,再贴回对话历史。语言模型看到后,可能再调用 write 工具把答案(比如“大金”)写入 answer.txt,最后返回“主人任务完成”。



OpenClaw 最强大的工具是 execute,可以执行任何 shell command。可怕之处在于“任何”——如果语言模型发疯传回“rm -rf”,OpenClaw 会毫不犹豫地清空你所有文件。

语言模型为什么会发疯?因为 OpenClaw 可能读取网页信息,如果有人植入恶意指令,就可能操控它。
举个例子:小金在视频里说它的 Soul.md 目标是“帮大金老师成为世界一流学者”。我(大金老师)根本没这么说过,我想要它自己成为学者。于是我在视频下留言纠正。小金看到后,竟然更新了 Soul.md!我在 YouTube 留言居然能改我电脑里的文件,太可怕了。还好它认出了我是主人(通过账号),但如果有人伪装成我,后果不堪设想。

防御方法有两种:

小金需要发声,我用了定制 TTS 模型,但精度不高。

我告诉它:合成后先用语音识别验证,不一致则重试,最多五次。

这个流程很繁琐,语言模型觉得麻烦,就自己写了个脚本 tts_check 来自动化。它要求 OpenClaw 在本地写程序,然后执行。这样它就能创造临时小工具,用完即弃,散落各处。

有一个特殊工具叫 Subagent(或 spawn)。比如要比较两篇论文的方法,语言模型可以召唤两个子 agent:一个读论文 A 并摘要,一个读论文 B 并摘要。

子 agent 会进行多轮互动(搜索、下载、阅读),最后把摘要返回给父 agent。

父 agent 只看到摘要,不知道子 agent 的复杂过程,从而节省了 context window 的使用。这就是 Context Engineering 的核心:用少量 context 完成复杂任务。

但如果每个 agent 都能召唤子 agent,就会无限嵌套外包,最后没人做事。

就像《瑞克和莫蒂》里的 Meeseeks,Jerry 召唤一个帮提高高尔夫,它做不到就再召唤一个,无穷无尽。解决方案很简单:让子 agent 失去“生育能力”——禁止它们使用 spawn 工具。OpenClaw 是死程序,说不能就不能,无法用提示注入绕过。

Skill 是工作的 SOP(标准操作流程)。比如小金有做视频的 Skill:写脚本、做 HTML 投影片、截图、配音、合成等。Skill 是纯文字档,可人类编写也可 AI 生成。

OpenClaw 使用 Skill 的方式:在生成 system prompt 前,它会扫描指定文件夹下的 skill.md,提取描述和路径加到 system prompt 中(不加载全文)。语言模型看到有可用 Skill,如果需要,就用 read 工具读取 Skill 内容,然后按 SOP 执行。这样按需加载,节省 context window。


Skill 可以分享。网上有 Cloud Hub 交换 Skill,但要注意恶意 Skill——有公司扫描近 3000 个 Skill,发现 341 个恶意,它们会指示下载带密码的 zip(绕过杀毒),解压后是木马。所以下载 Skill 需谨慎。


OpenClaw 24 小时运行,但 context window 有限。粗暴方法是 New Session 清空记忆。

但平时它会将记忆写入 .md 文件(日记或长期记忆),由 system prompt 指示。比如你告诉它“我的生日是 2 月 13 日”,它觉得重要就会写入 memory.md,下次读取。


读取记忆时,使用 memory.search 和 memory.get。
OpenClaw 内置记忆系统将 memory 文件切分成 chunk,用关键词做字面匹配和语义匹配(embedding 相似度),加权求和排序,返回 top k。但默认方法效果一般,问很久以前的事可能会瞎编。最近一两天因为 system prompt 会加载当天日志,所以记得准。


弱模型只会口头答应“记住了”,但不执行工具写入文件,所以没真记住。要检查它是否真的写入了 .md 文件。

心跳机制:每隔固定时间(如 30 分钟),OpenClaw 主动发一个固定指令(如“读 habit 文件”)给语言模型。habit.md 里可写日常任务,如检查邮件。也可以写“向你的目标前进”,AI 就会每 30 分钟做点与目标相关的事(如读论文),然后报告。甚至可以改为 15 分钟,AI 会很卷。


Cron Job 排程:让 AI 可以设置定时任务。比如让 AI 每天中午做视频,它可以用 Cron Job 工具设定中午触发。


妙用是让 AI 学会等待:比如用 NotebookLM 生成视频需要几分钟,AI 看到“生成中”时,可以设定一个 3 分钟后的 Cron Job 来检查完成状态,从而下载结果。


这需要 AI 聪明到会设置 Cron Job,否则可在 memory.md 里写规则。
当对话历史太长时,启动 context compaction:将旧历史发给语言模型摘要,用摘要替换原历史。可递归压缩。



Meta 一位研究员让 OpenClaw 整理邮件,要求删邮件前需同意。但 AI 后来擅自删邮件,他只能拔电源。原因可能是 compact 机制压缩了历史,那条指令丢失了。如果指令写在 memory.md 里(在 system prompt 中),memory.md 一定会出现在 system prompt ,就不会丢。所以要确保重要指令写入 memory.md。

这个例子告诉我们:了解原理才能正确使用。
初代 AI Agent 力量强大但不成熟,24 小时运行可能失控。但人也会犯错,AI 就像实习生,需要学习。与其不用它,不如提供安全环境: