Skip to content

Latest commit

 

History

History
333 lines (247 loc) · 9.78 KB

File metadata and controls

333 lines (247 loc) · 9.78 KB

OpenClaw 配置指南

通过 OpenClaw 连接 LiteLLM,所有 AI 请求经由 AWS Bedrock 路由 — 无需 Anthropic API Key。


OpenClaw 是什么?

OpenClaw 是一个开源 AI 助手框架,作为常驻守护进程运行,可连接 Discord、Telegram、Slack 等消息平台,提供文件操作、Shell 命令、浏览器自动化、定时任务等工具能力。

默认情况下 OpenClaw 直连 AI 服务商(Anthropic、OpenAI 等)。通过本指南的 LiteLLM 集成,所有 AI 请求将路由至你自建的 LiteLLM 代理 → AWS Bedrock:

  • 无需 Anthropic API Key — 直接使用 AWS Bedrock 访问权限
  • 集中化用量追踪 — 所有 token 用量记录在 LiteLLM PostgreSQL 数据库
  • 多模型路由 — 通过 LiteLLM 配置在 Opus、Sonnet、Haiku 间切换
  • 自动故障转移 — LiteLLM fallback chain 自动处理模型不可用
  • 成本控制 — 在 LiteLLM Admin UI 设置 per-key 预算和限流

前置条件

  • 已部署的 LiteLLM 实例(参见 主 README
  • LiteLLM 端点 URL(如 https://litellm.example.com
  • LiteLLM API Key(Master Key 或通过 Admin UI 创建的 Key)
  • 已安装 OpenClaw(安装指南

快速开始

1. 安装 OpenClaw

# npm(需要 Node.js 20+)
npm install -g openclaw

# 验证
openclaw --version

2. 配置 LiteLLM 作为 AI 后端

编辑 ~/.openclaw/openclaw.json

{
  "models": {
    "providers": {
      "litellm": {
        "baseUrl": "https://litellm.example.com/v1",
        "apiKey": "<your-litellm-key>",
        "api": "openai-completions",
        "models": [
          {
            "id": "claude-sonnet-4-6",
            "name": "Claude Sonnet 4.6",
            "contextWindow": 200000,
            "maxTokens": 16384
          },
          {
            "id": "claude-opus-4-6",
            "name": "Claude Opus 4.6",
            "contextWindow": 200000,
            "maxTokens": 16384
          },
          {
            "id": "claude-haiku-4-5",
            "name": "Claude Haiku 4.5",
            "contextWindow": 200000,
            "maxTokens": 16384
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": "litellm/claude-sonnet-4-6"
    }
  },
  "gateway": {
    "mode": "local"
  }
}

注意baseUrl 必须包含 /v1 后缀。模型引用格式为 litellm/<model-id>,其中 litellm 是 provider 名称。

3. 启动 Gateway

openclaw gateway start

可用模型

使用 LiteLLM 配置中定义的任意模型别名:

模型 适用场景 成本
claude-opus-4-6 复杂推理、编码、深度分析 $$$
claude-sonnet-4-6 通用任务,速度与质量均衡 $$
claude-haiku-4-5 快速响应,简单任务 $
claude-sonnet-4-5 上一代 Sonnet $$

运行时切换模型:

# 或在聊天中使用命令
/model litellm/claude-opus-4-6

工作原理

用户 (Discord / Telegram / CLI)
    │
    ▼
OpenClaw Gateway
    │
    ▼  OpenAI 兼容 API(/v1/chat/completions)
LiteLLM Proxy
    │
    ▼
AWS Bedrock (Claude 模型)

OpenClaw 使用 OpenAI 兼容的 Chat Completions API,LiteLLM 原生支持并自动翻译为 Bedrock API 格式。

关键行为:

  • 流式响应:OpenClaw 默认使用 SSE 流式传输,LiteLLM 完整支持
  • 工具调用:OpenClaw 的 tool-use 功能通过 LiteLLM 无需修改即可工作
  • Token 追踪:所有用量由 LiteLLM 记录,可在 Admin UI 查看
  • 思考模式:兼容模型(Opus、Sonnet)支持 extended thinking

验证集成

1. 检查 LiteLLM 健康状态

curl -s https://litellm.example.com/health/liveliness
# 预期: "I'm alive!"

2. 测试 API 连通性

curl -s https://litellm.example.com/v1/chat/completions \
  -H "Authorization: Bearer <your-litellm-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role": "user", "content": "Hello!"}],
    "max_tokens": 50
  }'

3. 通过 OpenClaw 测试

openclaw agent --agent main --message "What is 2+2?"
# 预期输出: 4

4. 查看 Token 用量

访问 https://litellm.example.com/ui → 用 Master Key 登录 → Usage 面板。


在 EC2 上部署 OpenClaw + LiteLLM

# 在 EC2 实例上(Amazon Linux 2023 / Ubuntu 22.04)

# 1. 安装 Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
export NVM_DIR="$HOME/.nvm" && . "$NVM_DIR/nvm.sh"
nvm install 22 && nvm use 22

# 2. 安装 OpenClaw
npm install -g openclaw

# 3. 写入配置(替换 <your-alb> 和 <your-key>)
mkdir -p ~/.openclaw
cat > ~/.openclaw/openclaw.json << 'EOF'
{
  "models": {
    "providers": {
      "litellm": {
        "baseUrl": "http://<your-alb>/v1",
        "apiKey": "<your-litellm-key>",
        "api": "openai-completions",
        "models": [
          { "id": "claude-sonnet-4-6", "name": "Claude Sonnet 4.6", "contextWindow": 200000, "maxTokens": 16384 }
        ]
      }
    }
  },
  "agents": { "defaults": { "model": "litellm/claude-sonnet-4-6" } },
  "gateway": { "mode": "local" }
}
EOF

# 4. 启动
openclaw gateway start

提示:如果 LiteLLM 和 OpenClaw 在同一个 VPC,使用内部 ALB DNS(如 http://internal-k8s-litellm-xxxx.elb.amazonaws.com)可降低延迟和数据传输费用。


故障排查

"Model not found" 错误

确保 openclaw.json 中的模型名称与 LiteLLM 配置中的别名匹配:

curl -s https://litellm.example.com/v1/models \
  -H "Authorization: Bearer <your-key>" | jq '.data[].id' | head -20

连接超时

  • 确认 LiteLLM 可达:curl -s https://litellm.example.com/health/liveliness
  • 检查安全组是否允许来自 OpenClaw 所在 IP/VPC 的流量
  • 使用内部 ALB 时,确保 OpenClaw EC2 在同一 VPC 或已建立 VPC Peering

流式传输问题

OpenClaw 需要流式支持,验证方式:

curl -N https://litellm.example.com/v1/chat/completions \
  -H "Authorization: Bearer <your-key>" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-4-6","messages":[{"role":"user","content":"Hi"}],"max_tokens":10,"stream":true}'

应看到 data: {...} 数据块逐步到达。


远程桌面访问(Amazon DCV)

OpenClaw 的部分操作需要 GUI 环境(浏览器登录、OAuth 授权、Dashboard 调试等)。在 headless EC2 上,推荐使用 Amazon DCV 提供低延迟远程桌面。

为什么用 Amazon DCV?

对比 VNC / RDP Amazon DCV
延迟 明显卡顿 GPU 硬件加速,流畅操作浏览器
协议 带宽消耗大 自适应 QUIC/WebSocket,弱网也流畅
许可费 RDP 需 CAL EC2 上免费(无需额外 license)
安全 需自行配置加密 TLS 1.3 + 证书自动管理
客户端 装专用软件 浏览器直连 https://<ip>:8443

安装(Amazon Linux 2023)

# 1. 安装桌面环境(headless EC2 默认无 GUI)
sudo yum groupinstall -y "MATE Desktop Environment"

# 2. 安装 Amazon DCV
sudo rpm --import https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY
sudo yum install -y nice-dcv-server nice-dcv-web-viewer

# 3. 启动服务
sudo systemctl enable --now dcvserver

# 4. 设置登录密码(DCV 用系统用户认证)
sudo passwd ec2-user

# 5. 创建虚拟 session
dcv create-session --type virtual --owner ec2-user openclaw-session

连接

打开浏览器访问 https://<ec2-public-ip>:8443,用 ec2-user 账号密码登录。

也可以下载 DCV Client 获得更好体验(支持 USB 重定向、多显示器等)。

适用场景

  • 首次初始化 OpenClaw(openclaw setup 交互式配置、Discord Bot Token 设置)
  • 浏览器登录授权(Discord OAuth、GitHub OAuth 等回调流程)
  • 访问 LiteLLM Admin UI(https://<alb>/ui)管理 Key 和查看用量
  • 调试 OpenClaw Dashboard(http://127.0.0.1:18789

安全配置

# 安全组只开放 DCV 端口给你的 IP(绝不用 0.0.0.0/0)
aws ec2 authorize-security-group-ingress \
  --group-id <your-sg-id> \
  --protocol tcp --port 8443 \
  --cidr <your-ip>/32

提示:用完后可以 dcv close-session openclaw-session 关闭 session,或直接 sudo systemctl stop dcvserver 停止服务,减少攻击面。

参考文档:


安全建议

  • API Key 轮换:通过 LiteLLM Admin UI 为每个 OpenClaw 实例创建独立 Key,泄露时可单独撤销
  • 网络隔离:将 OpenClaw 和 LiteLLM 部署在同一 VPC,使用内部 ALB 通信
  • 预算限制:在 LiteLLM 设置 per-key 消费上限,防止成本失控
  • 审计追踪:LiteLLM 记录所有请求的模型、token 数、成本和 Key 元数据
  • Skill 安全审查:安装第三方 OpenClaw Skill 前,建议使用 skill-vetter 进行安全审查(检查权限、网络请求、数据访问等)。⚠️ 审查结果仅供参考,不能替代人工复核——建议对关键 Skill 仍然手动检查源码

相关文档