Skip to content

Repository files navigation

真人 or AI?

三分钟匿名对话,猜猜屏幕对面是真人还是 AI。免登录,起个名字就能玩。

代码仓库:https://github.com/chen9965/aiornot(私有)

功能

  • 免登录:只填昵称(存在本地浏览器),直接开玩
  • 随机匹配:真人优先,真人池 3 秒无对手时由 AI 兜底(不排队)
  • 双向判定:3 分钟聊天,双方互猜「真人 / AI」,揭晓对方身份与 AI 扮演的角色
  • 段位与分享卡:正确率影响 ELO,生成可保存/转发的鉴定卡
  • 测试模式:TEST_MODE=1 时关闭 AI 兜底,真人池只匹配真人(用于只有两个人的联调阶段)
  • 广告挂载点:激励视频(赛后复盘解锁)与 banner 占位,默认演示模式,不打扰核心流程

本地运行

npm install

模式一:完整模式(含 AI 兜底,与生产一致)

npm run dev:local          # http://127.0.0.1:8787

模式二:测试模式(无 AI,仅真人配对)

npm run dev:local:test     # http://127.0.0.1:8787

测试模式下真人池只有你们两人时,不管谁先点「开始匹配」,另一方加入后必然配对到彼此,且绝不会遇到 AI。

和朋友一起测试

  • 同一台电脑:开两个浏览器窗口(或普通窗口 + 无痕窗口,避免共享昵称)。
  • 两台设备:朋友访问 http://192.168.2.8:8787(本机局域网 IP,需同一 Wi-Fi;如被系统防火墙拦截,放行 TCP 8787)。

本机已添加 Windows 防火墙入站规则 aiornot-dev-8787(TCP 8787,Private/Public),朋友可直接访问上面的地址。删除规则:Remove-NetFirewallRule -DisplayName 'aiornot-dev-8787'

两边各填一个昵称,然后都点「开始匹配」。仅剩两人时 100% 互配。

自动化测试

npm test            # 协议测试:真人-真人 / 真人-AI / 统计(需完整模式服务器在 8787)
npm run ui:check    # 无头 Edge 双人全流程 + 截图(需测试模式服务器在 8787)

当前状态:协议测试 12/12 通过;无头浏览器双人全流程(大厅→匹配→聊天→判定→揭晓→分享卡)通过。

部署(免费、无服务器、一条命令)

前端静态文件由同一个 Worker 托管(wrangler.toml[assets]),一次 wrangler deploy 就把整个产品部署到 Cloudflare 免费额度(100k 请求/天),不需要买服务器。

1. 部署

npm install -D wrangler
npm run deploy      # 首次会要求登录 Cloudflare 账号(wrangler login)

部署后打开 https://aiornot-api.<你的子域>.workers.dev 即可玩。前端 config.js 会自动跟随当前域名(ws:///wss://),无需手工改地址。

可选:给 AI 对手接真实大模型(不接则用内置罐头回复,零成本可跑):

npx wrangler secret put LLM_API_KEY      # DeepSeek 等 OpenAI 兼容接口的 key
npx wrangler secret put LLM_BASE_URL     # 默认 https://api.deepseek.com
npx wrangler secret put LLM_MODEL        # 默认 deepseek-chat

测试模式在 Workers 上用 npx wrangler secret put TEST_MODE1(或写入 [vars])。

2.(可选)前端放 GitHub Pages

仓库已经在 GitHub(私有)。如果想把前端放到 GitHub Pages,需把仓库改为公开,然后在 Settings → Pages 选择分支根目录;wsBase 需改回指向 Worker 域名。

架构

public/          前端(纯 HTML/CSS/JS,GitHub Pages 可静态托管)
worker/          生产后端:Cloudflare Workers + Durable Objects
  lobby-N        分片大厅:真人队列 + 3 秒 AI 兜底 + 测试模式开关
  room-*         每局一个 DO:聊天中继、AI 回复、判定、揭晓、超时
dev-server.js    本地开发替身:与 worker 完全相同的 JSON 协议(Node + ws)
personas.js      共享 AI 人设:装真人类(难辨)与标准 AI 类(易识破)
test-client.js   协议自动化测试
ui-check.js      无头 Edge 双人端到端检查

已知限制(诚实清单)

  • 本地 wrangler dev 的 DO+WebSocket 在本机不可用:miniflare 对「WebSocket 升级转发给 Durable Object」在部分本地环境有兼容问题(最小复现也失败)。协议与界面通过 dev-server.js 验证,生产部署到真实 Cloudflare 后需用 wrangler tail/实际对局做最终验证。
  • 房间状态在内存中:DO 被回收时聊天记录不保留(MVP 可接受,后续可迁 SQLite 存储)。
  • 匿名聊天在境内上线需要内容审核与合规处理;出海部署更省心。
  • 免费额度有限:Workers 100k 请求/天、DO 免费档有并发限制,爆量前需评估。

广告接线

  • 国内小程序/小游戏:把 public/ad-manager.jsrewarded: 'csj' 打开,接入穿山甲激励视频,onDone 回调保持放行逻辑。
  • 出海网页:ads.banner = true,用 AdSense/Adsterra 脚本替换占位。

About

真人 or AI?- 社交图灵测试 MVP

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages