开源 MIT · Vercel 零成本部署
免服务器的群聊
全能 Agent 网关
跑在 Vercel Functions 上的多渠道 AI 机器人网关。接入 QQ、Telegram,基于只追加事件流驱动, 自带联网搜索、跨群长期记忆、表情包斗图与 Linux 代码沙盒——有消息才运行,平时零开销。

- #40user/message老王 @你:今天美元对人民币多少
- #41turn/start第 12 轮 · 抢到锁
- #42developer/message待处理:第40条(老王,@你)
- #43assistant/message思维链 ··· → web_search
- #44tool/callweb_search("美元 人民币 汇率")
- #45tool/result1 USD ≈ 7.12 CNY

Webhook 进来,立即回执。
验签、解析,马上返回 200。平台要求很快拿到回执,剩下的事交给 waitUntil 在后台继续。
一切都写进事件流。
每个聊天一条只追加的事件流:消息、模型输出(含思维链)、工具调用和结果全部入库,模型输入从中推导。
一个会用工具的 agent。
每一步:读事件流 → 调用模型 → 把输出和工具结果原样写回。同一个聊天同一时刻只有一个 agent 在跑。
从原渠道回复,然后挂断。
分几条连发、回复指定消息、发表情包,说完调用 end_turn。回复过程中来的新消息,下一步就能看到。
不需要服务器。
部署在 Vercel Functions 上,有消息才运行,没人说话就不花钱。
有消息才运行
没有常驻进程。Webhook 触发一个函数,回执之后在后台跑 agent,临近 300 秒时限自动收尾或接力给新的函数实例,中途被杀也能从事件流恢复。
部署免费
Vercel Hobby 加 Supabase 免费版就够:Supabase 不限 API 请求次数,Vercel Sandbox 超额只会暂停、不会扣费。不用买服务器,也不用维护。
模型按用量付费
免费的是部署和存储,模型调用按用量付给 OpenRouter 等供应商。事件流只追加、前缀稳定,线上一轮对话的缓存命中率在 97% 以上,这部分开销也压得很低。
像一个真的群友,
而不是一个问答框。
- 01
多渠道接入
QQ(单聊、群聊、频道,Ed25519 验签)、Telegram、通用 HTTP。所有渠道实现同一个适配器接口,新增渠道只需写一个对象。
- 02
一个聊天一个 agent
收消息和跑 agent 解耦。几个人同时发消息只会有一个 agent 回答;锁是会话行上的租约,每一次写库都要确认仍持有锁。
- 03
像真人一样聊天
分几条连发、回复指定消息、主动挂断、发表情包;在群里旁观没 @ 它的消息,自己判断要不要插话。
- 04
看图、听语音
图片缩小后入库,以前的图片也能再看;QQ 语音使用平台自带的转写文字。
- 05
长期记忆
基于 Upstash Vector 的语义检索,所有聊天共用一个记忆库,并记录每条记忆的来源。
- 06
沙盒工作区
在 Vercel Sandbox 里跑 bash、Python、Node,每个聊天有一块自己的持久盘,能读图、能把文件发回聊天。
- 07
联网
搜索和网页抓取,另有余额和额度查询工具。
- 08
任意 Responses API 模型
直接调用
POST /responses,默认走 OpenRouter。请求体可透传任意参数,比如锁定供应商、设置推理强度。 - 09
上下文自动压缩
到 20 万 token 自动压缩成摘要,之前的内容由摘要替代;思维链原样回传,缓存持续命中。
三步跑起来。
部署
点击 Deploy 按钮,或者克隆仓库后在终端里:
$ 配置
最少需要模型 Key、一个渠道的凭据,以及在 Vercel Marketplace 添加 Supabase 后执行一次 schema.sql。
OPENROUTER_API_KEY
QQ_APP_ID / QQ_APP_SECRET
SUPABASE_URL / SUPABASE_SECRET_KEY检查与接入
访问 /api/health 确认模型、渠道和工具都已就绪,再到平台后台填上回调地址。
GET /api/health
{ "store": "supabase", "channels": { "qq": true } }想换成自己的机器人?人设在 src/agent/system-prompt.ts,工具在 src/tools/,渠道在 src/channels/。改一个文件就能换人设。
