Skip to content

Repository files navigation

Mini OpenClaw Gateway

轻量级 AI 聊天网关,支持 WebSocket、HTTP API、企业微信、Telegram、Discord、飞书、钉钉

功能特性

  • 🌐 WebSocket API - 实时双向通信
  • 📡 HTTP API - 简单消息收发
  • 💬 企业微信接入 - 被动回复模式,可直接在微信里聊天
  • 🤖 LLM 集成 - 调用本地 LLM API 生成回复
  • 💾 会话记忆 - 自动保存对话历史
  • 🔧 工具调用 - AI 可调用搜索、浏览器、文件等工具
  • 定时任务 - 支持 cron 表达式定时执行任务
  • 🔌 插件系统 - 可扩展的插件架构

快速开始

1. 安装依赖

cd /xx/mini-openclaw
npm install
#
pnpm install

2. 配置环境变量

复制配置模板并修改:

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=你的服务器ID

3. 启动服务

node 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] 插件系统已加载

API 接口

HTTP API

发送消息(无会话)

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/sessions

获取会话详情

curl http://localhost:18790/api/sessions/:id

健康检查

curl http://localhost:18790/health

WebSocket API

const 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 发送消息 "给微信用户发消息"

定时任务

cron 表达式

表达式 说明 示例
* * * * * 每分钟 每分钟执行
0 * * * * 每小时 每小时整点执行
0 9 * * * 每天早上9点 每日任务
0 9 * * 1-5 工作日早上9点 工作日提醒
0 */2 * * * 每2小时 定时任务

API 接口

# 列出所有任务
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/:id

插件系统

创建插件

curl -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         # 插件代码

manifest.json 格式

{
  "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 后

API 接口

# 列出插件
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

企业微信配置(可选)

如果你想通过企业微信接入聊天,需要完成以下配置:

1. 企业微信后台配置

  1. 登录 https://work.weixin.qq.com/

  2. 进入 应用管理创建自建应用

  3. 获取以下信息填入 .env

    • CorpID: 我的企业 → 企业信息 → 企业ID
    • Secret: 应用详情页
    • AgentId: 应用详情页
  4. 设置 可信IP(本机 IP 或 VPS 公网 IP)

  5. 配置 接收消息

    • 回调URL: http://[IP_ADDRESS]/api/wecom/callback
    • Token: 填入 .env 中的 WECOM_TOKEN
    • EncodingAESKey: 填入 .env 中的 WECOM_ENCODING_AES_KEY

2. 重启服务

配置完成后重启:

node gateway.js

3. 测试

在企业微信应用里发送消息,应该能收到 AI 回复!

Telegram Bot 配置(可选)

1. 创建机器人

  1. 在 Telegram 搜索 @BotFather
  2. 发送 /newbot 创建新机器人
  3. 获取 Bot Token

2. 配置环境变量

TEGRAM_BOT_TOKEN=你的BotToken

3. 设置 Webhook

需要公网域名(可用 ngrok 内网穿透):

# 先启动服务
node gateway.js

# 然后设置 webhook(把 URL 换成你的公网地址)
curl "https://your-domain.com/api/telegram/setwebhook?url=https://your-domain.com/api/telegram/webhook"

4. 测试

在 Telegram 里给机器人发消息,应该能收到 AI 回复!


Discord Bot 配置(可选)

1. 创建应用和机器人

  1. 访问 https://discord.com/developers/applications
  2. 创建新应用 → 创建机器人
  3. 获取 Token (DISCORD_BOT_TOKEN)
  4. 获取 Public Key (DISCORD_PUBLIC_KEY)
  5. 获取 Application ID (DISCORD_APPLICATION_ID)

2. 邀请机器人

在 OAuth2 → URL Generator 中配置:

  • scopes: bot
  • permissions: Send Messages, Read Message History
  • 生成邀请链接并加入服务器

3. 配置环境变量

DISCORD_BOT_TOKEN=你的BotToken
DISCORD_PUBLIC_KEY=你的PublicKey
DISCORD_APPLICATION_ID=你的ApplicationId

4. 配置 Interactive Endpoint

在 Discord Developer Portal → Application → Interactive Endpoint:

  • URL: https://你的域名/api/discord/interactions

5. 测试

在服务器里 @机器人 发消息,应该能收到 AI 回复!


飞书配置(可选)

方式一:自定义机器人 Webhook(简单)

  1. 飞书群设置 → 添加机器人 → 选择"自定义机器人"
  2. 复制 Webhook 地址
  3. 配置环境变量:
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  1. 重启服务,群里发消息就能收到 AI 回复!

方式二:企业自建应用(功能多)

  1. 访问 https://open.feishu.cn/ 创建企业自建应用
  2. 获取 App ID 和 App Secret
  3. 配置权限:
    • im:chat:readonly
    • im:message:send_as_bot
    • im:message:receive
  4. 发布应用并在群里添加
  5. 配置环境变量:
FEISHU_APP_ID=cli_xxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxx

钉钉配置(可选)

  1. 钉钉群设置 → 智能群助手 → 添加机器人
  2. 选择"自定义机器人"
  3. 可选:设置加签密钥或关键词
  4. 复制 Webhook 地址
  5. 配置环境变量:
DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxxxx
# 可选:加签密钥
DINGTALK_SECRET=SECxxxxxxxxxxxxxxxxxxxx
  1. 重启服务,群里发消息就能收到 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

常见问题

Q: 企业微信回调提示验证失败

A: 检查以下几点:

  1. 确认 .env 里的 WECOM_TOKENWECOM_ENCODING_AES_KEY 与企业微信后台配置一致
  2. 确认本机 IP 已加入"可信IP"列表
  3. 如果是本地测试,需要使用内网穿透工具(如 ngrok、frp)暴露公网地址

Q: 如何查看运行日志?

A: 查看 gateway.log 文件:

tail -f gateway.log

Q: LLM 调用失败

A: 检查:

  1. LLM_BASE_URL 是否可访问
  2. LLM_API_KEY 是否正确
  3. 查看 gateway.log 中的错误信息

许可证

MIT

About

mini-openclaw

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages