武侠互动叙事游戏,前端为主(含 Cloudflare Pages Functions)。数据默认存储在 IndexedDB,支持 GitHub 云同步。
技术栈: React 19, TypeScript, Vite 6, Tailwind CSS, IndexedDB, fflate
npm install # 安装依赖
npm run dev # 启动开发服务器 (http://localhost:3000)
npm run build # 生产构建
npm run preview # 预览构建结果
npm run stress:test # 提示词压力测试环境要求: Node.js 20+, npm 10+
components/ UI 组件、弹窗、功能面板
data/ 内置预设和静态数据
docs/ 文档(技术文档、用户手册、规划文档)
functions/ Cloudflare Pages Functions (GitHub 同步 API)
hooks/ 业务逻辑和 React hooks
models/ 领域模型和类型定义
prompts/ 提示词系统 (core/runtime/writing/stats 分层)
scripts/ 开发辅助脚本
services/ AI、数据库、同步服务
styles/ 全局样式和主题
utils/ 配置、状态、通用工具函数
index.tsx→App.tsx→ 使用useGame()hook- 开发服务器: http://localhost:3000
hooks/useGame.ts是主入口 (~3000 行),导出useGame()hookhooks/useGame/包含 44 个子模块:sendWorkflow、memoryUtils、worldEvolutionWorkflow 等- 状态通过
useGameState.ts管理,通过useGame()返回{ state, meta, setters, actions }
prompts/core/- 核心规则、格式、共享约束、COT 片段prompts/runtime/- 开局、世界生成、变量生成、规划分析等运行时链路prompts/writing/- 写作风格、视角、正文约束prompts/stats/- 经验、战斗、角色、掉落等统计规则prompts/index.ts导出默认提示词数组
services/ai/text/- 文本生成services/ai/image/- 图片生成 (NovelAI 等)services/ai/chatCompletionClient.ts- 通用聊天补全客户端
- IndexedDB 存储存档、设置、图片资源
- DB_NAME:
WuxiaGameDB
- 需要额外部署 Cloudflare Pages Functions
- 依赖环境变量:
GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET
// 提示词按目录分割
prompts-core, prompts-runtime, prompts-stats, prompts-shared
// 功能模块分割
image-manager-desktop, image-manager-mobile
settings-desktop-entry, settings-mobile-entry, settings-panels
game-runtime (services/ai/ + hooks/useGame.ts)@/*→ 项目根目录
- 必须使用 UTF-8 编码处理所有文件
- 代码库混用中文和英文命名
- 新增代码遵循所在模块的既有风格,不做无关重命名
- 历史记录、设置、图片资源缓存在 IndexedDB
- 排查"旧数据残留"时优先检查 IndexedDB
- Vite 大 chunk 警告不会阻塞构建完成
- NovelAI 代理脚本 (
scripts/novelai-proxy.ps1) 需要 PowerShell 7 vite.config.ts中PWSH_PATH指向C:\Program Files\PowerShell\7\pwsh.exe
模型选择、接口地址、提示词开关、世界书等在应用内设置页管理,不硬编码在 .env。
GEMINI_API_KEY=your_key_here
VITE_GITHUB_CLIENT_ID=your_github_oauth_client_id- 无 ESLint/Prettier 配置 - 未发现 linting 配置
- 无 Jest/Vitest 配置 - 未发现测试框架
- 无 CI/CD 工作流 - 未发现 GitHub Actions 或其他 CI 配置
自定义颜色 (tailwind.config.cjs):
ink-black,ink-gray,wuxia-gold,wuxia-gold-dark,wuxia-cyan,wuxia-red,paper-white
自定义字体:
font-serif: Noto Serif SC, SimSun, Songti SCfont-sans: Noto Sans SC, Microsoft YaHei
自定义动画:
glitch,slide-in,fadeIn,marquee,marquee-linear
- README.md - 项目概述和快速开始
- CONTRIBUTING.md - 贡献指南
- docs/README.md - 文档索引(技术文档、用户手册、规划文档)
分层知识库覆盖关键复杂模块:
| 模块 | 文件 | 覆盖内容 |
|---|---|---|
| hooks/useGame | AGENTS.md | 状态管理、44 工作流、入口点 |
| prompts | AGENTS.md | 6 层提示词结构、COT、添加方式 |
| components/features | AGENTS.md | 22 功能模块、桌面/移动端模式 |
| services | AGENTS.md | AI 调用、数据库、同步服务 |
- 总文件数: 329 (不含 node_modules/dist)
- 代码行数: ~99k 行 TypeScript/TSX
- 大型文件: 47 个 (>500行)
- 最大深度: 4 层目录