OpenClaw 是什么?

OpenClaw 是一个开源的本地化 AI 助手平台,它将多种大语言模型(LLM)能力与本地工具、消息平台深度集成,让你可以在熟悉的环境中(微信、Telegram、Discord、Web 等)与 AI 交互,同时完全掌控数据隐私。

┌─────────────────────────────────────────────────────────┐
│ OpenClaw 中枢 │
├─────────────┬─────────────┬─────────────┬───────────────┤
│ 消息通道 │ 模型接入 │ 本地工具 │ 扩展能力 │
├─────────────┼─────────────┼─────────────┼───────────────┤
│ • Telegram │ • OpenAI │ • 文件系统 │ • 自定义 Skill │
│ • 微信 │ • Claude │ • 代码执行 │ • 工作流编排 │
│ • Discord │ • 本地模型 │ • 浏览器控制 │ • 多 Agent │
│ • Slack │ • Azure │ • 数据库 │ 协作 │
│ • Web UI │ • 自定义 API │ • API 调用 │ │
└─────────────┴─────────────┴─────────────┴───────────────┘


**典型使用场景:**
- 🤖 **个人助手**:通过 Telegram/微信随时查询信息、管理任务
- 💻 **开发伴侣**:在 IDE 中快速获取代码建议、执行脚本
- 📊 **数据分析师**:连接本地数据库,用自然语言查询数据
- 🔄 **自动化工作流**:定时任务、消息提醒、内容聚合

---

## 核心架构与设计理念

### 1. 模块化设计

OpenClaw 采用**插件化架构**,核心功能通过 Channels 和 Skills 扩展:

```yaml
# openclaw.yaml 配置示例
channels:
  - name: telegram
    token: ${TELEGRAM_BOT_TOKEN}
  - name: webchat
    port: 3000

skills:
  - name: weather
    enabled: true
  - name: summarize
    enabled: true
    
agents:
  default:
    model: openai/gpt-4
    temperature: 0.7

2. 隐私优先

与云端 AI 服务不同,OpenClaw 支持:

  • 本地模型:通过 Ollama 运行 Llama、Qwen 等模型
  • 数据本地化:聊天记录、文件处理都在本地完成
  • 灵活路由:敏感任务用本地模型,复杂推理用云端 API

3. 多 Agent 架构

用户消息
    │
    ▼
┌─────────────┐
│  意图识别    │ ◄── 路由 Agent
│  (Router)   │
└──────┬──────┘
       │
   ┌───┴───┐
   ▼       ▼
┌─────┐ ┌─────┐ ┌─────┐
│编程助手│ │生活助手│ │数据分析│
│Agent │ │Agent │ │Agent  │
└─────┘ └─────┘ └─────┘

安装与初始配置

环境要求

  • Node.js 18+
  • 至少 4GB RAM(运行本地模型需要更多)
  • Windows/macOS/Linux

安装步骤

# 1. 全局安装
npm install -g openclaw

# 2. 初始化工作目录
mkdir ~/openclaw-workspace
cd ~/openclaw-workspace
openclaw init

# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 添加你的 API Keys

基础配置

# ~/.openclaw/config.yaml
gateway:
  port: 8080
  host: localhost

# 模型配置
models:
  openai:
    apiKey: ${OPENAI_API_KEY}
    defaultModel: gpt-4
    
  local:
    provider: ollama
    baseUrl: http://localhost:11434
    model: llama2:13b

# 默认代理设置
defaultAgent:
  model: openai/gpt-4
  systemPrompt: |
    你是一个乐于助人的 AI 助手。
    回答要简洁明了,必要时提供代码示例。

# 启用频道
channels:
  telegram:
    enabled: true
    botToken: ${TELEGRAM_TOKEN}
    
  webchat:
    enabled: true
    port: 3000

启动服务

# 启动 Gateway 服务
openclaw gateway start

# 查看状态
openclaw status

# 查看日志
openclaw logs -f

连接多端:让 AI 触手可及

1. Telegram 机器人

# 1. 在 @BotFather 创建机器人,获取 Token
# 2. 配置环境变量
export TELEGRAM_BOT_TOKEN=your_token_here

# 3. 重启服务
openclaw gateway restart

使用示例:

用户: /weather 北京
AI: 北京今天晴天,温度 15-25°C,空气质量良好。

用户: 帮我写个 Python 爬取豆瓣电影的脚本
AI: [生成代码...]

用户: /task 提醒我明天下午3点开例会
AI: 已设置提醒:明天 15:00 开例会

2. 微信接入(个人号)

# config.yaml
channels:
  wechat:
    enabled: true
    # 使用 itchat 或 wechaty 协议
    protocol: wechaty
    puppet: wechaty-puppet-wechat

⚠️ 注意:微信个人号接入存在封号风险,建议用小号测试。

3. Web 界面

浏览器访问 http://localhost:3000 即可使用 Web 聊天界面:

channels:
  webchat:
    enabled: true
    port: 3000
    # 可选:启用认证
    auth:
      type: basic
      username: admin
      password: ${WEB_PASSWORD}

4. VS Code 插件(开发神器)

安装 OpenClaw VS Code 扩展后,可以直接在编辑器中调用:

// 选中代码,右键 "Ask OpenClaw"
// 或按 Ctrl+Shift+P 输入 OpenClaw

// 示例:解释代码
function debounce(fn, delay) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), delay);
  };
}

// AI 回复:
// 这是一个防抖函数,用于限制函数执行频率。
// 原理:延迟执行,如果期间再次调用则重新计时...

实战:构建个人知识管理助手

让我们搭建一个能管理笔记、查询资料、定时提醒的个人助手。

1. 目录结构

~/openclaw-workspace/
├── config.yaml
├── memory/                 # AI 的记忆文件
│   ├── 2024-01-15.md
│   └── long-term.md
├── notes/                  # 知识库
│   ├── work/
│   ├── learn/
│   └── ideas.md
├── skills/                 # 自定义技能
│   └── note-manager/
└── tasks/                  # 定时任务
    └── daily-report.yaml

2. 笔记管理 Skill

创建 skills/note-manager/skill.yaml

name: note-manager
description: 个人笔记管理
version: 1.0.0

commands:
  - name: save
    description: 保存笔记
    pattern: "记住[::]\\s*(.+)"
    
  - name: search
    description: 搜索笔记
    pattern: "查找[::]\\s*(.+)"
    
  - name: list
    description: 列出最近笔记
    pattern: "最近笔记"

skills/note-manager/index.js

const fs = require('fs').promises;
const path = require('path');
const { exec } = require('child_process');
const util = require('util');

const NOTES_DIR = path.join(process.env.HOME, 'openclaw-workspace/notes');

module.exports = {
  async saveNote(content, category = 'general') {
    const date = new Date().toISOString().split('T')[0];
    const notePath = path.join(NOTES_DIR, category, `${date}.md`);
    
    const timestamp = new Date().toLocaleString('zh-CN');
    const note = `\n## ${timestamp}\n\n${content}\n`;
    
    await fs.mkdir(path.dirname(notePath), { recursive: true });
    await fs.appendFile(notePath, note);
    
    return `已保存到 ${notePath}`;
  },
  
  async searchNotes(keyword) {
    // 使用 ripgrep 搜索
    const execAsync = util.promisify(exec);
    try {
      const { stdout } = await execAsync(
        `rg -i "${keyword}" ${NOTES_DIR} --type md -A 2 -B 2`
      );
      return stdout || '未找到相关内容';
    } catch (e) {
      return '搜索出错:' + e.message;
    }
  },
  
  async listRecent(count = 5) {
    // 列出最近的笔记文件
    const files = await fs.readdir(NOTES_DIR, { recursive: true });
    const mdFiles = files
      .filter(f => f.endsWith('.md'))
      .sort()
      .reverse()
      .slice(0, count);
    
    return mdFiles.join('\n');
  }
};

3. 使用示例

用户: 记住:React 19 的新特性包括 Actions、use() Hook、Document Metadata
AI: ✅ 已保存笔记(分类:general)

用户: 查找 React 19
AI: 找到以下内容:
    notes/learn/2024-01-15.md:
    React 19 的新特性包括 Actions、use() Hook...

用户: 最近笔记
AI: 最近笔记:
    - learn/2024-01-15.md
    - work/meeting-2024-01-14.md
    - ideas/startup-idea.md

自定义 Skill 开发入门

Skill 结构

my-skill/
├── skill.yaml      # 元数据配置
├── main.js         # 入口文件
├── README.md       # 文档
└── test/
    └── test.js

示例:股票查询 Skill

skill.yaml

name: stock-query
description: 查询股票实时行情
version: 1.0.0
author: your-name

# 依赖
dependencies:
  - axios

# 命令定义
commands:
  - name: query
    trigger: ["股票", "股价", "行情"]
    description: 查询股票价格
    
  - name: watch
    trigger: ["关注股票", "预警"]
    description: 设置股价预警

main.js

const axios = require('axios');

class StockSkill {
  constructor(context) {
    this.context = context;
    this.apiKey = context.config.apiKey;
    this.baseURL = 'https://api.stockdata.com/v1';
  }
  
  async query(symbol) {
    try {
      const response = await axios.get(`${this.baseURL}/quote`, {
        params: { symbol, apikey: this.apiKey }
      });
      
      const data = response.data;
      return {
        text: `${data.name} (${symbol})\n` +
              `当前价格: ¥${data.price}\n` +
              `涨跌幅: ${data.change_percent}%\n` +
              `成交量: ${data.volume}`,
        markdown: `**${data.name}** (${symbol})\n` +
                  `- 当前价格: ¥${data.price}\n` +
                  `- 涨跌: ${data.change_percent > 0 ? '📈' : '📉'} ${data.change_percent}%`
      };
    } catch (error) {
      return { error: '查询失败:' + error.message };
    }
  }
  
  async onMessage(message) {
    const text = message.text;
    
    // 匹配 "股票 000001" 或 "000001 股价"
    const match = text.match(/(?:股票|股价)\s*([0-9]{6})/);
    if (match) {
      const symbol = match[1];
      return await this.query(symbol);
    }
    
    return null; // 不匹配,让其他 skill 处理
  }
}

module.exports = StockSkill;

安装自定义 Skill

# 方式 1:本地路径
openclaw skill install ./my-skill

# 方式 2:Git 仓库
openclaw skill install https://github.com/user/my-skill

# 启用
openclaw skill enable my-skill

进阶:多 Agent 协作工作流

复杂任务可以分解给多个专业 Agent:

# agents.yaml
agents:
  # 代码专家
  coder:
    model: openai/gpt-4
    systemPrompt: |
      你是资深软件工程师,擅长:
      - 代码审查和重构
      - 算法优化
      - 技术方案设计
      回答必须包含代码示例。
      
  # 产品经理
  pm:
    model: anthropic/claude-3-opus
    systemPrompt: |
      你是产品经理,擅长:
      - 需求分析
      - 用户故事编写
      - 优先级排序
      使用中文回答,结构清晰。
      
  # 数据分析师
  analyst:
    model: openai/gpt-4
    tools:
      - python
      - sql
    systemPrompt: |
      你是数据分析师,擅长用 Python/SQL 处理数据。
      所有分析必须基于实际数据,给出可视化建议。

工作流编排

// workflows/code-review.js
module.exports = {
  name: 'code-review-flow',
  
  async execute(code, context) => {
    // 1. 代码分析
    const analysis = await context.agent('coder').ask(
      `分析以下代码的质量问题:\n\`\`\`\n${code}\n\`\`\``
    );
    
    // 2. 安全性检查
    const security = await context.agent('coder').ask(
      `检查这段代码的安全漏洞:\n\`\`\`\n${code}\n\`\`\``
    );
    
    // 3. 生成报告
    const report = await context.agent('pm').ask(
      `根据以下技术分析,生成给开发者的反馈报告:\n` +
      `代码分析:${analysis}\n` +
      `安全建议:${security}\n` +
      `要求:语气友好,给出具体改进建议`
    );
    
    return report;
  }
};

使用方式:

用户: /workflow code-review-flow
     [粘贴代码]
     
AI: 正在启动代码审查工作流...
    1️⃣ 代码质量分析完成
    2️⃣ 安全扫描完成
    3️⃣ 生成报告中...

    === 代码审查报告 ===
    整体评价:代码逻辑清晰,但有几处可以优化...
    [详细建议...]

与其他 AI 方案的对比

特性 OpenClaw ChatGPT Claude App 本地 LLM
数据隐私 ✅ 完全本地 ❌ 云端 ❌ 云端 ✅ 本地
多平台 ✅ 任意渠道 ❌ 官方 App ❌ 官方 App ❌ 通常仅 CLI
自定义扩展 ✅ Skill 系统 ❌ 有限 ❌ 有限 ⚠️ 需开发
成本 仅 API 费用 订阅费 订阅费 硬件成本
离线使用 ✅ 支持本地模型 ❌ 必须联网 ❌ 必须联网
团队协作 ✅ 多用户支持

选择建议:

  • 个人极客:OpenClaw + 本地模型,完全掌控
  • 企业团队:OpenClaw + Azure/OpenAI API,私有化部署
  • 快速体验:直接使用 ChatGPT/Claude

生产环境部署建议

Docker 部署

# Dockerfile
FROM node:18-alpine

WORKDIR /app

# 安装 OpenClaw
RUN npm install -g openclaw

# 复制配置
COPY config.yaml .env ./

# 暴露端口
EXPOSE 8080 3000

CMD ["openclaw", "gateway", "start"]
# docker-compose.yml
version: '3'
services:
  openclaw:
    build: .
    ports:
      - "8080:8080"
      - "3000:3000"
    volumes:
      - ./memory:/app/memory
      - ./skills:/app/skills
      - ./notes:/app/notes
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
    restart: unless-stopped
    
  # 可选:搭配 Ollama 本地模型
  ollama:
    image: ollama/ollama
    volumes:
      - ollama:/root/.ollama
    ports:
      - "11434:11434"

volumes:
  ollama:

安全建议

# 生产环境配置
security:
  # 启用访问控制
  auth:
    enabled: true
    type: jwt
    secret: ${JWT_SECRET}
  
  # 速率限制
  rateLimit:
    enabled: true
    requestsPerMinute: 60
  
  # 敏感词过滤
  contentFilter:
    enabled: true
    blocklist: ['密码', '密钥', 'secret']
    
  # 日志审计
  auditLog:
    enabled: true
    path: ./logs/audit.log

总结

OpenClaw 的独特价值在于自由度可扩展性

  • 🔓 开源:代码完全透明,无厂商锁定
  • 🔧 可编程:通过 Skill 系统无限扩展
  • 🔒 可控:数据本地存储,模型自由选择
  • 🌐 无处不在:任何平台都能接入

快速开始:

npm install -g openclaw
openclaw init
openclaw gateway start
# 打开 http://localhost:3000 开始对话

祝你搭建出属于自己的 AI 助手!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐