Skip to content

bb964305/simverse-world

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

213 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simverse World — 赛博永生开放世界

License: MIT

在线体验:https://simverse.world

Simverse World 是一个赛博朋克风格的开放世界多人游戏/模拟平台。玩家在像素风的虚拟村落中控制角色("居民"),与 AI 驱动的 NPC 对话、锻造物品、交易和互动。每个 NPC 拥有独立的灵魂档案,由 LLM 驱动的对话系统赋予其独特的个性和记忆。居民具有自主行为能力——会根据性格作息、四处闲逛、互相聊天、形成记忆,人格也会随时间和经历发生真实的演化。

演示截图

游戏世界

主界面 & 公告栏 小地图 & 工坊区
游戏主界面 小地图与工坊

角色锻造(Forge)

引导式炼化 深度蒸馏模式
炼化主界面 深度蒸馏

视频演示

核心功能

  • AI 驱动的角色对话 — 基于 LLM 的 NPC 系统,每个角色拥有独立的灵魂(persona / soul / ability)
  • 三层记忆系统 — 事件记忆(向量检索)→ 关系记忆(结构化)→ 反思记忆(高层认知),让 NPC 真正"记住"你
  • SBTI 人格系统 — 15 维度 × 27 种人格类型,驱动行为决策和记忆着色
  • 人格动态演化 — 日常渐变 + 关键事件跳变,性格随交互真实成长
  • 居民自主行为 — AgentLoop 驱动 14 种行为(聊天、闲逛、工作、反思...),按 SBTI 作息调度
  • 居民间自主对话 — NPC 之间主动发起 3-8 轮 LLM 对话,产生记忆和关系
  • 多模态理解 — 玩家可发送图片/视频,居民能"看懂"并回应(qwen 图片 + kimi 视频)
  • 角色锻造(Forge) — 多阶段 pipeline:自动调研 → 信息提取 → 角色构建 → 验证 → 精炼
  • 2D 像素风游戏世界 — Phaser.js 等距视角,小地图、角色移动、NPC 状态可视化
  • AI 头像生成 — 通过 Gemini 模型自动生成角色像素风头像
  • 管理后台 — 系统配置、仪表盘、居民管理、经济系统、服务健康监控
  • OAuth 登录 — 支持 LinuxDo / GitHub OAuth
  • WebSocket 实时通信 — 游戏状态同步、聊天、NPC 行为广播

技术栈

后端

技术 用途
FastAPI Web 框架 & REST API
SQLAlchemy 2.0 (async) ORM
PostgreSQL 16 + pgvector 主数据库 + 向量检索(开发可用 SQLite)
Redis 7 缓存 & 会话
Alembic 数据库迁移
Anthropic SDK LLM 调用(兼容 OpenAI 格式端点)
Ollama 本地 Embedding 模型(qwen3-embedding)
httpx 异步 HTTP 客户端
Pydantic Settings 配置管理
python-jose + Passlib JWT 认证 & 密码哈希

前端

技术 用途
React 19 UI 框架
TypeScript 6 类型安全
Vite 8 构建工具 & 开发服务器
Phaser.js 3.90 2D 游戏引擎
Zustand 5 状态管理
React Router 7 路由

基础设施

技术 用途
Docker + Docker Compose 容器化部署
Cloudflare Workers 前端静态站点部署(可选)
SearXNG 自建搜索引擎(角色调研用)

项目结构

Simverse-World/
├── backend/                  # FastAPI 后端
│   ├── app/
│   │   ├── config.py         # Pydantic Settings 配置中心
│   │   ├── main.py           # FastAPI 入口 & 路由注册
│   │   ├── database.py       # 数据库引擎 & Session
│   │   ├── models/           # SQLAlchemy ORM 模型
│   │   │   ├── memory.py     #   三层记忆模型(pgvector)
│   │   │   └── personality_history.py  # 人格演化历史
│   │   ├── routers/          # API 路由
│   │   │   ├── auth.py       #   注册 / 登录 / JWT
│   │   │   ├── residents.py  #   角色(居民)CRUD
│   │   │   ├── forge.py      #   锻造 API
│   │   │   ├── media.py      #   媒体上传 API
│   │   │   ├── profile.py    #   用户档案
│   │   │   └── admin/        #   管理后台 API
│   │   ├── services/         # 业务逻辑
│   │   │   ├── sbti_service.py     # SBTI 人格类型计算
│   │   │   ├── portrait_service.py # AI 头像生成
│   │   │   └── linuxdo_auth.py     # LinuxDo OAuth
│   │   ├── agent/            # 居民自主行为引擎
│   │   │   ├── loop.py       #   AgentLoop 主循环
│   │   │   ├── tick.py       #   resident_tick() 决策引擎
│   │   │   ├── scheduler.py  #   SBTI 驱动的作息调度
│   │   │   ├── actions.py    #   14 种行为类型定义
│   │   │   ├── chat.py       #   居民间自主对话
│   │   │   ├── pathfinder.py #   A* 寻路算法
│   │   │   └── prompts.py    #   决策 LLM Prompt
│   │   ├── memory/           # 三层记忆系统
│   │   │   ├── service.py    #   MemoryService CRUD + 检索
│   │   │   ├── embedding.py  #   Ollama 向量生成
│   │   │   └── prompts.py    #   记忆提取/反思 Prompt
│   │   ├── personality/      # 人格动态演化
│   │   │   ├── evolution.py  #   渐变/跳变逻辑
│   │   │   ├── guard.py      #   PersonalityGuard 约束
│   │   │   └── prompts.py    #   演化评估 Prompt
│   │   ├── media/            # 多模态处理
│   │   │   ├── service.py    #   媒体上传/存储
│   │   │   └── model_router.py  # 模型路由(qwen/kimi)
│   │   ├── forge/            # 角色锻造 pipeline
│   │   ├── llm/              # LLM 客户端工厂
│   │   ├── ws/               # WebSocket 处理
│   │   └── tasks/            # 定时任务(热度计算等)
│   ├── alembic/              # 数据库迁移脚本
│   └── tests/                # pytest 测试(300+)
├── frontend/                 # React + Phaser.js 前端
│   ├── src/
│   │   ├── components/       # React 组件(管理面板、游戏 UI 等)
│   │   ├── game/             # Phaser 游戏场景 & 精灵
│   │   ├── pages/            # 页面组件
│   │   ├── stores/           # Zustand 状态管理
│   │   └── services/         # API 客户端封装
│   └── public/               # 静态资源(地图、精灵图等)
├── deploy/                   # 部署配置
│   ├── backend/              #   Docker + deploy 脚本
│   └── frontend/             #   Cloudflare Workers 配置
├── docs/screenshots/         # 演示截图 & 视频
├── docker-compose.yml        # 本地开发基础设施
└── LICENSE                   # MIT License

部署方式一:本地开发(直接部署)

适用于开发调试,不需要 Docker 构建镜像,直接运行 Python 和 Node.js。

前置要求

  • Python 3.11+
  • Node.js 18+
  • PostgreSQL 16(或使用 SQLite 开发模式)
  • Redis 7(可选,热度计算等功能需要)
  • Ollama(可选,本地 Embedding 模型)

Step 1:启动数据库和 Redis

方式 A:使用 Docker 启动基础设施(推荐)

# 在项目根目录
docker compose up -d

这会启动 PostgreSQL(端口 5432)和 Redis(端口 6379)。

方式 B:使用系统已有的 PostgreSQL / Redis

确保 PostgreSQL 和 Redis 已运行,后续在 .env 中配置连接地址即可。

方式 C:纯 SQLite 模式(最简单)

不需要 PostgreSQL 和 Redis,在 .env 中设置:

DATABASE_URL=sqlite+aiosqlite:///./skills_world_dev.db

Step 2:启动后端

cd backend

# 复制环境变量模板并填写
cp .env.example .env

编辑 backend/.env,至少填写以下内容:

# 数据库(二选一)
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/skills_world
# DATABASE_URL=sqlite+aiosqlite:///./skills_world_dev.db

# Redis(可选)
REDIS_URL=redis://localhost:6379/0

# JWT 密钥(开发环境随意,生产必须用长随机字符串)
JWT_SECRET=my-dev-secret

# LLM API(必填,支持任何 Anthropic SDK 兼容的端点)
LLM_API_KEY=sk-your-api-key
LLM_BASE_URL=https://api.anthropic.com          # 或其他兼容端点
LLM_MODEL=claude-haiku-4-5-20251001

# Ollama Embedding(可选,本地或远程)
OLLAMA_BASE_URL=http://localhost:11434

# SearXNG 搜索引擎(角色锻造调研用,可选)
SEARXNG_URL=http://localhost:58080

# 居民自主行为(可选,默认开启)
AGENT_ENABLED=true

然后:

# 安装依赖
pip install -e ".[dev]"

# 执行数据库迁移
alembic upgrade head

# 启动后端
uvicorn app.main:app --reload --port 8000

后端运行于 http://localhost:8000,API 文档:http://localhost:8000/docs

Step 3:启动前端

cd frontend

# 复制环境变量
cp .env.example .env
# 默认 VITE_API_URL=http://localhost:8000,通常无需修改

# 安装依赖
npm install

# 启动开发服务器
npm run dev

前端运行于 http://localhost:5173

验证


部署方式二:Docker 部署(生产环境)

适用于服务器部署,使用 Docker Compose 一键启动后端 + 数据库。

前置要求

  • 一台 Linux 服务器(推荐 Ubuntu 22.04+)
  • Docker 24+ & Docker Compose v2
  • Node.js 18+(用于构建前端)

Step 1:准备后端

cd deploy/backend

# 复制并编辑环境变量
cp .env.example .env

编辑 deploy/backend/.env

# PostgreSQL 密码(会被 docker-compose 使用)
POSTGRES_PASSWORD=你的强密码

# JWT 密钥(生成方式:openssl rand -hex 32)
JWT_SECRET=生成的64字符随机字符串

# LLM API
LLM_API_KEY=sk-your-api-key
LLM_BASE_URL=https://api.anthropic.com
LLM_MODEL=claude-haiku-4-5-20251001

# SearXNG(如果部署了搜索引擎)
SEARXNG_URL=http://your-searxng-host:58080

# AI 头像生成(可选)
PORTRAIT_LLM_MODEL=gemini-3-pro-image-preview
PORTRAIT_LLM_BASE_URL=http://your-gemini-proxy:3000/v1
PORTRAIT_LLM_API_KEY=sk-your-portrait-key

# CORS — 设置为你的前端域名
CORS_ORIGINS=["https://your-domain.com"]

# LinuxDo OAuth(可选)
LINUXDO_CLIENT_ID=
LINUXDO_CLIENT_SECRET=
LINUXDO_REDIRECT_URI=

Step 2:启动后端服务

cd deploy/backend
docker compose up -d --build

这会启动:

  • PostgreSQL 16 — 数据库(仅监听 127.0.0.1:5432)
  • API 服务 — FastAPI 应用(监听 0.0.0.0:8100)

验证:

curl http://localhost:8100/health
# 应返回 {"status": "ok"}

Step 3:构建并部署前端

方式 A:Cloudflare Workers(推荐)

cd frontend

# 设置 API 地址为你的后端域名
echo "VITE_API_URL=https://api.your-domain.com" > .env

# 构建
npm install
npm run build

# 部署到 Cloudflare Workers
npx wrangler deploy

方式 B:Nginx 静态托管

cd frontend

echo "VITE_API_URL=https://api.your-domain.com" > .env
npm install
npm run build

frontend/dist/ 目录部署到 Nginx。


环境变量参考

变量名 必填 默认值 说明
DATABASE_URL postgresql+asyncpg://... 数据库连接字符串
REDIS_URL redis://localhost:6379/0 Redis 连接字符串
JWT_SECRET JWT 签名密钥
LLM_API_KEY LLM API 密钥
LLM_BASE_URL 自定义 LLM 端点
LLM_MODEL claude-haiku-4-5-20251001 默认 LLM 模型
LLM_THINKING false 启用 LLM 推理模式
OLLAMA_BASE_URL http://localhost:11434 Ollama Embedding 服务地址
OLLAMA_EMBED_MODEL qwen3-embedding:4b Embedding 模型
SEARXNG_URL http://localhost:58080 SearXNG 搜索引擎地址
AGENT_ENABLED true 居民自主行为开关
AGENT_TICK_INTERVAL 60 行为循环间隔(秒)
PORTRAIT_LLM_BASE_URL 头像生成 API 地址
PORTRAIT_LLM_API_KEY 头像生成 API 密钥
CORS_ORIGINS ["http://localhost:5173"] 允许的跨域来源
LINUXDO_CLIENT_ID LinuxDo OAuth Client ID

开发指南

运行测试

# 后端测试(300+ 测试用例)
cd backend
python3 -m pytest tests/

# 前端类型检查
cd frontend
npx tsc --noEmit

数据库迁移

cd backend

# 生成新迁移
alembic revision --autogenerate -m "add xxx table"

# 执行迁移
alembic upgrade head

# 回滚一步
alembic downgrade -1

LLM 兼容性

后端通过 Anthropic SDK 调用 LLM,支持任何兼容 Anthropic Messages API 格式的端点:

  • Anthropic Claude — 官方端点
  • DashScope — 阿里云百炼(兼容模式)
  • 其他兼容 OpenAI / Anthropic 格式的代理

只需在 .env 中设置 LLM_BASE_URLLLM_API_KEY 即可切换。

Roadmap

v1.0 — MVP ✅ (2026-04-10)

核心游戏循环完整可玩:认证、像素世界、AI 居民、锻造系统、实时聊天、Soul Coin 经济、小地图传送、搜索排行、管理面板。

v1.1 — 角色增强 ✅ (2026-04-10)

  • 深度蒸馏锻造管线 — SearXNG 6 路调研 + 三重验证 + 双 Agent 精炼
  • 角色统一系统 — 玩家即角色,Onboarding 引导创建
  • AI 头像生成 — portrait_service + Gemini 集成
  • 精灵匹配系统 — 25 模板 + LLM 智能匹配
  • 自定义 LLM 提供商 — 用户可配置 API Key、Base URL、模型
  • NPC 回复模式 — 手动/自动回复策略

v1.2 — 社交与管理 ✅ (2026-04-10)

  • 玩家间私聊系统 — WebSocket 实时聊天 + 离线消息队列
  • 自动回复模式 — LLM 基于角色人设自动应答
  • LinuxDo OAuth2 登录 — trust_level 门控
  • GitHub OAuth2 登录
  • 管理面板 — 仪表盘、用户管理、居民管理、锻造监控、经济配置、系统设置
  • 用户设置面板 — 账户/角色/交互/隐私/LLM/经济 6 大分区

v1.3 — 居民自主进化 ✅ (2026-04-11)

  • 三层记忆系统 — 事件记忆(向量检索)+ 关系记忆 + 反思记忆
  • SBTI 人格系统 — 15 维度 27 种性格类型,驱动行为和记忆着色
  • 居民自主行为 — AgentLoop + SBTI 作息调度 + A* 寻路 + 14 种行为
  • 居民间自主对话 — 3-8 轮 LLM 对话 + 双向记忆 + 话题摘要广播
  • 多模态理解 — 图片(qwen3.6-plus)+ 视频(kimi-k2.5)模型路由
  • 人格动态演化 — 渐变(日常积累)+ 跳变(关键事件)+ 三层文本同步
  • 人格演化约束 — PersonalityGuard(步长限制、冷却、月度预算)

v1.4 — Agent 架构演进 ✅ (2026-04-13)

  • Agent 插件系统 — YAML 驱动的 5 阶段插件(perceive / plan / decide / execute / memorize)
  • 分层规划 — DailyGoal + HourlyPlan + 重要性阈值决策
  • 地图感知系统 — 20 个命名位置 + 居民住房(home_location_id
  • 碰撞寻路 — A* + tilemap 碰撞层 + 位置入口优先级

v1.5 — 平台扩展(计划中)

  • 物品与背包系统 — 可交易的虚拟物品
  • 交易市场 — 玩家之间的物品 / Soul Coin 交易
  • 前端测试底座 — Vitest + React Testing Library + 关键页面覆盖
  • 移动端适配 — 响应式 UI + 触控操作
  • 记忆嵌入闭环 — Ollama embedding 实际调用 + pgvector 召回评估

v1.6 — 生态开放(计划中)

  • 国际化(i18n) — 中 / 英双语
  • 开放 API — 第三方接入自定义角色和技能
  • SBTI 深化 — 性格组合动态学 + 可视化面板

v2.0 — Stardust Town 沉浸叙事(远景)

  • 20 转世灵魂预设 + 记忆断层 / 身份谜团机制
  • 环境交互系统 — 图书馆 / 市政厅 / 商贩
  • 附身机制 — 玩家切换不同灵魂视角
  • 多人经营循环 — 行会 / 选举 / 集市

致谢

本项目的诞生离不开以下开源项目的启发与贡献,在此致以诚挚的感谢:

  • Nuwa Skill — AI 角色锻造的核心灵感来源。Nuwa 的 Skill 概念和 LLM 驱动的角色构建思路深刻影响了本项目的 Forge pipeline 设计。
  • Generative Agents CN — 斯坦福「生成式智能体」论文的中文复现。本项目的 AI 居民行为系统(记忆、反思、对话)从中汲取了大量灵感和架构思路。
  • Star Office UI — 精美的像素风 UI 资源包。本项目的游戏界面视觉风格和部分精灵素材源自此项目。

感谢这些项目的作者们将优秀的工作开源分享,让更多人能够站在巨人的肩膀上创造新的可能。

友情链接

LinuxDo

License

MIT

About

赛博永生开放世界 — AI-driven cyberpunk open-world multiplayer game

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 68.4%
  • TypeScript 31.0%
  • Shell 0.2%
  • CSS 0.1%
  • Mako 0.1%
  • Dockerfile 0.1%
  • Other 0.1%