whirl - 基于 Next.js 与 Convex 的全栈 AI 聊天应用
whirl 是 whirlchat 开源的全栈 AI 聊天应用,采用 Next.js 与 Convex 构建,代码以 MIT 许可完整公开。据项目自述,它把多家模型接入同一会话,并提供可编辑的「活文档」、长期记忆、MCP 工具集成与本地加密的锁定会话。本文整理其维护状态、主要能力、自托管入口与许可边界。
whirl 是一个全栈 AI 聊天应用,据项目自述,它构建在 Next.js 与 Convex 之上,是 whirl.chat 背后的代码,并以 MIT 许可完整公开。项目面向的读者大致有三类:想直接使用一个功能较完整的聊天前端的人、希望把整套应用跑在自己服务器上的自托管用户,以及想阅读或参与改进代码的开发者。README 中称,仓库既可以阅读、可以自行部署,也欢迎提交改进。
维护者与状态
项目由 whirlchat 维护,仓库位于 GitHub。根据官方接口数据,仓库创建于 2026-10-02,最后一次提交在 2026-10-03,两者相隔一天,属于非常新的项目。截至 2026-10-04,仓库星标数为 403。需要说明的是,该项目目前尚无正式 release,也就是说没有可供引用的版本号或发布包,使用与部署应以仓库当前代码为准。项目官网为 whirl.chat。
主要能力
以下能力均来自项目 README 的自述,尚未经过独立验证,具体表现请以实际部署为准。
- 多模型同场对话:据项目说明,多个模型可以在同一段对话中使用,请求通过 OpenRouter 路由,并且思考等级可调。
- Living artifacts(活文档):README 中称,文档、图表乃至完整的交互式页面会保留在侧边面板中并保持可编辑,还可以通过链接分享。
- 工具集成与技能:项目自述支持通过 MCP 接入用户自己的工具,并包含 OAuth 流程;此外还有可安装的 skills,用来教 Whirl 新的能力。
- 长期记忆:据项目说明,偏好与项目上下文可以跨对话保留。
- 实时联网搜索与网页阅读:README 中称,回答可以基于当下的网页内容。
- 锁定会话:项目自述这类会话在用户设备上以密码加密,服务器不会看到该密码,并且只由零保留(zero-retention)模型作答。
- 其他交互功能:包括隐身模式、消息排队、语音输入、图像生成、文件附件、文件夹、分享,以及项目自称在动效与细节上的打磨。
- 外观与安装:支持浅色与深色模式、强调色,以及可安装的移动端 Web 应用。
技术栈方面,README 给出的分层是:Web 应用使用 Next.js 16、React 19、Tailwind CSS v4 与 Motion;后端使用 Convex,承担数据库、函数、流式传输与定时任务;认证使用 Clerk;模型通过 AI SDK 调用 OpenRouter;工具链为 Bun workspaces 与 TypeScript。项目特别说明,除 Convex、Clerk 和 OpenRouter 之外,其余依赖都是可选的,各自用自己的密钥开启,包括计费(Autumn)、网页搜索(Exa)、记忆(Supermemory)、分析(PostHog、Axiom)、追踪(Braintrust)、邮件(Resend)以及支持代理(Median);不配置这些密钥时,Whirl 会隐藏由它们驱动的功能。
使用入口
代码仓库地址是 whirlchat/whirl,线上产品入口是 whirl.chat。
据 README 的自托管说明,本地运行需要准备 Bun、一个免费的 Convex 账号、一个 Clerk 应用以及一个 OpenRouter API key。仓库采用 monorepo 结构,主要目录包括 apps/v2(生产环境使用的 Next.js Web 应用)、apps/console(用于管理模型、集成与技能的管理控制台)、apps/mobile(Expo 原生应用)、apps/waitlist、apps/remotion 以及仅作参考、不再维护的 legacy 旧版 Web 应用;packages/backend 是 Convex 后端,包含 schema、函数与 AI 管线;docs 目录提供自托管、配置与架构文档。
README 给出的快速开始流程大致为:克隆仓库并安装依赖,在 packages/backend 下创建 Convex 开发部署并推送后端,随后通过 Convex 环境变量设置 Clerk JWT 签发域与 OpenRouter API key,再把 Web 应用指向 Convex 与 Clerk 并填写 .env.local 中的必填项,最后在仓库根目录启动开发服务,访问 localhost:3000。项目说明自托管指南会逐步覆盖每个环节,包括 Convex 所需的 Clerk JWT 模板以及如何部署到生产环境。
git clone https://github.com/whirlchat/whirl.git cd whirl bun install cd packages/backend bunx convex dev bunx convex env set CLERK_JWT_ISSUER_DOMAIN https://your-instance.clerk.accounts.dev bunx convex env set OPENROUTER_API_KEY sk-or-v1-... cd ../../apps/v2 cp .env.example .env.local cd ../.. bun run dev
许可与限制
许可证为 MIT,可按照该许可证的条款使用、修改与分发。需要留意的是,项目当前尚无正式 release,接口与配置方式可能随提交变化;README 中列出的自托管前置条件(Bun、Convex 账号、Clerk 应用、OpenRouter API key)属于运行的必要条件,其余集成项为可选。锁定会话的加密与零保留模型作答、活文档的可编辑与分享等描述均出自项目自述,实际行为与数据留存策略请以仓库文档和自身部署配置为准。