在屏幕角落养一只会聊天会说话的 Q 版宠物
30.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:要求 dsh >=0.1.2-rc.1 <0.2.0,而最新版为 0.2.1-rc.2;仓库 package.json 标记 private,未发布到 npm,需从源码安装;安装清单取自 plugin/package.json。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add loubaji083-rgb/aemeath-desktop-pet该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 29 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装要求 dsh >=0.1.2-rc.1 <0.2.0,而最新版为 0.2.1-rc.2;仓库 package.json 标记 private,未发布到 npm,需从源码安装;安装清单取自 plugin/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包aemeath-desktop-pet-dsh-plugin(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✗dsh CLI 依赖要求 >=0.1.2-rc.1 <0.2.0 · 最新 0.2.1-rc.2 不兼容
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/20 02:49:07
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
- 发起网络请求web/js/app.js:765
const res = await fetch('../voice-training/SCHEMA.md'); - 发起网络请求web/js/app.js:813
const res = await fetch(`${base}/chat/completions`, {
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- Q版动态形象
- 点击互动
- DeepSeek聊天
爱弥斯桌面宠物 · 零依赖零构建的 Q 版动态形象 + 点击互动 + DeepSeek 聊天 + 浏览器语音 + 自备数据的声音训练工具链(仅供个人娱乐,禁止商用)
README
由 DeepSeek 最新模型翻译生成爱弥斯 · 桌面宠物(Aemeath Desktop Pet)
一个零依赖、零构建的开源桌面宠物:原创 Q 版动态形象 + 点击微交互 + DeepSeek 文字聊天 + 浏览器语音对话 + 你自己声音的训练工具链。
仅供个人娱乐与技术学习使用,禁止商用。使用前请务必阅读 docs/RED-LINES.md(使用红线)。
先看一眼
6 种情绪的待机姿态
上面这张对照表是 6 种情绪(idle / happy / shy / surprised / sad / angry)的真实渲染输出,不是手绘稿 —— 它们由 node tools/dump-pet-frame.mjs 录下 Canvas 指令流、再用 python tools/rasterize-canvas.py 原样回放成 PNG 得到。单帧基准在 tools/samples/frame-idle.png。
这个项目是什么
爱弥斯是一个跑在浏览器里的桌面宠物小玩具:一个 Q 版的原创角色待在你的屏幕右下角,会呼吸、会眨眼、会跟着你的鼠标看,你戳她的头/脸/手/身体会有不同的反应,双击会长动作,拖着能换位置,长时间不理会自己发呆、打瞌睡。
她还能陪你说话:
- 文字聊天:接你自己的 DeepSeek API Key,流式输出,逐字往外蹦。
展开完整文档(README 剩余 1 节)
爱弥斯 · 桌面宠物(Aemeath Desktop Pet) 一个零依赖、零构建的开源桌面宠物:原创 Q 版动态形象 + 点击微交互 + DeepSeek 文字聊天 + 浏览器语音对话 + 你自己声音的训练工具链。 仅供个人娱乐与技术学习使用,禁止商用。使用前请务必阅读 docs/RED-LINES.md(使用红线)。 先看一眼 6 种情绪的待机姿态 上面这张对照表是 6 种情绪(idle / happy / shy / surprised / sad / angry)的真实渲染输出,不是手绘稿 —— 它们由 node tools/dump-pet-frame.mjs 录下 Canvas 指令流、再用 python tools/rasterize-canvas.py 原样回放成 PNG 得到。单帧基准在 tools/samples/frame-idle.png。 这个项目是什么 爱弥斯是一个跑在浏览器里的桌面宠物小玩具:一个 Q 版的原创角色待在你的屏幕右下角,会呼吸、会眨眼、会跟着你的鼠标看,你戳她的头/脸/手/身体会有不同的反应,双击会长动作,拖着能换位置,长时间不理会自己发呆、打瞌睡。 她还能陪你说话: - 文字聊天:接你自己的 DeepSeek API Key,流式输出,逐字往外蹦。 - 语音对话:说话 → 浏览器语音识别转文字 → 发给 DeepSeek → 回复用浏览器 TTS 念出来,念的时候嘴巴会跟着动。 - 声音训练工具链:给你一套「用你自己的声音训练一个 TTS 声线」的流程骨架(数据集规范、校验脚本、清单生成、后端对接)。仓库里不含任何预训练模型、声线或音频。 这个项目不是什么 说清楚边界比说功能更重要: | ❌ 不是 | 原因 | | 不是某个游戏角色的官方/非官方移植 | 形象是 Canvas 程序化原创绘制(大头小身的 Q 版),人设提示词是原创撰写的「类型化语气引擎」,不含任何具体作品的立绘、Live2D 模型、台词原文或语音 | | 不是一个声音克隆器 | 仓库不打包任何权重、任何声线、任何音频,也不提供一键克隆。训练那部分只给流程和校验工具 | | 不是「已经训练好的爱弥斯声音」 | 你最初的设想是「用现成声线训一版声音」。这一步在合规上做不到:把真人(尤其声优)的声音拿去训练并公开发布,在中国受《民法典》第 1023 条保护、在日本受声优「声の権利」与事务所条款约束,也会违反平台 ToS。所以本项目把它改成了「给你工具,你自己投喂你有权使用的声音」 | | 不是商业产品 | 见 LICENSE(非商业许可)与 docs/RED-LINES.md | 功能一览 | 模块 | 能力 | 实现方式 | | 形象 | Q 版大头小身(约 2.6 头身),分层骨骼 + 弹簧插值、呼吸、眨眼、头发延迟跟随、口型同步 | web/js/pet/ 纯 Canvas 2D 程序化绘制,零图片素材 | | 微交互 | 点头顶/点脸/点手/点身体、双击、长按、拖拽、落下、鼠标跟随、随机待机、打招呼、睡觉、唤醒,共 12 种动作 | PetUI.trigger(action),动作可被冷却与降幅(prefers-reduced-motion) | | 情绪 | 11 种 mood(idle/happy/shy/surprised/sad/angry/sleepy/excited/think/listen/speak) | PetUI.setMood(),事件驱动;合法清单见 web/js/pet/moods.js 的 MOODS | | 聊天 | DeepSeek /chat/completions,SSE 流式,可中断,历史裁剪与本地持久化 | web/js/chat/,fetch + 手写 SSE 解析 | | 人设 | 4 个原创预设(活泼陪伴 / 温柔治愈 / 俏皮吐槽 / 冷静可靠)+ 可自定义角色卡;有「去 AI 腔」后处理 | web/js/persona/,见 docs/PERSONA.md | | 语音出 | 浏览器 speechSynthesis(开箱即用)+ 3 种外部 HTTP TTS 适配器 | web/js/voice/browser-tts.js、http-tts.js | | 语音入 | SpeechRecognition 连续/按住说话,中间结果实时显示 | web/js/voice/stt.js | | 声音训练 | 数据集规范、WAV/FLAC 头解析校验、清单生成、后端提交/轮询、配方导出 | voice-training/ + web/js/training/ | 快速开始 唯一前置要求:Node.js ≥ 18(只用来起一个本地静态服务器;运行时本身零依赖)。 git clone <你的仓库地址> aemeath-desktop-pet cd aemeath-desktop-pet node tools/serve.mjs 然后浏览器打开终端里打印的地址(默认 http://127.0.0.1:18340/)。 ⚠️ 不能直接双击 web/index.html。本项目用原生 ES Module,file:// 协议下浏览器会以 CORS 为由拒绝加载模块,页面会白屏。必须走 http://。 详细图文步骤、每一项设置的作用、常见问题,见 docs/USAGE.md。 让它能聊天(1 分钟) 1. 打开左侧工具栏的 ⚙️ 设置(或按 Ctrl+4)。 2. 「DeepSeek 接入」里填入你的 API Key(在这里申请)。 3. 点「测试连接」,看到 ✅ xxx ms 就成功了。 4. 按 Ctrl+1 回到聊天面板,开始对话。 🔐 API Key 只保存在 sessionStorage:关掉标签页就失效,不写 localStorage、不进导出文件、不硬编码。刷新页面需要重填,这是故意的。 快捷键 | 快捷键 | 作用 | | Ctrl+1 / 2 / 3 / 4 | 打开/关闭 聊天 / 语音 / 训练 / 设置 面板 | | Ctrl+. | 关闭全部面板 | | Esc | 关闭全部面板 | | 拖拽桌宠 | 移动位置(自动记住) | 目录结构 aemeath-desktop-pet/ ├── web/ # 前端主体(零依赖、原生 ES Module) │ ├── index.html # 唯一入口 │ ├── css/ │ │ ├── app.css # 外壳:面板、主题、气泡、Toast │ │ └── pet.css # 桌宠画布层 │ └── js/ │ ├── app.js # 主控:装配、设置绑定、面板交互 │ ├── core/ # 事件总线、设置与密钥、存储、DOM 工具、面板 │ ├── pet/ # 原创 Q 版角色:骨骼、绘制、互动、情绪 │ ├── chat/ # DeepSeek 客户端 + SSE 流式解析 │ ├── persona/ # 原创语气引擎 + 预设 │ ├── voice/ # TTS(浏览器/HTTP)+ STT │ └── training/ # 声音训练工具链的前端对接层 ├── voice-training/ # 声音训练:规范、校验脚本、清单模板 │ ├── SCHEMA.md # 数据集规范(必读) │ ├── scripts/ # 纯 Node 校验/生成脚本(无依赖) │ └── data/ # ← 你的素材放这里,已被 .gitignore ├── tools/ # 静态服务器 + 自检脚本 ├── tests/ # node:test 单元测试 ├── docs/ │ ├── USAGE.md # 使用说明(安装、配置、排错) │ ├── RED-LINES.md # ⚠️ 使用红线(必读) │ ├── PERSONA.md # 语气引擎说明 + 怎么导入你自己的角色卡 │ └── CONTRACT.md # 内部接口契约(改代码前看这个) └── plugin/ # DSH 插件封装(可选) 跑测试 node --test tests/.test.mjs 零依赖,纯 node:test,不需要 npm install。测试覆盖事件总线语义、设置与敏感值隔离、DeepSeek 请求构造与 SSE 分块解析、语气引擎纯函数、桌宠动作与渲染几何、训练清单校验与工具链幂等性、模块导出契约。 ⚠️ 用 tests/.test.mjs 而不是 node --test tests/ —— Node 22 下后者会报 Cannot find module。 除了单元测试,仓库还有几层自检(CI 里也跑,见 .github/workflows/ci.yml): node tools/selfcheck-http.mjs # 静态服务器能起来、资源都能 200 node tools/selfcheck-modules.mjs # 模块图能加载、导出契约成立 node tools/selfcheck-dom.mjs # index.html 与 JS 的选择器 / 设置键一致 node tools/smoke-app-import.mjs # web/js/app.js 整条模块图可链接(顶层无副作用) node tools/smoke-pet-frame.mjs # 形象几何自检:包围盒在画布内、脸部有绘制、命中区自洽 node tests/run-web-tests.mjs # 聚合入口(四关:托管/模块契约/app.js 加载/单元测试,带通过数门槛) CI(.github/workflows/ci.yml)比上面这个聚合入口更细一层:它额外单独跑 selfcheck-api、selfcheck-dom 与 smoke-pet-frame,并在最后复跑一次 node --test tests/.test.mjs(带 TAP 复核)。本地想一次跑全,把上面六条 + node tests/run-web-tests.mjs 依次跑一遍即可;或者直接看 CI 的步骤列表照抄。 像素级复核(可选,需要 Pillow):把某一帧的真实 Canvas 指令流回放成 PNG,用来「真的看一眼」形象对不对 —— node tools/dump-pet-frame.mjs --mood idle python tools/rasterize-canvas.py tools/samples/frame-idle.json tools/samples/frame-idle.png --scale 2 tools/samples/ 里已经放了一份基准样本(frame-idle.json / frame-idle.png),改渲染后可以对照。 想把多个情绪并排看,用对照表工具(每一格务必用同一个 --scale,否则格子大小会不一致): for m in idle happy shy surprised sad angry; do node tools/dump-pet-frame.mjs --mood $m --out /tmp/frame-$m.json python tools/rasterize-canvas.py /tmp/frame-$m.json /tmp/frame-$m.png --scale 1 done python tools/contact-sheet.py tools/samples/contact-sheet.png idle,happy,shy,surprised,sad,angry --dir /tmp 注意:tools/rasterize-canvas.py 用非零环绕规则(和浏览器一致)填充路径,而不是 PIL ImageDraw.polygon() 的偶奇规则 —— 两者对自相交路径结果不同。改这个文件时别把 fill_nonzero() 换回去。 形状对不对只能看像素:smoke-pet-render.mjs 能证明「无 NaN、无异常」,但证明不了「画出来像不像」。tools/smoke-pet-frame.mjs 顶部注释记录了七种「形状自相交 / 锥形」启发式判据全部失败的经过,不要再往那里加同类判据。另外 dump-pet-frame.mjs 默认会先推帧到入场问候排空、再连续 240 帧静态才 dump,所以默认拍到的是真待机姿态(--no-settle 可关掉)。 自己动手做一版声音(简版) 完整流程见 voice-training/SCHEMA.md 与 voice-training/scripts/README.md。 1. 把你的录音(wav/flac,单声道,≥16kHz,3–15 秒/条,低底噪)放进 voice-training/data/ 2. 生成清单模板 node voice-training/scripts/make-manifest.mjs 3. 校验(时长、采样率、重复文件哈希、授权字段是否填全) node voice-training/scripts/validate-dataset.mjs 4. 按 scripts/README.md 部署你自己的训练后端,然后在插件的「训练」面板填端点地址提交 再说一次:只能用你自己的声音,或你已取得明确书面授权的声音素材。详见 docs/RED-LINES.md。 隐私 | 数据 | 存在哪 | 会不会离开你的机器 | | API Key | 浏览器 sessionStorage(关标签页即失效) | 只作为 Authorization 头发给你配置的 LLM 端点 | | 对话内容 | localStorage(可一键清空/关闭记忆) | 发给 DeepSeek;本项目不代理、不中转、不留存 | | 桌宠位置 / 你的偏好 | localStorage | 不会 | | 训练音频 | 你自己的磁盘 voice-training/data/ | 只会发给你自己配置的训练后端 | 「设置 → 数据与隐私」里有:一键导出(不含密钥)、清空聊天记录、恢复默认设置。 作为 DSH 插件使用(可选) plugin/ 是对 DSH 的薄封装,用来在 DSH 内打开这个桌宠。安装与限制见 plugin/README.md。 主干(web/ + tools/)完全不依赖 DSH,删掉 plugin/ 也能独立运行。 开发说明 - 改代码前请先读 docs/CONTRACT.md(接口契约)与 web/js/core/events.js(事件表)。 - 零运行时依赖是硬约束:不要引入 npm 包,不要加构建步骤。 - 自检脚本: node tools/selfcheck-dom.mjs # 校验 index.html 与 JS 的选择器/设置键契约 node --test tests/.test.mjs # 单元测试 免责声明 本项目仅供个人娱乐与技术学习,禁止商用。它与任何游戏、动画、公司、声优没有隶属或合作关系,也不包含任何第三方作品素材。 最重要的三条: 1. 不要拿你没有权利的真人声音(尤其声优、主播、公众人物)去训练或发布。 2. 不要把生成的语音用于冒充他人。 3. 不要提交训练数据或密钥到仓库。 完整红线见 docs/RED-LINES.md。使用本项目即表示你已阅读并同意其中全部条款。 许可 见 LICENSE(非商业许可)。第三方训练后端(GPT-SoVITS、Bert-VITS2 等)各有自己的许可,本项目不为其背书。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
loubaji083-rgb/aemeath-desktop-pet
在屏幕角落养一只会聊天会说话的 Q 版宠物
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2