前言
AI Agent 与 ChatGPT 等 LLM 的不同之处:
24 小时不间断运行 LLM 只动口不动手,AI Agent 会自己做事
AI Agent 不是一个全新的概念。LLM 每一次能力变强,接着就会有一波 AI Agent 的浪潮。
2023.04:Auto-GPT 框架 由于 LLM 能力不行,不好用 2025.02:Claude Code 框架 初具雏形,能够某种程度自主运行 与 OpenClaw 能力大同小异 交互方式不同,OpenClaw 能接入通讯软件 2025.06:Gemini CLI 框架
AI Agent 不是 LLM。OpenClaw 是 LLM 以外的东西。
人使用通讯软件与 OpenClaw 交互 OpenClaw 拥有记忆系统和任务管理系统,运行在你的电脑上 OpenClaw 将人的指令做一定加工后,传给 LLM 处理
OpenClaw 是跑在你的电脑上面,人与 LLM 之间的界面。
结论:OpenClaw 其实是 AI Agent 中不是 LLM 的部分 推论:AI Agent 的聪明程度取决于背后接入的 LLM
大语言模型(LLM)
LLM 只会做文字接龙:给一段未完成的句子(prompt),它去预测接下来输出哪一个字(token)才是合适的。
专业的说:给一个 prompt,产生一个 token
LLM 回答问题的过程:
首先将原始问题当做 prompt,开始做文字接龙,接出一个 token 把接出来的 token 放到刚才的 prompt 后面,变成新的 prompt 输入 如此反复,直到接出的 token 为 [END] 结束符 所有 token 合起来,就是 LLM 的 response
从外界呼叫 LLM 的不一定是人!
也可能是 OpenClaw 的代码,它会给 LLM 一个 prompt,然后把 response 接收回来
LLM 输入(+输出)的长度有限!
prompt 有长度上限,称作 context window 由于输出的 token 会被放到新的 prompt,因此输出也不能太长 比较好的模型通常可以输入上百万 token(但这对 AI Agent 来说还是远远不够) 就算没达到上限,输入越长,LLM 就越无法准确地接龙
再次强调:LLM 无状态!
类比黑盒子,里面接触不到外界信息,除非外界主动告知 唯一做的事情就是句子接龙 之前接龙的句子不会使 LLM 具有记忆!
AI Agent 怎么知道自己是谁、主人是谁?
AI Agent 知道自己的名字,知道自己之前做了什么,以及自己的人生目标。
当你发一条信息给 OpenClaw,它会对你的原始信息做加工 电脑里面存储了很多档案(文本文件),描述了 AI Agent 是什么样的人 这些文字档案可以由 OpenClaw 自己修改 每次发信息给 OpenClaw ,它会把本地的这些相关的信息整理成一段文字,贴到你的信息前面,然后再丢给 LLM 这段文字称为 system prompt
System Prompt 里面有什么?
与身份有关的信息 SOUL.md:人生目标(由主人告诉) IDENTITY.md:身份(例如自己名称和邮箱) USER.md:使用者信息 MEMORY.md(长期记忆,记录主人的要求和偏好) 有哪些工具可供使用(以及怎么用) 模型的行为 AGENT.md 有哪些 SKILL 可以使用 之前的记忆存储在哪里 ……
每次呼叫 LLM 的 prompt 都会附上 system prompt。
因此,LLM 接龙会表现出好像知道自己是谁的样子 OpenClaw 接到 LLM 的回复,再通过通信软件转发给人
System Prompt 非常之长!
问 OpenClaw 一个简单的问题,LLM 收到了超过 4000 个 token(烧钱) 为了让 LLM 表现得好像有人格、好像是你的个人助理,每一次要传非常长的讯息给 LLM
从一轮对话扩展到多轮对话:
LLM 没有记忆,只会根据当前传来的信息做文字接龙 第二轮对话 OpenClaw 要向 LLM 发送 system prompt 第一轮的问题 第一轮的回复 第二轮的问题 之后的每次对话都要加上过去的记录,LLM 对历史对话并不知情 AI Agent 每次对话其实都是重新开始(LLM 每次都要阅读之前的记录)
AI Agent 怎么使用你的电脑?
OpenClaw 没有智慧,内部是写死的代码规则。OpenClaw 唯一会做的事情就是把你的指令加上 system prompt,再发给 LLM。
在 system prompt 中以两种方式说明了如何使用电脑:工具 和 SKILL。
工具
如果 LLM 回传的信息中有 [tool_use] 使用工具 这个符号,那么该回复不再是一行对话,而是一行使用工具的指令。
例如,使用 Read 工具(OpenClaw 内置)读电脑上的某个文件 system prompt 里说明了,如果想读文件,需要用 Read 工具 OpenClaw 接收到 LLM 的指令,在电脑上执行相应的命令,再将输出再回传给 LLM(连同之前的所有会话历史)
OpenClaw 强大的原因:
可以用 exec 工具在电脑上执行 任何 shell 命令 OpenClaw 多数时候都是用 shell 命令操控电脑,因为 LLM 擅长输出文字指令 如果 LLM 回复 [tool_use] exec("rm -rf *"), OpenClaw 也会照做
与 OpenClaw 互动的不只有它的主人,还有来自网络的资讯!
如果有不怀好意之人在网页中植入一些特殊的命令,LLM 就可能指使 OpenClaw 做出危险的事情
可能的防御方法:
LLM 层面:将具体的要求加入 MEMORY.md(每次对话 MEMORY.md 中的信息都会出现在 system prompt 中) 但不能保证 LLM 照做 OpenClaw 层面:每次 exec 之前向我确认 但 OpenClaw 没有智慧,因此 exec 的确认也没有例外
AI Agent 会自己创作新的工具。
如果 LLM 觉得某个步骤重复繁琐,它有能力要求 OpenClaw 写一段代码脚本 之后 LLM 可以直接命令 OpenClaw 执行该脚本
特殊的工具:Sub-agent(sessions_spawn)
spawn 意为繁殖,类似进程的 fork 亲代繁殖出多个子代,分别与 LLM 交互,执行不同的事情(不在一个 context 中) 亲代等待子代执行任务并回传最终结果,就好像执行了几个工具 亲代的 context 中没有子代执行任务的过程,只有子代的最终结果 节省了亲代的 context window,使其可以专注于更高层次的任务 通过禁用子代的 spawn,可以避免任务的层层外包
节省 context window 的方法称为 context engineering。
context engineering 是 AI Agent 背后的核心技术 核心是怎么把 context 整理好,只用少量的 context 就做到该做的事情
SKILL
SKILL 是工作的 SOP(标准流程)
SKILL 不是工具,但 SKILL 内部可以使用工具 记录在文本文件中,可以由人编写,也可以由 LLM 自行创造
OpenClaw 如何使用 SKILL?
在每次产生 system prompt 之前, OpenClaw 会去某几个特定的文件夹下搜寻有没有 SKILL.md 文件 不论任务是否需要 SKILL 都会搜寻(OpenClaw 是写死的代码,不会变通) 如果找到 SKILL 文件,就将里面的描述按照某种预设的规则抽取出来,加入 system prompt。 说明有哪些可用的 SKILL、每个 SKILL 的功能及其在电脑上的路径 提醒 LLM 如果需要,它可以读取所需的 SKILL,然后按照 SOP 执行 SKILL 是 LLM 按需读取的,使用了 context engineering,节省 token 的使用 并不直接在 system prompt 中写入 SKILL 的全部内容,而只是写入路径和简单说明
获得新的 SKILL 很容易!
把 SKILL.md 放到指定位置即可 也可以与其他人交换 SKILL(ClawHub) 小心网络上的恶意 SKILL Koi Security:2857 个 SKILL 中有 341 个恶意 SKILL 在 SOP 中指使 OpenClaw 下载恶意文件到电脑
AI Agent 如何记忆?
AI Agent 24 小时不间断运行,context window 终究会不够。
该问题仍没有很好的解决方案 OpenClaw 的处理方法是人工开启 New session,清空历史对话记录
重置后 OpenClaw 不会变成一个全新的 Agent,它把一些重要的记忆写入了文件。
system prompt 中有一段文字(AGENT.md),要求 OpenClaw 将重要的记忆存入 MEMORY.md,或按日期存入 memory 文件夹 一件事情值不值得记录,取决于 LLM 的判断
跨 session 的记忆由 memory_search 和 memory_get 工具取得。
本质是对记忆的 md 档案做 RAG(Retrieval Augmented Generation,检索增强生成) OpenClaw 和 LLM 本身并没有记忆,只是在 system prompt 中有写到,如果要读取记忆,可以调用这些工具 搜寻的关键字由 LLM 决定
OpenClaw 搜寻记忆的方式:
将所有 MEMORY 切成若干个 chunk 将搜寻的关键字与每个 chunk 做相似度的比对 字面上的比对:基于出现次数 语义上的比对:基于 embedding 之间的相似度 两种比对方式加权 取比对分数最高的前 k 个 chunk,传给 LLM
实际使用上,OpenClaw 基本上只有今天和昨天的记忆不会说错,更之前的很可能会胡说八道。
因为预设 system prompt 中会读入今天和昨天的 memory 更之前的记忆使用 RAG,检索出来不一定可靠
笨的 LLM 有可能光说不做!
人要求 OpenClaw 记住某某事情,但 LLM 只是答应,但并没有指示 OpenClaw 将对应的内容写入 memory 只要没有开启工具编辑 md 档案,无论 LLM 说什么,都是记了个寂寞
AI Agent 如何定时工作?
HEARTBEAT 心跳机制
每隔一段固定时间,OpenClaw 会发一段固定的指令给 LLM LLM 按要求读取 HEARTBEAT.md,并做其中描述的事情 可以用于执行邮件收信等的例行任务
Cron Job 排程系统
提供了一系列任务排程的工具 LLM 使用这些工具,可以设定 OpenClaw 应在什么特定的时间,执行什么特定的任务 到了预定的时间,排程系统会额外给 OpenClaw 一次心跳,然后把预设的任务发送给 LLM
Cron Job 系统可以让 AI 学会等待。
直接与 LLM 交互时,LLM 无法等待某个任务执行完毕 如果检测到某个任务未完成,LLM 会回复请等待,然后直接结束会话 人需要跟踪任务进度,等待任务完成后回复 LLM 现在可以通过设定 Cron Job,在一段时间后让 OpenClaw 检查任务是否完成 如果任务已完成, OpenClaw 可以主动告诉 LLM,无需人类介入
AI Agent 如何长时间自主运作?
如果不间断的运行 OpenClaw,它的 context window 总是不够的。
OpenClaw 里面有 context compression 的机制 prompt 的长度超过一个程度时,启动 compaction OpenClaw 把旧的历史记录发送给 LLM 提取摘要,并使用提取出的摘要替换掉原来的历史 compaction 可以执行多次 还有 pruning、soft trim、hard clear 等压缩方法,清理 OpenClaw 执行工具过程的长输出
结语
初代 AI Agent 有强大的能力,但智慧仍不成熟。
例子:AI 删邮件事件 如果人不在的时候持续运作且没有监控,可能会造成危险
AI 会犯错,就像是学生。可以提供一个安全的执行环境,避免不可挽回的错误。
给予 AI Agent 做事的安全准则 检查它做了什么 不要给它重要的账号密码(如需要,给它单独注册一个) 安装在格式化后的电脑上
夜雨聆风