OpenClawd的运作原理 | Hesamation
作者:Hesamation | 日期:2026年2月1日
我查看了 Clawdbot(又名 Moltbot)的架构以及它如何处理代理执行、工具使用、浏览器等。对于 AI 工程师来说,有许多经验教训可学。
了解 Clawd 在底层如何工作,有助于更好地理解该系统及其能力,最重要的是,它擅长什么、不擅长什么。
这起初只是出于对 Clawd 如何处理其记忆以及其可靠性有多高的个人好奇。
在本文中,我将梳理 Clawd 工作方式的表层。
Clawd 在技术上是什么
所以大家都知道 Clawd 是一个可以在本地运行或通过模型 API 访问的个人助手,就像在手机上一样容易使用。但它到底是什么呢?
从本质上讲,Clawdbot 是一个 TypeScript CLI 应用程序。
它不是 Python、Next.js 或一个网页应用。
它是一个进程。
-
• 在您的计算机上运行,并暴露一个网关服务器来处理所有频道连接(Telegram、WhatsApp、Slack 等) -
• 调用 LLM API(Anthropic、OpenAI、本地等) -
• 在本地执行工具, -
• 并在您的计算机上执行您想要的任何操作。
架构
要更简单地解释架构,这里有一个例子,说明当你向 Clawd 发送消息时,直到你得到输出会发生什么。
当你在一个通讯器上提示 Clawd 时会发生什么:
1. 通道适配器
一个通道适配器处理你的消息(规范化、提取附件)。不同的消息传递工具和输入流有各自的适配器。
2. 网关服务器
网关服务器作为任务/会话协调器,将你的消息传递到正确的会话。这是 Clawd 的核心。它处理多个重叠的请求。
为了序列化操作,Clawd 使用基于通道的命令队列。每个会话有自己的专用通道,低风险的并行任务可以在并行通道(定时任务)中运行。
这与使用 async/await 混乱代码形成对比。并行化会损害可靠性,并带来一大堆调试噩梦。
默认采用串行,明确选择并行
如果你已经使用过代理,你已经某种程度上意识到了这一点。这也是来自 Cognition 博客文章《不要构建多代理》的见解。
每个代理使用一个简单的异步设置,你将得到一堆交错的无用数据。日志将无法阅读,如果它们共享状态,竞态条件将成为开发中必须考虑的持续担忧。
Lane 是对队列的抽象,其默认架构是序列化而不是事后考虑。作为开发者,你手动编写代码,而队列为你处理竞态条件。
思维模型从“我需要锁什么?”转变为“什么可以并行化是安全的?”
3. Agent 执行者
这就是实际人工智能发挥作用的地方。它确定使用哪个模型,选择 API 密钥(如果没有可用它会将配置文件标记为冷却状态并尝试下一个),如果主要模型失败则回退到不同的模型。
代理运行器动态地组装系统提示,使用可用的工具、技能和记忆,然后添加会话历史(来自一个.jsonl文件)。
接下来,这被传递给上下文窗口守护程序,并确保有足够的上下文空间。如果上下文几乎已满,它要么压缩会话(总结上下文),要么优雅地失败。
4. LLM API 调用
LLM 调用本身会流式传输响应,并对不同的提供者进行抽象。如果模型支持,它还可以请求扩展思考。
5. 自主循环
如果 LLM 返回一个工具调用响应,Clawd 将在本地执行它并将结果添加到对话中。这会一直重复,直到 LLM 返回最终文本或达到最大回合数(默认约 20 回合)。
这也是魔法发生的地方:
计算机使用
我稍后会讲到这一点。
6. 响应路径
相当标准。响应通过频道返回给你。会话也通过一个基本的 jsonl 进行持久化,每行是一个包含用户消息、工具调用、结果、响应等的 JSON 对象。这就是 Clawd 记住(基于会话的内存)的方式。
这涵盖了基本架构。
现在让我们来看看一些更关键的部分。
Clawd 如何记忆
如果没有一个合适的记忆系统,一个 AI 助手和一条金鱼没什么两样。Clawd 通过两个系统来处理这个问题:
-
1. 以 JSONL 格式保存的会话记录,正如之前提到的。 -
2. 将内存文件作为 markdown 保存在 MEMORY[.]md或memory/文件夹中。
在搜索时,它结合了向量搜索和关键词匹配。这融合了两种方法的优势。
因此,搜索 "authentication bug" 会找到同时提及 "auth issues"(语义)和精确短语(关键词匹配)的文档。
向量搜索使用 SQLite,关键词搜索使用 FTS5,后者也是 SQLite 的扩展。嵌入提供者是可配置的。
它还受益于智能同步功能,该功能在文件监视器触发文件变化时启动。
这个 markdown 是由代理本身使用标准的'写'文件工具生成的。没有特殊的内存写入 API。代理只需写入到memory/*.md。
一旦开始新的对话,一个 hok 会获取之前的对话,并写入一个 markdown 格式的摘要。
Clawd 的内存系统出奇地简单,与我们已经在@CamelAIOrg 实现的流程记忆非常相似。没有内存合并,也没有每月/每周的内存压缩。
这种简单性可能是优势也可能是陷阱,取决于你的视角,但我始终倾向于可解释的简单性,而不是复杂的意大利面条式结构。
记忆会永远持续,旧记忆基本上具有同等权重,因此我们可以认为不存在遗忘曲线。
Clawd的爪子:如何使用你的电脑
这是爪牙的一个护城河:你给它一台电脑并让它使用。那么它如何使用电脑呢?基本上与你所想的一致。
爪德在您的风险下为代理提供显著的计算机访问权限。它使用一个执行工具在以下位置运行 shell 命令:
-
• 沙盒:默认选项,命令在 Docker 容器中运行 -
• 直接在主机上 -
• 在远程设备上
除此之外,Clawd 还具有文件系统工具(读取、写入、编辑),
浏览器工具,基于 Playwrite,具有语义快照功能
以及进程管理(进程工具)用于后台长期命令、杀死进程等。
安全(或者没有缺失?)
与 Claude Code 类似,有一个允许列表用于用户希望批准的命令(一次性允许、始终允许、拒绝向用户显示提示)。
// ~/.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)已经预先批准。
危险的 shell 结构默认被阻止。
# these get rejected before execution:
npm install $(cat /etc/passwd) # command substitution
cat file > /etc/hosts # redirection
rm -rf / || echo "failed" # chained with ||
(sudo rm -rf /) # subshell
安全性非常类似于 Claude Code 安装的。
其理念是尽可能多地给予用户自主权。
浏览器:语义快照
浏览器工具主要不使用截图,而是使用语义快照 ,这是一种基于文本的页面可访问性树(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"
这提供了四个显著的优势。正如你可能猜到的,浏览网站的行为不一定是视觉任务。
当屏幕截图的大小为 5 MB 时,语义快照的大小将小于 50 KB,并且是图像 token 成本的几分之一。
动态系统提示
系统提示不像大多数其他框架那样是静态的。
它由技能、记忆、用户身份、时区等信息构建而成。
基本系统提示如下:
“您是运行在 Moltbot 中的个人助理。
工具
工具可用性(已根据策略过滤):工具名称区分大小写。请完全按照列表中所示的名称调用工具。
-
• read:读取文件内容 -
• exec:运行 shell 命令 -
• browser:控制网页浏览器 [...仅显示此代理实际可用的工具]
工具调用风格
默认:不要描述例行、低风险的工具调用(只需调用工具即可)。
仅在以下情况下进行描述:多步骤操作、复杂问题、敏感操作。
工作区
您的工作目录是:/path/to/workspace
将此目录视为唯一的全局工作区……
运行时
运行时:agent=main | host=macbook | os=darwin (arm64) | model=claude-sonnet-4-20250514 | channel=telegram | thinking=off
推理:关闭(除非开启/流式传输,否则隐藏)
子代理 / 代理生成
代理可以生成子代理(但子代理不能生成子代理)。
子代理获得单独的会话,父代理和子代理之间的通信通过 session_send 进行,子代理的结果会反馈回来。
父代理可以轮询子代理会话以检查其进度。
当上下文限制接近时,代理将事实保存到内存中。
历史记录被分成块,并由 LLM 对块进行总结,最后将它们组合成一个连贯的摘要来替换旧消息。
总结
Clawdbot 的流行是有充分理由的。它易于使用且有效。
然而,这项技术并非“革命性”。
炒作并非围绕非凡的新技术,但这绝非要贬低其价值。
这里有一些有趣的技术值得学习。
我注意到许多方法与 @CamelAIOrg 框架(也是开源的)及其上构建的代理 @Eigent_AI 非常相似。
也就是说,在代理方面,许多方法虽然略有不同,但基本上非常相似。
https://x.com/Hesamation/status/2017038553058857413
如果觉得内容不错,欢迎你点一下「在看」,或是将文章分享给其他有需要的人^^
相关好文推荐:
一个使用 OpenRouter 的 1 万亿令牌实证研究 | OpenRouter AI
D4RT:教会 AI 以四个维度看世界 | DeepMind
一个月内把编码主力交给 Agent 的真实体验 | karpathy
用于线性注意力的 Gated DeltaNet | Sebastian Raschka
DeepSeek的多头潜在注意力(MLA) | Sebastian Raschka
嵌入模型检索面临严重限制 | DeepLearning.AI
理解用于评估大语言模型(LLM)的四种主要方法 | Sebastian Raschka
从 DeepSeek V3 到 Mistral 3 Large:现代大语言模型(LLM)架构设计概览(三)| Sebastian Raschka
从 DeepSeek V3 到 Mistral 3 Large:现代大语言模型(LLM)架构设计概览(二)| Sebastian Raschka
从 DeepSeek V3 到 Mistral 3 Large:现代大语言模型(LLM)架构设计概览(一)| Sebastian Raschka
递归语言模型(Recursive Language Models) | Alex Zhang
重新构想 LLM 记忆:将上下文作为训练数据,使模型能够在测试时学习 | Nvidia
引入嵌套学习(Nested Learning):一种用于持续学习的全新机器学习范式

0条留言