核心思路是:

  • Telegram:原生支持(最省事)

  • **飞书 / 微信:用“桥接服务(bridge)”**把消息平台 ↔ Moltbot Gateway 串起来

    • Moltbot 侧用它自带的 OpenAI 兼容 HTTPWebhook hooks 来“喂消息、取回复”

    • 平台侧用官方 SDK / 回调能力接收消息并发回


0. 你要准备什么

必备

  • 一台能 7x24 跑的机器:本地常开 / NAS / 小主机 / VPS 都行

  • Node.js ≥ 22(直装方式)或 Docker(容器方式)

  • Moltbot 本体(CLI + Gateway)

渠道侧账号

  • Telegram:一个 Telegram 账号 + @BotFather 创建 bot token

  • 飞书:企业/组织账号(能创建应用)

  • 微信:强烈建议走企业微信(WeCom),个人微信“非官方方案”容易封号/不稳定(后面会给安全落地方案:群机器人推送 + 自建应用回调)


(1) 部署 Moltbot(两种方式任选)

方案 A:直装(最快,适合本地/自建服务器)

1. 安装

npm install -g moltbot@latest

官方推荐用向导:

moltbot onboard --install-daemon

它会把 Gateway 作为后台服务常驻(macOS launchd / Linux systemd user service 等)。

2. 启动 & 打开控制台

moltbot gateway --port 18789 --verbose

浏览器打开控制台(Control UI):http://127.0.0.1:18789/


方案 B:Docker(更易隔离,更利于安全)

官方给了一键脚本(推荐):

1. 拉源码并一键跑

git clone https://github.com/moltbot/moltbot.git cd moltbot ./docker-setup.sh

这个脚本会:build 镜像、跑 onboarding、起 compose、生成 gateway token 并写入 .env。跑完后同样打开:http://127.0.0.1:18789/ 并把 token 粘贴进 Control UI。

2. 手动 compose(你想更可控时)

docker build -t moltbot:local -f Dockerfile . docker compose run --rm moltbot-cli onboard docker compose up -d moltbot-gateway

(2) 让 Moltbot “可被桥接调用”(关键)

为了接入飞书/微信,你需要让 Moltbot Gateway 提供一个HTTP 接口,桥接服务才能把“外部消息”发进来并拿到回复。

2.1 开启 OpenAI 兼容接口(推荐)

Moltbot Gateway 可以提供 POST /v1/chat/completions,默认关闭,需要在配置里开启:

{
  "gateway": {
    "http": {
      "endpoints": {
        "chatCompletions": {
          "enabled": true
        }
      }
    },
    "auth": {
      "mode": "token",
      "token": "CHANGE_ME_LONG_RANDOM"
    }
  }
}

调用时带:

  • Authorization: Bearer <token>

  • 选择 agent:把 model 写成 moltbot:<agentId>(如 moltbot:main


2.2 (可选)开启 Moltbot 的 hooks(用于触发型自动化)

如果你还想用飞书/企微 webhook 触发“执行某个任务”,可以开 hooks:

{
  "hooks": {
    "enabled": true,
    "token": "HOOK_SECRET",
    "path": "/hooks"
  }
}

(3) 接入 Telegram(原生渠道,最省事)

3.1 创建 Bot

Telegram 搜索 @BotFather/newbot → 拿到 token

3.2 配置 token(两种方式)

方式 A:环境变量

export TELEGRAM_BOT_TOKEN="123:abc"

方式 B:配置文件(更推荐)

{
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "123:abc",
      "dmPolicy": "pairing"
    }
  }
}

3.3 安全默认:DM 配对(强烈保留)

Telegram 默认 dmPolicy=pairing:陌生人先拿配对码,管理员审批后才放行。


(4) 接入飞书(两种落地路径)

飞书机器人分两类:

  • 自定义机器人(Webhook):更像“消息推送器”(群里加一个机器人,用 webhook POST 推消息)

  • 应用机器人(App Bot):能收消息、做交互,需要事件订阅(支持长连接或 webhook 回调)

你要“聊天式接入”,用 应用机器人


4.1 飞书聊天式接入(推荐:长连接,不用公网回调)

飞书事件订阅支持:开发者服务器回调(Webhook)长连接两种方式。长连接能省掉公网、证书、签名验签的很多坑。

步骤 1:创建飞书自建应用 + 开启机器人能力

(在飞书开放平台后台创建应用,启用 Bot 能力、读取消息权限等。具体权限项以后台提示为准。)

步骤 2:配置事件订阅为“长连接”

关键事件:接收消息(一般是 im.message.receive_v1)。

步骤 3:写一个“桥接服务”把飞书消息 ↔ Moltbot 串起来

用官方 Node SDK(npm 包:@larksuiteoapi/node-sdk

示例:Node.js 桥接(可直接改造用)

说明:这段代码做三件事

  1. 长连接收飞书消息

  2. 调 Moltbot /v1/chat/completions 拿回复

  3. 用飞书 API 回发消息

// bridge-feishu-moltbot.js
import * as lark from "@larksuiteoapi/node-sdk";
import fetch from "node-fetch";

const FEISHU_APP_ID = process.env.FEISHU_APP_ID;
const FEISHU_APP_SECRET = process.env.FEISHU_APP_SECRET;

const MOLT_GATEWAY = process.env.MOLT_GATEWAY ?? "http://127.0.0.1:18789";
const MOLT_TOKEN = process.env.MOLT_TOKEN; // gateway.auth.token
const MOLT_AGENT = process.env.MOLT_AGENT ?? "main"; // moltbot:<agentId>

const client = new lark.Client({
  appId: FEISHU_APP_ID,
  appSecret: FEISHU_APP_SECRET,
  appType: lark.AppType.SelfBuild,
  domain: lark.Domain.Feishu,
});

async function askMoltbot(text) {
  const resp = await fetch(`${MOLT_GATEWAY}/v1/chat/completions`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${MOLT_TOKEN}`,
    },
    body: JSON.stringify({
      model: `moltbot:${MOLT_AGENT}`,
      messages: [{ role: "user", content: text }],
      stream: false,
    }),
  });
  if (!resp.ok) throw new Error(`Moltbot HTTP ${resp.status}`);
  const data = await resp.json();
  return data?.choices?.[0]?.message?.content ?? "(empty)";
}

// 事件处理(示意:以“收到消息事件”为入口)
// 你在飞书后台勾选的事件不同,payload 结构会有差异:建议先 console.log(event) 看真实字段
client.wsClient.start({
  eventDispatcher: async (event) => {
    // TODO: 过滤掉 bot 自己发的消息,避免自回声死循环
    const text = event?.event?.message?.content?.text;
    const chatId = event?.event?.message?.chat_id;

    if (!text || !chatId) return;

    const answer = await askMoltbot(text);

    // 发送回飞书(这里用“发送消息到会话”的 API;SDK 具体方法名可能随版本变化)
    await client.im.message.create({
      params: { receive_id_type: "chat_id" },
      data: {
        receive_id: chatId,
        msg_type: "text",
        content: JSON.stringify({ text: answer }),
      },
    });
  },
});

这类长连接接入属于飞书官方推荐能力:通过 SDK 建 WebSocket 全双工通道来收事件。


4.2 飞书“只推送”接入(最简单,适合告警/通知)

如果你只想把 Moltbot 产生的结果推到飞书群,用自定义机器人 Webhook即可(无需事件订阅)。


(5) 接入微信(建议企业微信 WeCom,给你两种落地)

5.1 最快:企业微信群机器人 Webhook(只推送)

企业微信群机器人可以在群里生成一个 webhook 地址,往这个地址 POST 就能发消息。获取 webhook 的步骤在腾讯云文档里有清晰图文。

发送示例(文本)

curl -X POST 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"msgtype":"text","text":{"content":"Hello from Moltbot"}}'

适合:告警、日报、任务完成通知。
不适合:你要在微信里“对话式聊天”。


5.2 聊天式:企业微信自建应用 + 回调(能收消息再回复)

企业微信“接收消息/回调配置”一般需要你在后台填 URL + Token + EncodingAESKey,并实现回调 URL 验证与消息解密。

关键点(别踩坑)

  • 后台保存回调配置时,会先发 GET 验证请求(带 msg_signature/timestamp/nonce/echostr),你必须解密 echostr 并原样返回

  • 实际收消息是 POST,需要解密 XML/JSON(取决于企业微信推送格式)

  • 解密/验签建议直接用实现了 WXBizMsgCrypt 的库(Node 可用 wxcrypt,它就是 Node 版 WXBizMsgCrypt)

桥接逻辑(标准做法)

  1. 企业微信回调 → 你的 bridge 服务(验签/解密)

  2. bridge 把用户文本发给 Moltbot /v1/chat/completions

  3. bridge 把回复再加密 → 回包给企业微信(或调用“发送消息 API”主动推送)

这部分因为你企业微信后台配置、数据格式、加密模式(明文/兼容/安全)会影响实现细节,我建议你先按上面“飞书 bridge”的模式把骨架跑通,然后我可以基于你抓到的真实回调报文把 WeCom 的验签/解密/回包写成可直接部署的版本。


(6) 安全加固清单(照抄执行)

这是你把 bot 接到真实 IM 里时最容易翻车的地方。下面这份清单按 Moltbot 官方安全指南的优先级整理:

6.1 立刻做(10 分钟内)

  • 跑安全审计(官方命令)

    moltbot security audit
    moltbot security audit --deep
    

    它会检查 Gateway 暴露、浏览器控制、权限、日志脱敏等,并可 --fix 自动加护栏。

  • 启用 Gateway 认证(token 或 password),不要裸奔
    官方强调:Gateway 默认 fail-closed,没配就拒绝连接;你仍然应该显式设置强 token。

  • DM 保持 pairing / allowlist(Telegram 默认就是 pairing)

6.2 网络面(非常关键)

  • Gateway 只绑定本机(127.0.0.1)tailnet;不要直接暴露公网

  • 你若必须走反向代理(nginx/Caddy),配置 gateway.trustedProxies,避免“伪装 localhost 绕过信任”的漏洞

  • 使用 Tailscale Serve/Funnel 时,理解其身份头与信任链;不懂就先别上公网

6.3 工具权限(最容易被 prompt injection 利用)

  • 默认用 Docker / Sandbox 跑高风险工具(shell、浏览器自动化等)

  • 不要给全盘读写:workspace 只挂必要目录(Docker 模式可用 CLAWDBOT_EXTRA_MOUNTS 精准挂载)

  • 如果你不需要远程执行,禁止/移除节点执行能力(system.run 本质是远程代码执行)

6.4 凭证与日志

  • 配置/凭证文件权限收紧(审计 --fix 会做一部分)

  • 日志脱敏别关(logging.redactSensitive 等项,审计会提示)

  • 一旦怀疑泄露:立刻旋转 gateway token + 平台 token + 模型 key,再复盘会话日志


(7) 按这个顺序做,就能最快跑通

  1. ✅ 用 Telegram 原生接入跑通(确认 Moltbot 能稳定回复)

  2. ✅ 开启 /v1/chat/completions,用 curl 本地打通(确认桥接可调)

  3. ✅ 上飞书:先做长连接 bridge(不用公网)

  4. ✅ 上微信:先做企业微信群 webhook 推送(简单稳定)

  5. 🔒 全面安全加固:moltbot security audit --deep + 最小权限 + 不上公网

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐