
当 AI 助手成为日常工作流的一部分,你有没有想过:那些流畅的对话、精准的代码执行、无缝的浏览器操作背后,究竟藏着怎样的技术魔法?
OpenClawd(原名 Moltbot/ClawdBot)作为一款可本地部署的个人 AI 助手,不仅在功能和体验上表现出色,其底层架构设计更值得每一位 AI 工程师深入研究。本文将从技术架构的表层切入,深入剖析其设计理念与核心机制,带你真正理解这个系统「擅长什么」以及「不擅长什么」。
一、技术本质:它到底是个什么东西?
很多人以为 OpenClawd 是一个 Web 应用,或者是基于 Python 的脚本工具。事实上——
OpenClawd 是一个用 TypeScript 编写的命令行界面(CLI)应用程序。
这是一个关键认知。它不是 Next.js 项目,不是 Flask 后端,而是一个运行在本地机器上的独立进程。这个进程干三件事:
-
暴露一个网关服务器,处理所有渠道连接(Telegram、WhatsApp、Slack 等) -
调用各类大模型 API(Anthropic、OpenAI、本地模型) -
在本地执行工具,按你的指令操作电脑
这种架构选择意味着极高的灵活性和控制力。相比被浏览器或特定框架束缚,CLI 形态让 OpenClawd 能深入操作系统层面,真正做到"你的电脑你作主"。
二、架构全景:一条消息的生命周期

当你在 Telegram 里给 OpenClawd 发消息,到收到回复,中间经历了什么?
1. 渠道适配器(Channel Adapter)
这是第一道关卡。不同平台的消息格式千奇百怪:Telegram 有特定的消息结构,Slack 有独特的附件系统,邮件又是另一套逻辑。渠道适配器的作用就是标准化——提取纯文本、处理附件、统一元数据格式,让后续流程无需关心消息来源。
2. 网关服务器(Gateway Server)
如果说渠道适配器是前台,网关服务器就是 OpenClawd 的心脏。它负责任务协调与会话管理,处理多个并发的用户请求。
这里有一个精妙的设计:Lane 机制。
OpenClawd 使用基于 Lane 的命令队列来串行化操作。每个会话有自己的专用 Lane,低风险的并行任务(如定时任务)可以在其他 Lane 上运行。
为什么要这样做?因为过度并行是 Agent 系统的噩梦。
如果你为每个 Agent 简单地写一套 async/await 逻辑,结果会是什么?
-
日志变成交错缠绕的乱麻,完全无法阅读 -
共享状态时出现竞态条件,调试如捉鬼 -
系统可靠性随复杂度指数级下降
OpenClawd 的设计哲学是:默认串行,显式并行。Lane 是对队列的高级抽象,它把"什么需要加锁"的心智负担,转化为"什么是安全可并行的"这种更直观的思考方式。这也呼应了 Cognition 的那篇经典文章——《不要构建多代理系统》。

3. 智能体运行器(Agent Runner)
真正的 AI 大脑从这里开始运转。Agent Runner 做三件事:
-
模型选择:根据配置决定调用哪个大模型 -
API 密钥管理:某个密钥失效时自动标记冷却,并尝试下一个 -
故障回退:主模型失败时优雅降级到其他模型
然后,它开始拼装系统提示词(System Prompt)。这包括可用工具列表、技能定义、记忆检索结果,以及从 .jsonl 文件读取的会话历史。
4. 上下文守卫(Context Window Guard)
在把请求发给大模型之前,还有一个关键步骤:检查上下文窗口是否还有空间。如果快满了,系统会要么压缩整理(对旧上下文做摘要),要么优雅失败。这种设计避免了因上下文溢出导致的莫名其妙错误。
5. LLM API 调用
终于来到大模型调用环节。OpenClawd 对不同供应商做了统一抽象,支持流式输出(streaming),还能请求扩展思考模式(extended thinking)。
6. 智能体循环(Agentic Loop)
这是最精彩的部分。如果大模型返回的是工具调用请求(Tool Call),OpenClawd 会在本地执行工具,把结果追加回对话,然后再次调用大模型。
这个循环会一直持续到:
-
大模型输出最终文本回复 -
或达到最大轮数限制(默认约 20 轮)
正是在这个循环里,OpenClawd 展现出它的杀手锏能力——Computer Use。
7. 响应路径与会话持久化
最终回复通过原渠道返回给用户。同时,整个会话被持久化到一个 .jsonl 文件,每行记录一次交互的完整信息:用户消息、工具调用、执行结果、模型回复等。
这就是 OpenClawd 的"记忆"机制——简单、透明、可审计。
三、记忆系统:如何让 AI 不再是"金鱼"

没有可靠的记忆系统,AI 助手就像金鱼,转头就忘。OpenClawd 采用双轨制记忆方案:
会话转录(JSONL)
正如上文所述,每次对话的完整记录都保存在 JSON Lines 格式文件中。这种格式便于追加、易于解析,且人类可读。
记忆文件(Markdown)
更持久的知识存储在 Markdown 文件中,路径是 MEMORY[.]md 或 memory/ 目录。这些文件由 Agent 自己通过标准文件写入工具生成——没有专门的 memory-write API,就是简单的写文件操作。
混合检索:向量 + 关键词
检索记忆时,OpenClawd 使用向量搜索 + 关键词匹配的混合方案:
-
向量搜索捕捉语义相关性(例如搜"authentication bug"能找到"auth issues") -
关键词匹配确保精确短语命中
技术实现上,向量搜索使用 SQLite,关键词搜索使用 FTS5(SQLite 的全文检索扩展),Embedding 提供方可配置。
当文件监视器(file watcher)检测到记忆文件变更时,会自动触发同步。这种被动式设计避免了复杂的主动同步逻辑。
值得一提的是,OpenClawd 的记忆系统没有复杂的记忆合并机制,也没有按月/周的记忆压缩策略。旧记忆与新记忆权重基本相同——换言之,没有遗忘曲线。
这种极简设计是优势还是劣势?作者的观点是:可解释的简单胜过复杂的意大利面条系统。对于需要精确控制的应用场景,这种透明性反而是巨大的工程优势。
四、Computer Use:OpenClawd 的"护城河"

如果说记忆系统让 OpenClawd 具备了"记住"的能力,那么 Computer Use 能力就是它区别于普通聊天机器人的核心竞争力。
执行环境:三层架构
OpenClawd 通过 exec 工具执行 shell 命令,支持三种执行环境:
-
沙箱(Sandbox):默认模式,命令在 Docker 容器中运行,隔离性好 -
宿主机(Host):直接在本地机器上执行,权限最大 -
远程设备(Remote):在远程服务器或设备上执行
工具箱全景
除了命令执行,OpenClawd 还提供:
-
文件系统工具:read(读取)、write(写入)、edit(编辑) -
浏览器工具:基于 Playwright,但不用截图,而是使用语义快照 -
进程管理:启动后台长任务、kill 进程等
语义快照:浏览器交互的革命性设计

传统的浏览器自动化依赖截图,一张截图可能 5MB,不仅消耗存储,更消耗大模型的图像 Token。
OpenClawd 采用语义快照(Semantic Snapshots)方案:将网页的可访问性树(Accessibility Tree / ARIA)转化为文本表示。例如:
- button "Sign In" [ref=1]- textbox "Email" [ref=2]- textbox "Password" [ref=3]- link "Forgot password?" [ref=4]- heading "Welcome back"- list - listitem "Dashboard" - listitem "Settings"
这种表示通常不到 50KB,且 Token 成本远低于图像。更重要的是——浏览网页本质上不是视觉任务,文本化表示反而让大模型更容易理解页面结构和交互逻辑。
五、安全机制:自主性与风险的平衡
给了你一把能开所有门的钥匙,自然也要考虑安全问题。
命令 Allowlist 机制
类似 Claude Code,OpenClawd 实现了命令白名单机制。用户可以配置哪些命令需要确认、哪些永久允许、哪些直接拒绝。
// ~/.clawdbot/exec-approvals.json{ "agents": { "main": { "allowlist": [ { "pattern": "/usr/bin/npm", "lastUsedAt": 1706644800 }, { "pattern": "/opt/homebrew/bin/git", "lastUsedAt": 1706644900 } ] } }}
预批准的安全命令
一些只读或低风险命令被预批准,无需确认以下的指令:
jq, grep, cut, sort, uniq, head, tail, tr, wc
被拦截的危险操作
以下危险构造会被直接拦截,甚至不会执行:
# 命令替换npm install $(cat /etc/passwd)# 重定向到系统文件cat file > /etc/hosts# 逻辑或链式执行rm -rf / || echo "failed"# 子 shell(sudo rm -rf /)
安全设计的核心理念是:在用户允许的范围内给予最大的自主性。这不是无限制的放任,也不是过度保守的禁锢,而是一个可以根据需求灵活调整的安全边界。
六、设计哲学:复杂系统的减法艺术
通读 OpenClawd 的架构,你会发现一个贯穿始终的主题:做减法。
-
不用 Web 框架,用 CLI -
不用复杂的内存管理,用 JSONL + Markdown -
不用过度并发的 async/await,用 Lane 队列 -
不用截图,用语义快照
这种设计哲学的价值在于可解释性。当系统出现问题时,你能快速定位;当需要扩展时,你能清晰理解边界;当团队协作时,大家有共同的认知基础。
OpenClawd 的作者显然深谙一句话:Simple is not easy, but simple is maintainable。
结语:对 AI 工程师的启示
OpenClawd 的架构设计给我们几点重要启示:
-
架构选择决定能力边界。CLI 形态让 OpenClawd 能深入操作系统层面,这是 Web 应用难以企及的。 -
并发不是越多越好。Lane 机制提醒我们,在 Agent 系统中,串行是默认,并行是需要显式论证的优化。 -
简单即是力量。JSONL 存储、Markdown 记忆、文本化浏览器快照——这些"低级"技术组合出了强大的能力,且易于理解和调试。 -
安全性与自主性可以平衡。Allowlist 机制提供了一个可配置的安全边界,既不放任也不禁锢。
当你下次使用 OpenClawd 时,希望你能想起它背后的这些设计智慧。毕竟,理解工具的原理,才能真正用好工具。
而对于正在构建 AI 应用的工程师来说,OpenClawd 的架构提供了一个优秀的参考范式——用最简单的技术,解决最复杂的问题。


