和《偶像大师 闪耀色彩》偶像实时语音/文字对话的 AI 分身:日语原声 + 中文字幕、回忆原作剧情、跨角色共享记忆;支持 Google/GitHub 登录与自带密钥,Docker Compose 一键部署(参考 LAPLACE Eidolon)
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Eidolon-SC 让你以 283 事务所制作人的身份,和原作中的偶像打字聊天或者直接打电话。她用日语原声回答,附上中文字幕;能回忆自己在原作里经历过的剧情;还会记住你说过的事,并在偶像之间「传开」。
原作八个组合的 28 位偶像和事务员七草はづき都已经配好,可以直接对话。部署到公网后,任何人都能用 Google 或 GitHub 登录使用。
[!IMPORTANT] 本项目是非官方的粉丝作品,与万代南梦宫及《偶像大师》系列的版权方无关,角色由 AI 扮演。剧情数据不随仓库分发,需要自行准备(ADR-0003);角色会通过回复间接地把剧情内容提供给登录的用户,这一风险见 ADR-0006。
和她说话
她记得什么
部署和运营
不熟悉 Docker 和各种 API key 也没关系:把下面这段话发给你用的编程 Agent(Claude Code、Codex、Cursor 等都行),它会照仓库里的部署说明一步步带你做,碰到报错也会帮你查。
帮我部署 Eidolon-SC(https://github.com/Sallyn0225/eidolon-sc)。先把仓库克隆下来,
再照仓库里 docs/agents/deploying.md 带我一步步做。要我注册账号、申请 key 的地方告诉我怎么做;
key 我自己填进 .env,不贴给你。
[!NOTE] 为什么部署好了没有剧情、通话里也没有立绘? 剧情文本和立绘素材的版权不属于本项目,不随仓库分发,仓库里只有同步工具。部署后自己同步一次就有了,Agent 会带你做(见部署说明的「剧情库」「立绘」)。同步之前,角色只凭人设回复,通话里只显示背景图。
需要 Docker 与 Docker Compose,以及一个支持流式输出和工具调用的对话模型。不想装 Docker(比如在 Windows 上),也可以用 uv 和 Node.js 直接跑前后端,见下面的「开发」和部署说明的「三种跑法」。
git clone https://github.com/Sallyn0225/eidolon-sc.git && cd eidolon-sc
cp .env.example .env # 填写 CHAT_LLM_BASE_URL、CHAT_LLM_API_KEY、CHAT_LLM_MODEL,再加一行 EIDOLON_DEV_LOGIN=1
docker compose up --build
打开 http://localhost:3000 是落地页。点右上角的「登录」,在登录面板里选「开发登录」,随便填一个名字,同意隐私政策和使用条款、声明年满 13 岁后就进入对话列表,点一位偶像开始对话。
只填对话模型时能文字聊天。按需再补上其他服务的密钥,逐步开启语音通话、剧情回忆、记忆和立绘:
| 功能 | 需要的配置 |
|---|---|
| 文字对话 | CHAT_LLM_* |
| 语音通话 | FISH_AUDIO_API_KEY,加语音识别的 key:SONIOX_API_KEY(默认)或阿里云百炼的 DASHSCOPE_API_KEY |
| 剧情库 | 向量化的 key:SILICONFLOW_API_KEY(默认)或 GEMINI_API_KEY |
| 检索与记忆 | 向量化的 key、SILICONFLOW_API_KEY(重排),加判断模型:JEV_API_KEY(默认)、Cloudflare 或阿里云百炼的凭证 |
| 照片 | 判断模型,加生图的 key:NOVELAI_API_KEY |
| 立绘、招呼与酒吧的音乐 | EIDOLON_STAND_ASSETS_URL 和存放素材的存储桶 |
每项怎么配、配了以后有什么效果,见 配置指南;所有环境变量的说明见 .env.example。
配好以后运行 docker compose run --rm backend eidolon doctor(直接跑时在 backend/ 下 uv run --env-file=../.env eidolon doctor),它会逐项试一次各项服务,说明哪一项连不上、key 不对或者要走代理。
flowchart LR
subgraph Browser["浏览器 · Next.js"]
Landing["落地页"]
UI["对话列表 · 对话 · 通话层"]
Admin["后台"]
end
subgraph Backend["后端 · FastAPI + Pipecat"]
API["HTTP API"]
Call["通话管线"]
Engine["对话引擎"]
Retrieval["检索"]
Memory["记忆"]
DB[("SQLite<br/>对话 · 照片 · 记忆 · 剧情库")]
end
Bucket[("对象存储<br/>立绘 · 招呼 · 酒吧音乐")]
UI -- "文字回合 /api/*" --> API
Admin --> API
UI <-- "WebRTC 语音 + 字幕" --> Call
Landing & UI -. "立绘、招呼和酒吧的音频" .-> Bucket
API --> Engine
Call -- "语音识别<br/>Soniox 或阿里云百炼" --> Engine
Engine -- "Fish Audio 语音合成<br/>(带读音表)" --> Call
Engine --> Retrieval
Engine --> Memory
Retrieval --> DB
Memory --> DB
Engine <--> ChatLLM["对话模型"]
Retrieval <--> Judge["判断模型<br/>Jev、Clef 或阿里云百炼"]
Retrieval <--> Emb["向量化<br/>Qwen3-Embedding 或 Gemini"]
Retrieval <--> SF["硅基流动<br/>Qwen3-Reranker"]
Memory <--> BgLLM["后台模型"]
Engine <--> Image["生图<br/>NovelAI"]
<ja>…</ja><zh>…</zh> 的分段格式流式输出,日语一到就送去合成,不用等整段回复结束。| 文档 | 内容 |
|---|---|
| 配置指南 | 模型、角色、通话、立绘、剧情库、检索、记忆、照片、登录、自带密钥、网络代理、服务状态、后台的配置和效果 |
| 部署指南 | 部署到 VPS:域名、防火墙、OAuth、剧情库每周同步、立绘与招呼素材、升级、备份与恢复、排障 |
.env.example | 全部环境变量及说明 |
| 架构决策记录 | 为什么这样设计:日语原声、共享记忆、对公众开放、自带密钥只存在浏览器里等 |
GLOSSARY.md | 领域术语表 |
| 社区玩法仓库 | 大家在各自 fork 上做的玩法,以及怎么登记自己的 |
DESIGN.md · PRODUCT.md | 视觉规范 · 产品定位 |
生产配置 docker-compose.prod.yml 包含 caddy(HTTPS 入口)、frontend、backend 和 coturn(TURN 中继)四个服务,前后端镜像由 CI 发布到 GHCR:
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
数据库由 deploy/db-backup.sh 每天加密备份到私有存储桶,默认保留 30 天。完整步骤见 部署指南。
后端(Python 3.11+,backend/,用 uv):
cd backend
uv sync
uv run pytest && uv run pyright && uv run ruff check
uv run --env-file=../.env eidolon serve # 启动在 :8000,读取 ../characters/characters.toml
前端(Next.js 16 + shadcn/ui + Tailwind CSS v4,frontend/):
cd frontend
npm install
npm run typecheck && npm test && sh scripts/check-discipline.sh
npm run build && BACKEND_URL=http://localhost:8000 npm run start # 启动在 :3000,/api/* 转发给后端
DESIGN.md,组件写法的约定见 frontend/AGENTS.md。.env 一样的 EIDOLON_STAND_ASSETS_URL。frontend/ 下运行 npm run readme-media,会重新拍下 docs/images/ 里的截图和动图。v* 标签时发布到 GHCR。Dependabot 每周一提依赖更新。eidolon-sc/
├── backend/ # Python 后端:FastAPI + Pipecat;对话引擎、通话、检索、记忆、同步与命令行(eidolon)
│ ├── src/eidolon/
│ ├── eval/ # 重排、判断模型和记忆的评测集(只含问题与标注,不含剧情原文)
│ └── tests/
├── frontend/ # Next.js 前端:落地页、对话、通话层、设置、后台
├── characters/ # 角色配置、人设、资料、头像、读音表、世界设定
├── corpus/ # 剧情数据和镜像缓存(不进仓库)
├── deploy/ # Caddyfile、剧情库与立绘的同步脚本、数据库备份脚本
├── scripts/ # 配置 OAuth 应用的向导(setup-oauth.sh)
├── docs/ # 配置指南、部署指南、架构决策记录、README 的图片
├── docker-compose.yml # 本地开发
└── docker-compose.prod.yml # 生产部署
本项目的代码以 GNU Affero General Public License v3.0(AGPL-3.0)或(由你选择)任何更高版本发布。如果你修改了本项目并通过网络向他人提供服务,需要向这些用户公开修改后的源代码。
许可证只覆盖仓库里的代码和文档,下面这些不在范围内:
frontend/public/vendor/spine-3.6/ 原样收录,适用它自己的 Spine Runtimes 许可证(ADR-0009)。LICENSING.md 里有一条 AGPL 第 7 节的附加许可,允许两者组合分发。frontend/public/bar/img/,含配方卡上的官方中文)、外框上的「VA-283」标志和原版的配乐、音效,版权归 Sukeban Games,见 LICENSING.md。配乐和音效不在仓库里,部署时传进存储桶。frontend/src/app/(landing)/fonts/、frontend/public/bar/fonts/);通话音效的来源和许可见 CREDITS.md。《偶像大师 闪耀色彩》及其角色的版权归 ©Bandai Namco Entertainment Inc. 所有。本项目为非官方粉丝作品,与版权方无关,角色由 AI 扮演。《VA-11 HALL-A》及其图片、配乐和音效的版权归 ©Sukeban Games 所有。