C3-05 理解 Agent:以小龙虾为例
OpenClaw: https://openclaw.ai/
OpenClaw 技术架构
常见的误解
| 你以为的 | 实际上的 |
|---|---|
| OpenClaw 是一只聪明的 AI | OpenClaw 是 AI 的"身体",不是"大脑" |
| OpenClaw 自己会思考 | OpenClaw 只是大脑(LLM)和现实世界之间的"翻译官 + 执行官" |
| OpenClaw 越新越聪明 | 它的聪明程度 完全取决于 你接的是哪个大语言模型(LLM) |
三层架构

关键认知:
- 🦞 OpenClaw 是代理人(Agent):它跑在你的电脑上,负责记忆、任务管理、操控电脑
- 🧠 大语言模型是大脑:Claude/GPT/Gemini 等,真正聪明的是它
- 👤 你是发指令的人:通过通讯软件触达
AI Agent 如何知道自己是谁
核心问题:每次对话从零开始,AI 怎么"认识"自己?
System Prompt 的内部结构
System Prompt 不是一个字段,而是一份由多个 .md 文件拼装而成的"灵魂档案":

- [ ] 查看真实档案示例
| 特性 | 说明 |
|---|---|
| 人类可读 | 都是 Markdown 文件,你用记事本就能改 |
| AI 也可改 | AI 在运行时可以自己修改这些文件(如把"小金"改成"大银") |
| 每次会话重读 | AI 启动时把这一堆文件拼成超大 Prompt,再传给 LLM |
| 可催眠可洗脑 | 改 SOUL.md 等于改 AI 的"信仰",所以才叫"灵魂档案" |
AI Agent 的记忆机制
残酷的事实:LLM 每次对话都是"从0开始"

AI Agent 每次对话其实重新开始,每次都要阅读文档,包括自己是谁、主人是谁。
多轮对话的工作方式(时序图)

关键发现:大语言模型没有状态。每次调用,OpenClaw 都要把"之前所有对话"重新打包塞进去。
跨 session 的记忆:MEMORY.md + 每日笔记

AGENTS.md 里是这样写的:
1 2 3 4 5 6 7 8 9 | |
记忆写入的真实动作:工具调用
当用户告诉 AI"你的生日是 2 月 13 日"时,AI 不会"默默记住",它要做一次工具调用:

跨 session 记忆检索:memory_search + memory_get
光靠把整个 MEMORY.md 塞进 context 也不够,所以需要检索:

两种检索的混合:
- 字面比对(s₁):精确匹配关键词
- 语义比对(s₂):向量相似度
- 综合评分:s = a·s₁ + b·s₂,取分最高的几个 chunk
💡 记忆 ≠ 把所有内容塞进 context window。记忆 = 外部文件 + 检索工具。
✍️ 注意:模型可能"光说不练",真正的记忆 ≠ 嘴上说"记住了",而是.md文件里确实改了。
AI Agent 怎么用你的电脑
工具调用(tool_use)的基本概念
问题:LLM 只会输出文字,它怎么"读文件"?
答案:LLM 输出一个结构化指令 [tool_use] Read(question.txt),由 OpenClaw 真正执行文件读取。

模型怎么"知道有 Read 工具"?

💡 模型知道有 Read 这个工具,完全是因为 System Prompt 告诉它的。"
exec 工具的威力与危险
OpenClaw 强大的核心是 exec 工具——可以执行任意 shell command:

威力:文字输出是大语言模型最擅长的事 → 它天生就能生成 shell 命令。
危险:rm -rf * 这种命令它也会"听话"地生成。
AI Agent 三大防线
| 防线 | 实现位置 | 可靠性 | 适用场景 |
|---|---|---|---|
| 入口防线 | 配置层权限控制(OAuth、IP 白名单) | 🟢 强制 | 外部渠道接入 |
| 执行防线 | Sandbox / Approval 闸口 / config 闸口 | 🟢 强制 | 危险命令(rm -rf 等) |
| 审计防线 | 日志/可观测 | 🟢 强制 | 事后追责 |
防御原则:
- 🔴 不能光靠模型听话(它可能被 prompt injection 骗)
- 🟢 必须靠外部强制(config 层规则判断,不依赖智能)
AI Agent分工协作:Sub-agent
什么是 Sub-agent?
Sub-agent 是 OpenClaw 中的一种特殊工具(sessions_spawn),让主 agent 派生子 agent 来并行处理任务。
典型场景:比较 A、B 两篇论文的方法

Sub-agent 的设计哲学

为什么这么设计?
- 🔴 如果主 agent 读完整论文:context window 会被论文全文撑爆
- 🟢 Sub-agent 隔离 context:主 agent 只看摘要,复杂互动在子 agent 内完成
💡 子代理的上下文是独立的,主代理只看到结果,不被细节淹没
AI Agent 的长期运行
长期运行的两大挑战
| 挑战 | 原因 | 解决方向 |
|---|---|---|
| Context window 不够 | 对话越长,token 越多 | Context Compression |
| 需要主动巡检 | AI 不会自己醒 | Heartbeat 机制 |
HEARTBEAT 心跳机制
问题:AI Agent 默认只在被询问时才响应。能不能让它主动定期做事?
答案:HEARTBEAT 机制。

HEARTBEAT.md 的标准指令:
Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.
Context Compression:上下文压缩
粗暴方案:直接 New session,从零开始。
但更精细的方案是 Context Compression:

"套娃摘要":对 Summary 再做一次 Summary,形成层级压缩。
两种剪枝方法
当工具输出太长时(特别是 exec/read 返回的大文件),需要"剪枝":

| 方法 | 特点 | 适用场景 |
|---|---|---|
| Soft Trim | 保留标记但折叠内容 | 想留个"这里有过什么"的痕迹 |
| Hard Clear | 完全删除,只留占位说明 | 大段废弃内容直接清理 |
异步任务调度(Cron job)
场景:设置每隔一段时间检查视频生成结果
小结:六大器官的对照表
解剖图:OpenClaw 的六大器官
| 器官 | 对应 OpenClaw 概念 | 关键文件 / 命令 |
|---|---|---|
| 🧠 大脑 | LLM(Claude/GPT/Gemini) | models.providers 配置 |
| 📜 灵魂档案 | System Prompt | SOUL.md / IDENTITY.md / USER.md |
| 💾 记忆系统 | 跨会话记忆 | MEMORY.md + memory/*.md + memory_search |
| 🔧 四肢(工具) | Tools | 内置工具 + exec + browser |
| 📚 技能库 | SKILL | ~/.openclaw/workspace/skills/*.md |
| 💗 心跳 | HEARTBEAT | HEARTBEAT.md + cron |
核心公式
1 2 3 | |
三大误区
| 误区 | 真相 |
|---|---|
| ❌ "OpenClaw 越新越聪明" | 🟢 聪明程度取决于接的 LLM |
| ❌ "AI 记住了 = 真的记住了" | 🟢 必须用 Edit 工具改了文件才算 |
| ❌ "Context window 不够是模型问题" | 🟢 用 memory_search 工具胜过塞 context |
附录 A:术语对照表
| 术语 | 含义 |
|---|---|
| OpenClaw | 自托管 AI Agent Gateway 网关(MIT 开源) |
| Gateway | 守护进程,监听 18789 端口 |
| AGENTS.md | AI 行为准则 |
| SOUL.md | 灵魂档案(人生目标) |
| IDENTITY.md | 身份信息(名字/性格) |
| USER.md | 用户偏好信息 |
| MEMORY.md | 长期记忆(精选) |
| memory/YYYY-MM-DD.md | 每日笔记(原始日志) |
| HEARTBEAT.md | 心跳任务清单 |
| SKILL.md | 技能定义(YAML frontmatter + 正文) |
| tool_use | LLM 输出的结构化工具调用指令 |
| exec | 执行 shell command 的工具 |
| Sub-agent | 子代理(sessions_spawn) |
| Context Engineering | 上下文工程(按需加载) |
| ClawHub | SKILL 插件市场 |