像刷即时通讯软件一样进入剧情:玩家选择回复,角色即时回应,数值和分支一起把故事推向不同结局。
在线演示:https://chat.vibecoco.ai/
这是一个基于 Next.js + React + DeepSeek 服务端代理 的中文聊天剧情游戏。AI 只负责把已有剧本回复润色得更自然;剧情跳转、数值变化和结局判定仍由本地 JSON 数据控制,因此生成失败时也会自动回退到原台词。
| 首页 | 取名页 |
|---|---|
![]() |
![]() |
| 聊天玩法 | 结局页 |
![]() |
![]() |
- 手机聊天式 UI:消息气泡、打字状态、系统时间、底部选择面板。
- 分支剧情:选择会影响好感、焦虑、下一场景和最终结局。
- 随机角色开局:角色池来自
data/girls.json。 - AI 对话润色:浏览器只调用本地
/api/ai/chat,DeepSeek Key 始终留在服务端。 - Vercel 友好:前端页面、API 路由、健康检查和生产来源白名单在同一项目内发布。
| 层 | 技术 |
|---|---|
| 前端 | Next.js 16 App Router · React |
| 后端 | Next.js Route Handlers(app/api/*) |
| AI | DeepSeek deepseek-v4-flash,服务端代理调用 |
| 数据 | JSON 剧情、角色、章节、话术(data/) |
| 部署 | Vercel |
要求 Node.js 20+(CI 使用 Node 22)和 DeepSeek API Key。
npm install
cp .env.example .env.local
# 填写 .env.local 里的 DEEPSEEK_API_KEY
npm run dev生产构建:
npm run build
npm run start -- --port 4180| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
DEEPSEEK_API_KEY |
是 | 无 | 服务端密钥,不要添加 NEXT_PUBLIC_ 前缀。 |
DEEPSEEK_MODEL |
否 | deepseek-v4-flash |
AI 代理使用的模型。 |
DEEPSEEK_BASE_URL |
否 | https://api.deepseek.com |
DeepSeek API 地址,必须为 HTTPS。 |
DEEPSEEK_TIMEOUT_MS |
否 | 8000 |
上游请求超时(毫秒)。 |
APP_PUBLIC_URL |
推荐 | https://chat.vibecoco.ai |
公开站点地址,用于元数据和生产来源校验。 |
AI_ALLOWED_ORIGINS |
推荐 | 生产域名 | 逗号分隔的额外允许来源。NODE_ENV=production 下默认不放行 localhost。 |
AI_MAX_REQUEST_BODY_BYTES |
否 | 16384 |
AI 接口请求体大小限制。 |
AI_RATE_LIMIT_WINDOW_MS |
否 | 60000 |
单 IP 限流窗口。 |
AI_RATE_LIMIT_MAX_REQUESTS |
否 | 30 |
单窗口最大请求数,设为 0 可关闭内存限流。 |
- 在 Vercel 导入 Git 仓库。
- 添加
DEEPSEEK_API_KEY,并把APP_PUBLIC_URL/AI_ALLOWED_ORIGINS设置为正式域名。 - 确认没有把任何 DeepSeek 变量命名为
NEXT_PUBLIC_*。 - Git 集成开启后,推送到
main即可触发生产部署。
提交或发布前运行:
make verify
# 或 npm run verify该命令会依次检查仓库结构和剧情链接、模拟 DeepSeek 关键路径、构建 Next.js 应用,并校验 README 截图基线。依赖变更时建议额外运行:
npm audit --omit=dev常用数据位置:
| 文件 | 用途 |
|---|---|
data/girls.json |
角色池、头像、首场景 |
data/scenes.json |
消息、选项、数值变化、跳转、结局 |
data/chapters.json |
章节结构 |
public/ |
头像、图标和静态资源 |
新增角色时,把头像放入 public/,在 data/girls.json 配置 firstScene,再在 data/scenes.json 中补齐对应场景。结局节点优先写显式 endingData,避免再改运行时代码。完成后运行 make verify。
.
├── app/ # Next.js 页面与 API 路由
├── components/ # 聊天模拟器 UI、状态和剧情运行时
├── data/ # 角色、章节、剧情和话术数据
├── docs/screenshots/ # README 截图
├── lib/ai/deepseek.js # DeepSeek 服务端客户端
├── public/ # 静态资源
└── scripts/ # 仓库、AI、视觉验证脚本
- 不要提交
.env.local、真实 API Key、node_modules/或.next/。 - 游戏内容为虚构娱乐,不应用 AI 文本冒充真实人物。
- 欢迎提交 Issue / PR;提交前请运行
make verify。 - 本项目基于 MIT 许可证 开源。



