SkillAgentSearch skills...

Cyrene-Agent

一款开源、基于昔涟开发的桌面 AI 智能体/An open-source desktop AI agent based on Cyrene.

Install / Use

claude mcp add Playa-Cyrene -- npx -y github:Playa-Cyrene/Cyrene-Agent

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

89/100

Supported Platforms

Claude Code
Claude Desktop

Our assessment of Cyrene-Agent

Cyrene-Agent scores 89/100 on our quality scale, 384th of 939 AI & Machine Learning skills we index (top 41%).

Its MCP Server is 28 KB long, well organised into 41 sections with 11 code examples: a thorough specification that gives an agent plenty to work with.

It has 780 GitHub stars, a meaningful sign that others use it.

Substance
30/30
Structure
20/20
Description
12/15
Adoption
12/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated today, so Cyrene-Agent is actively maintained.
  • Our last check on 2026-10-18 found the source still online.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 95/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

Cyrene-Agent compared with similar skills

All 4 of these similar skills score higher than Cyrene-Agent; compare them before choosing.

SkillScoreStarsUpdatedFormat
Cyrene-Agent (this skill)by Playa-Cyrene89780todayMCP Server
claude-memby thedotmack100112.1ktodayCLAUDE.md
Agent-Reachby Panniantong100108.5k3d agoCLAUDE.md
Understand-Anythingby Egonex-AI10090.3k9d agoCLAUDE.md
headroomby headroomlabs-ai10078.8ktodayCLAUDE.md

Frequently asked questions

How do I install Cyrene-Agent?
Run claude mcp add Playa-Cyrene -- npx -y github:Playa-Cyrene/Cyrene-Agent. The install tabs above show the steps for each supported agent.
Which AI agents does Cyrene-Agent work with?
It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
Is Cyrene-Agent safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 95/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is Cyrene-Agent still maintained?
The repository was last updated today, so Cyrene-Agent is actively maintained.
<p align="center"> <img src="./docs/image/preview.png" alt="Cyrene Agent" width="800"> </p> <h1 align="center">Cyrene-Agent</h1> <p align="center"> <a href="./README.en.md">English</a> | <strong>中文</strong> </p> <p align="center"> <strong>主仓库</strong>:<a href="https://github.com/Playa-0v0/Cyrene-Agent">GitHub</a> ・ <strong>国内镜像</strong>:<a href="https://gitee.com/playa0/cyrene-agent">Gitee</a> </p>

Cyrene-Agent 是一个以《崩坏:星穹铁道》昔涟为核心角色的 Windows Live2D AI 桌面伴侣。

基于 Electron + TypeScript 开发的桌面端 Live2D 智能对话 Agent。
项目围绕昔涟(Cyrene)的角色设定,结合自研Cyrene_Harness+DMAE 记忆引擎,
将角色化聊天、个性化记忆、语音交互、工具调用与多平台接入整合在同一个桌面 Agent 中,
支持日常聊天(Chat)、辅助工作(Work)、代码协作(Code)、学习陪伴(Learn)四种对话模式。


✨ 速览

  • 🌸 趣味桌面陪伴 — Live2D 角色常驻桌面,支持表情、动作、状态、心情、气泡互动与智能表情包
  • 💬 日常聊天(Chat) — 专注角色化交流,结合会话历史、用户风格与长期记忆自然回应
  • 🛠️ 辅助工作(Work) — 通用任务会话,支持联网搜索、文件处理、文档生成、生活服务等工具的串联调用,由 CyreneHarness 主循环统一调度
  • 💻 代码协作(Code) — 绑定可信代码目录,提供 LSP 语义查询(定义/引用/悬停/符号/诊断)与受限的读写改命令执行,安全边界由 Harness 的权限审批(Permission Policy)与 Execution Policy 统一把关
  • 📚 学习陪伴(Learn) — 绑定 Obsidian Vault,陪伴用户理解材料、整理笔记、生成练习与维护进
  • 🧠 个性化记忆 — L0 / L1 / L2 分层记忆,结合自研记忆头像+Worldbook+沉淀长期互动
  • 🌱 条目生命周期 — 自研DMAE算法(v4.0未实现最新v5.1)负责管理prompt在上下文中的生命周期
  • 🔊 语音交互 — 集成 TTS、ASR 与语音通话,让昔涟能够听见并回应用户
  • 🧰 丰富工具生态 — 覆盖联网搜索、文件处理、文档生成、生活服务、音乐与 MCP 扩展
  • 🧩 插件系统 — 本地插件包扩展 AI 工具、聊天渠道、自有窗口与语音输入,配套 npm SDK 与开发指南
  • 🔌 多模型厂商适配 — 针对不同厂商提供分级 Structured Output 与 Function Calling 兼容方案
  • 🎨 个性化外观 — 支持多套界面风格、主题外观与聊天字体选择
  • 📱 多平台接入 — 支持桌面端、飞书、微信 iLink 与 QQ(NapCat / OneBot 11),共享角色能力与对话体验
  • 🌙 主动聊天 — 根据时间、状态与用户偏好主动发起交流,并支持多渠道定向投递

⚙️ CyreneHarness 核心引擎

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 缓存周期跨压缩 / 恢复推进;Kimi prompt_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 |

主流程示意:

CyreneHarness 主循环

(示意图:① 初始化 → ② 主循环 → ③ LLM → ④ 工具调度 → ⑤ 状态账本 → ⑥ 终态结算)


🚀 快速开始

前置条件

安装 Visual Studio Build Tools 时,请勾选:

  • 使用 C++ 的桌面开发
  • MSVC v143
  • Windows 10 / 11 SDK

安装 Rust 后,建议确认使用 MSVC 工具链:

rustup default stable-x86_64-pc-windows-msvc

飞书、微信 iLink、nut-js 键鼠自动化及原生截图功能依赖 Windows 环境。

如果直接安装 Releases 中的打包版本,无需另外安装 Rust 和 Visual Studio Build Tools。

1. 克隆项目

# GitHub(组织主仓库)
git clone https://github.com/Playa-Cyrene/Cyrene-Agent.git

# 或 Gitee(国内镜像)
git clone https://gitee.com/playa0/cyrene-agent.git

cd Cyrene-Agent

2. 安装依赖

推荐使用锁定版本安装:

npm ci

也可以使用:

npm install

首次安装会下载 Electron、Pixi.js、Live2D 等相关依赖,具体耗时取决于网络环境。

3. 命令行入口

项目附带 cyrene 命令行入口,可用于首次欢迎语、查看版本或启动桌面端。在项目根目录执行:

npm run build:cli
npm link

之后即可在任意目录使用 cyrene:

cyrene            # 首次运行会显示欢迎 Banner,之后只输出简洁状态
cyrene hello      # 重新查看完整欢迎 Banner
cyrene about      # 查看 Banner 与项目元信息
cyrene version    # 查看版本
cyrene --help     # 查看全部子命令
cyrene run        # 在项目根目录启动桌面端(开发模式)

首次欢迎语仅在第一次执行 cyrene 时出现,状态记录在 ~/.cyrene/state.json;之后默认只输出 Cyrene Agent <version> 与 Ready.。cyrene run 目前为开发模式,需要当前目录存在 package.json;正式安装版的 cyrene desktop 入口将在 1.x 提供。

npm run build 已经包含 npm run build:cli,因此构建项目后无需再单独执行 build:cli。但 npm link 仍需单独运行,才能在任意目录使用 cyrene 命令。

4. 安装 BGE-M3(推荐)

Cyrene 无需本地大语言模型即可正常聊天,但建议安装 BGE-M3 Embedding 模型,以获得更完整的语义增强体验:

  • 贴纸语义匹配
  • Worldbook 语义检索
  • RAG检索

前往 Releases 下载 BGE-M3

[!IMPORTANT]

未安装 BGE-M3 不会影响基础聊天,依赖 Embedding 的增强功能会自动关闭或降级。

5. 音乐功能(可选)

音乐功能由主进程内置的 NeteaseOpenapiProvider + MpvController 组成:

  • 数据源 — NeteaseOpenapiProvider 通过网易云音乐 OpenAPI 拉取搜索结果、推荐、歌单、收藏等内容;需要在设置中配置 OpenAPI 凭据(Cookie / Token 等)。
  • 播放 — MpvController 启动打包在 resources/bin/mpv/mpv.exe 的 mpv 子进程,通过命名管道(Windows)或 Unix socket 发送 JSON IPC 命令,不需要安装网易云桌面客户端或注册 orpheus:// 协议。
  • mpv 缺失时的处理 — 由 npm run prepare:mpv 在打包阶段拷贝 mpv 二进制到 resources/bin/mpv/;本地未检测到 mpv 时,音乐工具会返回 client_unavailable 并在 UI 中提示,但不影响其他功能。

[!NOTE]

音乐功能为可选组件,不影响聊天及其他核心功能。未配置 OpenAPI 凭据或未检测到 mpv 时,音乐工具会自动跳过并在界面中提示。

6. 构建并启动

首次从源码运行时,需要先构建 Rust 原生截图助手:

npm run build:screenshot-helper
npm run build
npm start

[!IMPORTANT]

原生截图助手不会以 .exe 形式提交到 Git 仓库,因此首次克隆后必须执行一次 npm run build:screenshot-helper。

Windows 用户也可以直接双击项目根目录的 setup.bat 完成依赖安装、构建和 npm link,之后双击 start.bat 即可启动。

开发模式:

npm run build:screenshot-helper
npm run dev

修改 Rust 截图助手代码后,需要重新执行:

npm run build:screenshot-helper

构建 Windows 可分发版本:

npm run package:win:dir

打包命令会自动构建 Electron 应用和 Rust 截图助手。


🔑 配置 API Key

应用启动后,点击系统托盘图标 → 打开设置,完成以下基础配置:

  1. 🔑 模型设置:选择 LLM 厂商预设,填写 API Key、Base URL 与模型名称。
    这是 Cyrene 正常聊天和运行 Agent 的必要配置。

  2. 🎙️ TTS 设置(可选):选择 Mossland、MiniMax、MiMo、GPT-SoVITS 或自定义云端语音合成服务。

  3. 🎧 ASR 设置(可选):如需使用语音通话,可配置阿里云实时 ASR 的 AppKey 与 AccessKey,或填写与 Mossland TTS 共用的 API Key。

  4. 📱 外部渠道(可选):根据需要连接飞书或微信 iLink,在手机端与 Cyrene 对话。

相关配置会保存在应用的 <userData>/ 目录中,修改后通常无需重启应用。

✨ 功能

核心功能

🌸 桌面陪伴

  • Live2D 桌面角色 — 基于 pixi-live2d-display 与 Cubism Core 渲染,支持桌面置顶、鼠标交互、自然待机与嘴型同步。
  • 表情与动作联动 — 根据对话内容触发表情、动作、状态、心情与桌面气泡,让角色反馈不只停留在文字层面。
  • 智能表情包 — 内置贴纸面板,并可通过语义匹配自动选择符合当前语境的表情包。
  • 多窗口交互 — 桌宠、聊天、设置、任务、通话和贴纸管理等界面相互独立,又共享统一运行状态。
  • 个性化外观 — 支持界面主题、聊天样式与字体选择。

💬 日常聊天(Chat)

  • 独立角色聊天流程 — Chat 模式专注于角色化交流,不暴露、不调用也不执行任何工具。
  • 人格化回复 — 结合昔涟角色设定、近期会话、社交上下文、用户风格与个性化记忆生成回复。
  • 多会话历史 — 不同会话独立保存,可自动生成标题、排序和重命名。
  • 多端聊天风格 — 桌面聊天、手机渠道和语音通话可使用不同的表达风格。
  • 回复分段 — 可选择「全部分段 / 仅 Chat 分段 / 关闭」,长回复能够按语义拆分为多个聊天气泡。

下面各会话模式是 Harness 的"消费者":

🛠️ 辅助工作(Work)

Work 模式示意

  • CyreneHarness 主循环驱动 — 单条消息进入 CyreneHarness 的 while 循环:每轮调用 LLM → 写回 assistant 消息 → 派发工具 → 写回 tool result → 检查不确定副作用 → 继续或结束。预处理器(CITA 上下文理解)在 Harness 入口前完成;循环内每轮携带精简执行人设(prompts/cyrene_harness.md,只约束表达风格、不污染工具参数,冲突时按「任务正确性 > 信息清晰 > 昔涟风格」取舍);完整人设层(Soul)在 Harness 出口后生成回复文本。
  • 工具自由串联 — 支持联网搜索、网页读取、文件读写、文档生成、生活服务等工具按需组合调用;模型可自行决定下一个工具,无需预先编排流程。
  • 副作用记账 — 非幂等副作用(发送邮件、修改远端文件等)结果未知时,会写入 state.uncertainEffects 并停止本轮同类自动重放,避免危险操作被无声重复。
  • 失败重试与中断 — 工具失败按错误分类与副作用等级决定是否重试(带退避抖动),随时可通过 AbortSignal 取消;取消时不会发出"最终回复",避免误导用户。
  • 可恢复 checkpoint — 每轮结束把 messages + state + rounds 序列化到本地,跨进程崩溃后可在原状态续跑,不丢上下文。
  • 人设与流程并存 — 在保留昔涟人格回复的同时承载工具调用。

💻 代码协作(Code)

Code 模式示意

  • 在 Work 基础上叠加代码专属工具 — 复用 CyreneHarness 主循环,额外注册代码专用工具集(读写改、命令执行、LSP 查询等);工具执行前由权限审批(checkPermission)过滤不安全调用,Execution Policy 决定是否需要用户二次确认。

  • 绑定可信工作目录 — 所有读写、命令执行与 LSP 查询必须落在用户预先绑定的目录内;模型无法指定或切换工作目录,越权访问(包括 .. 与符号链接逃逸)会被直接拒绝。

  • 代码语义查询(LSP) — Code 模式可在已绑定工作目录中查询定义、引用、悬停、符号与诊断;不会修改文件。

  • 外部服务由用户管理 — Cyrene 只提供 LSP 客户端,不随应用捆绑、下载、升级或静默安装语言服务器。

  • 启动顺序 — 先按命令是否为绝对路径定位,否则在工作区 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 检查是否可发现。用户也可以明确要求昔涟通过现有、受权限控制的工具协助安装。

  • 安全边界 — 语言服务进程以 stdio: "pipe" 启动,shell: false,cwd 强制为绑定工作目录;模型不能指定命令、服务 ID 或工作目录;lspServerOverrides 只覆盖 builtin 服务的命令名 / 参数 / 扩展名,不接受模型在对话中传入的任意命令。

  • 内置支持的语言 — TypeScript / JavaScript / JSON、Python、Go、Rust、C / C++、Java、C#、PHP、Ruby、Kotlin、Lua、Vue、YAML(13 种,详见 src/main/lsp/server-catalog.ts)。

  • 进程复用与释放 — 同一 serverId 的 LSP 进程在同一工作区内复用,避免反复冷启动;应用退出时统一释放。

  • 自定义服务命令 — 在应用数据目录的 general-settings.json 中配置 lspServerOverrides,只覆盖 builtin 服务的 command / args / extensions / initializationOptions,不接受模型在对话中传入的启动命令。例如:

    {
      "lspServerOverrides": [
        {
          "id": "python-pyright",
          "command": "basedpyright-langserver",
          "args": ["--stdio"]
        }
      ]
    }
    

📚 学习陪伴(Learn)

  • Obsidian Vault 工作区 — 绑定一个 Vault 作为学习工作区,约定 materials/、notes/、exercises/、templates/ 与 learn/progress.md 目录结构。
  • 基于 RAG 与个性化记忆 — 学习材料通过 RAG 文档知识库 索引后参与检索,学习进度与偏好进入 L2 长期记忆,跨会话保持连续。
  • 陪伴式理解 — 通过提问、拆解、类比和讨论帮助用户理解材料,而非代替用户完成学习任务。
  • 笔记与练习 — 在 Vault 内共同整理概念、生成练习与记录复盘,并自动维护学习进度总览。
  • 尊重学习节奏 — 用户没懂时换种方式解释,用户已懂时推进到下一步,不因答错而责备。

📝 富文本与代码渲染

  • Markdown 渲染 — 支持标题、列表、引用、表格、链接、代码块等常见 Markdown 内容。
  • 代码高亮 — 支持多种常用编程语言的代码块语法高亮和代码复制。
  • 数学公式 — 支持行内公式与块级公式渲染。
  • 流式兼容 — 生成过程中保持稳定输出,消息完成后再渲染为完整富文本内容。

🎵 音乐陪伴

Cyrene Music 播放界面

  • Cyrene Music 独立窗口 — 桌面端内置「Cyrene Music」播放器,支持歌单标签切换、本地缓存与播放列表管理,沉浸感更强。
  • 网易云音乐数据源 — 通过自研 NeteaseOpenapiProvider 调用网易云 OpenAPI,提供搜索歌曲 / 艺人 / 专辑、每日推荐、我的歌单与收藏等能力。
  • mpv 内置播放 — 由 MpvController 启动打包在 resources/bin/mpv/mpv.exe 中的 mpv 进程,通过命名管道(Windows)或 Unix socket 收发 JSON IPC 命令,实现加载、播放、暂停、跳转、音量、停止等控制,无需唤起外部客

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars780
CategoryAI
Updated8h ago
Forks98

Languages

TypeScript

Trust signals

95/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low