NekoAI

一个部署在 Cloudflare 上的极简网页聊天工具:

  • OpenAI 兼容接口
  • 单访问密钥鉴权
  • 动态读取 /v1/models
  • 本地浏览器保存聊天记录
  • 不依赖数据库
  • 前后端分离:Pages 前端 + Workers API

项目结构

  • src/index.jsCloudflare Worker API
  • public/Cloudflare Pages 前端静态文件
  • public/config.js:前端 API 地址配置
  • wrangler.tomlWorkers API 配置
  • .dev.vars.example:本地开发环境变量示例

需要的环境变量

Workers API 需要:

  • OPENAI_BASE_URL:你的 OpenAI 兼容接口地址(不要带 /v1/models
  • OPENAI_API_KEY:上游 API Key
  • ACCESS_KEY:给朋友使用的共享访问密钥
  • ALLOWED_ORIGIN:允许访问 API 的前端站点域名(可选)

例如:

OPENAI_BASE_URL="https://api.example.com"
OPENAI_API_KEY="sk-xxxx"
ACCESS_KEY="nekoai-2026"
ALLOWED_ORIGIN="https://nekoai.pages.dev"

本地运行 API

先安装依赖:

npm install
cp .dev.vars.example .dev.vars

然后启动 Worker API

npm run dev

部署方式

1. 部署 Workers API

先登录 Wrangler

npx wrangler login

设置线上 secrets

npx wrangler secret put OPENAI_BASE_URL
npx wrangler secret put OPENAI_API_KEY
npx wrangler secret put ACCESS_KEY
npx wrangler secret put ALLOWED_ORIGIN

部署:

npm run deploy

默认 Worker 名称:

  • nekoai-api

默认地址类似:

  • https://nekoai-api.your-subdomain.workers.dev

2. 部署 Pages 前端

public/ 目录作为静态站点部署到 Cloudflare Pages。

在正式部署前,修改:

  • public/config.js

把里面的:

window.NEKOAI_CONFIG = {
  API_BASE_URL: "https://nekoai-api.your-subdomain.workers.dev"
};

改成你自己的 Workers API 地址。

当前接口

GET /api/models

  • 需要 Authorization: Bearer <ACCESS_KEY>
  • Worker 代理上游 /v1/models
  • 不做 fallback

POST /api/chat

  • 需要 Authorization: Bearer <ACCESS_KEY>
  • 代理上游 /v1/chat/completions
  • 支持流式返回

当前实现说明

这是一个最简可跑版本,特点是:

  • 不接数据库
  • 不做用户系统
  • 不做聊天记录云端同步
  • 模型列表不写死
  • 上游失败就直接报错
  • 前端和 API 分离部署

后续可以继续加的东西

  • Markdown 渲染
  • 代码高亮
  • 删除会话
  • 导出会话
  • IP 限流
  • 模型过滤
  • 自定义系统提示词
  • 自定义域名
Description
No description provided
Readme 163 KiB
Languages
JavaScript 63.7%
CSS 29.5%
HTML 6.8%