Appearance
OpenClaw正在证明一件事:LLM只是租来的智能,而Agent的"肉体",是文件系统。理解这个区别,会彻底改变你设计、调试和运维AI Agent的方式。
核心观点
OpenClaw官方文档说:
"The LLM is raw intelligence. The files are the agent."
翻译过来:LLM是租来的智商,Agent的本体是文件。
这意味着:
- 备份Agent = 复制~/.openclaw/目录,没有数据库导出
- 调试Agent = 读文件而不是查日志
- 问题往往在配置,不在代码
Gateway:不是大脑,是神经系统
用户 → WhatsApp/Telegram/Discord/飞书
↓
Gateway (127.0.0.1:18789)
↓
Agent Runtime
↓
Workspace 文件系统Gateway不思考。 它是流量管理器,是路由,是所有消息通道的汇合点。没有消息队列,没有微服务,没有数据库。只有一个进程加文件系统。
8个文件名:Agent的"骨骼系统"
| 文件 | 作用 | 优先级 |
|---|---|---|
| SOUL.md | 性格、语气、价值观、硬性边界 | 10 |
| IDENTITY.md | 名字、emoji、头像 | 20 |
| AGENTS.md | 操作规程、工作流规则 | 30 |
| USER.md | 用户信息、时区、偏好 | 40 |
| TOOLS.md | 环境特定笔记 | 50 |
| BOOTSTRAP.md | 首次运行引导(用完即删) | 60 |
| MEMORY.md | 精选长期记忆 | 70(仅主会话) |
| HEARTBEAT.md | 自主检查清单 | 动态 |
这就是为什么把关键知识放在错误名字的文件里,是最常见的Bug源头。
让Agent"活着"的5种输入
| 类型 | 说明 |
|---|---|
| 消息(Messages) | 最基础的模式,走和其他类型相同的队列 |
| 心跳(Heartbeats) | 每约30分钟定时器触发,检查收件箱、日历、任务 |
| 定时任务(Cron Jobs) | 更精确的定时触发,如"每周一9点检查日历" |
| 钩子(Hooks) | 内部状态变化触发:Gateway启动、Agent开始任务等 |
| 网络钩子(Webhooks) | 外部系统推送:邮件到达、Slack被React、日历更新等 |
记忆的两层结构
第一层:每日日志(memory/YYYY-MM-DD.md)
- 每次会话,Agent把上下文追加写入当日日志
- 今天和昨天的日志在会话启动时自动加载
- 更早的日志通过向量搜索访问
第二层:精选记忆(MEMORY.md)
- 经过人工筛选的重要事实、偏好、项目总结
- 内容尽量短,每次会话都会加载到上下文
混合搜索
- 70%向量相似度 + 30% BM25关键词
- 向量化用~400 token分块,80 token重叠
- 后端是带sqlite-vec扩展的SQLite
系统提示词的24步组装
1. Identity line
2. Available tools(一行摘要)
3. Interaction style
4. Tool call style
5. Execution bias
6. Provider stable prefix
7. Safety rules
8. CLI quick reference
9. Skills XML
10. Memory instructions
11. Model aliases
12. Workspace path
13. Sandbox details
14. Date/time/timezone
────────── CACHE BOUNDARY ──────────
15. SOUL.md(优先级10)
16. IDENTITY.md(优先级20)
17. AGENTS.md(优先级30)
18. USER.md(优先级40,仅主会话)
19. TOOLS.md(优先级50)
20. BOOTSTRAP.md(优先级60)
21. MEMORY.md(优先级70,仅主会话)
─────────── CACHE BOUNDARY ───────────
22. Dynamic context(HEARTBEAT.md等)
23. Provider dynamic suffix
24. Runtime summary顺序重要:LLM对出现在上下文开头的内容权重更高,MEMORY.md放在最后(优先级70),最接近"当前对话"的上下文。
多Agent路由:Binding而不是标签
json
{
"agentId": "alex",
"match": {
"channel": "whatsapp",
"peer": { "kind": "direct", "id": "+15551230001" }
}
}WhatsApp的1号号码→Agent Alex,2号号码→Agent Bob。路由是最精确匹配优先,不依赖任何模糊推理。
设计哲学总结
| 维度 | 传统方式 | OpenClaw方式 |
|---|---|---|
| 备份 | 数据库导出 | 复制目录 |
| 调试 | 查日志 | 读文件 |
| 升级 | 重建索引 | 重建Gateway,保留workspace |
| 问题定位 | 重置LLM | 读文件 |
设计一个AI Agent,本质上是在设计一套文件系统结构,而不是在调优一个语言模型。
