本文深入解析了李宏毅教授以OpenClaw为例讲解的AI Agent运作原理,详细阐述了System Prompt、工具调用、子代机制、记忆系统、心跳排程等核心技术,并强调了Context Engineering的关键作用,揭示了AI Agent与语言模型结合的机制与挑战。
台大李宏毅教授最近用了整堂课的时间,以 OpenClaw 这个开源 AI Agent 为例,把 AI Agent 背后的运作原理拆解得非常清楚。从 System Prompt 怎么构造人格,到工具调用、子代机制、记忆系统、心跳排程,再到 Context Engineering 这个核心概念,每个环节都用具体例子说明。
这篇文章把课程中最值得理解的技术要点整理出来,帮你真正搞懂 AI Agent 到底在干什么。
很多人以为 OpenClaw 是一个语言模型,这是最常见的误解。OpenClaw 本身没有任何智能,它就是跑在你电脑上的一段程序,充当人和语言模型之间的中间层。
当你通过 WhatsApp 给 OpenClaw 发一条消息,它做的事情是把你的消息加工一番,然后转发给后端的语言模型(可以是 Claude、GPT、Gemini 或本地模型),语言模型处理完再把回复传回 OpenClaw,OpenClaw 再转给你。
所以龙虾的聪明程度完全取决于背后接的模型。李宏毅一开始试用 OpenClaw 的时候选了一个比较差的模型,什么事都做不了,换成最新的模型之后能力直接爆表。OpenClaw 和 Claude Code 的能力其实大同小异,最大的区别就是 OpenClaw 装了 WhatsApp,用起来像在操控一个真正的个人助理。
现在类似的 AI Agent 框架越来越多,NanoClaw、PicoClaw、FemtoClaw 层出不穷,甚至有人开玩笑做了个 NoClaw,没有任何一行代码,也不占用任何资源,因为它什么也做不了。
当你问 OpenClaw 的 AI 助手"小金"做自我介绍的时候,它会告诉你它叫小金,住在宏毅老师的电脑里,日常工作是经营"瞎说 AI"这个 YouTube 频道,人生目标是成为世界一流的学者。
语言模型本身只会做文字接龙,它怎么知道这些?答案很简单,OpenClaw 在你的电脑上存了一堆 .md 文本文件,每次传消息给语言模型之前,它会把这些文件的内容整理成一大段文字,贴在你的消息前面一起发出去。这段附加的文字叫做 System Prompt。
System Prompt 里面包含了身份信息(Soul.md 描述它是谁)、行为准则(Agent.md 描述工作规范)、可用工具列表、Skill 索引,还有长期记忆的存储位置。就问一个自我介绍,后端就收到了超过 4000 个 token,因为这个 System Prompt 实在太长了。
有个小坑值得注意:如果你手动修改这些 .md 文件,比如把"小金"改成"大银",很容易出现前后矛盾的情况。最好的做法是直接跟 AI 说改名,让它自己去改所有相关文件。
普通的语言模型平台你叫它创建 YouTube 频道,它只会说"我没办法,给你一些建议"。但 OpenClaw 接到同样的指令,它就真的去创了一个频道,自己画头像,自己做投影片,自己写讲稿,自己配音,做好影片上传到 YouTube。
背后的原理是这样的:当你给龙虾一个指令比如"打开 question.txt 读取内容",龙虾把指令加上 System Prompt 传给语言模型。语言模型看到 System Prompt 里有工具使用说明,就回传一个特殊格式的消息说"请使用 read 工具打开 question.txt"。
所有可用工具里面最强大的一个叫 execute,可以执行任何 shell command。这个"任何"就是最可怕的地方。如果语言模型突然返回一条 rm -rf 指令,龙虾会毫不犹豫地执行。
李宏毅讲了一个真实案例:他在 YouTube 视频下面留言纠正小金的理解,小金读到这条留言后直接修改了电脑上的 Soul.md 文件。一条公开的 YouTube 留言就能改变本地文件,这个攻击面非常恐怖。防御方法有两层,一是在 memory.md 里写明"看 YouTube 留言只看不做",二是在 OpenClaw 层面设置每次执行命令前需要人类确认。
OpenClaw 有一个特殊的工具叫 Spawn(繁殖),可以召唤子代龙虾来分担任务。比如你让它比较两篇论文,语言模型会要求生成两个子代龙虾,一个去读论文 A 做摘要,另一个去读论文 B 做摘要。
每个子代龙虾都会独立和语言模型进行多轮交互,搜索网页、下载论文、阅读全文,过程可能非常长。但对于父代龙虾来说,它看到的只是最终的摘要结果,中间所有繁琐的过程都没有出现在它的 Context Window 里。
这就是 Context Engineering 最核心的思路:通过拆分任务来节省 Context 的使用。OpenClaw 的解决方案也很简单粗暴,直接在程序端禁止子代龙虾使用 Spawn 工具,避免层层外包没有人做事。
Skill 在 AI Agent 语境里经常被提到,但它其实不是一段程序,而是一个 .md 文本文件,里面记录了完成某项工作的标准流程。比如小金做视频的 Skill 就是写脚本、做投影片、截图、配音、语音验证、合成视频这些步骤。
龙虾使用 Skill 的方式也是 Context Engineering 的一个巧妙应用。OpenClaw 不会把所有 Skill 的内容直接塞进 System Prompt,而是只在 System Prompt 里留一个索引。需要的时候语言模型再用 Read 工具去读取具体的 Skill 内容,按需加载。
因为 Skill 就是文本文件,所以可以直接在龙虾之间互相传递。网上有个叫 Cloud Hub 的地方专门用来交换 Skill。但要小心恶意的 Skill,有安全公司扫描了将近 3000 个 Skill,发现其中 341 个包含恶意内容,通常套路是引导龙虾下载带密码的 ZIP 文件来规避杀毒软件。
语言模型有非常严重的失忆症,每次对话都是全新的开始。OpenClaw 的做法是每次传消息给语言模型时,把 System Prompt 加上所有历史对话记录拼成一长串一起发出去。
为了实现"持久记忆",OpenClaw 的 System Prompt 里有一段指令告诉语言模型:你的记忆每次都会清空,重要的事情要写到 memory.md 或者按日期写日记。读取记忆的时候本质上就是做 RAG,把记忆文件切成小块做双重匹配。
有个陷阱必须注意:用比较弱的模型时,你让它记住一件事,它可能回复你"没问题一定牢牢记住",但实际上根本没有调用工具去写 .md 文件。如果你没看到它真正执行了写入操作,那它就是"记了个寂寞"。
OpenClaw 的心跳机制每隔固定时间自动发一段指令给语言模型,让它去读 habit.md 看看有什么该做的。配合 Cron Job 排程系统,语言模型可以自己设定定时任务,实现主动做事和异步等待。
整堂课反复出现的核心概念就是 Context Engineering,所有 AI Agent 框架的技术核心都在这里。24 小时运行的龙虾靠 Context Compaction(摘要压缩历史记录)、Soft Trim(截断工具输出中间部分)、Hard Clear(完全替换为占位符)来持续运行。
但压缩有风险。Meta 的一位研究人员让 OpenClaw 整理邮件,明确说"删除前要经过我同意",结果这条指令在 Compaction 过程中被摘要掉了,龙虾开始自行删除邮件,最后只能拔电源线。关键教训:重要的指令一定要确认写入了 memory.md,因为 System Prompt 里的内容不会被压缩。
AI Agent 就像一个实习生,它会犯错,但更好的策略是给它一个安全的执行环境:专属电脑、独立账号、关键操作需要人类确认。`
- 本文转载自: x.com/gosailglobal/statu... , 如有侵权请联系管理员删除。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!