板叔 | AI前沿观察
【板叔导读】 翻完OpenClaw源码发现,21万星标的背后不是更强的模型,而是一套极其克制的架构设计:一个进程、纯文本存储、按需加载技能、四层记忆系统。核心代码只有8MB,却能控制你电脑上的一切软件。
GitHub 21万星标,3个月超越Linux 40年的积累。
所有人都在用龙虾,但很少有人搞清楚:它到底凭什么?它不是大模型,代码量也不大,一个奥地利程序员的个人项目,怎么就成了2026年最炸裂的开源项目?
我翻了它的源码,找到了答案。
01龙虾不是AI,是AI的"身体"
首先纠正一个常见误解:OpenClaw本身不是大模型,它是一个AI智能体运行时(Agent Runtime)。
ChatGPT、DeepSeek、Claude是"大脑"——会思考但不能动手。OpenClaw给大脑装上了手脚:读写文件、执行Shell命令、发邮件、操作浏览器、控制智能家居。
架构上把"智能"(从大模型API借来的)和"执行"(跑在你自己电脑上的)彻底分开。模型可以随时换——今天接Claude,明天换DeepSeek,核心功能不受影响。
02源码结构:TypeScript Monorepo,核心8MB
OpenClaw是一个用pnpm管理的TypeScript monorepo。不是Python,不是Next.js。核心包结构:
openclaw/
├── packages/core// 核心框架 + Provider接口 ~8MB
├── packages/gateway// WebSocket网关 端口18789
├── packages/agent// Pi agent运行时 工具流+块流
├── packages/cli// 命令行入口
├── packages/sdk// 第三方开发SDK
└── packages/ui// WebChat + 控制面板
关键源码文件分布:
// 核心链路文件
src/gateway/server-methods.ts// WebSocket客户端认证
src/gateway/channel-lifecycle.ts// 通道监控生命周期
src/gateway/protocol/schema.ts// 协议版本+TypeBox类型定义
src/auto-reply/reply.ts// 消息路由+会话解析
src/agents/pi-embedded-runner/run.ts// Agent执行主循环
src/tools/registry.ts// 工具注册表
src/agents/openclaw-tools.ts// 原生工具定义
src/agents/tool-policy-pipeline.ts// 多层权限策略管线
整个项目只跑一个进程。不用数据库、不用Redis、不用消息队列、不用K8s。连模型Provider都是插件化动态加载——core包不绑定任何厂商。
OpenClaw四层架构概念图
03Gateway网关:一个WebSocket统治所有通道
Gateway是整个系统的心脏,源码在src/gateway/server-methods.ts。一个WebSocket Server(默认端口18789),管所有消息的收发和路由。
每个聊天平台对应一个Channel Adapter(通道适配器)——WhatsApp、Telegram、Slack、Discord、Signal、iMessage各一个。适配器的唯一职责:把各平台千差万别的消息格式,统一转换成OpenClaw内部信封格式。
消息处理全链路:
用户消息 → 通道适配器 → 网关路由 → 会话解析 → 命令队列 → Agent运行时 → LLM API → 原路返回
并发控制用Lane-based命令队列。一个会话对应一个Lane(车道),默认严格串行。定时任务等低风险操作走并行Lane。竞态条件从架构层面消灭,不是事后打补丁。
会话作用域有三种:main(所有私聊共享)、per-peer(每人独立)、per-channel-peer(每人每平台独立)。路由逻辑在src/auto-reply/reply.ts的resolveAgentRoute()函数中实现。
Gateway网关:多通道消息统一路由
04它怎么控制你电脑上的软件?——工具系统拆解
这是OpenClaw最核心也最危险的能力。工具注册在src/tools/registry.ts,分为六大组:
// src/tools/registry.ts — 工具注册表
group:runtime → exec, bash, process // Shell命令执行
group:fs → read, write, edit // 文件系统操作
group:web → web_search, web_fetch // 网络搜索和抓取
group:ui → browser, canvas // 浏览器自动化
group:memory → memory_search, memory_get // 记忆检索
group:automation → cron, gateway // 定时任务
group:sessions → sessions_list, sessions_send // 多Agent通信
OpenClaw工具系统:AI通过工具控制你的电脑
Exec工具(源码src/agents/bash-tools.ts)是最核心的能力——它让AI能直接在你电脑上执行Shell命令。支持前台同步执行、后台异步执行和PTY交互模式。命令可以发往三个目标:
① Gateway主机 — 直接在你的电脑上执行,跟你手动敲命令一样
② Sandbox沙箱 — 在Docker容器中隔离执行,不碰主机文件系统
③ Remote远程节点 — 通过WebSocket转发到局域网其他设备执行
浏览器工具用Playwright通过CDP协议(Chrome DevTools Protocol)直接与浏览器引擎通信。不靠截图识别——它抓取页面的ARIA无障碍树生成纯文本语义快照,Token成本降低98.2%。源码在browser_*系列工具中实现。
文件系统工具(read/write/edit)让AI可以直接读写你电脑上的任何文件。apply_patch支持差异化修改,不用重写整个文件。
所有工具调用都经过src/agents/tool-policy-pipeline.ts的多层权限策略管线过滤:全局策略 → Agent策略 → 沙箱策略 → 单工具策略,四层叠加,deny优先级最高。
三种执行环境:主机 / 沙箱 / 远程节点
05四层记忆:从短期到长期,全是纯文本
大模型是无状态的:每次调用都从零开始。OpenClaw要解决的核心问题是让无状态的AI看起来有记忆。
记忆工具源码在src/agents/tools/memory-tool.ts,四层结构:
L1 Session上下文 — 当前对话的JSONL转录,在模型上下文窗口里
L2 Daily日志 — 每天一个文件(memory/YYYY-MM-DD),append-only只增不删
L3 MEMORY.md — 长期记忆总结,存偏好、习惯、重要决策
L4 向量搜索 — SQLite + FTS5全文索引 + Embedding语义检索,混合匹配
最精妙的是自动压缩机制:当对话接近Token上限时,OpenClaw触发一轮静默agentic turn——用户完全看不见。AI把重要信息提炼后写入MEMORY.md,旧上下文压缩摘要,腾出空间继续聊。
所有记忆都是纯文本:JSONL + Markdown。用记事本能打开,用Git能版本管理。没有数据库,没有黑箱。
四层记忆系统示意图
06SOUL.md + Agent启动:上下文是怎么组装的
每个Agent由一个SOUL.md文件定义,包含人格特征、沟通风格、核心价值观和行为边界。核心价值观会被当作不可违反的行为约束——写了"绝不删除用户文件",模型即使被诱导也不会执行。
Agent启动时的上下文组装流程(源码在src/agents/pi-embedded-runner/run.ts的runEmbeddedPiAgent()):
// Agent 上下文组装顺序
1. 读取 AGENTS.md // 多Agent路由规则
2. 读取 SOUL.md // Agent身份+人格+价值观
3. 读取 USER.md // 用户个人信息
4. 加载 Daily memory logs // 近期记忆日志
5. 注入 Skills 清单 // 可用技能名+描述(不注入全文)
6. 查询向量搜索 // 检索相关历史对话
7. 打包发给 LLM API // 开始对话
SOUL.md不超过500行,超了建议拆分——工作流规则拆到HEARTBEAT.md,多Agent场景拆到AGENTS.md。
07技能系统:按需加载 + 递归自进化
ClawHub上13000+社区技能,覆盖Gmail、GitHub、Spotify、智能家居、日历管理。一个技能平均20行代码。
关键机制是按需加载(Lazy Injection):启动时只注入技能名+描述+路径的紧凑清单,模型需要时再按需读取对应SKILL.md。省Token,不让上下文窗口爆炸。
更硬核的是递归式自进化:遇到未知任务 → 自主编写代码尝试 → 本地调试修正 → 成功后封装成新SKILL.md → 下次直接调用。
SKILL.md格式遵循AgentSkills开放标准,已被Claude Code、Cursor、VS Code、Codex、Gemini CLI采纳。一次写好,跨平台通用。
08安全:能力越大,风险越大
3月13日工信部刚发了OpenClaw安全风险预警,不是空穴来风。
OpenClaw给AI的权限约等于你自己在电脑上的权限:能执行任意Shell命令、读取SSH密钥和.env文件、访问浏览器Cookie、安装软件。安全研究者已发现超过4万个漏洞,最严重的ClawJacked漏洞可以让攻击者通过一个恶意网页接管你的Agent。
安全防线有但默认没全开:
// 安全机制 — 默认配置 vs 建议配置
沙箱模式 默认: 关闭 建议: 开启Docker隔离
exec审批 默认: 手动确认 存储: ~/.openclaw/exec-approvals.json
allowlist模式 拒绝管道符; && || 和重定向
环境变量保护 拦截PATH/LD_*/DYLD_*篡改 防止二进制劫持
脚本预检 validateScriptFileForShellBleed() 检测$VARNAME注入
OpenClaw维护者自己的原话:"如果你不会用命令行,这个项目对你来说太危险了。"
09板叔说两句
翻完源码,最让我意外的不是OpenClaw用了什么高深技术——WebSocket、Markdown存储、插件系统都是老东西。
让我意外的是它的克制。一个进程、纯文本存储、按需加载、不绑模型厂商。没有过度设计,没有抽象套娃。8MB核心跑出了比几百MB框架更强的功能。
但也正因为克制,它把安全问题留给了用户自己。沙箱默认关闭、权限默认放开——这让龙虾极其好用,也极其危险。
这大概就是开源世界的永恒矛盾:自由和安全,从来都不可兼得。
你用龙虾最常干什么?有没有踩过坑?评论区聊聊。