English | 中文
Cyrene-Agent 是一个以《崩坏:星穹铁道》昔涟为核心角色的 Windows Live2D AI 桌面伴侣。
基于 Electron + TypeScript 开发的桌面端 Live2D 智能对话 Agent。
项目围绕昔涟(Cyrene)的角色设定,结合自研 CyreneHarness 引擎与 DMAE 记忆引擎,
将角色化聊天、个性化记忆、语音交互、工具调用与多平台接入整合在同一个桌面 Agent 中,
支持日常聊天(Chat)、辅助工作(Work)、代码协作(Code)、学习陪伴(Learn)四种对话模式。
- 🌸 趣味桌面陪伴 — Live2D 角色常驻桌面,支持表情、动作、状态、心情、气泡互动、智能表情包与多套界面主题
- 💬 日常聊天(Chat) — 专注角色化交流,结合会话历史、用户风格与长期记忆自然回应,不暴露任何工具
- 🛠️ 辅助工作(Work) — 通用任务会话,支持联网搜索、文件处理、文档生成、生活服务等工具的串联调用
- 💻 代码协作(Code) — 绑定可信代码目录,提供 LSP 语义查询与受限的读写改命令执行,安全边界由权限审批统一把关
- 📚 学习陪伴(Learn) — 绑定 Obsidian Vault,陪伴用户理解材料、整理笔记、生成练习与维护进度
- 🧠 个性化记忆 — L0 / L1 / L2 分层记忆,结合 DMAE Worldbook 与条目生命周期管理,沉淀长期互动
- 🔊 语音交互 — 集成 TTS、ASR 与语音通话,让昔涟能够听见并回应用户
- 🧰 丰富工具生态 — 覆盖联网搜索、文件处理、文档生成、生活服务、音乐与 MCP 扩展
- 🔌 多模型厂商适配 — 针对不同厂商提供分级 Structured Output 与 Function Calling 兼容方案
- 🧩 插件系统 — 本地插件包扩展 AI 工具、聊天渠道、自有窗口与语音输入,配套 npm SDK 与开发指南
- 📱 多平台接入 — 支持桌面端、飞书、微信 iLink 与 QQ(NapCat / OneBot 11),共享角色能力与对话体验
- 🌙 主动聊天 — 根据时间、状态与用户偏好主动发起交流,并支持多渠道定向投递
Work / Code / Learn等需要工具调用的会话模式,全部跑在 CyreneHarness 之上。 源码:src/main/orchestrator/harness/cyrene-harness.ts
CyreneHarness 是 Cyrene Agent 的核心 Agent Loop,负责把模型决策、工具执行、副作用记账与状态恢复串成一个可中断、可恢复、可回放的连续循环。
设计与实现细节(点击展开)
会话轨迹由 CTA(Canonical Transcript Architecture) 承载:canonical journal 是唯一权威源, 模型上下文、UI 投影与渠道消息全部从 transcript 派生;压缩摘要以 checkpoint 形式持久化, 热日志归档到
segments/,支持跨进程崩溃恢复与编辑 / 重新生成回溯。 源码:src/main/orchestrator/conversation-*.ts(store / journal-service / compactor / projection 等)
关键设计:
- 连续的 while + Function Calling 循环 — 每轮调用 LLM,按其返回的
toolCalls进入工具派发,无toolCalls时由模型主动结束当前 turn。 - assistantMessage 必写回 — 每轮模型返回的 assistant 消息必须无条件
push进messages,否则下一轮模型会看不到自己上一步的回复,loop 立即崩。 - Ask 互斥路径 —
ask_user/confirm_uncertain_effect是用户等待类内置工具,必须独占本轮:其余同轮工具全部以not_executed协议结果写回,并discardProgressBuffer()丢弃进度文本。 - 四态 outcome 与 uncertainEffects 拦截 — 工具结果分为
success / failure / unknown / not_executed。当unknown且sideEffect === non_idempotent时,副作用会被记入state.uncertainEffects,并halted = true暂停本轮后续同类调用,防止自动重放危险副作用。 - 失败重试 — 工具失败时根据
classifyToolResultError+resolveSideEffect决定是否重试;sleepWithJitter退避可被AbortSignal中断。 - 保守并行调度 — 默认串行,仅"显式声明并发安全的纯读工具"可并行(默认上限 4);结果始终按模型原始 tool-call 顺序提交;halt / error / cancel 时已执行结果不丢弃,出错槽位以合成失败结果闭合 transcript。
- 双时钟超时 — 执行计时与用户等待计时分离:
ask_user等待用户期间暂停执行计时,用户思考多久都不消耗任务超时预算。 - 双层压缩(Mid-loop + Journal Compaction) — harness 每轮开始时根据 token 预算判断是否需要压缩上下文,超阈值时复用 LLM 做历史摘要,保留 todo 与已确定结果,压缩后 checkpoint 失败立即熔断;构建上下文超预算时再触发 journal 级压缩——摘要以 compaction checkpoint 持久化进 transcript,热日志归档至
segments/,二次压缩保留前次摘要,编辑 / 重新生成不能跨压缩边界回溯。 - 前缀缓存体系 — 稳定前缀分层(stablePrefix / sessionPrefix / mode),Todo 等易变状态禁止进入前缀;工具清单在 run 期间冻结;动态事实一次性物化进 transcript 而非每轮拼接;
cacheEpoch缓存周期跨压缩 / 恢复推进;Kimiprompt_cache_key等厂商缓存 hints 在请求层统一注入。 - 工具输出双级截断 — 大输出落盘存储(
ToolOutputRef),模型消息只保留 preview;需要完整内容时由模型调用内置read_tool_result按需回读,大幅降低上下文占用。 - 上下文容量快照 — 每轮请求前与终态各发一次
context_usage快照事件,驱动 UI 上下文环实时显示。 - 截断可见化 — 输出命中模型长度上限(
finishReason = length)时在回复尾部追加提示,不静默截断。 - 流式优先与降级 — 仅在零增量且供应商明确不支持 stream + tools 时降级非流式,绝不重放半截流;token 用量记账区分缓存命中。
- 全程 signal-aware — 几乎每个
await都用raceWithSignal包裹,signal.aborted时返回cancelled()(finalAnswer = '',不发final_answer事件)。 - 每轮 checkpoint — 通过
onCheckpoint把messages+state+rounds持久化,跨进程崩溃后可恢复;恢复时崩溃孤儿工具按运行状态归为unknown(而非误判not_executed),避免重放外部副作用。
4 种终止状态:
| 状态 | terminated |
terminateReason |
触发条件 |
|---|---|---|---|
| ✅ success | false |
undefined |
模型不再调用工具,主动结束当前 turn |
| ⚪ cancelled | true |
cancelled |
AbortSignal 触发(finalAnswer = '') |
| 🟥 error | true |
error |
LLM 抛错或 checkpoint 失败 |
| 🟨 timeout | true |
timeout |
超过 config.totalTimeoutMs |
主流程示意:
(示意图:① 初始化 → ② 主循环 → ③ LLM → ④ 工具调度 → ⑤ 状态账本 → ⑥ 终态结算)
- Windows 10 / 11 64 位
- Node.js 24 LTS(npm 10+)
- Rust stable + Visual Studio 2022 Build Tools(源码构建截图功能必需;Build Tools 勾选「使用 C++ 的桌面开发」工作负载即可)
飞书、微信 iLink、
nut-js键鼠自动化及原生截图功能依赖 Windows 环境。如果直接安装 Releases 中的打包版本,无需另外安装 Rust 和 Visual Studio Build Tools。
git clone https://github.com/Playa-Cyrene/Cyrene-Agent.git
# 或 Gitee(国内镜像):git clone https://gitee.com/playa0/cyrene-agent.git
cd Cyrene-Agent
npm ci首次安装会下载 Electron、Pixi.js、Live2D 等相关依赖,具体耗时取决于网络环境。
首次从源码运行时,需要先构建 Rust 原生截图助手:
npm run build:screenshot-helper
npm run build
npm startImportant
原生截图助手不会以 .exe 形式提交到 Git 仓库,因此首次克隆后必须执行一次 npm run build:screenshot-helper。
Windows 用户也可以直接双击项目根目录的 setup.bat 完成依赖安装、构建和 npm link,之后双击 start.bat 即可启动。
开发模式:
npm run build:screenshot-helper
npm run dev构建 Windows 可分发版本(自动构建 Electron 应用和 Rust 截图助手):
npm run package:win:dirCyrene 无需本地大语言模型即可正常聊天,但建议安装 BGE-M3 Embedding 模型(用于贴纸语义匹配、Worldbook 语义检索与 RAG 检索):
Important
未安装 BGE-M3 不会影响基础聊天,依赖 Embedding 的增强功能会自动关闭或降级。
项目附带 cyrene 命令行入口,执行 npm run build:cli && npm link 后即可在任意目录使用,提供 version、run 等子命令,详见 cyrene --help。
npm run build已包含build:cli,但npm link仍需单独运行。正式安装版的cyrene desktop入口将在 1.x 提供。
应用启动后,点击系统托盘图标 → 打开设置,完成以下基础配置:
-
🔑 模型设置:选择 LLM 厂商预设,填写 API Key、Base URL 与模型名称。
这是 Cyrene 正常聊天和运行 Agent 的必要配置。 -
🎙️ TTS 设置(可选):选择 Mossland、MiniMax、MiMo、GPT-SoVITS 或自定义云端语音合成服务。
-
🎧 ASR 设置(可选):如需使用语音通话,可配置阿里云实时 ASR 的 AppKey 与 AccessKey,或填写 Mossland 共用 API Key、MiniMax ASR API Key。
-
📱 外部渠道(可选):根据需要连接飞书或微信 iLink,在手机端与 Cyrene 对话。
-
🎵 音乐(可选):配置网易云音乐 OpenAPI 凭据后可启用音乐工具;播放器已内置,无需安装网易云客户端。
相关配置会保存在应用的 <userData>/ 目录中,修改后通常无需重启应用。
- Live2D 桌面角色 — 基于
pixi-live2d-display与 Cubism Core 渲染,支持桌面置顶、鼠标交互、自然待机与嘴型同步。 - 表情与动作联动 — 根据对话内容触发表情、动作、状态、心情与桌面气泡,让角色反馈不只停留在文字层面。
- 智能表情包 — 内置贴纸面板,并可通过语义匹配自动选择符合当前语境的表情包。
- 多窗口交互 — 桌宠、聊天、设置、任务、通话和贴纸管理等界面相互独立,又共享统一运行状态。
- 个性化外观 — 支持界面主题、聊天样式与字体选择。
Cyrene 提供亮 / 暗两套界面主题,覆盖聊天、设置等主要界面:
🌙 暗色主题
![]() |
![]() |
☀️ 亮色主题
![]() |
![]() |
- 独立角色聊天流程 — Chat 模式专注于角色化交流,不暴露、不调用也不执行任何工具。
- 人格化回复 — 结合昔涟角色设定、近期会话、社交上下文、用户风格与个性化记忆生成回复。
- 多会话历史 — 不同会话独立保存,可自动生成标题、排序和重命名。
- 多端聊天风格 — 桌面聊天、手机渠道和语音通话可使用不同的表达风格。
- 回复分段 — 可选择「全部分段 / 仅 Chat 分段 / 关闭」,长回复能够按语义拆分为多个聊天气泡。
下面各会话模式是 Harness 的"消费者":
- CyreneHarness 主循环驱动 — 单条消息进入 CyreneHarness 的 while 循环:每轮调用 LLM → 写回 assistant 消息 → 派发工具 → 写回 tool result → 检查不确定副作用 → 继续或结束。预处理器(CITA 上下文理解)在 Harness 入口前完成;循环内每轮携带精简执行人设(
prompts/cyrene_harness.md,只约束表达风格、不污染工具参数,冲突时按「任务正确性 > 信息清晰 > 昔涟风格」取舍);完整人设层(Soul)在 Harness 出口后生成回复文本。 - 工具自由串联 — 支持联网搜索、网页读取、文件读写、文档生成、生活服务等工具按需组合调用;模型可自行决定下一个工具,无需预先编排流程。
- 人设与流程并存 — 在保留昔涟人格回复的同时承载工具调用。
- 在 Work 基础上叠加代码专属工具 — 复用 CyreneHarness 主循环,额外注册代码专用工具集(读写改、命令执行、LSP 查询等);工具执行前由权限审批(checkPermission)过滤不安全调用,Execution Policy 决定是否需要用户二次确认。
- 绑定可信工作目录 — 所有读写、命令执行与 LSP 查询必须落在用户预先绑定的目录内;模型无法指定或切换工作目录,越权访问(包括
..与符号链接逃逸)会被直接拒绝。 - 代码语义查询(LSP) — Code 模式可在已绑定工作目录中查询定义、引用、悬停、符号与诊断;不会修改文件。
- 外部服务由用户管理 — Cyrene 只提供 LSP 客户端,不随应用捆绑、下载、升级或静默安装语言服务器;请自行安装所需服务,也可以明确要求昔涟通过现有、受权限控制的工具协助安装。
- 安全边界 — 语言服务进程以
stdio: "pipe"启动,shell: false,cwd强制为绑定工作目录;模型不能指定命令、服务 ID 或工作目录。
LSP 支持的语言与自定义配置(点击展开)
内置支持的语言 — TypeScript / JavaScript / JSON、Python、Go、Rust、C / C++、Java、C#、PHP、Ruby、Kotlin、Lua、Vue、YAML(13 种,详见 src/main/lsp/server-catalog.ts)。
启动顺序 — 先按命令是否为绝对路径定位,否则在工作区 node_modules/.bin 中查找,最后回退到系统 PATH 逐目录遍历(Windows 还会按 PATHEXT 追加 .exe / .cmd 等扩展名)。
安装与排障 — 常见服务如 typescript-language-server、pyright-langserver、gopls、rust-analyzer、clangd、jdtls、OmniSharp、intelephense、ruby-lsp、kotlin-language-server、lua-language-server、vue-language-server、yaml-language-server;Windows 可用 where pyright-langserver,macOS/Linux 可用 which pyright-langserver 检查是否可发现。
自定义服务命令 — 在应用数据目录的 general-settings.json 中配置 lspServerOverrides,只覆盖 builtin 服务的 command / args / extensions / initializationOptions,不接受模型在对话中传入的启动命令。例如:
{
"lspServerOverrides": [
{
"id": "python-pyright",
"command": "basedpyright-langserver",
"args": ["--stdio"]
}
]
}进程复用与释放 — 同一 serverId 的 LSP 进程在同一工作区内复用,避免反复冷启动;应用退出时统一释放。
- Obsidian Vault 工作区 — 绑定一个 Vault 作为学习工作区,约定
materials/、notes/、exercises/、templates/与learn/progress.md目录结构,详见 Learn 模式指南。 - 基于 RAG 与个性化记忆 — 学习材料通过 RAG 文档知识库 索引后参与检索,学习进度与偏好进入 L2 长期记忆,跨会话保持连续。
- 陪伴式理解 — 通过提问、拆解、类比和讨论帮助用户理解材料,而非代替用户完成学习任务。
- 笔记与练习 — 在 Vault 内共同整理概念、生成练习与记录复盘,并自动维护学习进度总览。
- 尊重学习节奏 — 用户没懂时换种方式解释,用户已懂时推进到下一步,不因答错而责备。
- Markdown 渲染 — 支持标题、列表、引用、表格、链接、代码块等常见 Markdown 内容。
- 代码高亮 — 支持多种常用编程语言的代码块语法高亮和代码复制。
- 数学公式 — 支持行内公式与块级公式渲染。
- 流式兼容 — 生成过程中保持稳定输出,消息完成后再渲染为完整富文本内容。
- Cyrene Music 独立窗口 — 桌面端内置「Cyrene Music」播放器,支持歌单标签切换、本地缓存与播放列表管理,沉浸感更强。
- 网易云音乐数据源 — 通过自研
NeteaseOpenapiProvider调用网易云 OpenAPI,提供搜索歌曲 / 艺人 / 专辑、每日推荐、我的歌单与收藏等能力。 - mpv 内置播放 — 由
MpvController控制打包内置的 mpv 进程,实现加载、播放、暂停、跳转、音量、停止等控制,无需唤起外部客户端。 - 多工具串联 — 在
Work / Learn模式中可与其他工具(联网搜索、文件、文档等)组合完成「搜歌 → 加入歌单 → 播放」等连续任务。 - 懒启动 + 可降级 — 音乐后端在首次真实音乐操作时才建立网络会话,空闲时不会占用资源;mpv 缺失时不影响聊天与其他核心功能。
- L0 / L1 / L2 分层记忆 — 分别管理核心用户画像、近期状态和长期经历。
- 记忆证据链 — 记忆内容保留来源与上下文,减少无依据的画像推断。
- 冲突检测与解决 — 对旧记忆与新信息进行召回、评分和语义判断,区分语境变化、偏好演变与直接冲突。
- 自研 DMAE Worldbook — 通过触发词、优先级、内在价值、连带触发与 Active / Dormant / Archived 状态管理角色知识和长期互动内容。
- 关系与风格沉淀 — 根据长期交互逐步形成用户偏好、交流习惯与关系上下文。
- 多 TTS 引擎 — 支持 Mossland、MiniMax、MiMo、GPT-SoVITS 与自定义云端语音服务。
- ASR — 支持阿里云实时语音识别,以及 Mossland、MiniMax 在每轮说话结束后的完整音频转写。
- 完整语音通话 — 通过
LISTENING → THINKING → SPEAKING状态流完成连续语音交流。 - VAD 静默检测 — 自动判断用户是否结束说话并触发回复。
Cyrene 内置和扩展的工具较多,主要覆盖以下类别:
- 文档与办公 — 生成 Word、Excel、PDF 和 Markdown 文档。
- 联网能力 — 网页搜索、网页读取、内容提取和信息整理。
- 文件处理 — 读取、写入、浏览本地文件及识别图片内容。
- 生活服务 — 天气、地图、翻译、汇率、记账和行程规划等。
- 音乐能力 — 搜索歌曲、获取推荐并调用本地音乐客户端播放。
- 任务协作 — 任务清单、用户选择卡片、任务委派与子任务处理。
- MCP 扩展 — 通过 Model Context Protocol 接入额外的外部工具与服务。
🧩 高级功能(点击展开)
- 支持
txt、md、pdf、docx、xlsx、pptx、csv、json等格式导入。 - 支持向量检索、BM25 与 Reranker 组成的混合检索流程。
- 支持本地 Embedding 与 OpenAI-compatible 云端 Embedding。
- 检索结果保留来源信息,方便追溯原始文档。
- 支持实体关系信息与自定义分词词典。
- 支持
stdio、SSE 与 HTTP Transport。 - 支持在设置页面管理和启停 MCP Server。
- MCP 工具会统一接入 Cyrene 的工具注册、权限审批与 Execution Policy。
- 第三方 MCP Server 的实际稳定性取决于其自身实现。
- 飞书 Lark — 通过官方 SDK 和 WebSocket 长连接接入,无需公网服务器或内网穿透,详见 飞书接入指南。
- 微信 iLink — 支持长轮询消息接收、文本发送和部分媒体处理。
- QQ / NapCat — 通过 OneBot 11 反向 WebSocket 接入,支持白名单私聊、群内 @、引用及多媒体消息;详见 NapCat 接入指南。
- 多渠道统一人格 — 桌面端、飞书、微信与 QQ 共享角色设定和记忆能力。
- 渠道独立风格 — 可针对手机聊天与桌面聊天使用不同表达方式。
- 支持内置 Skill 与用户自定义 Skill。
- 用户目录中的同名 Skill 可以整体覆盖内置版本。
- 支持
invoke_skill、参考资料读取与 Slash Command。 - 包含路径防护、重复读取限制与大文本截断机制。
- 本地插件包 — 一个文件夹(
manifest.json+ JS 入口文件)就是一个插件,在设置页统一管理启停;支持 ZIP 导入,安装走 staging 隔离校验 + 原子替换 + 失败自动回滚,内置路径穿越与压缩炸弹防护。 - 开放能力 — 插件可以注册 AI 工具、弹出自有窗口、调用宿主 LLM、接入新聊天渠道、监听生命周期事件、注入每轮动态上下文,并可申请私有存储、安全密钥、只读会话分页、自有定时任务与语音输入租约等宿主服务。
- 信任边界 — 用户插件首次发现一律停用,需在设置页手动启用;插件创建的定时任务必须用户核对配置后才生效;语音输入通过独占租约避免双输入源冲突。
- 开发者工具链 — npm 包
@playa0v0/cyrene-plugin-sdk提供全部公开类型、Manifest 校验与 Mock Context 测试工具,运行时仅依赖ajv;配套《插件开发指南》与cyrene-plugin-devSkill,无需阅读宿主源码即可完成开发。 - 官方示例 — 仓库
examples/提供天气查询、长期记忆、定时自动化、系统状态与本地 ASR 契约五个示例,均可直接作为开发起点。 - 插件收录仓库 — Cyrene-Plugins(Gitee 镜像)收录经安全审核的社区插件,用户可直接下载 ZIP 导入;想让你的插件被更多人看到,欢迎提 PR 收录。
- 状态感知 — 根据时间、用户活跃状态、会话状态和角色心情判断是否适合主动交流。
- 不打扰策略 — 深夜、用户正在聊天或连续未回应时降低或停止主动消息。
- 多渠道投递 — 可选择桌面、微信或飞书作为主动消息目标。
- 渠道失败保护 — 指定手机渠道不可用时取消发送,不会擅自改投桌面端。
🔧 开发功能(点击展开)
- Vitest 5 覆盖 asr / tts / channels / chats / memory / orchestrator / plugins / rag / skills 等核心模块。
npm test一次性 /npm run test:watch监听模式。- 插件开发:
npm run check:plugin-sdk校验 SDK 打包,npm run test:plugin-examples端到端验证官方示例。
npm run sim默认场景,sim:coffee/sim:mix/sim:rescue单场景调试,产物输出到sim-result/。npm run sim:sweep --rewardGain=3,5,7,10跑 Worldbook 评分参数 sweep。
| 层级 | 技术 |
|---|---|
| 运行环境 | Node.js 24 LTS + Electron 44 |
| 开发语言 | TypeScript 6.0 |
| 构建工具 | Vite 8 |
| 界面渲染 | HTML / CSS + React 19 + Tailwind CSS 4 + Pixi.js 7 + Ant Design X / Mantine + Chart.js |
| Live2D | pixi-live2d-display 0.5.0-beta + Cubism Core |
| Agent 核心 | CyreneHarness 主循环 + CTA 会话轨迹 + Structured Output / Native Function Calling |
| Agent 事件协议 | AG-UI(@ag-ui/core、@ag-ui/client)— 通过 RUN_STARTED / STEP_* / TEXT_MESSAGE_* / TOOL_CALL_* / RUN_FINISHED 等事件与渲染进程解耦 |
| 工具与沙箱 | 自研工具调度 + 副作用记账 + 重试策略 + 权限审批;Windows 命令沙箱 @anthropic-ai/sandbox-runtime |
| 代码协作 | 自研 LspManager + vscode-jsonrpc(LSP 客户端)、@ast-grep/napi(结构化代码搜索)、simple-git(git 集成) |
| 工具扩展 | @modelcontextprotocol/sdk(stdio / SSE / HTTP Transport) |
| 插件系统 | @playa0v0/cyrene-plugin-sdk(公开类型 + Manifest Schema 校验 + Mock Context 测试工具) |
| 记忆与检索 | Embedding(@xenova/transformers)+ BM25 + 自研 Cross-Encoder Reranker + DMAE V5.1(关键词命中召回 + 激活度衰减 + 三态可逆)+ @node-rs/jieba |
| 浏览器与桌面自动化 | Playwright + @nut-tree-fork/nut-js |
| 富文本渲染 | Streamdown + Shiki + KaTeX(Markdown / 代码高亮 / 公式) |
| 语音与媒体 | 多引擎 TTS / ASR + silk-wasm |
| 原生截图助手 | Rust + DXGI Desktop Duplication / Direct2D + WIC PNG + NDJSON IPC |
| 文档与邮件 | ExcelJS、docx、PDFKit、Nodemailer |
| 测试 | Vitest 5 |
models/ # 本机 AI 模型(用户放置,见 MODEL_LICENSE.md)
└── Xenova/bge-m3/ # Embedding 模型(贴纸语义 + 场景识别,~570MB)
src/
├── cli/ # 命令行入口(cyrene 命令)
├── main/ # Electron 主进程
│ ├── orchestrator/ # Agent 核心:CyreneHarness 主循环 + CTA 会话轨迹 + 工具调度 + 权限审批
│ │ ├── harness/ # CyreneHarness(while 循环 + compaction + retry + uncertainty)
│ │ ├── tools/ # 工具注册表与内置工具(含 Code 模式工具、ast-grep 搜索)
│ │ ├── vendors/ # 多模型厂商适配(分级 Structured Output + Function Calling)
│ │ ├── sandbox/ # Windows 命令执行沙箱
│ │ ├── review/ # 计划审批(plan review)
│ │ └── structured-output/ # 统一 Structured Output 管线
│ ├── channels/ # 外部渠道适配(飞书 / 微信 iLink / QQ OneBot 11)
│ ├── memory/ # L0/L1/L2 记忆引擎 + DMAE Worldbook + 实体关系图
│ ├── rag/ # 检索增强生成 + Worldbook 注入
│ ├── lsp/ # LSP 客户端(manager / client / server-catalog)
│ ├── code-git/ # Code 模式 git 服务(status / commit / branch / push)
│ ├── learn/ # Learn 模式(Obsidian Vault 绑定 + 进度总览)
│ ├── tasks/ # 任务面板(任务执行 / 委派 / 子 Agent 运行时)
│ ├── music/ # 音乐陪伴(播放 / 推荐 / 会话)
│ ├── moments/ # 动态 / 社交信息流
│ ├── news/ # 消息公告
│ ├── permission/ # 权限审批(checkPermission / risk 等级)
│ ├── plugin-host/ # 插件宿主服务
│ ├── proactive/ # 主动对话(模型 / 策略 / 路由)
│ ├── skills/ # Skill 系统(内置 + 用户自定义)
│ ├── asr/ tts/ call/ # 语音识别 / 合成 / 通话
│ ├── cita/ # CITA 上下文理解与建议引擎
│ ├── relationship/ social-context/ # 用户关系画像 / 社交上下文
│ ├── scheduler/ # 定时任务(提醒 / 日程)
│ ├── updater/ # 应用自动更新
│ └── ... # prompts / protocols / services / settings / startup / windows 等
├── plugins/ # 插件系统核心(manifest 校验 / 加载器 / 生命周期)
├── preload/ # Electron preload 桥接
├── renderer/ # Vite 渲染层(React 19 组件库 + Live2D 渲染 + 各窗口入口)
└── shared/ # 主进程与渲染进程共享代码
examples/ # 插件开发示例(weather-tool / long-term-memory / system-status / ...)
packages/plugin-sdk/ # @playa0v0/cyrene-plugin-sdk 源码
静态资源源文件见
src/renderer/public/(音频 / 头像 / Cubism Core / 贴纸等), Live2D 模型见 MODEL_LICENSE.md。
本项目为非官方粉丝同人作品,与 HoYoverse / 米哈游无任何关联、 背书或赞助关系。
《崩坏:星穹铁道》、"昔涟"角色及其相关美术,世界观、商标等知识产权 归 HoYoverse / 米哈游所有。
关于授权范围的说明:
- 源代码采用 MIT License,仅约束本仓库的源代码。
- 角色 IP、Live2D 模型、美术资产 不属于 MIT 授权范围,分别遵循 MODEL_LICENSE.md 与米哈游同人创作规范处理。
- 因底层角色 IP 涉及米哈游同人创作规范,本项目内包含昔涟 IP、Live2D 模型和美术资产的衍生物禁止商业使用。(售卖、付费社群、含广告变现、打包销售等)。
本仓库的源代码遵循 MIT License,Copyright (c) 2026 Playa。 MIT 仅约束本仓库的源代码,不适用于角色、Live2D 模型与美术资产。
角色 IP(《崩坏:星穹铁道》"昔涟" 等)、Live2D 模型(models/cyrene/)、
美术资产遵循各自对应的授权:
- Live2D 模型 — 详见 MODEL_LICENSE.md, 模型作者 @是依七哒 授权使用、 修改,再分发。
- 角色 IP / 美术 — 归 HoYoverse / 米哈游所有。
- 昔涟角色:© HoYoverse / 米哈游
- Live2D 模型:由 @是依七哒 制作 — 详见 MODEL_LICENSE.md
- Live2D Cubism SDK:© Live2D Cubism
- 贡献者名单:详见 docs/CONTRIBUTORS.md
|
Playa |
lll69 |
Tianzzi |
雨行雨中 |
LZhWi |
lucifergzsz414 |
梨衣、 |
Modusensus |
chuxuan |
Tobi1chi |
|
proobker |
ahwhshen |
特别感谢模型原作者慷慨授权本项目使用、修改并再分发其作品。
欢迎通过 GitHub Issues / PR 交流。请保持讨论的礼貌与主题相关性。
本项目由个人独立开发,所有功能免费开放。
如果 Cyrene 陪伴你的日子还不错,可以扫码请作者喝杯咖啡 ☕ —— 完全随缘,不支持也完全不影响使用。
你的支持会帮助我承担项目开发和维护中的一些开销(模型 API、测试、社群维护等),让 Cyrene 能够持续迭代。
不方便扫码也没关系 —— 随手点一个 Star ⭐,或者把 Cyrene 分享给同样喜欢音游的朋友,就已经是很好的支持了。
![]() |
![]() |
⭐ 如果你喜欢这个项目,欢迎点一个 Star。这会帮助更多喜欢昔涟的人发现它。











