找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1|回复: 0

OpenClaw(Clawdbot) 架构解析:

[复制链接]

2

主题

0

回帖

6

积分

新手上路

积分
6
发表于 2 小时前 | 显示全部楼层 |阅读模式
OpenClaw(Clawdbot) 架构解析:个人AI智能体的核心引擎(everyone talks about Clawdbot, but here's how it works)


1. 摘要
OpenClaw 是一个个人AI智能体,其核心是一个在本地计算机上运行的 Typescript 命令行界面(CLI)应用程序,而非传统的Web应用。它的架构旨在实现高可靠性和强大的本地计算机集成能力。

其设计的关键亮点在于采用了基于通道的命令队列,默认执行串行操作,从而有效避免了并发处理中常见的“异步/await意大利面代码”和竞态条件问题。
这种“默认串行,显式并行”的理念显著提升了系统的稳定性和可调试性。

OpenClaw的内存系统设计出奇地简洁而高效,它结合了用于存储会话记录的.jsonl文件和用于长期记忆的Markdown文件。代理通过标准的“写入文件”工具直接与Markdown记忆文件交互。其检索机制采用向量搜索(用于语义匹配)和关键字搜索(用于精确匹配)的混合模式,确保了信息检索的全面性。

该智能体最核心的“护城河”在于其深度计算机集成能力,通过工具集赋予了代理执行shell命令、操作文件系统、管理后台进程以及控制浏览器的能力。
在浏览器交互方面,OpenClaw创新性地使用“语义快照”(基于页面的可访问性树生成的文本表示)代替传统的屏幕截图,极大地减小了数据体积(从MB级降至KB级)并显著降低了LLM的Token成本。

为确保安全,OpenClaw实施了一套以用户授权为核心的安全机制,包括一个命令许可名单和对危险shell构造的默认阻止,旨在实现用户允许范围内的最大自主性。

2. 核心架构与技术栈

OpenClaw的本质是一个Typescript CLI应用程序。它并非一个Python或Next.js驱动的Web应用。作为一个本地进程,其核心职能包括:

- 本地运行:在用户的计算机上作为独立进程运行。
- 暴露网关服务器:处理来自Telegram、WhatsApp、Slack等不同渠道的连接。
- 调用LLM API:与Anthropic、OpenAI或本地模型等多种大型语言模型进行交互。
- 本地执行工具:在用户的计算机上直接运行工具和命令。
- 实现用户指令:在用户计算机上执行任意授权的任务。

3. 任务执行流程

当用户通过消息应用向OpenClaw发送提示时,系统会经过以下一系列精确协调的步骤来处理请求并生成响应:

1)通道适配器 (Channel Adapter)
  - 接收来自不同输入流(如即时通讯软件)的消息。
  - 对消息进行标准化处理并提取附件。
2)网关服务器 (Gateway Server)
  - 作为系统的任务和会话协调中心,是OpenClaw的心脏。
  - 负责接收消息并将其传递给正确的会话,能够处理多个重叠请求。
  - 关键设计:为序列化操作,系统采用基于“通道”(lane-based)的命令队列。每个会话拥有一个专用通道,确保任务按顺序执行。低风险且可并行的任务(如cron job)可以在并行通道中运行。
  - 设计哲学:这种“默认串行,显式并行”的架构避免了过度并行化导致的“异步/await意大利面代码”和调试噩梦,将开发者的心智模型从“我需要锁定什么?”转变为“什么可以安全地并行化?”。
3)智能体运行器 (Agent Runner)
  - 系统的AI核心,负责决定使用哪个模型和API密钥。
  - 具备故障切换能力:当首选模型或密钥失败时,会将该配置标记为冷却状态并尝试下一个可用选项。
  - 动态组装系统提示(System Prompt),整合可用的工具、技能和内存信息,并附加当前会话的历史记录(从.jsonl文件中读取)。
  - 内置“上下文窗口守卫”,监控上下文空间。当接近上限时,它会通过总结(压缩)会话来释放空间,或在无法处理时优雅地失败。
4)LLM API调用 (LLM API Call)
  - 一个封装了不同LLM提供商的抽象层。
  - 支持流式响应,并在模型支持的情况下请求延长思考时间。
5)Agentic循环 (Agentic Loop)
  - 当LLM返回工具调用请求时,Clawdbot会在本地执行该工具。
  - 将工具执行结果添加回对话历史中,并再次调用LLM。
  - 此循环会重复进行,直到LLM返回最终的文本响应或达到最大交互轮次(默认为约20轮)。
  - 所有与计算机的交互都在这个循环中发生。
6) 响应路径 (Response Path)
  - 将最终响应通过原始通道返回给用户。
  - 通过将用户消息、工具调用、执行结果、模型响应等信息以JSON对象的形式逐行写入.jsonl文件,来持久化会话状态,实现基于会话的记忆。

4. 内存系统:简单与实用的结合

OpenClaw通过一个简洁且可解释的双重系统来处理记忆,避免了复杂的记忆合并或压缩机制。

1)双重系统
  - 会话记录 (Session Transcripts):以.jsonl文件的形式存储,每一行是一个JSON对象,记录了单次交互的完整信息。这构成了其基于会话的短期记忆。
  - 长期记忆文件 (Long-term Memory Files):以Markdown文件的形式存储在MEMORY[.]md或memory/文件夹中。代理通过一个标准的“写入文件”工具直接创建和修改这些文件,而非依赖特殊的记忆写入API。当新对话开始时,一个钩子(hook)会触发,抓取并总结上一次对话,并将其写入Markdown记忆文件。
2) 混合搜索机制
  - 为了从记忆中检索信息,系统采用了向量搜索和关键字搜索的混合方法,以兼顾语义相似性和精确匹配。
  - 向量搜索:使用SQLite实现,用于捕捉语义相关的内容(例如,搜索“authentication bug”可以找到提及“auth issues”的文档)。
  - 关键字搜索:使用SQLite的FTS5扩展实现,用于查找精确的短语匹配。
3) 系统特点
  - 智能同步:当文件监视器检测到记忆文件发生变化时,会自动触发同步。
  - 可解释的简单性:设计理念倾向于简单明了,而非复杂的“意大利面式”架构。
  - 无遗忘曲线:记忆被永久保存,且旧记忆与新记忆具有同等权重。

5. 计算机集成:OpenClaw的“护城河”

OpenClaw的核心优势之一是其深度集成于本地计算机环境的能力,它通过一套强大的工具集赋予代理直接操作计算机的权限。

1) Shell命令执行
  - 通过一个exec工具,代理可以在用户的机器上运行shell命令。
  - 支持多种执行环境:
    > 沙盒 (sandbox):默认选项,命令在Docker容器内运行以增强安全性。
    > 主机 (host machine):直接在用户的操作系统上运行。
    > 远程设备 (remote devices):在连接的远程机器上执行。
2) 核心工具集
  - 文件系统工具:支持读取、写入和编辑本地文件。
  - 浏览器工具:基于Playwright,并采用语义快照技术进行网页交互。
  - 进程管理工具:用于处理需要长时间运行的后台命令,以及终止进程等。

6. 安全机制:用户授权下的自主性

为了在赋予代理强大能力的同时确保安全可控,OpenClaw采用了一套类似Claude Code的安全模型,其核心理念是在用户允许的范围内给予代理最大的自主权。

1) 命令审批系统
  - 通过一个位于~/.clawdbot/exec-approvals.json的许可名单文件来管理命令授权。
  - 当智能体尝试执行一个新命令时,会向用户发出提示,选项包括“允许一次”、“始终允许”或“拒绝”。
  - 用户的选择会被记录在许可名单中。
2) 默认安全设置
  - 一组被认为是安全的命令(如 jq, grep, cut, sort 等)已被预先批准。
  - 危险的shell构造在执行前会被默认阻止。

7. 浏览器交互:语义快照的创新应用

OpenClaw的浏览器工具不依赖传统的屏幕截图,而是采用一种名为“语义快照”的创新技术,这是一种基于页面可访问性树(ARIA)的文本表示。

1) 工作原理
  - 代理看到的不是页面的视觉图像,而是一个结构化的文本描述
2) 核心优势
  - 大幅减小数据体积:一张屏幕截图的大小约为5MB,而一个语义快照通常小于50KB。
  - 显著降低Token成本:文本表示的处理成本远低于图像,为LLM节省了大量的Token消耗。
  - 机器友好:为代理提供了结构化、易于解析的页面信息,使其能够更准确地理解和操作网页元素。

原文:x.com/hesamation/status/2017038553058857413

#HOW I AI#  #程序员#












































本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|一起港湾 ( 青ICP备2025004122号-1 )

GMT+8, 2026-2-8 14:03 , Processed in 0.129525 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表