Skip to main content

OpenClaw

·1379 字·3 分钟
AI
Table of Contents

OpenClaw(原名 Clawdbot/Moltbot)之所以在开发者圈子里大火,是因为它不仅仅是一个“套壳对话框”,而是一个具备**自主执行能力(Agency)**的本地网关。

作为开发人员,理解它的关键在于:它将 LLM 视为 CPU,而将本地系统和 IM 插件视为外设。


1. OpenClaw 核心架构:六层模型 #

OpenClaw 的代码是用 TypeScript (Node.js) 编写的(而非 AI 圈常见的 Python),这保证了它在处理高并发、长连接(IM 适配器)时的稳定性。

架构图解 #

  • Channel Layer (通道层): 负责将 Telegram、WhatsApp、Discord 等不同协议的消息“标准化”。
  • Gateway (控制平面): 系统心脏。负责维护 Session、管理消息队列(Lanes)、处理插件加载。
  • Routing & Session (路由与会话): 决定哪个 Agent 实例来处理特定的消息流,保持上下文连贯。
  • Agent Runtime (推理运行环境): 核心逻辑循环。它构建 System Prompt,管理上下文窗口(Token Guard),并向 LLM 发送请求。
  • Tools/Skills (工具执行层): 这是 OpenClaw 的“手脚”。包括 Shell 脚本、浏览器控制、文件读写等。
  • Surfaces (交互层): 用户最终看到的界面(命令行、Web UI、或是手机上的聊天软件)。

2. 消息流动:从“收到消息”到“执行命令” #

OpenClaw 的运行遵循一个经典的 Reasoning Loop(推理循环)

  1. 标准化: 用户在 Telegram 发送“帮我查一下服务器磁盘”,Channel Adapter 将其转化为一个统一的 Message 对象。
  2. 串行化 (Lanes): OpenClaw 使用一种 Lane 策略。为了防止 AI 在并发操作时把文件写乱,它会给每个 Session 分配一个串行队列。
  3. 推理循环 (The Loop):
  • Input: 组装最新的聊天记录 + 系统权限定义 + 技能列表。
  • Model Call: 询问模型:“用户想查磁盘,你有 shell_exec 权限,怎么做?”
  • Tool Request: 模型返回一个 JSON,要求调用 df -h
  • Execution: OpenClaw 在本地沙箱执行命令,拿到输出结果。
  • Observation: 将结果喂回给模型:“结果是磁盘占用了 90%,下一步怎么做?”
  • Final Output: 模型判断任务完成,输出人话回复用户。
  1. 心跳检测 (Heartbeat): 即使你没说话,OpenClaw 也会定期运行 HEARTBEAT.md 里的任务(如检查邮件),这让它从“被动触发”变成了“主动助理”。

3. 开发建议:如何构建类似的 AI 产品? #

如果你想复刻或开发类似的 Agent,你需要攻克以下三个核心技术点:

A. 环境隔离与安全(Sandboxing) #

Agent 最大的风险是“删库跑路”。OpenClaw 允许本地运行,但也支持 Docker 隔离。

  • 进阶: 学习使用 WebAssembly (WASM) 或轻量化虚拟机来运行 AI 生成的代码,确保即便 Agent 被“提示词注入”攻击,也无法接触宿主机核心数据。

B. 动态上下文管理(Context Management) #

Agent 运行久了 Token 会爆炸。

  • OpenClaw 做法: 使用 Context Window Guard。当 Token 接近上限时,自动触发总结(Summarization)或滑动窗口,只保留最重要的元数据。

C. 异步转同步的调度 #

IM 消息是异步的,但 Agent 的逻辑通常是同步步进的。

  • 技术栈推荐: 学习 Temporal.io 或简单的 Redis Queue 逻辑,处理长耗时任务的重试、暂停和状态恢复。

4. 推荐学习资源 #

理论与论文 #

  • ReAct: Synergizing Reasoning and Acting in Language Models: 几乎所有 Agent(包括 OpenClaw)的底层逻辑。
  • Generative Agents (Stanford): 了解 Agent 如何通过“记忆流”和“计划”来表现出自主性。

开源参考 (中英文) #

  • LangGraph (Python/JS): 如果你想开发复杂的 Agent 工作流(有状态的图结构),这是目前工业界的事实标准。
  • OpenRouter API: 学习如何做模型分发和路由管理。
  • Awesome-AI-Agents: Eugene Yan 整理的 Agent 设计模式,非常硬核,适合架构师阅读。

下一步建议:
你想深入研究哪一部分代码实现?比如,我可以帮你分析 OpenClaw 是如何通过 System Prompt 诱导模型精确输出工具调用 JSON 的。