一个基于 Svelte + TypeScript + Vite 的本地网页游戏项目,用大模型驱动“谁是卧底”多人对局。
你可以旁观纯 AI 对局,也可以加入 1 名人类玩家参与发言、投票和夜晚行动。
Temperature、超时时间、重试次数。localStorage。当前版本包含这些常见角色:
villager:普通好人,拿到平民词。seer:预言家,知道两个词,但顺序会被打乱。undercover:卧底,拿到卧底词。fool:白痴,只知道领域提示。大致目标如下:
关键规则:
常见流程:
当前项目统一走 OpenAI-compatible 的 /chat/completions 接口。
请求体格式大致如下:
{
"model": "gpt-4o-mini",
"messages": [
{ "role": "system", "content": "..." },
{ "role": "user", "content": "..." }
],
"temperature": 0.7
}
当前版本保留了这些可配置项:
baseUrlapiKeyhostModeldefaultPlayerModelplayerModelstemperaturetimeoutMsretryCount当前版本没有内置多 provider 适配层,也没有 Gemini / Anthropic 专用请求格式。若要接入其他协议,需要额外扩展 src/api.ts。
这是一个会自动多次调用模型的游戏,不是一次请求结束的普通聊天页。开始使用前请务必注意:
安装依赖:
npm ci
启动开发环境:
npm run dev
构建生产版本:
npm run build
类型检查:
npm run check
建议第一次按这个顺序测试:
Base URL、API Key、主持人模型和默认玩家模型。主要代码集中在这些文件:
src/App.svelte:主界面、设置弹窗、欢迎引导、对局交互。src/game.ts:游戏状态机、角色分配、阶段推进、人类动作处理、胜负与计分。src/api.ts:OpenAI-compatible 请求封装、主持人选词、玩家行动、裁定与连通性测试。src/storage.ts:默认设置、提示词模板、本地存储读写、导入导出。src/wordbanks.ts:词库与主题处理。src/types.ts:核心类型定义。以下内容默认保存在浏览器本地:
清空浏览器站点数据后,这些内容会一起丢失。
While certain foundations of this project were forked from Niek/chatgpt-web licensed under GPL-3.0 license, the codebase has been largely rewritten.
This project depends on the following tools: Codex & Copilot & Gemini-CLI.