OpenClaw 高级配置

本教程涵盖 OpenClaw 的高级配置选项、性能优化、插件开发和生产部署方案。

环境配置详解

OpenClaw 的 .env 文件支持丰富的配置项。以下是完整的配置参考:

bash
# ===== 基础配置 =====
OPENCLAW_PORT=3000
OPENCLAW_HOST=0.0.0.0
OPENCLAW_ENV=production
SECRET_KEY=your-random-secret-key-here

# ===== 数据库 =====
DATABASE_URL=postgresql://user:pass@localhost:5432/openclaw

# ===== 日志 =====
LOG_LEVEL=info
LOG_FORMAT=json
LOG_FILE=./logs/openclaw.log

# ===== 模型配置 =====
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-xxxxxxxx
OPENAI_API_BASE=https://api.openai.com/v1
OPENAI_MODEL=gpt-4

# ===== 向量数据库 =====
VECTOR_DB=chroma
CHROMA_HOST=localhost
CHROMA_PORT=8000

# ===== 缓存 =====
CACHE_ENABLED=true
CACHE_PROVIDER=redis
REDIS_URL=redis://localhost:6379

数据库配置

默认使用 SQLite,生产环境推荐使用 PostgreSQL 或 MySQL。

切换到 PostgreSQL

  1. 安装 PostgreSQL 并创建数据库:
bash
# 创建数据库和用户
sudo -u postgres psql
CREATE DATABASE openclaw;
CREATE USER openclaw_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE openclaw TO openclaw_user;
\q
  1. 修改 .env
bash
DATABASE_URL=postgresql://openclaw_user:your_password@localhost:5432/openclaw
  1. 执行数据库迁移:
bash
npm run db:migrate

切换到 MySQL

bash
# 创建数据库
mysql -u root -p
CREATE DATABASE openclaw CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'openclaw_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON openclaw.* TO 'openclaw_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
bash
# .env 配置
DATABASE_URL=mysql://openclaw_user:your_password@localhost:3306/openclaw

模型配置

多模型配置

OpenClaw 支持同时配置多个 LLM 提供商,在不同应用中使用不同模型:

bash
# OpenAI
OPENAI_API_KEY=sk-xxxxxxxx
OPENAI_MODEL=gpt-4

# Anthropic Claude
ANTHROPIC_API_KEY=sk-ant-xxxxxxxx
ANTHROPIC_MODEL=claude-3-sonnet-20240229

# 通义千问
DASHSCOPE_API_KEY=sk-xxxxxxxx
DASHSCOPE_MODEL=qwen-max

# 文心一言
WENXIN_API_KEY=xxxxxxxx
WENXIN_SECRET_KEY=xxxxxxxx
WENXIN_MODEL=ernie-bot-4

本地模型部署

OpenClaw 支持通过 Ollama 使用本地模型,无需 API Key:

bash
# 1. 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 2. 下载模型
ollama pull llama3
ollama pull qwen2

# 3. 配置 OpenClaw
# .env
LLM_PROVIDER=ollama
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=llama3

性能优化

缓存配置

启用缓存可以显著减少重复请求的响应时间和 API 调用成本:

bash
# 启用 Redis 缓存
CACHE_ENABLED=true
CACHE_PROVIDER=redis
REDIS_URL=redis://localhost:6379
CACHE_TTL=3600

# 语义缓存(相似问题命中缓存)
SEMANTIC_CACHE_ENABLED=true
SEMANTIC_CACHE_THRESHOLD=0.95

并发处理

调整并发参数以适应不同的负载场景:

bash
# 并发配置
MAX_CONCURRENT_REQUESTS=50
REQUEST_TIMEOUT=30000
QUEUE_MAX_SIZE=1000

# 模型调用并发限制
LLM_MAX_CONCURRENT=10
LLM_RATE_LIMIT=60

安全配置

生产环境必须配置的安全选项:

bash
# 安全配置
SECRET_KEY=your-very-long-random-secret-key
CORS_ORIGINS=https://yourdomain.com
RATE_LIMIT_ENABLED=true
RATE_LIMIT_MAX=100
RATE_LIMIT_WINDOW=60000

# HTTPS(推荐使用反向代理处理)
FORCE_HTTPS=true

# API 认证
API_KEY_ENABLED=true
API_KEY_HEADER=X-API-Key

安全最佳实践:

  • 使用强随机字符串作为 SECRET_KEY
  • 限制 CORS 来源为您的域名
  • 启用速率限制防止滥用
  • 使用 HTTPS 加密传输
  • 定期轮换 API Key 和密钥
  • 不要将 .env 文件提交到版本控制

插件开发

OpenClaw 支持通过插件扩展功能。插件目录结构:

text
plugins/
  my-plugin/
    index.js        # 插件入口
    package.json    # 插件配置
    README.md       # 插件说明

插件入口文件示例:

javascript
module.exports = {
  name: 'my-plugin',
  version: '1.0.0',
  description: '我的自定义插件',

  // 插件初始化
  async init(openclaw) {
    console.log('插件已加载');
  },

  // 注册自定义工具
  tools: [
    {
      name: 'get_weather',
      description: '获取天气信息',
      parameters: {
        city: { type: 'string', description: '城市名称' }
      },
      async execute({ city }) {
        // 调用天气 API
        const response = await fetch(
          `https://api.weather.com/v1/${city}`
        );
        return await response.json();
      }
    }
  ]
};

安装插件:

bash
# 安装插件
npm run plugin:install -- --path ./plugins/my-plugin

# 查看已安装插件
npm run plugin:list

# 卸载插件
npm run plugin:remove -- --name my-plugin

生产部署

推荐使用 Docker 部署 OpenClaw:

bash
# 使用 Docker Compose 一键部署
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f openclaw

docker-compose.yml 示例:

yaml
version: '3.8'
services:
  openclaw:
    image: openclaw/openclaw:latest
    ports:
      - "3000:3000"
    env_file: .env
    depends_on:
      - postgres
      - redis
    restart: always

  postgres:
    image: postgres:15
    environment:
      POSTGRES_DB: openclaw
      POSTGRES_USER: openclaw_user
      POSTGRES_PASSWORD: your_password
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

  redis:
    image: redis:7-alpine
    restart: always

volumes:
  pgdata:

监控与运维

bash
# 查看系统状态
npm run status

# 查看资源使用
npm run metrics

# 数据库备份
npm run db:backup -- --output ./backups/

# 数据库恢复
npm run db:restore -- --input ./backups/backup-2024.sql

# 清理过期数据
npm run cleanup -- --days 30

# 导出对话日志
npm run export:logs -- --format csv --output ./exports/

建议配置定时备份:

bash
# 添加 crontab 定时任务(每天凌晨 2 点备份)
crontab -e
0 2 * * * cd /path/to/openclaw && npm run db:backup -- --output ./backups/