README来源: main@ed053b96
Makise Kurisu 桌宠 / Makise Kurisu Desktop Pet
🔗 仓库地址:https://github.com/David131131/makise-kurisu-desktop-pet
命运石之门的选择,是让她站在你的桌面上。El Psy Kongroo.
一个以牧濑红莉栖(Makise Kurisu,《命运石之门》)Q 版形象为主角的桌面宠物,支持两种形态:
- 🖥️ 桌面版(Electron):透明无边框、置顶、像素级点击穿透,真正"站"在 macOS / Windows 桌面上,可拖拽、可摸头;
- 🌐 网页版(DSH 动态插件):显示在 DSH Web GUI 右下角,与桌面版共享同一状态源。
两种形态都会根据 agent 的工作状态做出不同动作。
✨ 功能特性
| 状态 | 动作 |
|---|---|
| 🟢 待机 idle | 呼吸起伏动画 + 每隔几秒随机内心独白("Dr.Pepper 还有存货吗…") |
| 🟠 工作中 working | 蹦跳 + 左右摇摆,状态胶囊显示"工作中…" |
| 🔴 出错 error | 受惊抖动,状态胶囊显示"呜,出错了" |
| ⚪ 离线 offline(仅桌面版) | DSH 未运行时的待机态 |
摸头交互(核心卖点):
- 鼠标悬停/触摸头部 → 切换成被摸头反应图 + 弹出气泡:"不要摸我的头!" + 颜文字
- 悬停期间持续触发:每 2.2 秒换一句新台词并重播受惊动画
- 悬停 < 2.6s 移开 → 摸头状态补满 2.6s 再恢复;≥ 2.6s 移开 → 立即恢复
- 5 组随机台词:
(>_<)(`ε´)(≧﹏≦)( ̄^ ̄)ヽ(`⌒´)ノ
其他:拖拽移动(限位防丢失、拖拽防误触)、待机独白暂停逻辑、右键菜单(桌面版:复位/退出)。
📁 目录结构
.
├── assets/ # 素材(原始图 + 去背景透明 PNG)
│ ├── makise-kurisu-v2.jpg # 当前主素材
│ ├── kurisu-pet-v2.png # 常态显示(透明背景)
│ ├── kurisu-pat-src.png # 摸头反应图原图
│ ├── kurisu-pat.png # 摸头时显示(透明背景)
│ └── ... # 旧版素材(兜底)
├── scripts/ # 素材处理脚本(Node + sharp)
│ ├── diag-pet-image.js # 诊断:色块构图图 / 背景模型 / 边缘能量
│ ├── process-pet-image.js # v1 去背景(渐变模型)
│ ├── process-pet-v2.js # v2 去背景(双分类器:白背景+阴影带)
│ └── process-pet-pat.js # 摸头图裁切缩放
├── plugin/ # DSH 动态 Cordis 插件源码
│ ├── host.js # Host 半:素材 RPC + 状态聚合 + HTTP 端点
│ ├── client.js # Client 半:UI + 动画 + 摸头状态机 + 拖拽
│ └── README.md # 插件安装说明
├── desktop/ # 桌面端 Electron 应用(独立运行)
│ ├── main.js # 主进程:窗口/穿透/拖拽/状态轮询
│ ├── preload.js # 安全 IPC 桥
│ ├── index.html / pet.css / pet.js # 渲染层(界面 + 状态机)
│ ├── launch.command # macOS 双击启动脚本
│ └── package.json
├── LICENSE # MIT
└── README.md
🚀 快速开始
桌面版(macOS / Windows)
cd desktop
npm install # 安装 Electron(国内网络可设置 ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/)
npm start # 或双击 launch.command(macOS)/ Kurisu.vbs(Windows,静默启动)
- 退出:右键点击 Kurisu → "退出 Kurisu";复位位置:右键 → "复位到右下角"
- 状态同步:自动轮询
http://127.0.0.1:3080/pet/status-v2(需要 DSH 运行且插件已激活;未运行显示"离线中") - 环境变量:
DSH_PET_HOST/DSH_PET_PORT可覆盖 DSH 地址;打包:npm run dist:win生成免安装 Kurisu.exe - macOS 提示:若把应用放在
~/Desktop等受 TCC 保护的目录,无签名应用可能无法读取文件,建议放在主目录下(如~/kurisu-pet-app)
网页版(DSH 插件)
见 plugin/README.md:把 plugin/host.js / plugin/client.js 的函数体交给 DSH 的 cordis_define,改好 PET_ROOT,然后 cordis_run 激活即可。
🔧 素材处理(可选)
脚本基于 sharp,优先使用本地 npm i sharp,否则回退到 DSH 依赖树中的 sharp:
node scripts/diag-pet-image.js # 先诊断新素材的背景结构
node scripts/process-pet-v2.js # 白背景+阴影带 → 透明 PNG
🏗️ 架构
DSH Host(kuri-1 插件)
├─ agent/status、agent/error 事件 → 状态聚合(idle/working/error)
├─ pet.image / pet.state RPC ──────────────→ 网页版 Client(React + shell.overlay)
└─ GET /pet/status-v2(webServer 路由,ctx.effect 生命周期绑定) ──→ 桌面版 Electron 主进程(700ms 轮询)
└─ 渲染进程(点击穿透/摸头/拖拽)
🧩 DSH 持久化安装(直接装进 DSH)
不想用临时动态插件?见 dsch-plugin/README.md:双面包插件(宿主半状态端点+素材路由,浏览器半桌宠 UI),装入 profile 组合后随 DSH 常驻、重启不丢。
📄 License
MIT © 2026 xiedai131
素材图片版权归原作者所有;本项目仅作个人学习与技术演示用途。
还没有评论,来写第一条。