Skip to content

FQMONKEYcc/infinity-chat

Repository files navigation

本项目由 FQMONKEY 牵引,完全由 Claude Code 开发。

Infinity Chat

AI驱动的互动小说引擎 - 打造沉浸式的文字冒险体验

特性

AI驱动叙事 - 利用先进的大语言模型生成动态、个性化的故事体验

🎭 深度角色塑造 - 详细的角色卡片系统,包含性格特征、背景故事、技能和物品

🌿 自由分支选择 - 自定义动作系统,支持"做"、"说"、"故事"三种模式

🎨 专业UI设计 - 现代化的暗色主题,使用Lucide图标系统,全面的无障碍支持

📱 响应式设计 - 完美支持桌面和移动设备,触摸友好的交互

💾 完善的存档系统 - 支持多存档、导入导出、故事进度摘要

🌍 世界构建工具 - 场景参考图、AI生成描述、World Info/Lorebook系统

🎯 状态追踪 - 实时显示时间、地点、物品、关系、目标、健康等状态

技术栈

  • 前端框架: React 19 + TypeScript
  • 构建工具: Vite 7.3
  • 样式: Tailwind CSS v4
  • 状态管理: Zustand 5.0
  • 路由: React Router 7.13
  • 图标: Lucide React
  • 国际化: react-i18next
  • Markdown: react-markdown

支持的LLM提供商

  • DeepSeek
  • OpenAI (GPT-4, GPT-4o, etc.)
  • Anthropic (Claude)
  • Google Gemini
  • xAI (Grok)
  • OpenRouter
  • 自定义端点

快速开始

安装依赖

npm install

开发模式

npm run dev

构建生产版本

npm run build

预览生产构建

npm run preview

使用指南

1. 配置API密钥

进入"设置"页面,选择LLM提供商并输入API Key。

2. 创建新故事

  1. 点击"新故事"开始创建
  2. 故事风格 - 选择类型(奇幻、科幻、悬疑等)和叙事风格
  3. 世界场景 - 描述世界观,可上传参考图让AI生成
  4. 角色设定 - 创建角色,可上传头像让AI生成完整人设
  5. 总览确认 - 检查所有设定后开始冒险

3. 开始游戏

  • 选择预设选项或输入自定义动作
  • 查看状态面板了解角色状态
  • 使用撤销功能回退决策
  • 随时保存进度

项目结构

infinity-chat/
├── src/
│   ├── components/         # React组件
│   │   ├── game/          # 游戏页面组件
│   │   ├── story-setup/   # 故事创建向导
│   │   ├── settings/      # 设置页面
│   │   ├── saves/         # 存档管理
│   │   └── shared/        # 共享组件
│   ├── services/          # 业务逻辑
│   │   ├── llm/          # LLM提供商抽象
│   │   ├── prompts/      # 提示词生成
│   │   └── storage/      # 本地存储管理
│   ├── stores/           # Zustand状态存储
│   ├── types/            # TypeScript类型定义
│   ├── i18n/             # 国际化配置
│   ├── lib/              # 工具函数和图标系统
│   └── App.tsx           # 主应用入口
├── docs/                 # 文档
└── public/              # 静态资源

最近更新

v1.1.0 - UI/UX全面优化 (2026-03-02)

  • ✅ 替换所有emoji图标为Lucide React SVG图标系统
  • ✅ 添加键盘焦点环支持 (focus-visible)
  • ✅ 全局cursor-pointer和交互反馈优化
  • ✅ 统一颜色变量系统,消除硬编码颜色
  • ✅ 移动端触摸目标优化(最小44x44px)
  • ✅ 支持prefers-reduced-motion无障碍特性
  • ✅ z-index统一管理
  • ✅ 改进过渡动画性能
  • ✅ 增强无障碍性(aria-labels, alt text)

v1.0.1 - AI生成功能修复

  • 🔧 增加场景描述maxTokens: 2048 → 4096
  • 🔧 增加角色生成maxTokens: 1024 → 2048
  • 🔧 增强JSON提取容错能力
  • 🔧 改进错误提示信息

v1.0.0 - 核心功能

  • 🎉 完整的故事创建向导
  • 🎉 多存档系统
  • 🎉 上下文窗口管理和自动裁剪
  • 🎉 AI生成世界观和角色人设
  • 🎉 多语言支持(中文/英文)
  • 🎉 特殊规则/自定义机制系统

开发指南

添加新的LLM提供商

  1. src/services/llm/ 创建provider实现
  2. 实现 LLMProvider 接口
  3. src/services/llm/providerRegistry.ts 注册
  4. src/lib/constants.ts 添加预设配置

自定义主题颜色

编辑 src/index.css 中的 @theme 块:

@theme {
  --color-accent: #7c5bf0;        /* 主色调 */
  --color-accent-hover: #9070ff;  /* hover状态 */
  --color-success: #4ade80;       /* 成功色 */
  --color-warning: #fbbf24;       /* 警告色 */
  --color-danger: #ef4444;        /* 危险色 */
  /* ... */
}

常见问题

如何切换语言?

进入"设置"页面,点击底部的语言切换按钮(中文/English)。

AI生成被截断怎么办?

如果AI生成的场景描述或角色人设不完整:

  1. 确保使用支持较大输出的模型(如GPT-4o, Claude Sonnet)
  2. 检查API配额是否充足
  3. 尝试重新生成

如何使用World Info系统?

在"世界场景"步骤点击"世界信息/Lorebook"展开:

  1. 添加条目
  2. 设置触发关键词(如"魔法"、"国王")
  3. 填写相关背景知识
  4. 当对话中出现关键词时,相关信息会自动注入上下文

存档存在哪里?

所有数据存储在浏览器的IndexedDB中,不会上传到服务器。可以通过"导出JSON"功能备份存档。

贡献指南

本项目完全由Claude Code开发,欢迎:

  • 报告Bug
  • 提出功能建议
  • 贡献代码(请遵循现有代码风格)

许可证

MIT License

链接


Built entirely by Claude Code 🤖

About

AI驱动的互动小说引擎 - Immersive AI-powered interactive fiction engine | Built entirely by Claude Code

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages