1.1 什么是 OpenClaw:个人 AI 助手的设计哲学

生成模型:Claude Opus 4.6 (anthropic/claude-opus-4-6) Token 消耗:输入 ~130,000 tokens,输出 ~12,000 tokens(本章合计)


OpenClaw 是一个运行在你自己设备上的个人 AI 助手。与 ChatGPT、Claude.ai 这样的云端服务不同,OpenClaw 的核心理念是:你的 AI 助手应该属于你自己——运行在你的机器上,连接到你已经在使用的消息平台,所有数据存储在你的本地磁盘。

用 OpenClaw 项目的 README 来说:

"If you want a personal, single-user assistant that feels local, fast, and always-on, this is it."

1.1.1 "本地优先"(Local-first)理念与传统 SaaS 的对比

在过去几年中,"Local-first"(本地优先)理念在软件工程领域逐渐兴起。这个概念最早由 Martin Kleppmann 等人在 2019 年的论文 "Local-first software: you own your data, in spite of the cloud" 中系统阐述。其核心主张是:

  1. 数据所有权:用户的数据应该存储在用户控制的设备上,而非第三方服务器

  2. 离线可用:软件应该在没有网络连接时仍能工作(至少部分功能)

  3. 低延迟:本地操作不需要网络往返,响应更快

  4. 隐私保护:敏感数据不需要离开用户的设备

OpenClaw 践行了这一理念。下表对比了 OpenClaw 与典型云端 AI 助手的区别:

维度
云端 AI 助手(如 ChatGPT)
OpenClaw

运行位置

服务提供商的云服务器

你自己的设备(笔记本、服务器、VPS)

数据存储

提供商的数据库

本地文件系统(~/.openclaw/

对话历史

提供商控制

本地 JSONL 文件,你可以直接读取

记忆机制

提供商的专有实现

纯 Markdown 文件(MEMORY.md

消息入口

提供商的网页/APP

你已有的消息平台(WhatsApp、Telegram 等)

定制能力

有限的 GPTs/Gems

完全可编程的技能系统 + 源码级定制

成本模式

月费订阅

按 API 调用付费(或使用订阅 OAuth)

当然,OpenClaw 仍然需要调用云端的大语言模型 API(如 Anthropic Claude、OpenAI GPT)来进行推理——本地设备通常没有足够的算力来运行大模型。但关键的区别在于:控制平面是本地的。你的配置、对话记录、工作区文件、记忆——这些都在你的磁盘上,你可以随时查看、备份、迁移。

从源码的角度来看,OpenClaw 的数据目录结构清晰地体现了这一设计:

1.1.2 单用户设计(Single-user):为什么不做多租户

OpenClaw 从一开始就被设计为**单用户(Single-user)**系统。这是一个有意的设计决策,而非能力上的限制。在 README.md 中,项目这样描述自己:

"The Gateway is just the control plane — the product is the assistant."

在多租户(Multi-tenant)系统中,一个服务实例同时服务多个用户。这要求系统解决数据隔离、访问控制、资源配额等一系列复杂问题。OpenClaw 选择单用户设计,带来了几个显著的简化:

  1. 信任模型简化:默认情况下,主会话(main session)中的工具拥有对宿主机的完全访问权限——因为用户就是机器的所有者。正如 README.md 中的安全章节所述:

    "Default: tools run on the host for the main session, so the agent has full access when it's just you."

  2. 会话模型简化:所有直接消息(DM)默认共享同一个主会话,提供跨设备、跨通道的对话连续性。你在 WhatsApp 上和助手说的话,在 Telegram 上也能接着聊。

  3. 配置简化:一个 JSON5 配置文件统管一切,不需要用户管理系统或权限层级。

  4. 部署简化:一台机器运行一个 Gateway 实例,不需要考虑水平扩展或负载均衡。

当然,这并不意味着 OpenClaw 完全不考虑多用户场景。当你的助手被配置为接收来自不同人的消息时(例如在群组中,或开放了 DM 白名单),OpenClaw 提供了沙箱机制来隔离非主会话:

非主会话中的 bash 命令会在独立的 Docker 容器中执行,确保不同来源的消息不会干扰宿主机或彼此。我们将在第 24 章详细讨论安全模型。

1.1.3 多通道统一收件箱

OpenClaw 最引人注目的特性之一是它的多通道统一收件箱(Multi-channel Inbox)。你不需要为每个消息平台部署一个单独的 Bot——一个 OpenClaw 实例就能同时连接到所有支持的平台:

核心通道(内置于 src/ 中):

通道
底层库
源码位置

WhatsApp

@whiskeysockets/baileys

src/whatsapp/src/web/

Telegram

grammy

src/telegram/

Discord

@buape/carbon + discord.js

src/discord/

Slack

@slack/bolt

src/slack/

Signal

signal-cli

src/signal/

iMessage (legacy)

原生 macOS imsg

src/imessage/

WebChat

Gateway 内置

src/channels/web/

扩展通道(位于 extensions/ 中,可选安装):

通道
源码位置

Microsoft Teams

extensions/msteams/

BlueBubbles (iMessage)

extensions/bluebubbles/

Matrix

extensions/matrix/

Google Chat

extensions/googlechat/

Nostr

extensions/nostr/

Twitch

extensions/twitch/

Zalo / Zalo Personal

extensions/zalo/extensions/zalouser/

LINE

extensions/line/

飞书 (Feishu/Lark)

extensions/feishu/

Mattermost

extensions/mattermost/

这种设计的核心思想是:消息通道只是传输层,AI 助手才是产品。无论消息从哪个通道进来,它们都被规范化为统一的内部格式,路由到同一个 AI Agent 进行处理,然后回复也通过相应的通道发回。

从用户的视角来看,这意味着你可以:

  • 早上在 WhatsApp 上让助手帮你查日程

  • 下午在 Slack 的工作频道中让它帮你总结文档

  • 晚上在 Telegram 上让它帮你记录想法

  • 而这些对话共享同一个上下文——助手"记得"你在不同平台上说过的话

从工程的视角来看,实现这一能力的关键在于 OpenClaw 的通道适配器(Channel Adapter) 架构。每个通道实现一个统一的接口,负责:

  1. 入站:监听通道消息,转换为 OpenClaw 内部格式

  2. 出站:接收 OpenClaw 的回复,转换为通道特定的格式发送

  3. 能力声明:告知 Gateway 该通道支持哪些功能(图片、音频、Markdown、反应、线程等)

我们将在第 11-13 章深入分析这一适配器架构的实现。


到这里,你应该对 OpenClaw 的核心理念有了初步了解。简而言之:

  • 本地优先:数据和控制在你手中

  • 单用户:为个人助手场景优化,降低复杂度

  • 多通道:一个助手,所有平台

  • 开源可定制:MIT 许可证,源码完全开放

接下来,让我们从架构的角度来看看这一切是如何组织在一起的。

Last updated