和《偶像大师 闪耀色彩》偶像实时语音/文字对话的 AI 分身:日语原声 + 中文字幕、回忆原作剧情、跨角色共享记忆;支持 Google/GitHub 登录与自带密钥,Docker Compose 一键部署(参考 LAPLACE Eidolon)
翻訳待ち
Loading the full README.
Read the full README ↗和《偶像大师 闪耀色彩》的偶像实时对话的 AI 分身
语音 · 文字 · 剧情回忆 · 跨角色共享记忆
预览 · 特性 · 快速开始 · 配置指南 · 部署 · 架构决策
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 不对或者要走代理。
This is the beginning of the README. Read the rest at the original. Read the full README ↗