在 AICoder 上部署 OpenClaw (MoltBot)
OpenClaw(曾用名 ClawdBot、MoltBot)是一个活跃的开源项目,旨在为用户提供灵活、可扩展的自动化机器人解决方案。无论您是想搭建一个即时通讯机器人,还是需要一个自动化任务处理助手指,OpenClaw 都是一个极佳的选择。
最近,OpenClaw 社区发布了重大更新,项目名称也正式确立为 OpenClaw。
为什么选择 AICoder?
部署各类 Bot 或自动化脚本时,最大的痛点往往是服务器成本。为了运行一个简单的机器人而购买云服务器,不仅价格昂贵,配置起来也颇为繁琐。
AICoder 完美解决了这个问题。平台为每一位开发者提供了免费的 2 核 CPU、4GB 内存(2C4G)开发实例。
- 完全免费:无需复杂的申请流程,即可使用标准的 2C4G 实例进行开发与测试。
- 轻量级友好:对于 OpenClaw 这类基于 Node.js/Python 的轻量级应用,2C4G 的配置足以保证流畅运行。
- 开箱即用:环境预装了 git 等常用工具,并提供 Root 权限,可自由安装 Node.js/Python 等运行环境。
提示
AICoder 规格说明:
- 存储:实例配备 10GB 系统盘。建议定期清理
npm缓存以节省空间。 - 连接:支持网页端 Shell 及通过跳板机进行 SSH 远程连接。
- 生命周期:AICoder 主要定位为开发环境。如果您的租户未购买付费资源池,长时间不操作 AICoder Shell(非活跃状态)可能会导致实例回收。建议使用
tmux等工具保持会话或配合 Web 预览功能保持活跃。
- 存储:实例配备 10GB 系统盘。建议定期清理
注意
无需公网 IP:AICoder 虽无公网 IP,但 OpenClaw 利用 Long Polling/WebSocket 技术完全兼容此类内网环境,零配置即可接收消息。详见文末 网络原理。
强大的心脏:GenStudio LLM API
除了免费的算力 (AICoder),智算云平台还为 OpenClaw 提供了强大的 LLM API 服务支持。
- OpenAI 兼容:完全兼容 OpenAI 接口协议,OpenClaw 可直接调用。
- 海量模型:支持 DeepSeek-V3/R1、Kimi、GLM-4 等顶尖模型,按需切换。
- 极速体验:企业级推理加速,让您的机器人回复更加迅速。
您可以直接在平台控制台获取 API Key,稍后我们在配置 OpenClaw 时会用到。
在本教程中,我们将结合 免费 AICoder 实例 与 GenStudio LLM API,手把手部署一套功能完备的 OpenClaw 智能助手。
注意
预置大语言模型 API 服务有 API 频率限制。租户在 GenStudio 的服务等级决定了 API 调用是否计费,以及享受的 API 频率上限。详见 LLM API 计费规则。
教程目标与关键挑战
在本教程结束时,您将获得一个完全免费、长期在线的 AI 智能助手。它具备以下能力:
- 多渠道接入:既可以通过浏览器 Web UI 进行管理,也能直接接入飞书 (Feishu) 等即时通讯软件。
- 无限记忆:配置了本地向量库,拥有长期记忆能力。
- 零成本托管:运行在 AICoder 免费实例上,无需购买服务器。
应对环境限制的特殊配置
AICoder 是一个高安全性的容器化开发环境,这虽然带来了免费的算力,但也带来了一些特殊的网络和权限限制。如果脱离此环境(例如在标准云服务器)部署,步骤会简单得多。
为了在免费资源上跑通流程,本教程特别针对以下限制设计了"绕过"方案:
战胜完全内网环境 (无公网 IP)
- 限制:AICoder 实例没有公网 IP,传统的 Webhook 机器人无法直接回调到您的服务。
- 对策:利用 OpenClaw 对 WebSocket / Long Polling 的原生支持。机器人主动向飞书/Telegram 建立长连接接收消息,无需配置内网穿透。
解决容器进程管理 (无 Systemd)
- 限制:AICoder 是轻量级 Docker 容器,未预装
systemd。官方文档中依赖sudo systemctl start openclaw的命令在这里无法执行。 - 对策:我们引入 PM2 进程管理器。它不仅能替代 Systemd 守护 OpenClaw 进程,还能配合 npm 脚本实现日志查看和自动重启。
- 限制:AICoder 是轻量级 Docker 容器,未预装
突破网络访问障碍 (拉取依赖)
- 限制:容器内网在拉取 GitHub 源码或某些 npm 二进制包时可能受限。
- 对策:通过 SSH 远程端口转发 技术,让 AICoder 实例直接复用您本地电脑的代理网络,并配合国内镜像源,实现环境的无缝安装。
Step 0 准备 AICoder 环境
为了确保我们的开发过程顺利进行,我们需要先搭建好基础环境。
激活 AICoder 实例
AICoder 仅支持 SSH 密钥对认证。在开始之前,请确保您已将 SSH 公钥添加到智算云平台。详细步骤请参考 添加 SSH 公钥。
登录智算云平台。
点击顶部导航栏的 AICoder 图标。如果是首次使用,系统会自动为您初始化实例。
等待终端初始化完成后,点击右上角的「钥匙」图标,复制 SSH 连接命令(包含 Host, HostName, ProxyJump, User 等信息)。
配置 VS Code 远程连接与代理
代理服务对于成功拉取 GitHub 代码和安装依赖至关重要。通过简单的 SSH 配置,我们将让内网环境的 AICoder 复用您本地计算机的代理服务(需自行采购),从而跨越网络障碍,实现「无感级」的高效开发体验。
由于 OpenClaw 代码托管在 GitHub,且后续拉取依赖也需要稳定的网络环境,我们需要利用 SSH 远程端口转发,让 AICoder 实例复用您本地计算机的代理网络。
打开 VS Code,确保已安装 Remote - SSH 插件。
📖 VS Code 远程开发:为开发机、AICoder 提供本地般的开发体验修改本地 SSH 配置文件(通常位于
~/.ssh/config),参考下列配置进行添加:重要
关键步骤:配置远程端口转发 请务必在配置中添加
RemoteForward字段。这将把您本地的代理服务映射到 AICoder 中。该配置不仅打通了终端网络,还能让 GitHub Copilot 等 VS Code 扩展共享本地代理流量,极大地提升开发体验。详见 共享本地代理服务至远程主机。
请根据您本地代理软件的实际端口(如 Clash 常为 7890,V2Ray 常为 10808)修改下文中的
10080。txt#这是示例配置,请务必替换为您从平台复制的实际 Host 和 HostName Host aic-da3sf44m5p44xkga HostName aic-da3sf44m5p44xkga ProxyJump ssh-jumper.cloud.infini-ai.com User root # 格式:RemoteForward 远程IP:远程端口 本地IP:本地端口 # 下例将本地的 10080 (http) 和 10081 (socks5) 端口映射到远程 RemoteForward 127.0.0.1:10080 127.0.0.1:10080 RemoteForward 127.0.0.1:10081 127.0.0.1:10081 ExitOnForwardFailure yes ServerAliveInterval 30 ServerAliveCountMax 3保存配置后,在 VS Code 左侧「远程资源管理器」中选择该主机进行连接。
连接成功后,务必在 VS Code 终端设置环境变量,以确保后续拉取代码和安装依赖时能够正常访问网络(假设映射端口为 10080/10081):
shell# 启用代理(后续步骤强依赖此配置) export http_proxy=http://127.0.0.1:10080 export https_proxy=http://127.0.0.1:10080 export all_proxy=socks5://127.0.0.1:10081 # 验证:哪怕是内网,也可以通过代理访问公网 curl -I https://google.com如果在终端看到
HTTP/1.1 200 OK或301 Moved Permanently等响应,说明网络已打通。提示
VS Code 自动端口转发
当您在 VS Code 的集成终端中运行类似
pm2 start ...或其他启动服务的命令时,VS Code 往往会自动检测到新打开的端口(如18789)并自动为您建立转发。如果您发现端口已自动出现在 "PORTS / 端口" 面板中,则无需手动修改 SSH 配置文件。这得益于 VS Code 强大的远程开发体验。
提示
更多关于 VS Code 远程开发的细节,可参考教程:VS Code 远程开发。
Step 1 安装 OpenClaw
在 VS Code 终端中连接到 AICoder 后,我们就可以开始安装 OpenClaw 了。得益于 AICoder 提供的标准 Ubuntu 环境,我们可以便捷地配置 Node.js 运行环境。
验证 Node.js 环境
AICoder 实例默认未预装 Node.js,或版本可能不满足 OpenClaw 的要求(推荐 Node.js >= 22)。我们建议提前安装 LTS 版本。
# 下载并运行 Node.js 22 安装脚本 (LTS 版本更稳定)
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
# 安装 Node.js
apt install -y nodejs
# 验证安装
node -v # 应显示 v22.x.x使用官方脚本一键安装
警告
关键优化:由于 AICoder 的网络环境连接 GitHub Releases(用于下载 sharp 等依赖的预编译文件)可能较慢,极易导致安装过程卡在 "Installing OpenClaw..."。
请务必在运行安装命令前,设置以下国内镜像加速变量,这能将安装时间从几十分钟缩短到几秒钟。
在终端中执行以下命令(已包含优化配置):
# 1. 设置 npm 镜像和二进制文件下载加速
export npm_config_registry=https://registry.npmmirror.com
export npm_config_sharp_binary_host=https://npmmirror.com/mirrors/sharp
export npm_config_sharp_libvips_binary_host=https://npmmirror.com/mirrors/sharp-libvips
# 2. 自动通过 curl 安装
curl -fsSL https://openclaw.bot/install.sh | bash
# 3. 预先安装 PM2 进程管理器 (用于后续保活)
npm install -g pm2
# 或者通过 npm 全局安装
# npm install -g openclaw@latest初始化配置
机制说明: OpenClaw 的安装脚本 (install.sh) 设计了自动引导机制。默认情况下,它会在安装结束前检查环境变量 OPENCLAW_NO_ONBOARD。如果该变量未置为 1,脚本将自动为您执行 openclaw onboard,进入交互式初始化流程。
这种机制可以确保新手用户「开箱即用」。在 AICoder 环境中,我们通常直接跟随此自动流程即可。
情况 A:自动进入向导 如果安装脚本运行结束后,您的终端直接变成了交互式配置界面,请直接按照下文指引操作。
情况 B:手动触发 如果您意外退出了向导,或者使用了高级安装参数跳过了引导,可以随时通过命令手动启动:
shellopenclaw onboard
交互指引参考:
- Onboarding mode: 选择 Quickstart
- Model/auth provider:选择 Skip for now。如果您持有 OpenAI 或 Anthropic 等预置服务商的 Key,也可以在此直接配置使用。
- Skip for now 说明:本教程示范使用智算云 GenStudio LLM API (Infini-AI)。配置向导不包含 GenStudio 选项,您可先暂略,稍后通过配置文件修正。
- Filter models by provider: 如果已选择 Skip for now,此处任意选择即可。
- Select channel (QuickStart): 选择 Skip for now。
- Configure skills now? (recommended): 选择 No。
警告
环境限制:AICoder 容器环境不支持 Systemd。请在向导中跳过 Daemon 安装,随后按照下文指引使用 PM2 进行管理。
- Enable hooks?: 选择 session-memory。
注意
关于 "Gateway Failure" 的说明
在 onboarding 完成后,由于我们刚刚跳过了 Daemon 的自动启动,您可能会看到类似 Gateway Failure (Health check failed: gateway closed) 的报错,或者发现服务并未运行。
这是完全正常的现象。因为 Gateway 进程尚未启动,CLI 无法连接到它。请继续执行下一步,通过 PM2 启动服务即可解决此问题。
配置自定义模型服务商(推荐)
如果不使用初始化配置中的任何预置的模型供应商,可通过配置文件,添加 GenStudio 为自定义模型服务商,确保 Web UI 启动后能立即开始对话。
虽然您可以在启动后通过图形界面添加,但通过修改配置文件预先注入,可以让您获得更流畅的「开箱即用」体验,避免首次启动时的配置提示。
提示
替代方案:您也可以选择先跳过此步,直接启动服务,然后访问 Web UI(默认 http://localhost:18789),在左侧导航栏点击 "Config" -> "Models" 进行可视化添加。
操作步骤 (预注入配置):
在 VS Code 中打开配置文件
~/.openclaw/openclaw.json(可直接在终端运行code ~/.openclaw/openclaw.json打开)。onboard命令生成的配置文件包含了许多重要的运行参数(如maxConcurrent并发限制、workspace路径等)。请勿直接覆盖整个文件,而是找到或添加models字段,配置兼容 OpenAI 协议的服务商。配置示例 (保留默认参数并修改):请重点关注
agents.defaults.model、agents.defaults.models和根节点的models部分:json{ "agents": { "defaults": { "model": { "primary": "infini/kimi-k2.5" }, "models": { "infini/kimi-k2.5": {} }, "workspace": "/root/.openclaw/workspace", "compaction": { "mode": "safeguard" }, "maxConcurrent": 4, "subagents": { "maxConcurrent": 8 } } }, // 2. 在 JSON 根对象中添加 models 定义 (通常在 agents 同级) "models": { "providers": { "infini-ai": { "baseUrl": "https://cloud.infini-ai.com/maas/v1", "apiKey": "sk-your-key-here", "api": "openai-completions", "models": [ { "id": "kimi-k2.5", "name": "Kimi K2.5" }, { "id": "glm-4.7", "name": "GLM 4.7" } ] } } } }提示
这里的
primary字段决定了 Bot 默认使用的模型。请确保它与下方models.providers.<provider>.models[].id的格式一致(通常为provider/model-id)。
配置后台保活 (PM2)
配置完成后,我们使用 PM2 来启动并守护进程。
# 启动 OpenClaw Gateway 并命名为 "openclaw-bot"
# 根据架构文档,启动命令通常为 openclaw gateway (前台运行模式)
pm2 start "openclaw gateway" --name openclaw-bot
# 冻结当前进程列表(以便后续恢复)
pm2 save验证与管理
PM2 显示 online 并不代表服务内部逻辑完全启动。您需要查看日志来确认 Web 界面是否准备就绪。
# 查看实时日志
pm2 logs openclaw-bot --lines 50如何判断启动成功? 当您在日志中看到类似下面的输出时,说明 Web GUI 已经成功启动:
[gateway] listening on ws://127.0.0.1:18789
Registered hook: session-memory -> command:new此时,openclaw health 命令也应该能显示 "Gateway: connected" 和 API 版本信息。
提示
关于 Token 认证错误 如果在错误日志中看到 reason=token_missing,不用惊慌。这是因为浏览器 Web UI 第一次尝试连接时可能未携带 Token。
只要您通过带 Token 的链接访问(通常 onboarding 结束时会打印,也可使用 openclaw dashboard --no-open 命令获取),或者在 Web UI 界面输入 Token,此错误即会自动消失。
# 如果需要重启机器人
pm2 restart openclaw-bot警告
请勿使用 openclaw gateway 管理命令
OpenClaw CLI 自带的 openclaw gateway start/restart 命令强依赖 Systemd。在 AICoder 环境运行这些命令会报错:Error: systemctl --user unavailable。
请始终使用 PM2 命令代替:
我们在上一步通过 PM2 启动的 openclaw-bot 进程,其执行的正是 openclaw gateway 命令。因此,重启 PM2 进程完全等同于重启 Gateway 服务。
- 重启:
pm2 restart openclaw-bot - 停止:
pm2 stop openclaw-bot - 日志:
pm2 logs openclaw-bot
Step 2 深度验证与调试
除了使用 pm2 status 查看进程状态外,我们还可以使用 OpenClaw 自带的命令检查业务逻辑健康度,或直接访问 Web 仪表盘。
业务健康检查
OpenClaw 提供了丰富的 CLI 命令来确认系统状态。
openclaw status 命令查看 Gateway 系统状态、Web UI 地址及 Token
# 1. 查看 Gateway 系统状态、Web UI 地址及 Token
openclaw status此命令能帮您快速获取 Dashboard 地址、Auth Token 以及 Gateway 运行状态。
Overview
┌─────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Item │ Value │
├─────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Dashboard │ http://127.0.0.1:18789/ │
│ OS │ linux 5.15.0-94-generic (x64) · node 22.22.0 │
│ Tailscale │ off │
│ Channel │ stable (default) │
│ Update │ pnpm · npm latest 2026.1.29 │
│ Gateway │ local · ws://127.0.0.1:18789 (local loopback) · reachable 16ms · auth token · aic-da3sf44m5p44xkga-aicoder-0 (10.212.69.62) │
│ │ app unknown linux 5.15.0-94-generic │
│ Gateway service │ systemd not installed │
│ Node service │ systemd not installed │
│ Agents │ 1 · no bootstraps · sessions 1 · default main active 55m ago │
│ Memory │ enabled (plugin memory-core) · unavailable │
│ Probes │ skipped (use --deep) │
│ Events │ none │
│ Heartbeat │ 30m (main) │
│ Sessions │ 1 active · default kimi-k2.5 (200k ctx) · ~/.openclaw/agents/main/sessions/sessions.json │
└─────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Security audit
Summary: 0 critical · 2 warn · 1 info
WARN Reverse proxy headers are not trusted
gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client c…
Fix: Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.
WARN State dir is readable by others
/root/.openclaw mode=755; consider restricting to 700.
Fix: chmod 700 /root/.openclaw
Full report: openclaw security audit
Deep probe: openclaw security audit --deep
Channels
┌──────────┬─────────┬────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Channel │ Enabled │ State │ Detail │
├──────────┼─────────┼────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
└──────────┴─────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Sessions
┌──────────────────────────────────────────────────────────────────────────────────────────────┬────────┬─────────┬──────────────┬────────────────┐
│ Key │ Kind │ Age │ Model │ Tokens │
├──────────────────────────────────────────────────────────────────────────────────────────────┼────────┼─────────┼──────────────┼────────────────┤
│ agent:main:main │ direct │ 55m ago │ kimi-k2.5 │ 11k/200k (5%) │
└──────────────────────────────────────────────────────────────────────────────────────────────┴────────┴─────────┴──────────────┴────────────────┘
FAQ: https://docs.openclaw.ai/faq
Troubleshooting: https://docs.openclaw.ai/troubleshooting
Next steps:
Need to share? openclaw status --all
Need to debug live? openclaw logs --follow
Need to test channels? openclaw status --deep注意
状态解读:Memory unavailable
常见提示 Memory | enabled (plugin memory-core) · unavailable 表明记忆模块暂未就绪。
这是因为当前配置仅指定了对话模型 (Chat Model),而未配置 Embedding (向量) 模型。OpenClaw 的长期记忆功能依赖向量化处理。此状态不影响正常的对话和自动化任务。如需启用完整记忆功能,请在后续配置中补充 Embedding 模型设置。
openclaw models 命令验证模型配置是否生效,确认配置文件中的 API Key 是否被正确识别,以及 primary 模型指针是否指向了有效的服务商(查看 Default 和 Configured models)。
# 2. 验证模型配置是否生效(查看 Default 和 Configured models)
openclaw modelsroot@aic-da3sf44m5p44xkga-aicoder-0:/# openclaw models
🦞 OpenClaw 2026.1.29 (a5b4d22) — End-to-end encrypted, drama-to-drama excluded.
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : infini/kimi-k2.5
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (1): infini/kimi-k2.5
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -
- infini effective=models.json:sk-xxxxx...xxxxxxx | models.json=sk-xxxxx...xxxxxxx | source=models.json: ~/.openclaw/agents/main/agent/models.json
OAuth/token status
- none故障排除:Onboarding 常见问题
如果您在运行 onboard 向导时遇到如下错误:
- Health check failed: gateway closed:
- 原因: 向导试图启动服务但失败了(因为 AICoder 没有 Systemd)。
- 解决: 这是预期行为。请直接继续执行下文的 "配置后台保活 (PM2)" 步骤手动启动服务。
- Missing Control UI assets:
- 原因: 安装包可能缺失了预编译的前端资源。
- 解决: 通常不影响 API 和 Bot 核心功能。如果 Web 仪表盘无法加载,尝试运行
npm install -g openclaw@latest重新安装修复。
进阶:启用实用 Hook (记忆与日志)
OpenClaw 提供了强大的 Hook 系统来扩展功能。在 AICoder 环境中,我们强烈推荐启用以下两个内置 Hook:
- session-memory (会话记忆): 当您发送
/new重置对话时,它会自动总结上一段对话的精华并保存到本地(~/workspace/memory/)。这让您的 Bot 拥有「长期记忆」,不会因为话题重置而彻底忘记您的偏好。 - command-logger (指令日志): 将所有交互指令记录到文件中,方便后续排查问题。
启用方法:
在终端中运行以下命令即可启用,无需重启服务:
# 启用会话记忆 (需确保 workspace 目录已存在)
openclaw hooks enable session-memory
# 启用指令日志
openclaw hooks enable command-logger
# 验证 Hook 状态
openclaw hooks list本地 Dashboard 访问
OpenClaw 提供了一个可视化的控制台,默认运行在 localhost:18789。虽然 AICoder 没有公网 IP,但借助我们之前配置的 SSH 端口转发,您可以直接在本地浏览器访问它!
确保 SSH 连接时的端口转发配置中包含
RemoteForward(通常无需额外操作,VS Code 会自动转发检测到的端口,或者您可以手动在 VS Code 「PORTS / 端口」 面板中添加18789端口转发)。获取访问凭证 (Token):为了安全起见,Dashboard 首次访问必须携带 Token。如果您直接访问
http://127.0.0.1:18789/遇到认证错误,请在终端执行以下命令获取带有 Token 的完整链接:shellopenclaw dashboard --no-open您将看到类似如下输出:
textDashboard URL: http://127.0.0.1:18789/?token=5667486ffdbf7d463804dc6479087d3cf7b3de696398d913复制上方带有
?token=...的链接,在您的本地浏览器中打开。
现在,您拥有了一个完全可视化的 Bot 管理后台,可以查看消息日志、配置技能和管理连接。
最终验证:开始对话
一切准备就绪!现在,让我们在 Web UI 中测试一下您的 Bot 是否能够正常工作。
- 在浏览器中打开 Web UI (
http://127.0.0.1:18789/)。 - 点击左侧导航栏的 "Chat" 图标,或者直接在首页找到对话框。
- 尝试发送一条消息,例如:"您好,请介绍一下您自己。"
如果配置正确,您应该会立即收到来自 Infini-AI 模型(如 Kimi K2.5)的回复。

注意
至此,您已通过 AICoder 免费实例成功部署了一个拥有长期记忆、支持即时通讯的 AI 机器人。您现在可以进一步探索 OpenClaw 的 Skills (技能) 系统,赋予它联网搜索、绘图等更多能力。
Step 3 接入飞书 (可选)
虽然 Web UI 非常适合测试,但机器人的真正舞台在于即时通讯软件。接下来,我们将把 OpenClaw 接入飞书 (Feishu/Lark),实现团队协作场景下的自动化服务。
注意
无需公网 IP 的奥秘 飞书开放平台支持 WebSocket 长连接模式用来分发事件。这意味着即使 AICoder 实例没有公网 IP,我们依然可以完美接收飞书消息,无需配置内网穿透。
创建飞书应用
首先,我们需要在飞书开放平台上注册一个企业自建应用,并启用其机器人能力。
登录 飞书开放平台。
点击 "创建企业自建应用",输入名称(如 "MyOpenClaw")和描述,上传图标。
在左侧导航栏点击 "添加应用能力" -> "机器人",点击 "添加"。

配置权限
为了让机器人能接收和发送消息,需要授予它相应的权限。
在左侧导航栏点击 "权限管理"。

点击 "批量数据导入",复制以下 JSON 配置并粘贴:
json{ "scopes": { "tenant": [ "contact:user.base:readonly", "im:chat", "im:chat:read", "im:chat:update", "im:message", "im:message.group_at_msg:readonly", "im:message.group_msg", "im:message.p2p_msg:readonly", "im:message.reactions:read", "im:message:readonly", "im:message:send_as_bot", "im:message:update", "im:resource" ], "user": [] } }这些权限主要用于接收单聊/群聊消息、读取用户信息以及发送回复。
点击 "版本管理与发布",点击 "创建版本"。

输入版本号(如
0.0.1),保存并申请发布(企业自建应用通常无需审批或由管理员审批)。发布成功后,进入 "凭证与基础信息" 页面,获取 App ID 和 App Secret。

安装飞书插件
回到 AICoder 的终端,我们需要安装社区提供的飞书适配插件。
# 安装飞书插件
openclaw plugins install @m1heng-clawd/feishu警告
安装失败怎么办? 如果因网络波动导致安装报错,请尝试删除缓存目录后重试: rm -rf ~/.openclaw/extensions/feishu && openclaw plugins install @m1heng-clawd/feishu
配置连接
使用从凭证与基础信息页面获取的凭证配置 OpenClaw:
# 替换为您的实际 App ID 和 Secret
openclaw config set channels.feishu.appId "cli_xxxxxx"
openclaw config set channels.feishu.appSecret "your_secret_xxxxxx"
# 启用飞书通道
openclaw config set channels.feishu.enabled true
# 重要:重启服务使插件和配置生效
pm2 restart openclaw-bot等待几秒钟后,检查状态:
openclaw status确保 Channels 列表中出现了 feishu 且状态为 ok 或 configured。
Channels
┌──────────┬─────────┬────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Channel │ Enabled │ State │ Detail │
├──────────┼─────────┼────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Feishu │ ON │ OK │ configured │
└──────────┴─────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘配置事件订阅 (长连接)
这一步是打通消息接收的关键。这也是 AICoder 环境在无公网 IP 情况下依然能接收消息的核心机制(原理详见文末的 网络原理)。
回到飞书开放平台,点击左侧 "事件与回调"。
关键设置:在事件配置的订阅方式中,务必选择 "长连接" (Long Connection)。
注意
注意:如果保存时提示「没有长连接」,说明上一步的 OpenClaw 服务未成功启动或未连接到飞书服务器。请检查日志
pm2 logs openclaw-bot。
点击 "添加事件",搜索并添加以下事件:
- 接收消息 (v2.0)
- 用户和机器人的会话首次被创建(v1.0)

最后且最重要的一步:再次前往 "版本管理与发布",创建新版本并发布。
重要
为何必须重新发布? 飞书开放平台的变更不会立即生效。每次修改权限或添加事件订阅后,都必须创建一个新版本(如
0.0.2)并点击发布,新的配置才会应用到线上。这是新手最容易遗漏的步骤!
测试
打开飞书 App 或 PC 端:
- 搜索您的机器人名称。
- 发送一条消息。
- 如果配置无误,Bot 应该会立即回复您(由 Infini-AI 模型生成的答案)。
网络原理:为何无需公网 IP
在智算云平台的安全策略下,AICoder 实例允许自由访问外部互联网,但限制外部直接通过 HTTP 访问实例(仅开放 SSH 端口)。您可能会担心:即使部署了 Bot,外部的 IM 平台(如 Telegram, Discord)如何将消息推送给内网的 Bot 呢?
OpenClaw 的架构设计完美规避了这一限制,因为它抛弃了传统的 Webhook(被动接收)模式,转而采用了更适合内网环境的技术:
- Long Polling(长轮询):Bot 主动向服务器发起请求询问是否有新消息。这就像您去邮局查看信件,而不是等待邮递员上门,因此不需要您家有对外开放的投递口。Telegram Bot 默认即使用此模式。
- WebSocket:Bot 主动与服务器建立一条持久化的双向通道。就像您主动拨通电话并保持连线,对方通过这条电话线随时说话。Discord 和 Slack 均采用此机制。
这两种模式的核心都在于 「连接由 Bot 内部主动发起」。因此,您可以在 AICoder 这种无公网 IP 的安全容器环境中,零配置地运行高响应速度的即时通讯机器人,既安全又省心。
进阶原理:为何使用 PM2 管理进程
细心的开发者可能注意到,我们在教程中始终强调使用 PM2,而非 OpenClaw 官方文档中常见的 openclaw gateway 管理命令。这是为了适应 AICoder 的容器化架构,也是一种针对开发环境的最佳实践。
- Systemd 的缺失:AICoder 实例本质上是一个轻量级的 Docker 容器。为了保持环境的敏捷与纯净,它并未像完整虚拟机那样预装 Systemd 初始化系统。OpenClaw CLI 的原生服务命令(如
openclaw gateway start)底层强依赖 Systemd 来注册服务,因此在容器内运行会报错。 - PM2 的接管:PM2 在这里充当了「应用级进程管理器」。当我们执行
pm2 start "openclaw gateway"时,实际上是绕过了操作系统层面的服务注册,直接运行了 Gateway 的核心程序,并由 PM2 负责监控其运行状态。 - 操作等价性:当您运行
pm2 restart openclaw-bot时,其最终效果与在标准 Linux 服务器上运行openclaw gateway restart是完全一致的——它们都是为了重启底层的 Gateway 进程。
常见问题
我担心 AICoder 实例会被关闭回收?
不需要担心。如果您是付费用户(已购买包年包月资源池、弹性开发机),在该可用区的 AICoder 实例将长期存活。
如果您是免费用户,AICoder 仅适用于交互式使用,非活跃会话会在 30 分钟后自动结束(但数据会保留)。
详细策略请参考 AICoder 回收策略。
"重置 AICoder" 按钮是做什么的?
慎用! 点击该按钮会重置整个 AICoder 环境。这意味着您的根文件系统(rootfs)会被清空,包括您安装的 OpenClaw 环境和配置都将丢失。
仅当环境彻底损坏无法修复时才建议使用。详见 AICoder Shell - 重置 AICoder。