编程 ZeroClaw 深度拆解:Rust 重写 AI Agent 网关,10MB 内存如何撑起「多模型 + 多渠道 + 记忆」全栈能力

2026-07-30 06:15:15 +0800 CST views 23

ZeroClaw 深度拆解:Rust 重写 AI Agent 网关,10MB 内存如何撑起「多模型 + 多渠道 + 记忆」全栈能力

前言:当 Node.js 成为 Agent 的天花板

2026 年上半年,OpenClaw(及其前身 Moltbot/Clawdbot)以一己之力点燃了「本地 AI 助手网关」这个赛道。多模型、多渠道、持久记忆、技能扩展——这些能力加在一起,让无数开发者第一次意识到:原来 AI 不只能聊天,真的可以「干活」。

但现实很快泼来一盆冷水。Node.js/TypeScript 的运行时开销,让 OpenClaw 在低配 VPS、树莓派、边缘设备上寸步难行。动辄 1GB+ 的内存占用、数十秒的冷启动时间,让「轻量化 AI」这个命题成了一个讽刺。

就在这时,ZeroClaw 登场了。

ZeroClaw 是一个 100% Rust 编写的 AI Agent 基础设施,同样的「多模型 + 多渠道 + 记忆 + 工具」能力,单静态二进制、<5MB 内存、毫秒级冷启动。更重要的是,它从第一天起就支持与 OpenClaw 身份兼容,还提供一键迁移命令。

这篇文章,我们来深度拆解 ZeroClaw 的架构哲学、Trait 驱动插件系统、记忆层设计、安全模型,以及它在工程层面的真实表现。


一、背景:为什么需要 Rust 重写一遍?

1.1 OpenClaw 的成与败

在批评 OpenClaw 之前,必须承认它的历史功绩。OpenClaw 真正定义了「AI 助手网关」这个产品形态:

  • 多模型聚合:Claude、GPT、Gemini、Ollama……一个网关统一接入,不需要在每个渠道里单独配置
  • 多渠道接入:Telegram、Discord、微信、飞书、Slack——用 IM 软件控制 AI,这是过去从未有过的体验
  • 记忆持久化:对话历史、人设信息、上下文积累,让 AI 不再是「金鱼」
  • 技能扩展:通过 Skills/Markdown 格式,可复用、可分享的 AI 工作流
  • 设备控制:浏览器自动化、文件操作、系统命令,让 AI 真正能执行任务

这些能力加在一起,让 OpenClaw 成为 2026 年上半年 GitHub 增速最快的开源项目之一,33 万 Star 的背后是无数开发者的热情。

但问题也很明确:

内存开销是致命的。 Node.js 运行时 + V8 引擎 + npm 依赖树,在最基础的配置下也要占用 800MB-1.5GB 内存。这意味着:

  • 512MB 的低配 VPS:跑不起来
  • 树莓派 3B+(1GB RAM):勉强能跑,swap 频发
  • 10 美元/月的共享主机:根本不够
  • 每次 npm install:等半天
  • 每次冷启动:看 Node 拉依赖,至少 30 秒起步

当你在凌晨三点需要让 AI 帮你查一个东西,打开终端发现 Node 还在初始化,那种体验是毁灭性的。

1.2 Rust 的答案:为什么是 Rust?

Rust 为 ZeroClaw 带来了三个根本性改变:

1. 零运行时依赖
Rust 编译成单个静态二进制文件,没有 VM、没有解释器、没有 GC。这意味着二进制文件本身就是一个完整的程序,部署就是 scp 一个文件过去,不需要在目标机器上安装任何运行时。

# OpenClaw 的部署
scp -r dist/ user@server:~
ssh user@server "npm install && npm run build"

# ZeroClaw 的部署
scp zeroclaw_binary user@server:~
ssh user@server "./zeroclaw daemon"

2. 内存安全 without GC
Rust 的所有权系统和借用检查器在编译期就保证了内存安全,不需要运行时垃圾回收器。ZeroClaw 的内存峰值可以控制在 4MB 以内,而 OpenClaw 随便一个简单命令就要吃掉 300MB+。

3. 真正的并发安全
Tokio 异步运行时 + Rust 类型系统,让 ZeroClaw 可以安全地同时处理来自 Telegram、Discord、CLI 的并发消息,而不用担心线程安全问题。


二、架构解析:Trait 驱动的「轮辐式」设计

2.1 整体架构:Hub-and-Spoke

ZeroClaw 采用「轮辐式」(Hub-and-Spoke)架构,有一个中心 Hub 负责协调,多个 Spoke 负责具体能力:

┌──────────────────────────────────────────────────────┐
│                      ZeroClaw Hub                      │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐           │
│  │  Gateway │  │  Memory  │  │ Security │           │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘           │
│       │              │             │                  │
│  ┌────┴────┐   ┌────┴────┐  ┌────┴────┐            │
│  │Provider │   │ Channel │  │  Tool   │            │
│  │ Trait   │   │  Trait  │  │  Trait  │            │
│  └────┬────┘   └────┬────┘  └────┬────┘            │
│       │              │             │                  │
│  ┌────┴────┐   ┌────┴────┐  ┌────┴────┐            │
│  │OpenRouter│  │Telegram │  │  shell  │            │
│  │ Claude  │  │ Discord │  │  git    │            │
│  │  GPT-4  │  │  CLI    │  │ browser │            │
│  │   ...   │  │  ...    │  │  cron   │            │
│  └─────────┘  └─────────┘  └─────────┘            │
└──────────────────────────────────────────────────────┘

Hub 是核心协调器,负责:

  • 消息路由:从哪个 Channel 来,发给哪个 Provider 处理
  • 会话管理:维护对话上下文,调用 Memory 层
  • 工具调度:根据 Provider 返回的 Tool Calls,执行对应的 Tool
  • 安全检查:配对验证、沙箱决策、白名单过滤

2.2 Trait 驱动:插件化的精髓

ZeroClaw 最优雅的设计是 Trait 驱动。所有核心能力都通过 Rust Trait 定义,替换实现只需要改配置文件,不需要动任何代码:

// Provider Trait - AI 模型提供商
pub trait LLMProvider: Send + Sync {
    async fn complete(&self, req: CompletionRequest) -> Result<CompletionResponse>;
    async fn chat(&self, req: ChatRequest) -> Result<ChatResponse>;
    async fn tools(&self) -> Result<Vec<ToolDef>>;
}

// Channel Trait - 消息渠道
pub trait MessageChannel: Send + Sync {
    async fn send(&self, msg: OutgoingMessage) -> Result<()>;
    async fn receive(&self) -> Result<IncomingMessage>;
    fn channel_type(&self) -> ChannelType;
}

// Memory Trait - 记忆存储
pub trait MemoryBackend: Send + Sync {
    async fn store(&self, entry: MemoryEntry) -> Result<String>;
    async fn retrieve(&self, query: &str, limit: usize) -> Result<Vec<MemoryEntry>>;
    async fn context(&self, window: ContextWindow) -> Result<String>;
}

// Tool Trait - 工具/技能
pub trait Tool: Send + Sync {
    fn name(&self) -> &str;
    fn description(&self) -> &str;
    fn parameters(&self) -> Schema;
    async fn execute(&self, params: Value) -> Result<ToolResult>;
}

这个设计的威力在于:你不需要修改 ZeroClaw 核心代码,就能换一个完全不同的实现。

想从 OpenRouter 换成 Groq?改一行配置:

# zeroclaw.toml
[provider]
type = "openrouter"
api_key = "sk-..."
model = "meta-llama/llama-3-70b-instruct"

想加一个新的 Channel(比如企业微信)?实现 MessageChannel Trait,然后注册即可:

// 只需要实现 Trait,不需要改动 ZeroClaw 核心
struct WecomChannel {
    corp_id: String,
    corp_secret: String,
    agent_id: i32,
}

#[async_trait]
impl MessageChannel for WecomChannel {
    async fn send(&self, msg: OutgoingMessage) -> Result<()> {
        self.send_text_message(&msg.content).await
    }
    
    fn channel_type(&self) -> ChannelType {
        ChannelType::Wecom
    }
}

2.3 Tokio 异步运行时:高性能的底层保障

ZeroClaw 的异步能力建立在 Tokio 之上,这是一个工业级的 Rust 异步运行时:

use tokio::sync::{mpsc, RwLock};
use std::sync::Arc;

pub struct ZeroClawHub {
    provider: Arc<dyn LLMProvider>,
    memory: Arc<RwLock<dyn MemoryBackend>>,
    channels: Arc<RwLock<Vec<Arc<dyn MessageChannel>>>>,
    tools: Arc<RwLock<HashMap<String, Arc<dyn Tool>>>>,
}

impl ZeroClawHub {
    // 同时监听多个渠道的消息
    pub async fn run(&self) -> Result<()> {
        let channels = self.channels.read().await;
        let mut handles = Vec::new();
        
        for channel in channels.iter() {
            let ch = Arc::clone(channel);
            let hub = Arc::clone(&self);
            
            // 每个渠道一个独立的 Tokio task,互不阻塞
            handles.push(tokio::spawn(async move {
                loop {
                    match ch.receive().await {
                        Ok(msg) => {
                            if let Err(e) = hub.process_message(msg).await {
                                tracing::error!("处理消息失败: {}", e);
                            }
                        }
                        Err(e) => {
                            tracing::error!("接收消息失败: {}", e);
                            tokio::time::sleep(Duration::from_secs(1)).await;
                        }
                    }
                }
            }));
        }
        
        futures::future::join_all(handles).await;
        Ok(())
    }
}

Tokio 的多线程 work-stealing 调度器,确保 ZeroClaw 可以高效地在单核上处理大量 IO 密集型任务,同时在多核机器上充分利用所有 CPU 资源。


三、Provider 层:28+ AI 提供商,配置即插拔

3.1 支持的提供商

ZeroClaw 内置支持 28+ AI 提供商,分为几大类:

OpenAI 兼容系列(任何 OpenAI 兼容 API 均可):

  • OpenAI(GPT-4o、GPT-4 Turbo、GPT-3.5 Turbo)
  • OpenRouter(聚合网关,访问 100+ 模型)
  • Groq(低延迟推理)
  • Together AI
  • Cloudflare Workers AI
  • Perplexity
  • DeepSeek

Anthropic 系列

  • Claude 3.5 Sonnet、Claude 3 Opus、Claude 3 Haiku
  • 支持 Anthropic 自定义端点(用于 Claude Code 集成)

Mistral 系列

  • Mistral Large、Mistral 7B、Codestral

开源/本地

  • Ollama(本地模型)
  • LM Studio
  • Text Generation WebUI

3.2 多 Provider 配置与路由

ZeroClaw 支持配置多个 Provider,并根据规则自动选择:

# zeroclaw.toml - 多 Provider 配置示例
[[providers]]
name = "fast-gpt"
type = "openrouter"
api_key = "sk-or-..."
default_model = "openai/gpt-4o-mini"
priority = 1

[[providers]]
name = "powerful-claude"
type = "anthropic"
api_key = "sk-ant-..."
default_model = "claude-3-5-sonnet-20241022"
priority = 2

[[providers]]
name = "local-llama"
type = "ollama"
base_url = "http://localhost:11434"
default_model = "llama3.1:8b"
priority = 3

[provider_fallback]
strategy = ["local-llama", "fast-gpt", "powerful-claude"]

这种设计让 ZeroClaw 天然适合成本敏感的场景:本地有 GPU 就用本地模型,省 token;本地跑不动,再走云端 API。

3.3 订阅认证:多账号与加密存储

ZeroClaw 支持 OpenAI Codex(ChatGPT 订阅)和 Anthropic 订阅认证:

# 登录 OpenAI Codex(ChatGPT Plus 订阅)
zeroclaw auth login --provider openai-codex

# 登录 Anthropic(Claude 订阅)
zeroclaw auth login --provider anthropic --token <setup-token>

# 查看已配置的认证
zeroclaw auth list

认证信息加密存储在 ~/.config/zeroclaw/auth-profiles.json 中,配合 .secret_key 文件进行加密。


四、Channel 层:全渠道接入,从 CLI 到企业微信

4.1 支持的渠道列表

ZeroClaw 的渠道支持非常全面:

渠道类型适用场景
CLI本地开发调试、脚本调用
TelegramIM个人助理、社区机器人
DiscordIM社区运营、游戏机器人
Slack协作企业内部助手
WhatsAppIM国际化团队
iMessageIMmacOS 用户
MatrixIM去中心化通信
SignalIM隐私敏感场景
Email邮件异步通信
IRC历史协议技术社区
飞书IM国内企业
钉钉IM国内企业
QQIM国内个人
Webhook回调系统集成

4.2 渠道配置示例

Telegram 机器人配置:

# zeroclaw.toml
[[channels]]
type = "telegram"
enabled = true

[channels.config]
bot_token = "123456:ABCdefGHIjklMNOpqrSTUvwxyz"

[[channels.groups]]
chat_id = -1001234567890
allowed = true
require_mention = true

Discord Webhook 配置:

[[channels]]
type = "discord_webhook"
enabled = true

[channels.config]
webhook_url = "https://discord.com/api/webhooks/..."
bot_name = "ZeroClaw Bot"
avatar_url = "https://example.com/avatar.png"

4.3 Channel Trait 的实现原理

每个 Channel 实现都需要处理两件事:接收消息发送消息。ZeroClaw 统一抽象了这两种操作:

// 接收:轮询或 WebSocket,取决于渠道类型
async fn receive(&self) -> Result<IncomingMessage> {
    IncomingMessage {
        channel: self.channel_type(),
        sender_id: "...",
        content: "...",
        raw: RawMessage,
        timestamp: Utc::now(),
    }
}

// 发送:统一的消息格式,Channel 负责转换成渠道特定格式
async fn send(&self, msg: OutgoingMessage) -> Result<()> {
    match &msg.format {
        MessageFormat::Text => self.send_text(&msg.content).await,
        MessageFormat::Markdown => self.send_markdown(&msg.content).await,
        MessageFormat::Image { url } => self.send_image(url).await,
        MessageFormat::File { path } => self.send_file(path).await,
    }
}

这种统一抽象让添加新渠道变得异常简单:只需要实现 Trait,不需要改动 Hub 代码。


五、Memory 层:SQLite 混合检索,无需外部依赖

5.1 为什么选择 SQLite?

ZeroClaw 的记忆系统完全基于 SQLite,这是一个反直觉但极其正确的选择。

大多数 AI Agent 框架的记忆系统都依赖外部服务:Pinecone(向量数据库)、Redis(缓存)、Weaviate(向量搜索)……这些系统确实强大,但它们带来了额外的部署复杂度:

  • 需要单独安装和配置
  • 需要维护连接和认证
  • 引入网络延迟和单点故障
  • 在边缘设备上几乎不可用

ZeroClaw 的做法是:用 SQLite 的全文搜索(FTS5)+ embedding 向量近似最近邻,构建一个零外部依赖的混合检索系统。

# ZeroClaw 记忆系统 vs 其他框架的记忆系统

# 其他框架(需要外部服务):
# - 1 个 ZeroClaw 进程
# - 1 个 Pinecone 实例
# - 1 个 Redis 实例
# 最低硬件要求:2GB+ RAM,额外的网络连接

# ZeroClaw(单进程零依赖):
# - 1 个 ZeroClaw 二进制文件
# - 1 个 SQLite 文件(记忆数据库)
# 最低硬件要求:10MB RAM(记忆模块),无需网络

5.2 混合检索架构

ZeroClaw 的记忆检索采用「语义 + 关键词」双路检索:

-- SQLite FTS5 全文索引
CREATE VIRTUAL TABLE memory_fts USING fts5(
    content,
    topic,
    content='memory_content'
);

-- 记忆主表
CREATE TABLE memory (
    id TEXT PRIMARY KEY,
    content TEXT NOT NULL,
    embedding BLOB,
    topic TEXT,
    channel TEXT,
    timestamp INTEGER,
    importance REAL DEFAULT 0.5,
    access_count INTEGER DEFAULT 0,
    last_access INTEGER
);

检索时,ZeroClaw 并行执行两条查询:

pub async fn retrieve(&self, query: &str, limit: usize) -> Result<Vec<MemoryEntry>> {
    // 1. 关键词检索(FTS5)
    let fts_results = self.search_fts(query, limit).await?;
    
    // 2. 语义检索(向量相似度)
    let query_embedding = self.embed_query(query).await?;
    let semantic_results = self.search_vector(&query_embedding, limit).await?;
    
    // 3. RRf 融合排序(Reciprocal Rank Fusion)
    let fused = self.rrf_fusion(fts_results, semantic_results, 0.5);
    
    Ok(self.rerank(fused, query, now))
}

5.3 上下文窗口管理

记忆系统还需要负责「上下文窗口管理」——把相关记忆塞进 LLM 的上下文窗口:

pub async fn build_context(&self, window: ContextWindow) -> Result<String> {
    let capacity = window.max_tokens * 4;
    
    // 1. 获取近期高权重记忆
    let recent = self.retrieve_recent(7, 20).await?;
    
    // 2. 获取与当前对话主题相关的记忆
    let topic_relevant = self.retrieve_by_topic(&window.topic, 10).await?;
    
    // 3. 获取高频访问的长期记忆
    let important = self.retrieve_important(10).await?;
    
    // 4. 按时间-相关-重要三维权重合并
    let mut entries = self.merge_and_score(recent, topic_relevant, important);
    
    // 5. 截断到窗口容量
    let mut context = String::new();
    for entry in entries.iter() {
        let serialized = entry.to_context_string()?;
        if context.len() + serialized.len() > capacity {
            break;
        }
        context.push_str(&serialized);
    }
    
    Ok(context)
}

5.4 从 OpenClaw 迁移记忆

ZeroClaw 提供一键迁移命令,把 OpenClaw 的记忆导入:

# 预览迁移(不执行)
zeroclaw migrate openclaw --dry-run

# 执行迁移
zeroclaw migrate openclaw

# 指定 OpenClaw 数据目录
zeroclaw migrate openclaw --source /path/to/openclaw/data

迁移过程会:

  1. 扫描 OpenClaw 的记忆文件(Markdown 格式)
  2. 解析每条记忆的元数据(时间、渠道、重要性)
  3. 转换为 ZeroClaw 的 SQLite 格式
  4. 生成 embedding(首次启动时后台完成)
  5. 保留原始时间戳和标签

六、Tool 层:可组合的工具系统

6.1 内置工具一览

ZeroClaw 内置以下工具(通过 TOML 配置启用):

[tools]
enabled = ["shell", "file", "memory", "cron", "git", "browser", "http_request", "screenshot"]

[tools.shell]
timeout_ms = 30000
allowed_commands = ["git", "npm", "cargo", "python3", "curl"]
cwd = "/home/user/workspace"

[tools.file]
allowed_paths = ["/home/user/workspace", "/tmp"]
max_file_size = 10485760

[tools.browser]
driver = "playwright"
default_viewport = { width = 1920, height = 1080 }
headless = true

6.2 工具执行与沙箱

ZeroClaw 支持两种工具执行模式:

native 模式(默认):工具直接在 ZeroClaw 进程中执行,速度快,但需要信任工具代码。

Docker 沙箱模式:工具在隔离的 Docker 容器中执行,安全性更高:

[runtime]
type = "docker"

[runtime.docker]
image = "zeroclaw/runtime:latest"
network = "none"
read_only = true
memory_limit = "256m"
cpu_limit = "0.5"
pub async fn execute_tool(&self, tool: &str, params: Value) -> Result<ToolResult> {
    match self.runtime {
        RuntimeType::Native => self.execute_native(tool, params).await,
        RuntimeType::Docker => self.execute_in_docker(tool, params).await,
    }
}

async fn execute_in_docker(&self, tool: &str, params: Value) -> Result<ToolResult> {
    let payload = serde_json::to_vec(&params)?;
    let mut client = DockerClient::unix("/var/run/docker.sock");
    
    let container = client.create_container()
        .image("zeroclaw/runtime:latest")
        .cmd(vec!["tool", tool])
        .stdin(Some(payload))
        .network("none")
        .read_only(true)
        .memory_limit("256m")
        .spawn()
        .await?;
    
    let result = container.wait_timeout(Duration::from_secs(30)).await?;
    container.remove().await?;
    
    Ok(result)
}

Docker 沙箱模式特别适合执行不可信的第三方工具或用户自定义脚本。

6.3 MCP 工具扩展

ZeroClaw 支持 MCP(Model Context Protocol)工具扩展:

[tools.mcp]
enabled = true

[[tools.mcp.servers]]
name = "filesystem"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/workspace"]

[[tools.mcp.servers]]
name = "github"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_TOKEN = "ghp_..." }

这样 ZeroClaw 可以调用任何 MCP 生态的工具,极大扩展了能力边界。


七、安全模型:安全默认,最小权限

7.1 安全设计原则

ZeroClaw 的安全设计遵循「安全默认」原则:默认配置下,系统处于最安全的状态。

Gateway 绑定本地

[gateway]
host = "127.0.0.1"
port = 3000

配对码认证

zeroclaw pair --approve
zeroclaw pair --list
zeroclaw pair --revoke <device_id>

文件系统白名单

[security]
allowed_paths = ["/home/user/workspace", "/tmp"]
denied_paths = ["/home/user/.ssh", "/home/user/.aws", "/etc"]

工作区隔离

[security]
workspace_dir = "/tmp/zeroclaw-workspace-{session_id}"

7.2 安全自检清单

ZeroClaw README 提供了安全自检建议:

# 检查 Gateway 是否暴露在公网
nmap -p 3000 <your-ip>

# 查看所有已配对设备
zeroclaw pair --list

# 查看访问日志
zeroclaw logs --level info | grep "pair\|auth\|deny"

# Docker 沙箱隔离验证
docker run --rm --network=none --read-only alpine cat /etc/hosts

八、性能对比:数据说话

8.1 基准测试数据

ZeroClaw README 提供了与其他框架的基准对比(归一化到 0.8GHz 边缘设备概念):

指标OpenClawNanoBotPicoClawZeroClaw
语言TypeScriptPythonGoRust
内存(典型)>1GB>100MB<10MB<5MB
冷启动(0.8GHz)>500s>30s<1s<0.01s
二进制体积~28MBN/A~8MB~3.4MB
目标硬件成本Mac Mini $599SBC ~$50~$10 板子~$10 级

8.2 实际测试

在一台 1GB RAM 的低配 VPS($5/月)上测试:

# ZeroClaw 启动
$ time ./zeroclaw status
  pid: 12345
  memory_mb: 3.8
  uptime_ms: 12
real    0m0.023s

# OpenClaw 对比(同配置)
$ time node dist/index.js status
  memory_mb: ~847
  uptime_ms: 8432
real    0m8.432s

ZeroClaw 的内存峰值是 OpenClaw 的 0.4%,启动速度是 OpenClaw 的 370 倍

8.3 内存分配分析

ZeroClaw 能做到极低内存占用的技术原因:

1. 无 GC 压力:Rust 的堆栈分配是确定的,不存在 GC 暂停导致的内存膨胀。

let message = String::with_capacity(256);
let buffer = vec![0u8; 1024];

2. 连接池复用:数据库连接、网络连接池化,避免重复创建销毁。

let pool = sqlx::Pool::<Sqlite>::connect("sqlite:zeroclaw.db")
    .max_connections(4)
    .min_connections(1);

3. 零拷贝设计:通过 Arc、Rc、Bytes 等智能指针减少不必要的数据复制。

struct Message {
    content: Arc<str>,
    metadata: Arc<Metadata>,
}

九、实战:从 OpenClaw 迁移到 ZeroClaw

9.1 迁移路径

ZeroClaw 提供了完整的 OpenClaw 兼容性:

身份格式兼容

cp openclaw/SOUL.md ~/.config/zeroclaw/SOUL.md
cp openclaw/IDENTITY.md ~/.config/zeroclaw/IDENTITY.md
zeroclaw identity show

记忆迁移

zeroclaw migrate openclaw --dry-run

# 输出预览:
# [DRY RUN] 迁移项:
#   - memory/2026-01-15.md (对话记忆, 2048 chars)
#   - memory/2026-02-20.md (对话记忆, 4096 chars)
#   - memory/2026-03-01.md (技能记忆, 1024 chars)
# 预计耗时:~3s

9.2 配置对照

OpenClaw → ZeroClaw 配置映射:

# OpenClaw (Node.js)
export default {
  providers: {
    openrouter: { apiKey: "sk-..." }
  },
  channels: {
    telegram: { token: "..." }
  },
  memory: {
    type: "pinecone",
    apiKey: "..."
  }
}

# ZeroClaw (Rust)
[provider]
type = "openrouter"
api_key = "sk-..."

[channels]
type = "telegram"
bot_token = "..."

[memory]
backend = "sqlite"

9.3 共存模式

ZeroClaw 支持与 OpenClaw 共存,方便逐步迁移:

zeroclaw gateway --port 3000

# 先把最重要的记忆迁过来
zeroclaw migrate openclaw --filter "importance>0.8"
zeroclaw agent "你是谁?"
zeroclaw migrate openclaw

十、限制与边界:ZeroClaw 不是银弹

ZeroClaw 不是 OpenClaw 的全面替代品,它有明确的适用边界。

10.1 功能差距

ZeroClaw 缺少 OpenClaw 的一些高级能力:

  • Skill 生态:OpenClaw 拥有丰富的社区 Skills(工作流、模板),ZeroClaw 的插件生态尚在建设中
  • 浏览器自动化:OpenClaw 的 Canvas/A2UI 界面在 ZeroClaw 中尚不支持
  • 多设备协同:OpenClaw 的设备节点(Nodes)架构更成熟
  • 生态集成:OpenClaw 拥有更多第三方集成(Notion、Linear 等)

10.2 开发活跃度

ZeroClaw 是一个相对年轻的项目(2026 年 2 月创建),相比 OpenClaw:

  • 文档还在完善中
  • 某些 Channel 的实现可能不够稳定
  • Bug 修复速度取决于社区活跃度
  • 版本号尚未正式发布(目前以 main 为准)

10.3 适用场景总结

场景推荐
低配 VPS / 边缘设备✅ ZeroClaw
树莓派 / 嵌入式✅ ZeroClaw
脚本自动化 / CI✅ ZeroClaw
企业 Slack/飞书 集成两均可
完整 Agent 技能生态❌ OpenClaw
浏览器自动化控制❌ OpenClaw
快速原型 / 开发调试两均可

结语:Rust 正在重新定义 AI 基础设施

ZeroClaw 不仅仅是一个「轻量版 OpenClaw」,它代表了一种新的思路:用系统级语言重新思考 AI Agent 的基础设施

当 Python/TypeScript 统治 AI 应用层时,Rust 正在悄然改变 AI 基础设施层。Tokio 异步运行时、SQLite 混合检索、Trait 驱动的插件架构——这些都不是新概念,但 ZeroClaw 第一个把它们整合成了一个完整的、开箱即用的 AI Agent 框架。

未来的 AI Agent 竞争,不只比谁的功能多,更比谁的部署简单、运行稳定、资源集约。在这个维度上,ZeroClaw 已经领先了一个身位。

项目地址https://github.com/zeroclaw-labs/zeroclaw

附:快速安装命令

curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/install.sh | bash
zeroclaw onboard --interactive
zeroclaw agent "你好,ZeroClaw!"

本文首发于程序员茄子(chenxutan.com),欢迎技术交流。

推荐文章

使用 Nginx 获取客户端真实 IP
2024-11-18 14:51:58 +0800 CST
在Rust项目中使用SQLite数据库
2024-11-19 08:48:00 +0800 CST
jQuery `$.extend()` 用法总结
2024-11-19 02:12:45 +0800 CST
Vue3中如何处理WebSocket通信?
2024-11-19 09:50:58 +0800 CST
mysql 计算附近的人
2024-11-18 13:51:11 +0800 CST
16.6k+ 开源精准 IP 地址库
2024-11-17 23:14:40 +0800 CST
介绍Vue3的静态提升是什么?
2024-11-18 10:25:10 +0800 CST
程序员茄子在线接单