当前位置:首页>Linux>龙虾凭什么火过Linux?我扒了OpenClaw源码找到了答案

龙虾凭什么火过Linux?我扒了OpenClaw源码找到了答案

  • 2026-09-07 22:11:11
龙虾凭什么火过Linux?我扒了OpenClaw源码找到了答案

板叔 | 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框架更强的功能。

但也正因为克制,它把安全问题留给了用户自己。沙箱默认关闭、权限默认放开——这让龙虾极其好用,也极其危险。

这大概就是开源世界的永恒矛盾:自由和安全,从来都不可兼得。

你用龙虾最常干什么?有没有踩过坑?评论区聊聊。

最新文章

随机文章