一个简单、轻量且功能强大的 OpenAI API 代理服务。基于 Deno Deploy / Cloudflare Workers 构建,无需服务器,只需一个域名和 API Key,即可免费部署属于你自己的 AI 助手。
本项目致力于提供“养老级”的稳定体验,功能丰富且不失简洁:
- 🚀 一键部署:基于 Serverless 架构,免费、快速,无需维护服务器。
- 🔐 安全访问:支持共享密码(长期使用)和演示密码(限制频率),保护 API Key 不泄露。
- 💬 流畅对话:支持打字机流式响应 (Streaming),体验丝滑。
- 🌐 多模型支持:兼容 OpenAI (GPT-4o/5)、Google (Gemini)、Claude、以及各类国产大模型(Qwen/DeepSeek等)。
- 🔍 联网搜索:集成 Tavily Search API,让 AI 能够获取实时网络信息作为回答依据。
- 📎 文件上传:支持图片上传(支持多种格式)和纯文本文件上传(例如Markdown文档、代码等)。
- ☁️ 云端同步:支持本地存储(浏览器 IndexedDB)和WebDAV 云端同步,让您的聊天记录在多设备间无缝同步。
- 🖥️ 全端适配:精心设计的响应式 UI,完美适配桌面端和移动端。
- 📱 PWA 支持:支持渐进式 Web 应用 (PWA) 标准,移动端可将网页添加到桌面,获得原生 App 般的沉浸体验。
- 🛡️ 隐私优先:聊天记录可选择仅存储在浏览器本地,或同步至您自己的 WebDAV 云盘。
- 📸 一键分享:自动生成精美的问答长图,方便社交分享。
- 🏷️ 智能管理:根据对话内容自动生成标题,支持多轮对话,保持界面清爽。
- 🎨 高度定制:支持自定义网站标题、Favicon 图标以及模型列表。
- API Key: 准备好 OpenAI 或其他兼容服务的 API Key。
- 域名: 一个用于绑定的域名(推荐,可避免官方域名被墙)。
点击下方按钮,即可快速部署:
首次部署需要授权访问您的 GitHub 账户,系统会自动 Fork 本仓库并完成部署。
特点:支持自动更新,当您同步了上游代码后,服务会自动重新部署。 支持平台:Deno Deploy / Cloudflare Workers
- Fork 项目:将本项目 Fork 到您的 GitHub 仓库。
- 创建项目:
- Deno Deploy: 登录 Deno Dash -> New Project -> 选择 Fork 的仓库 -> Entry Point 选
worker.js-> Deploy。 - Cloudflare Workers: 登录 Cloudflare Dash -> Workers & Pages -> Create application -> Connect to Git -> 选择仓库 -> Deploy。
- Deno Deploy: 登录 Deno Dash -> New Project -> 选择 Fork 的仓库 -> Entry Point 选
特点:最简单,无需 GitHub 账号,直接复制粘贴代码即可。 支持平台:Deno Deploy / Cloudflare Workers
- 复制代码:复制本项目
worker.js的全部内容。 - 创建项目:
- Deno Deploy: 登录 Deno Dash -> New Playground -> 粘贴代码 -> Save & Deploy。
- Cloudflare Workers: 登录 Cloudflare Dash -> Workers & Pages -> Create Worker -> Edit code -> 粘贴代码 -> Deploy。
- 绑定域名:在项目设置中绑定您的自定义域名(自动申请 SSL)。
- Deno Deploy: Settings -> Domains
- Cloudflare Workers: Settings -> Triggers -> Custom Domains
- 配置变量:在项目设置中添加环境变量(见下文配置章节)。
- Deno Deploy: Settings -> Environment Variables
- Cloudflare Workers: Settings -> Variables
⚠️ 平台选择建议:
- Deno Deploy: 部署最简单,且节点 IP 通常未被 OpenAI/Google 封锁,可直接调用官方 API。
- Cloudflare Workers: 全球节点更多,连接速度可能更快,但调用官方 API 可能需要自备代理或使用中转。
⚠️ 中国大陆访问提示:无论选择哪个平台,原生域名 (*.deno.dev,*.workers.dev) 在国内通常无法访问。请务必绑定自定义域名,并将域名托管在 Cloudflare,开启“小黄云”代理模式(CDN),即可在国内正常访问。
本项目主要通过环境变量进行配置,优先级高于代码中的默认值。
| 变量名 | 必填 | 说明 | 示例 |
|---|---|---|---|
SECRET_PASSWORD |
否 | 共享密码。设置后,用户需输入此密码才能使用您配置的 API Key。适合家人朋友共享。 | my-secret-pwd |
API_KEYS |
否 | API Key 池。多个 Key 用英文逗号 , 分隔,系统会自动轮询使用,实现简单的负载均衡。 |
sk-key1,sk-key2 |
MODEL_IDS |
是 | 模型列表。定义前端下拉框显示的模型。支持 ID=显示名称 格式。 |
gpt-4o,gemini-2.5-pro |
API_BASE |
否 | 接口地址。默认为 https://api.openai.com。如使用中转服务需修改此项。 |
https://api.openai.com |
TAVILY_KEYS |
否 | 联网搜索 Key。配置后前端会出现“联网搜索”选项。获取地址:tavily.com | tvly-xxxx |
TITLE |
否 | 网站标题。自定义浏览器标签页标题。 | 我的 AI 助手 |
DEMO_PASSWORD |
否 | 演示密码。用于公开演示,有频率限制。 | demo123 |
DEMO_MAX_TIMES_PER_HOUR |
否 | 演示密码每小时最大调用次数,默认 15。 | 20 |
| 服务商 | API_BASE | API_KEYS 示例 | MODEL_IDS 示例 | 备注 |
|---|---|---|---|---|
| OpenAI | https://api.openai.com |
sk-proj-xxx |
gpt-4o,gpt-4o-mini,o1-preview |
推荐 Deno 部署 |
| Gemini | https://generativelanguage.googleapis.com |
AIzaSyxxx |
gemini-2.5-pro,gemini-2.5-flash |
推荐 Deno 部署 |
| 心流 AI | https://apis.iflow.cn |
sk-xxx |
qwen3-max,deepseek-v3 |
国产模型聚合,Cloudflare 部署即可 |
| OpenRouter | https://openrouter.ai/api |
sk-or-xxx |
anthropic/claude-sonnet-4.5 |
聚合平台 |
| DeepSeek | https://api.deepseek.com |
sk-xxx |
deepseek-chat,deepseek-coder |
国产之光 |
💡 资源推荐:如果您需要免费且稳定的国产大模型 API(如 Qwen, DeepSeek),推荐尝试 心流 AI,官方宣称 API 永久免费(但 API Key 有效期为7天,过期后需手动重置新 Key),支持 Cloudflare Workers 稳定调用。
- 访问:打开您部署的域名。
- 认证:
- 如果配置了
SECRET_PASSWORD,输入密码即可使用服务器端的 API Key。 - 如果未配置密码,您可以直接输入自己的 OpenAI API Key 使用。
- 如果配置了
- 对话:选择模型,输入问题。支持 Markdown、代码高亮。
- 功能:
- 联网搜索:勾选后,AI 会先搜索网络信息再回答。
- 文件上传:点击输入框左侧的上传按钮,可选择上传图片或纯文本文件。
- 🖼️ 图片上传:支持 JPG、PNG、GIF 等格式,最多 5 张,单张不超过 10MB
- 📄 文本文件上传:支持代码文件(.js, .py, .java 等)、文档(.md, .txt 等)、配置文件(.json, .yaml 等),最多 5 个,单个不超过 1MB
- 存储模式设置:点击设置按钮可选择聊天记录的存储方式:
- 💾 本地存储:聊天记录保存在浏览器 IndexedDB 中,私密安全但仅限当前设备
- ☁️ WebDAV 云端同步:聊天记录同步至您的 WebDAV 云盘(支持群晖、NextCloud 等),实现多设备同步
- 追问:支持多轮追问,保持上下文,至多 8 轮问答。
- 分享:点击右上角分享按钮,生成长图。
-
准备 WebDAV 服务:
- 群晖 NAS:启用 WebDAV 服务(控制面板 → WebDAV),建议开启 HTTPS
- NextCloud:自带 WebDAV 支持,使用应用密码认证
- 坚果云:支持 WebDAV,需要在设置中开启并获取专用密码
- 其他:任何支持 WebDAV 协议的服务都可以
-
配置步骤:
- 点击设置按钮 → 选择"远程存储 (WebDAV)" → 填写配置:
- 服务器地址:WebDAV 服务的完整 URL,如
https://nas.example.com:5006 - 用户名:WebDAV 用户名
- 密码:WebDAV 密码(建议使用应用专用密码)
- 存储路径:文件存储路径,默认
/openai-chat/
- 服务器地址:WebDAV 服务的完整 URL,如
- 点击"测试连接"确认配置无误后保存
- 点击设置按钮 → 选择"远程存储 (WebDAV)" → 填写配置:
-
同步机制:
- 启用 WebDAV 后,聊天记录会实时同步到云端
- 本地仍保留一份副本,确保离线可用
- 切换设备时,会自动从云端加载最新数据
- 采用防抖机制,避免频繁网络请求
本项目也完全兼容 OpenAI API 格式,可作为 API 网关使用。
- Endpoint:
https://your-domain.com/v1/chat/completions - Authorization:
Bearer YOUR_SECRET_PASSWORD(如果设置了密码) 或Bearer sk-xxx(直接透传)
curl 示例:
curl https://your-domain.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-password" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'Q: 部署需要付费吗?
A: Deno Deploy 和 Cloudflare Workers 都有免费额度,一般个人使用完全够用。
Q: 为什么我的自定义域名在国内无法访问?
A: Deno Deploy 和 Cloudflare Workers 的默认域名 (*.deno.dev, *.workers.dev) 在国内通常是被墙的。您必须绑定自己的域名。如果是 Deno Deploy,建议将域名 DNS 托管在 Cloudflare 并开启 CDN(橙色云朵),这样国内用户可以通过 Cloudflare 的节点访问。
Q: 历史记录保存在哪里?会泄露吗?
A: 默认情况下,聊天记录存储在您浏览器的 IndexedDB 中,绝不会上传到任何服务器。您也可以选择启用 WebDAV 云端同步,将记录保存到您自己的云盘中(如群晖、NextCloud 等),实现多设备同步。无论哪种方式,数据都完全由您掌控。
Q: WebDAV 云端同步如何工作?安全吗?
A: WebDAV 同步会将您的聊天记录加密传输并保存到您指定的 WebDAV 服务器(如群晖 NAS、NextCloud 等)。数据传输使用 HTTPS 加密,存储在您自己的服务器上,不经过第三方。您完全拥有数据的控制权。
Q: 支持哪些类型的文件上传?
A:
- 图片:支持 JPG、PNG、GIF、WebP 等主流格式,最多上传 5 张,单张不超过 10MB
- 文本文件:支持代码文件(.js/.py/.java/.cpp 等)、文档(.md/.txt/.html 等)、配置文件(.json/.yaml/.xml 等),最多上传 5 个,单个不超过 1MB
Q: 文件上传后如何与 AI 交互?
A: 上传的图片会直接发送给支持视觉功能的模型(如 GPT-4o、Gemini 等)。文本文件会作为附件内容添加到对话中,AI 可以分析、解释、修改代码或文档内容。
Q: 如何配置群晖 NAS 的 WebDAV?
A:
- 群晖 DSM → 套件中心 → 安装 "WebDAV Server"
- 控制面板 → WebDAV → 启用 WebDAV 和 WebDAV HTTPS(推荐)
- 记录端口号(HTTP 默认 5005,HTTPS 默认 5006)
- 在本应用设置中填入:
https://你的群晖IP或域名:5006
Q: WebDAV 连接失败怎么办?
A:
- 检查 WebDAV 服务器地址是否正确(需包含 http:// 或 https://)
- 确认用户名和密码无误
- 如果使用 Cloudflare Workers 部署,WebDAV 服务器必须使用 HTTPS(HTTP 会被阻止)
- 检查防火墙是否开放相应端口
Q: 为什么推荐 Deno Deploy 而不是 Cloudflare Workers?
A: 虽然两者都支持,但 Deno Deploy 的出口 IP 质量目前更好,很少被 OpenAI 或 Google 封锁,因此可以直接调用官方 API 而不需要额外的代理层。
Q: 如何配置多个 API Key?
A: 在环境变量 API_KEYS 中填入多个 Key,用逗号分隔(如 key1,key2,key3)。程序会在每次请求时随机选择一个 Key,实现简单的负载均衡和防封号。
Q: 演示密码 (Demo Password) 有什么用?
A: 如果你想把网站分享给陌生人体验,但又怕 API 被刷爆,可以设置 DEMO_PASSWORD。使用该密码登录的用户,每小时只能进行有限次(默认15次)对话。
Q: 支持哪些模型?
A: 理论上支持所有兼容 OpenAI Chat Completion 接口的模型。您只需在 MODEL_IDS 环境变量中添加模型 ID 即可。
Q: 如何开启联网搜索功能?
A: 在环境变量中配置 TAVILY_KEYS,然后在 Web 界面勾选"联网搜索"选项即可。联网搜索会为 AI 提供实时的网络信息作为上下文,提升回答的时效性和准确性。
Q: Tavily API Key 如何获取?
A: 访问 Tavily 注册账号并获取 API Key。可以配置多个 Key 用逗号分隔,系统会自动轮换使用。
Q: 如何自定义界面标题和 Favicon?
A: 通过环境变量 TITLE 设置自定义标题,如 TITLE=My AI Assistant。标题会同时影响网页标题和 Favicon 的显示样式。
Q: TITLE 环境变量是如何影响 Favicon 的?
A: TITLE 中包含 Gemini、OpenAI、Claude、Qwen、DeepSeek、Router 字样时(忽略大小写),网站 Favicon 会自动变为相应的厂商 Logo,否则 Logo 默认为 ChatBot 的样式。
本项目采用 MIT License 开源。欢迎 Fork 和 Star!