简打卡
51.76M · 2026-03-28
OpenClaw = 开源、可自托管的 AI 智能体平台
(Open-source, Self-hostable AI Agent Platform)
Slogan: "The AI that actually does things"
(真正能做事的 AI)
| 特性 | 说明 |
|---|---|
| 本地运行 | 数据不出本地,隐私安全 |
| 多渠道接入 | 支持 WhatsApp、T@elegrimm、Slack、Discord、飞书等 |
| 3000+ 技能 | 内置丰富的自动化技能插件 |
| 工具调用 | 能执行文件操作、浏览器控制、Shell 命令等 |
| 多模型支持 | 支持 Claude、GPT、本地模型及中国模型(DeepSeek、GLM 等) |
传统 Chatbot:
用户 → 聊天 → 返回文本 → 结束
只能被动回答
无法执行操作
无状态对话
OpenClaw AI Agent:
用户 → 理解意图 → 规划任务 → 调用工具 → 执行操作 → 反馈结果
主动执行任务
操作真实系统
维护会话状态
问题一:AI 只会聊天,不会做事
场景: 你想让 AI 帮你创建一个 React 项目
传统 ChatGPT:
你: "帮我创建一个 React 项目"
AI: "好的,你可以运行 npx create-react-app myapp..."
OpenClaw:
你: "帮我创建一个 React 项目"
AI: [直接执行命令]
> npx create-react-app myapp
> cd myapp
> npm install
项目已创建完成,可以直接运行
问题二:多个聊天工具,来回切换很麻烦
OpenClaw 统一接入:
┌────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│WhatsApp│ │ T@elegrimm │ │ Slack │ │ Discord │
└────┬───┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
└───────────┼─────────────┼─────────────┘
↓
┌─────────────────┐
│ OpenClaw │
│ 统一 AI 助手 │
└─────────────────┘
问题三:隐私和安全顾虑
| 对比项 | 云端 AI 服务 | OpenClaw 本地运行 |
|---|---|---|
| 数据流程 | 对话内容 → 上传云端 → AI 处理 → 返回结果 | 对话内容 → 本地 AI 处理 → 本地执行 |
| 隐私保护 | ️ 数据可能被用于训练 ️ 敏感信息泄露风险 | 数据完全在本地 可以使用本地模型(Ollama) |
| 场景 | OpenClaw 如何帮助 |
|---|---|
| 办公自动化 | 自动处理邮件、日历、文档 |
| 开发辅助 | 代码生成、调试、Git 操作 |
| 系统管理 | 服务器坚控、日志分析 |
| 学习辅助 | 问答解释、资料整理 |
| 个人助理 | 提醒、搜索、信息汇总 |
Gateway 是 OpenClaw 的"中枢神经",负责协调所有组件,主要职责包括四个层面:
pi-ai 提供统一的 LLM 调用接口,支持 20+ 模型供应商,核心能力包括:
支持的模型供应商:
核心功能:
代码示例:pi-ai 基础用法
import { getModel, stream, Context, Tool, Type } from '@mariozechner/pi-ai';
// 1. 选择模型
const model = getModel('anthropic', 'claude-sonnet-4-5');
// 2. 定义工具
const tools: Tool[] = [{
name: 'get_time',
description: '获取当前时间',
parameters: Type.Object({
timezone: Type.Optional(Type.String())
})
}];
// 3. 构建对话上下文
const context: Context = {
systemPrompt: '你是一个有帮助的助手',
messages: [{ role: 'user', content: '现在几点了?' }],
tools
};
// 4. 流式调用
for await (const event of stream(model, context)) {
switch (event.type) {
case 'text_delta':
process.stdout.write(event.delta); // 流式输出
break;
case 'toolcall_end':
console.log('调用了工具:', event.toolCall.name);
break;
}
}
pi-agent-core 是 Agent 执行引擎,核心职责包括:
核心职责:
内置工具:
pi-coding-agent 提供命令行交互界面:
功能:
扩展机制:
| 优势 | 说明 |
|---|---|
| 生态丰富 | npm 有 200万+ 包,任何功能都能找到现成库 |
| 异步 I/O | 事件驱动,适合处理大量并发消息 |
| JSON 原生支持 | 与 AI API 交互非常方便 |
| 跨平台 | 一套代码跑 Windows/Mac/Linux |
| 开发效率高 | 类型安全 + 热重载,开发体验好 |
| 社区活跃 | 遇到问题容易找到解决方案 |
这是 AI Agent 的核心运行机制:
// 伪代码:Agent 循环
async function agenticLoop(userMessage: string) {
let context = loadUserSession(); // 加载用户会话历史
while (true) {
// 步骤 1: 调用 AI
const response = await callAI(context);
// 步骤 2: 检查是否需要调用工具
if (response.stopReason === 'tool_use') {
for (const toolCall of response.toolCalls) {
// 步骤 3: 执行工具
const result = await executeTool(toolCall);
// 步骤 4: 将结果添加到上下文
context.messages.push({
role: 'assistant',
content: response.content
});
context.messages.push({
role: 'user',
content: [{
type: 'tool_result',
tool_use_id: toolCall.id,
content: result
}]
});
}
// 继续循环,让 AI 分析工具执行结果
} else {
// 步骤 5: 没有更多工具调用,返回最终答案
saveUserSession(context);
return response.content;
}
}
}
用户: "帮我创建一个名为 hello-world 的目录"
第 1 轮: AI 理解意图
└─ 调用 bash: "mkdir hello-world"
└─ 成功
第 2 轮: AI 分析结果
└─ 返回: "已成功创建 hello-world 目录"
用户: "帮我创建一个 React 项目并启动开发服务器"
第 1 轮 → 调用 bash: "npx create-react-app myapp"
第 2 轮 → 调用 bash: "cd myapp && npm install" → 成功
第 3 轮 → 调用 bash: "cd myapp && npm start" → 已启动
第 4 轮 → 返回: "React 项目已创建并启动,访问 0"
openclaw (主项目)
│
├── @mariozechner/pi-coding-agent
│ │
│ ├── @mariozechner/pi-agent-core
│ │ │
│ │ └── @mariozechner/pi-ai
│ │ │
│ │ ├── @anthropic-ai/sdk (Claude)
│ │ ├── openai (GPT)
│ │ ├── @google/genai (Gemini)
│ │ ├── @aws-sdk/client-bedrock (AWS)
│ │ └── undici (HTTP 客户端)
│ │
│ └── @mariozechner/pi-tui
│ │
│ └── @silvia-odwyer/photon-node (Rust+Wasm)
│
├── @slack/bolt (Slack 接入)
├── grammy (T@elegrimm 接入)
├── @whiskeysockets/baileys (WhatsApp 接入)
├── discord-api-types (Discord 接入)
│
├── @lydell/node-pty (伪终端)
├── playwright-core (浏览器)
├── sharp (图片处理)
└── pdfjs-dist (PDF 处理)
| 依赖类型 | 包名 | 用途 | 是否需要编译 |
|---|---|---|---|
| 核心引擎 | @mariozechner/pi-* | Agent 核心能力 | 纯 TS |
| 消息平台 | @slack/bolt, grammy | 多渠道接入 | 纯 JS |
| AI 模型 | @anthropic-ai/sdk, openai | 调用 AI API | 纯 JS |
| 浏览器 | playwright-core | 浏览器自动化 | 纯 JS |
| 图片处理 | sharp | C++ 原生模块 | ️ 需要编译 |
| 图片处理 | @silvia-odwyer/photon-node | Rust+Wasm | 预编译 |
| 终端 | @lydell/node-pty | C++ 原生模块 | ️ 需要编译 |
# 克隆项目
git clone
cd openclaw
# 安装依赖
npm install
# 启动 Gateway
npm run gateway:start
# 方式一:使用 API Key
export ANTHROPIC_API_KEY=sk-ant-xxx
export OPENAI_API_KEY=sk-xxx
# 方式二:使用订阅登录
npm run login
# 选择 Anthropic Claude Pro/Max
# 配置 Slack
npm run config:slack
# 配置 T@elegrimm
npm run config:telegram
# 配置 Discord
npm run config:discord
# 启动 OpenClaw
npm start
# 在配置的消息平台中发送消息:
# "帮我查看当前目录的文件"
# "创建一个名为 test.txt 的文件,内容是 Hello World"
# "分析这个项目的 package.json"
OpenClaw 的核心价值体现在四个方面:
| 设计原则 | OpenClaw 的实现 | 启示 |
|---|---|---|
| 分层架构 | Gateway → Engine → Execution | 职责清晰,易于扩展 |
| 抽象统一 | pi-ai 统一多个 LLM API | 切换模型无需改代码 |
| 工具化 | 一切皆工具(Read/Write/Edit/Bash) | 简单而强大 |
| 可扩展 | Skills/Extensions 机制 | 用户可以自定义功能 |
| 本地优先 | 数据存储在本地,支持本地模型 | 隐私安全,离线可用 |
读完本文后,你可以:
作者注: 本文基于 2026 年 2 月的 OpenClaw 架构编写,如有更新请以官方文档为准。
最后更新: 2026-02-28
文章使用了 GLM 5.0 润色