OpenClaw+飞书+通义千问 AI助手搭建

0 阅读7分钟

OpenClaw+飞书+通义千问 AI助手搭建

OpenClaw + 飞书 + 通义千问:从踩坑到跑通的私有 AI 助手搭建全记录

OpenClaw 是一个开源的 AI 网关,支持对接多种聊天平台和大模型。本文记录了在资源受限的 CentOS 7 服务器上部署失败后,转向 Mac 本地部署,最终成功打通飞书机器人 + 通义千问的完整过程。涉及 WebSocket 长连接、OpenAI 兼容 API 适配、多层配置文件调试等实际工程问题,附踩坑记录和成本分析。

一、最终架构

先看最终跑通的架构,后面再讲怎么一步步走到这里的:

图表

二、部署方案的抉择:服务器 vs 本地

最初的方案是部署到云服务器,实现 7×24 小时运行。服务器配置:CentOS 7,1.8G 内存,单核 CPU。

实际部署中遇到了三个关键问题:

图表

服务器部署的最低要求

资源最低要求推荐配置我的服务器结果
内存2G4G+1.8GOOM
系统Ubuntu 20.04+ / CentOS 8+Ubuntu 22.04CentOS 7glibc 太老
Node.js18+20 LTS需手动安装勉强可以
网络能访问飞书 API-国内服务器OK

三、完整搭建流程

下面是最终跑通的完整流程,按顺序来不会出错:

图表

3.1 安装 OpenClaw
# 确认 Node.js 版本(需要 18+)
node -v

# 全局安装 OpenClaw
npm install -g openclaw@latest

# 验证
openclaw --version

# 初始化(选择 local 模式)
openclaw onboard

# 启用飞书插件
openclaw plugins enable feishu
3.2 飞书应用配置

登录飞书开放平台,创建企业自建应用,然后:

① 配置权限 — 进入「权限管理」→「批量开通」,粘贴:

{
  "scopes": {
    "tenant": [
      "im:chat.access_event.bot_p2p_chat:read",
      "im:chat.members:bot_access",
      "im:message",
      "im:message.group_at_msg:readonly",
      "im:message.p2p_msg:readonly",
      "im:message:readonly",
      "im:message:send_as_bot",
      "im:resource",
      "contact:user.employee_id:readonly",
      "event:ip_list"
    ],
    "user": [
      "im:chat.access_event.bot_p2p_chat:read"
    ]
  }
}

② 启用机器人 — 「应用能力」→「机器人」→ 启用

③ 事件订阅(⚠️ 这步要在 Gateway 启动之后做):

  • 「事件与回调」→ 订阅方式选「使用长连接接收事件」
  • 添加事件:im.message.receive_v1

④ 发布应用 — 创建版本 → 提交审核 → 等待通过

3.3 OpenClaw 配置(最容易出错的部分)

需要修改两个配置文件,缺一不可:

文件一:~/.openclaw/openclaw.json(全局配置,关键字段)

{
  "agents": {
    "defaults": {
      "model": "openai/qwen-turbo"
    }
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "domain": "feishu",
      "connectionMode": "websocket",
      "dmPolicy": "open",
      "allowFrom": ["*"],
      "accounts": {
        "default": {
          "appId": "cli_xxxxxxxxxx",
          "appSecret": "your-app-secret",
          "botName": "AI Assistant"
        }
      }
    }
  },
  "models": {
    "providers": {
      "openai": {
        "api": "openai-completions",
        "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
        "apiKey": "sk-your-dashscope-key",
        "models": [{
          "id": "qwen-turbo",
          "name": "Qwen Turbo",
          "reasoning": false,
          "input": ["text"],
          "cost": { "input": 0, "output": 0 },
          "contextWindow": 131072,
          "maxTokens": 8192
        }]
      }
    }
  }
}

文件二:~/.openclaw/agents/main/agent/models.json(Agent 模型配置)

{
  "providers": {
    "openai": {
      "api": "openai-completions",
      "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
      "apiKey": "sk-your-dashscope-key",
      "models": [{
        "id": "qwen-turbo",
        "name": "Qwen Turbo",
        "reasoning": false,
        "input": ["text"],
        "cost": { "input": 0, "output": 0 },
        "contextWindow": 131072,
        "maxTokens": 8192
      }]
    }
  }
}
3.4 启动
export OPENAI_API_KEY="sk-your-dashscope-key"
export OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
openclaw gateway

看到以下输出就说明成功了:

[gateway] agent model: openai/qwen-turbo        ← 模型正确
[feishu] feishu[default]: WebSocket client started
[info]: [ '[ws]', 'ws client ready' ]            ← 飞书连接成功

四、踩坑全记录

按时间顺序,把这次搭建过程中遇到的所有坑都列出来:

图表

详细的问题和解决方案:

#问题现象根因解决方案
1npm install 进程被杀服务器内存 1.8G 不够加 swap 或换大内存机器,最终选择本地部署
2Docker build 服务器死机构建过程吃光内存+swap放弃 Docker 方案
3Node 模块报 glibc 错误CentOS 7 glibc 2.17 太老换系统或本地部署
4channels add 后凭证丢失CLI 持久化 bug手动编辑 ~/.openclaw/openclaw.json
5发消息无反应,日志无记录没添加 im.message.receive_v1飞书后台「事件与回调」添加该事件
6报 Anthropic API key 错误没设置默认模型,fallback 到 Claude设置 agents.defaults.model: "openai/qwen-turbo"
7报 api: undefined 错误models 配置缺少 api 字段添加 "api": "openai-completions"
8Config invalid 启动失败api 值写了 "openai"改为 "openai-completions"(有效值列表见下方)

api 字段的有效值:

openai-completions      ← 通义千问/DashScope 用这个
openai-responses
anthropic-messages
google-generative-ai
ollama                  ← 本地 Ollama 用这个
bedrock-converse-stream
github-copilot

五、Token 成本分析:别被"免费"骗了

这是很多人忽略的问题。OpenClaw 作为 AI 网关,每次对话都会消耗大量 Token,远超你的想象。

图表

为什么 Token 消耗这么大?

OpenClaw 不是简单的消息转发。每次用户发消息,它会把系统提示词、工具定义、历史对话上下文全部打包发给大模型。一条"你好"可能就消耗 5000+ tokens。随着对话轮次增加,上下文越来越长,Token 消耗指数级增长。

⚠️ 成本警告

如果你用的是 Claude 4.6 或 GPT-5 这类贵的模型,一个活跃用户一天聊 100 轮,月成本可能超过 ¥500。通义千问 qwen-turbo 是目前性价比最高的选择,几乎可以忽略成本。

建议:先用 qwen-turbo 测试,确认需求后再考虑升级模型。

控制成本的几个建议
策略做法效果
选便宜的模型qwen-turbo 而不是 qwen3.5-max成本降低 20 倍
限制上下文长度OpenClaw 的 compaction 模式设为 safeguard自动压缩过长的对话历史
关闭不需要的插件禁用 feishu_doc、feishu_wiki 等工具插件减少工具定义的 Token 开销
设置用户限流用 dmPolicy: "pairing" 控制访问防止滥用
监控用量定期查看 DashScope 控制台的用量统计及时发现异常消耗

六、专业建议

6.1 部署方案选择

图表

6.2 安全建议
  • 不要用 open 策略上生产dmPolicy: "open" 配合 allowFrom: ["*"] 意味着任何人都能和你的机器人聊天,消耗你的 API 额度。生产环境用 pairingallowlist
  • API Key 不要硬编码:用环境变量传入,不要写在配置文件里提交到 Git
  • 定期轮换 App Secret:飞书 App Secret 泄露后要立即在开放平台重置
  • 监控 API 用量:在 DashScope 控制台设置用量告警,防止被刷
6.3 稳定性建议
  • Mac 本地用 launchd 设置开机自启:防止重启后忘记启动 Gateway
  • 写启动脚本:把环境变量和启动命令封装成脚本,一键启动/停止/查日志
  • 日志监控:定期检查 /tmp/openclaw/ 下的日志,关注错误信息
  • Gateway 健康检查:WebSocket 连接可能断开,需要定期确认 ws client ready 状态
6.4 模型选择建议
场景推荐模型理由
日常闲聊 / 简单问答qwen-turbo便宜、快、够用
代码辅助 / 复杂推理qwen3.5-turbo能力更强,性价比高
专业写作 / 高质量输出qwen3.5-max最强能力,但贵
隐私敏感场景本地 Ollama (Qwen3/DeepSeek-R1)数据不出本机
不差钱Claude 4.6 / GPT-5全球顶级模型

七、总结

回顾整个过程,最大的感受是:OpenClaw 的设计理念很好,但对国内用户不够友好。默认配置全部面向 Anthropic Claude,用国产模型需要手动改好几个配置文件,而且文档里没有明确说明哪些字段是必填的。

但一旦跑通了,体验确实不错:

  • 飞书 WebSocket 长连接,不需要公网 IP,NAT 后面也能用
  • 通义千问 qwen-turbo 几乎免费,日常使用月成本不到 ¥10
  • 支持流式输出,回复速度很快
  • 支持多 Agent、群聊、工具调用等高级功能

如果你也想给团队搞一个飞书 AI 助手,希望这篇踩坑记录能帮你省下半天时间。

提醒:部署前务必确认服务器资源是否满足最低要求(内存 ≥ 2G,系统 ≥ CentOS 8 / Ubuntu 20.04),避免在资源不足的环境上反复折腾。


原文链接: [OpenClaw+飞书+通义千问 AI助手搭建](www.bthlt.com/note/369366… AI助手搭建) 作者: 王梓 | 葫芦的运维日志