轻量级 AI 聊天网关,支持 WebSocket、HTTP API、企业微信、Telegram、Discord、飞书、钉钉
- 🌐 WebSocket API - 实时双向通信
- 📡 HTTP API - 简单消息收发
- 💬 企业微信接入 - 被动回复模式,可直接在微信里聊天
- 🤖 LLM 集成 - 调用本地 LLM API 生成回复
- 💾 会话记忆 - 自动保存对话历史
- 🔧 工具调用 - AI 可调用搜索、浏览器、文件等工具
- ⏰ 定时任务 - 支持 cron 表达式定时执行任务
- 🔌 插件系统 - 可扩展的插件架构
cd /xx/mini-openclaw
npm install
# 或
pnpm install复制配置模板并修改:
cp .env.example .env编辑 .env 文件:
# LLM 配置
LLM_BASE_URL=http://xx.xx.xx.xx:80/v1
LLM_API_KEY=你的APIKey
LLM_MODEL=claude-opus-4-6
# 服务端口
WS_PORT=18789
HTTP_PORT=18790
# 企业微信配置(可选)
WECOM_CORP_ID=你的企业ID
WECOM_SECRET=你的应用Secret
WECOM_AGENT_ID=你的AgentId
WECOM_TOKEN=回调Token
WECOM_ENCODING_AES_KEY=回调AESKey
# Telegram Bot 配置(可选)
TEGRAM_BOT_TOKEN=你的BotToken
TEGRAM_SECRET=你的Secret
# Discord Bot 配置(可选)
DISCORD_BOT_TOKEN=你的BotToken
DISCORD_PUBLIC_KEY=你的PublicKey
DISCORD_APPLICATION_ID=你的ApplicationId
DISCORD_GUILD_ID=你的服务器IDnode gateway.js服务启动后会显示:
🚀 OpenClaw Gateway started on ws://localhost:18789
🌐 OpenClaw HTTP API started on http://localhost:18790
[WeCom] 企业微信被动回复已加载
[Telegram] Telegram Bot 模块已加载
[Discord] Discord Bot 模块已加载
[飞书] 飞书机器人模块已加载
[钉钉] 钉钉机器人模块已加载
[Plugin] 插件系统已加载
curl -X POST http://localhost:18790/api/message \
-H "Content-Type: application/json" \
-d '{"message": "你好"}curl -X POST http://localhost:18790/api/sessions
# 返回: {"success":true,"sessionId":"xxx"}curl -X POST http://localhost:18790/api/sessions/:id/message \
-H "Content-Type: application/json" \
-d '{"message": "你好"}curl http://localhost:18790/api/sessionscurl http://localhost:18790/api/sessions/:idcurl http://localhost:18790/healthconst ws = new WebSocket('ws://localhost:18789');
ws.onopen = () => {
ws.send(JSON.stringify({ message: '你好' }));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('回复:', data.message);
};AI 可以自动调用以下工具:
| 工具 | 说明 | 示例 |
|---|---|---|
web_search |
搜索网页 | "搜索最新的AI新闻" |
web_fetch |
获取网页内容 | "打开 https://github.com" |
get_weather |
查询天气 | "北京天气怎么样" |
read_file |
读取文件 | "看看 README.md 内容" |
write_file |
写入文件 | "写一个 hello.txt" |
exec_command |
执行命令 | "运行 ls -la" |
get_time |
获取时间 | "现在几点了" |
send_message |
发送消息 | "给微信用户发消息" |
| 表达式 | 说明 | 示例 |
|---|---|---|
* * * * * |
每分钟 | 每分钟执行 |
0 * * * * |
每小时 | 每小时整点执行 |
0 9 * * * |
每天早上9点 | 每日任务 |
0 9 * * 1-5 |
工作日早上9点 | 工作日提醒 |
0 */2 * * * |
每2小时 | 定时任务 |
# 列出所有任务
curl http://localhost:18790/api/cron/list
# 添加定时任务
curl -X POST http://localhost:18790/api/cron/add \
-H "Content-Type: application/json" \
-d '{
"name": "早安问候",
"type": "llm",
"cron": "0 8 * * *",
"prompt": "发送一句温暖的早安问候"
}'
# 立即执行任务
curl -X POST http://localhost:18790/api/cron/run/:id
# 删除任务
curl -X DELETE http://localhost:18790/api/cron/:idcurl -X POST http://localhost:18790/api/plugins/create \
-H "Content-Type: application/json" \
-d '{
"name": "my-plugin",
"description": "我的第一个插件"
}'plugins/
└── my-plugin/
├── manifest.json # 插件配置
└── index.js # 插件代码
{
"name": "插件名称",
"version": "1.0.0",
"description": "插件描述",
"author": "作者",
"hooks": ["on_start", "on_stop", "before_message", "after_message"]
}| 钩子 | 说明 |
|---|---|
on_start |
服务启动时 |
on_stop |
服务停止时 |
before_message |
收到消息前 |
after_message |
发送回复后 |
before_llm |
调用 LLM 前 |
after_llm |
调用 LLM 后 |
# 列出插件
curl http://localhost:18790/api/plugins/list
# 加载插件
curl -X POST http://localhost:18790/api/plugins/load/:name
# 卸载插件
curl -X POST http://localhost:18790/api/plugins/unload/:name
# 重载所有插件
curl -X POST http://localhost:18790/api/plugins/reload如果你想通过企业微信接入聊天,需要完成以下配置:
-
进入 应用管理 → 创建自建应用
-
获取以下信息填入
.env:- CorpID: 我的企业 → 企业信息 → 企业ID
- Secret: 应用详情页
- AgentId: 应用详情页
-
设置 可信IP(本机 IP 或 VPS 公网 IP)
-
配置 接收消息:
- 回调URL:
http://[IP_ADDRESS]/api/wecom/callback - Token: 填入
.env中的WECOM_TOKEN - EncodingAESKey: 填入
.env中的WECOM_ENCODING_AES_KEY
- 回调URL:
配置完成后重启:
node gateway.js在企业微信应用里发送消息,应该能收到 AI 回复!
- 在 Telegram 搜索 @BotFather
- 发送
/newbot创建新机器人 - 获取 Bot Token
TEGRAM_BOT_TOKEN=你的BotToken需要公网域名(可用 ngrok 内网穿透):
# 先启动服务
node gateway.js
# 然后设置 webhook(把 URL 换成你的公网地址)
curl "https://your-domain.com/api/telegram/setwebhook?url=https://your-domain.com/api/telegram/webhook"在 Telegram 里给机器人发消息,应该能收到 AI 回复!
- 访问 https://discord.com/developers/applications
- 创建新应用 → 创建机器人
- 获取 Token (DISCORD_BOT_TOKEN)
- 获取 Public Key (DISCORD_PUBLIC_KEY)
- 获取 Application ID (DISCORD_APPLICATION_ID)
在 OAuth2 → URL Generator 中配置:
- scopes:
bot - permissions:
Send Messages,Read Message History - 生成邀请链接并加入服务器
DISCORD_BOT_TOKEN=你的BotToken
DISCORD_PUBLIC_KEY=你的PublicKey
DISCORD_APPLICATION_ID=你的ApplicationId在 Discord Developer Portal → Application → Interactive Endpoint:
- URL:
https://你的域名/api/discord/interactions
在服务器里 @机器人 发消息,应该能收到 AI 回复!
- 飞书群设置 → 添加机器人 → 选择"自定义机器人"
- 复制 Webhook 地址
- 配置环境变量:
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx- 重启服务,群里发消息就能收到 AI 回复!
- 访问 https://open.feishu.cn/ 创建企业自建应用
- 获取 App ID 和 App Secret
- 配置权限:
- im:chat:readonly
- im:message:send_as_bot
- im:message:receive
- 发布应用并在群里添加
- 配置环境变量:
FEISHU_APP_ID=cli_xxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxx- 钉钉群设置 → 智能群助手 → 添加机器人
- 选择"自定义机器人"
- 可选:设置加签密钥或关键词
- 复制 Webhook 地址
- 配置环境变量:
DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxxxx
# 可选:加签密钥
DINGTALK_SECRET=SECxxxxxxxxxxxxxxxxxxxx- 重启服务,群里发消息就能收到 AI 回复!
mini-openclaw/
├── .env # 环境配置(需自行创建)
├── .env.example # 配置模板
├── gateway.js # 主入口
├── wecom.js # 企业微信模块
├── telegram.js # Telegram Bot 模块
├── discord.js # Discord Bot 模块
├── feishu.js # 飞书模块
├── dingtalk.js # 钉钉模块
├── tools.js # 工具调用系统
├── cron.js # 定时任务系统
├── plugins.js # 插件系统
├── browser.js # 浏览器控制模块
├── package.json # 项目依赖
├── gateway.log # 运行日志
├── plugins/ # 插件目录
└── data/
├── sessions/ # HTTP API 会话存储
├── wecom-sessions/ # 企业微信会话存储
├── telegram-sessions/ # Telegram 会话存储
├── discord-sessions/ # Discord 会话存储
├── feishu-sessions/ # 飞书会话存储
├── dingtalk-sessions/ # 钉钉会话存储
├── cron/ # 定时任务配置
└── cron-logs/ # 定时任务日志
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
LLM_BASE_URL |
是 | https://你的域名/v1 | LLM API 地址 |
LLM_API_KEY |
是 | - | LLM API Key |
LLM_MODEL |
是 | claude-opus-4-6 | 使用的模型 |
WS_PORT |
否 | 18789 | WebSocket 端口 |
HTTP_PORT |
否 | 18790 | HTTP API 端口 |
WECOM_CORP_ID |
否 | - | 企业微信 CorpID |
WECOM_SECRET |
否 | - | 企业微信应用 Secret |
WECOM_AGENT_ID |
否 | - | 企业微信应用 AgentId |
WECOM_TOKEN |
否 | - | 回调验证 Token |
WECOM_ENCODING_AES_KEY |
否 | - | 回调加密 Key |
TEGRAM_BOT_TOKEN |
否 | - | Telegram Bot Token |
TEGRAM_SECRET |
否 | - | Telegram Webhook Secret |
DISCORD_BOT_TOKEN |
否 | - | Discord Bot Token |
DISCORD_PUBLIC_KEY |
否 | - | Discord Public Key |
DISCORD_APPLICATION_ID |
否 | - | Discord Application ID |
DISCORD_GUILD_ID |
否 | - | Discord 服务器 ID |
FEISHU_APP_ID |
否 | - | 飞书 App ID |
FEISHU_APP_SECRET |
否 | - | 飞书 App Secret |
FEISHU_WEBHOOK_URL |
否 | - | 飞书 Webhook URL |
DINGTALK_WEBHOOK_URL |
否 | - | 钉钉 Webhook URL |
DINGTALK_SECRET |
否 | - | 钉钉加签密钥 |
HTTP_PORT |
否 | 18790 | HTTP API 端口 |
WECOM_CORP_ID |
否 | - | 企业微信 CorpID |
WECOM_SECRET |
否 | - | 企业微信应用 Secret |
WECOM_AGENT_ID |
否 | - | 企业微信应用 AgentId |
WECOM_TOKEN |
否 | - | 回调验证 Token |
WECOM_ENCODING_AES_KEY |
否 | - | 回调加密 Key |
A: 检查以下几点:
- 确认
.env里的WECOM_TOKEN和WECOM_ENCODING_AES_KEY与企业微信后台配置一致 - 确认本机 IP 已加入"可信IP"列表
- 如果是本地测试,需要使用内网穿透工具(如 ngrok、frp)暴露公网地址
A: 查看 gateway.log 文件:
tail -f gateway.logA: 检查:
LLM_BASE_URL是否可访问LLM_API_KEY是否正确- 查看 gateway.log 中的错误信息
MIT