dsh-pet-remielle · 蕾米埃尔桌宠
54.3/100
综合分
62
GitHub 星标
1,125
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Gin-7/dsh-pet-remielle.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-pet-remielle @ 0.4.7
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 09:03:42
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 82 处,展示前 58 条)
- 读取本地文件src/index.js:532
names = await readdir(root, { withFileTypes: true }) - 读取本地文件src/index.js:543
const files = await readdir(dir) - 读取本地文件src/index.js:546
manifest = parsePetManifest(await readFile(join(dir, PET_MANIFEST), 'utf8')) - 读取本地文件src/index.js:552
pics = (await readdir(join(dir, 'pics'))).filter((f) => /^\d{1,3}\.png$/i.test(f)).length - 读取本地文件src/index.js:634
const data = await readFile(file) - 读取本地文件src/index.js:1618
petViewHtml = await readFile(new URL('../src/pet-view.html', import.meta.url), 'utf8') - 发起网络请求lib/client.js:543
return global.fetch(url, { credentials: 'same-origin' }).then(function (res) { - 发起网络请求lib/client.js:1486
fetch(UPDATE_ENDPOINT, { method: 'POST' }) - 发起网络请求lib/client.js:1540
return fetch(STATE_ENDPOINT, { cache: 'no-store' }) - 发起网络请求lib/client.js:1551
return fetch(url, { cache: 'no-store' }).then(function (response) { - 发起网络请求lib/client.js:1559
return fetch(CONFIG_ENDPOINT, { - 发起网络请求lib/client.js:1571
return fetch(PETS_ENDPOINT + '/' + encodeURIComponent(id), { - 读取本地文件src/desktop-window.js:40
if (existsSync(resolve(dir, marker))) return dir - 读取本地文件src/desktop-window.js:57
if (existsSync(resolve(root, 'lib', 'bin.js')) || existsSync(resolve(root, 'node_modules', '@deepseek-ai', 'dsh'))) { - 执行外部命令固定命令src/desktop-window.js:71
const out = execFileSync('npm', ['prefix', '-g'], { encoding: 'utf8', timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).trim() - 读取本地文件src/electron-fetch.mjs:159
return readdirSync(dirname(abs)).includes(basename(rel)) - 读取本地文件src/electron-fetch.mjs:220
if (existsSync(electronExe)) { - 删除本地文件递归src/electron-fetch.mjs:222
try { rmSync(vendorDir, { recursive: true, force: true }) } catch { } - 写入本地文件src/electron-fetch.mjs:230
mkdirSync(work, { recursive: true }) - 删除本地文件src/electron-fetch.mjs:242
try { rmSync(zip, { force: true }) } catch { } - 删除本地文件递归src/electron-fetch.mjs:253
rmSync(vendorDir, { recursive: true, force: true }) - 写入本地文件src/electron-fetch.mjs:254
mkdirSync(vendorDir, { recursive: true }) - 读取本地文件src/electron-fetch.mjs:269
if (existsSync(vendorDir)) { - 写入本地文件src/electron-fetch.mjs:273
renameSync(vendorDir, retired) - 写入本地文件src/electron-fetch.mjs:276
renameSync(distDir, vendorDir) - 写入本地文件src/electron-fetch.mjs:280
try { renameSync(retired, vendorDir); retired = null } catch { } - 写入本地文件src/electron-fetch.mjs:282
mkdirSync(vendorDir, { recursive: true }) - 删除本地文件递归src/electron-fetch.mjs:286
try { rmSync(retired, { recursive: true, force: true }) } catch { } - 删除本地文件递归src/electron-fetch.mjs:300
try { rmSync(p, { recursive: true, force: true }) } catch { } - 读取本地文件src/electron-fetch.mjs:348
if (existsSync(join(work, binary))) return work - 读取本地文件src/electron-fetch.mjs:349
const subdirs = readdirSync(work, { withFileTypes: true }).filter((e) => e.isDirectory()) - 读取本地文件src/electron-fetch.mjs:351
if (existsSync(join(work, sub.name, binary))) return join(work, sub.name) - 删除本地文件递归src/electron-fetch.mjs:387
rmSync(join(dest, entry), { recursive: true, force: true }) - 发起网络请求src/self-update.js:116
const connectReq = http.request({ - 发起网络请求src/self-update.js:135
const req = https.request({ - 发起网络请求src/self-update.js:165
const res = await fetch(url, { - 读取本地文件src/self-update.js:236
const pj = JSON.parse(readFileSync(`${pkgDir}/package.json`, 'utf8')) - 读取本地文件src/self-update.js:396
pj = JSON.parse(readFileSync(`${dir}/package.json`, 'utf8')) - 读取本地文件src/self-update.js:402
if (!existsSync(`${dir}/${entry}`)) problems.push(`入口文件缺失: ${entry}`) - 读取本地文件src/self-update.js:404
if (!existsSync(`${dir}/src`)) problems.push('src/ 目录缺失') - 请求外部主机api.github.comsrc/self-update.js:485
await fetch('https://api.github.com', { signal: AbortSignal.timeout(3000) }) - 发起网络请求src/self-update.js:485
await fetch('https://api.github.com', { signal: AbortSignal.timeout(3000) }) - 读取本地文件src/self-update.js:568
} else if (info.profileDir && existsSync(info.profileDir)) { - 发起网络请求src/balance-widget.js:120
fetch(BALANCE_URL, { cache: 'no-store', signal: ctrl ? ctrl.signal : undefined }) - 发起网络请求src/client.core.js:444
fetch(UPDATE_ENDPOINT, { method: 'POST' }) - 发起网络请求src/client.core.js:498
return fetch(STATE_ENDPOINT, { cache: 'no-store' }) - 发起网络请求src/client.core.js:509
return fetch(url, { cache: 'no-store' }).then(function (response) { - 发起网络请求src/client.core.js:517
return fetch(CONFIG_ENDPOINT, { - 发起网络请求src/client.core.js:529
return fetch(PETS_ENDPOINT + '/' + encodeURIComponent(id), { - 发起网络请求src/client.core.js:710
fetch(CHECK_ENDPOINT, { cache: 'no-store' }) - 发起网络请求src/gif-frame.cjs:107
return global.fetch(url, { credentials: 'same-origin' }).then(function (res) { - 读取本地文件src/pet-window-paths.cjs:64
const parsed = JSON.parse(readFileSync(lockPath, 'utf8')) - 写入本地文件src/pet-window-paths.cjs:75
mkdirSync(path.dirname(lockPath), { recursive: true }) - 写入本地文件src/pet-window-paths.cjs:76
writeFileSync(lockPath, JSON.stringify({ pid: Number(pid), startedAt: Date.now() }), 'utf8') - 删除本地文件src/pet-window-paths.cjs:90
rmSync(lockPath, { force: true }) - 执行外部命令固定命令src/pet-window.cjs:88
const out = execFileSync( - 发起网络请求src/pet-window.cjs:333
fetch(`${hostOrigin}/plugins/dsh-pet-remielle/desktop/ready`, { method: 'POST', body: '{}' }) - 发起网络请求src/pet-window.cjs:342
return fetch(`${hostOrigin}/plugins/dsh-pet-remielle/config`, {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:api.github.com
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
6 张 · 点击查看大图README
由 DeepSeek 最新模型翻译生成展开完整文档(README 剩余 1 节)
dsh-pet-remielle · 蕾米埃尔桌宠 awesome dsh plugin 多宠物网页桌宠,由 DSH 真实会话事件驱动:桌宠实时跟随 DeepSeek Harness 的任务进展,用贴纸动画 + 状态气泡呈现。 - 多宠物注册表 + 状态气泡(项目 / 阶段 / 待办 / 进度实时汇报) - SSE 实时推送 + 可选的桌面悬浮窗(随包 Electron,透明置顶) - 双击画画联动:粗笔刷揭示作品图(绘制中 → 得意中 → 淡出) - 一键版本检查 + 增量更新 - 设置页与插件详情页共用设置(外观 / 宠物 / 行为 / 桌面悬浮 / 关于) 兼容 DeepSeek Harness(含其分支)的 web profile;桌面悬浮模式默认关闭,可按需开启。桌面模式要求 DSH >= 0.1.2-alpha.1,以提供带 token 的认证根 URL。 特性一览 | 能力 | 说明 | | 状态来源 | DSH session/event 真实事件,非 DOM 抓取 | | 状态机 | PetReducer 纯函数(含 mood 映射,可单测) | | 消息协议 | 类型化协议(protocol.js) | | 配置 | schemastery 持久化 + DSH 设置页 / 插件详情页 | | 多 Session 优先级 | 审批 > 计划审核 > 等待回答 > 完成提醒 > 等待/错误 > 当前会话 > 状态优先级 > 更新时间。同级仅稳定前两名,第三名及以后仍随更新时间轮转 | | 实时推送 | SSE 流(断线自动重连 + 轮询兜底) | | 状态气泡 | 页面内与桌面悬浮均使用自适应两层牌叠:顶层状态卡 + 带 +N 的汇总背板;message + detail(项目 · 已完成 x/y · 阶段) | | 会话操作 | 网页与桌面一致:点卡片 / ? / ! 打开对应会话,✓ 允许一次;无网页客户端在线时点卡片/图标用系统浏览器打开 DSH 页面 | | 完成提醒 | 后台完成后保留绿点直至处理;仅前台可见的标签页中的当前会话会自动消除(即便此刻正开着桌面悬浮窗),后台标签页不抢清除;桌面悬浮窗只展示提醒,点开该会话(网页内跳转、浏览器打开,或点击桌面完成卡)同样消除。当前已打开会话不显示未读绿点(仅当前 Host 生命周期) | | 出错提醒 | 后台回合失败(模型调用失败等)保留粉圈直至打开该对话;当前会话失败不进提醒。点气泡跳转或侧边栏点进该对话后提醒消失。审批/提问不受影响 | | 余额 | 状态与用量都开启时,点气泡左侧圆点或在气泡上滚轮切换余额页(60s 自动刷新、数字滚动动画、网络抖动沿用最近余额);停在当前页,不自动回落 | | 今日已用 | 双模式任选:小鲸鱼记账(免令牌,余额差值累计)/ 实时·令牌(平台费用接口直接返回真实金额,精确) | | 桌面悬浮 | 随包 Electron 透明置顶窗口(可选,默认关) | | 多宠物 | 插件 → 蕾米埃尔桌宠 → 宠物(注册表 + 切换当前宠物) | | 版本更新 | 内置检查 + 一键增量更新 | 贴纸(mood)→ 状态映射 | 贴纸 | 展示 | 触发场景 | | 01 绘制中 | | THINKING + streaming:流式输出(正在写回复)、双击画画 | | 02 摸鱼中 | | WORKING / ERROR:调用工具(查找/编辑/测试/命令) | | 03 得意中 | | PULSE SUCCESS:回合完成、绘制完成、点击互动 | | 04 思考中 | | THINKING:回合/步骤开始、推理、结果整理 | | 05 等待中 | | WAITING:提问回答、审批等待、计划待审、回合挂起(blocked) | | 06 待机中 | | IDLE / DISCONNECTED:空闲、回合结束之后 | 多 Session 同时运行时按 审批 > 计划审核 > 等待回答 > 完成提醒 > 等待/错误 > 当前会话 > 状态优先级 > 更新时间 选择顶层任务;其余会话由可点击的 +N 汇总背板表示。子 Agent 默认忽略(可在设置开启)。 宠物定义约定 assets/pets/<id>/01.gif 绘制中(输出/画画) assets/pets/<id>/02.gif 摸鱼中(工具/错误) assets/pets/<id>/03.gif 得意中(完成/互动) assets/pets/<id>/04.gif 思考中 assets/pets/<id>/05.gif 等待中 assets/pets/<id>/06.gif 待机中 可选扩展(不影响完整性校验): assets/pets/<id>/07.gif 额外贴纸槽位 assets/pets/<id>/pet-manifest.json 每贴纸对齐偏移 + 作品图数量 assets/pets/<id>/pics/<n>.png 作品图(双击宠物随机弹出,n 从 1 起) id 只能含字母、数字、下划线、连字符。内置宠物:蕾米埃尔(remielle,素材版权见 NOTICE)。 安装 适用于 DSH / DeepSeek Harness(含 Fairy 等基于 DSH 的分支)的 web 配置档。 方式一:npm 注册表(推荐,可一键增量更新) dsh plugin --profile web add dsh-pet-remielle 方式二:GitHub 仓库(构建安装,无版本校验) dsh plugin --profile web add github:Gin-7/dsh-pet-remielle 方式三:本地目录(开发调试,link 安装) dsh plugin --profile web add D:\path\to\dsh-pet-remielle 方式四:GitHub Release tgz dsh plugin --profile web add "C:\Users\you\Downloads\dsh-pet-remielle-<version>.tgz" 插件行 id:dsh-pet-remielle。卸载即复原,无残留。 更新 插件内置「宠物管理 → 更新」页 + 右下角更新气泡:检查 GitHub 最新版本,发现新版可一键更新。 | 安装形态 | 版本 | 更新方式 | | 本地链接(link) | ≥ 0.3.0 | 一键 git pull(增量) | | npm 注册表(registry) | ≥ 0.3.0 | 一键 pnpm update dsh-pet-remielle(增量) | | 任意形态 | < 0.3.0 | 不支持自动更新:0.3.0 起包名已变更,需彻底卸载旧版本后重新安装 | 说明:0.3.0 之前存在包名/行 id 变更(0.2.0 之前为 @dsh-external/dsh-client-ui-pet-remielle,0.2.0–0.3.0 为 dsh-pet-remielle)。直接 git pull/pnpm update 无法跨过该变更,所以低于 0.3.0 必须先卸载旧版再重装新版(否则会出现 loaded without registering … via __ModuleLoader__.load 之类的加载报错)。命令如下: 按实际安装的旧行 id 卸载(以下两条按需执行) dsh plugin --profile web remove @dsh-external/dsh-client-ui-pet-remielle # 0.2.0 及之前 dsh plugin --profile web remove dsh-pet-remielle # 0.2.0 之后 重新安装最新版(npm 或 GitHub 均可) dsh plugin --profile web add dsh-pet-remielle 或: dsh plugin --profile web add github:Gin-7/dsh-pet-remielle 在「插件 → 蕾米埃尔桌宠 → 关于」中,低于 0.3.0 的版本点击「一键更新」也会给出同样的卸载/重装指引,不会直接覆盖升级。 桌面悬浮模式(可选) desktopMode 默认关闭。开启后使用 Electron 运行时拉起透明、置顶、无边框的独立窗口显示宠物。 - 窗口支持拖动(位置自动记忆)、滚轮缩放、双击画画、右键菜单。 - 状态/余额气泡与网页一致:堆叠会话卡、单圆点切换、提示文字与点击行为同网页;✓ 仍执行「允许一次」。 - 已知限制:「有待处理内容」的绿点信息来自网页侧边栏,仅在网页端在线时同步给桌面窗。网页关闭期间出现的新提醒可能不出现在桌面气泡里,下次打开网页即可看到;日常保持网页开启则不受影响。 - 桌面窗按系统缩放自动补偿 UI 尺寸,与网页端视觉大小一致。 - 双击画画:作品显示在桌面右上角的独立小窗,粗笔刷沿对角来回揭示,完成后「得意中→淡出」。 - 右键菜单与网页端完全一致(见下方「使用」)。 - 关闭/切换后自动回到页面内;随 DSH host 退出自动关闭(宿主退出后最多 1 秒内消失)。 - 桌面窗的 Electron 数据目录固定在系统应用数据目录(Windows %APPDATA%\dsh-pet-remielle,macOS / Linux 落在各自的应用数据目录),不放临时目录——%TEMP% 会被系统磁盘清理连缓存一起删掉。同一时刻只允许一个桌面窗持有它:检测到另一个存活实例(宿主刚重启、旧窗口还没退完)时自动退避到带 pid 的兄弟目录,两者不共用同一份 Chromium 缓存。 Electron 运行时来源(按顺序探测):DSH_PET_ELECTRON 环境变量 → vendor/electron-<platform>-<arch>/(本目录不进 Git,按当前系统自动下载对应平台包)→ 系统已安装的 Electron → 均无则仅页面内展示。 首次运行:若开启桌面悬浮模式但本机找不到 Electron 运行时,会提示下载并安装(需你确认,因 Electron 运行时约 100–220MB,Windows 最大);下载失败则自动回落页面内展示,不会影响其他功能。也可手动把任一对应平台的 Electron 发行包解压到 vendor/electron-<platform>-<arch>/,或设置 DSH_PET_ELECTRON 指向现有 electron 可执行文件(Windows:electron.exe;macOS:Electron.app/Contents/MacOS/Electron;Linux:electron)。 平台能力 | 平台 | 桌面悬浮窗 | 页面内桌宠 | | Windows x64 | ✓(Electron 透明置顶窗口) | 桌面模式下自动隐藏 | | macOS(arm64 / x64) | ✓(自动下载对应 darwin Electron) | 桌面模式下自动隐藏 | | Linux x64 | ✓(自动下载对应 linux Electron) | 桌面模式下自动隐藏 | 使用 - 单击桌宠:切换随机贴纸心情。 - 双击桌宠:进入画画动画,绘制完成后在屏幕(右上角)弹出作品图,随后淡出。 - 右键桌宠:页面内与桌面窗共用同一套菜单(同宽同序,滑块左右对齐)—— 角色大小 / 透明度 / 左右镜像 / 锁定位置 / 暂停动画 / 显示气泡 / 画画 / 重置位置 / 桌面悬浮模式。「重置位置」一次清掉页面内与桌面窗两个位置;「暂停动画」冻在当前这一帧(不是起始帧),需要安全上下文(127.0.0.1 / localhost / https)才精确,纯 http 局域网地址退回首帧;取消暂停会让 GIF 从第 0 帧重播(浏览器重设 src 的固有行为, 无法定位到指定帧)。 - 换屏幕/改窗口大小保持同一位置:记住的是宠物贴着的那条边与边距(例如「离左 118px、离下 33px」),换屏后边距不变——宽屏上贴左下角,竖屏上还是同样留 118/33;放不下时以「能放下」为界钳住。旧版存的绝对像素或相对比例会在首次加载时自动折算成锚点,无需重拖。 - 完整设置页(设置 → 宠物管理 / 插件详情页):启用 / 隐藏桌宠、宠物管理、响应子 Agent、用量模式与平台令牌、气泡子项与气泡缩放细项——低频,或者关掉之后连入口一起消失(所以不进右键)。 - 两端主题同源:菜单与气泡在页面内和桌面窗用同一套色值,也跟随同一个主题来源——网页端把宿主主题(body[data-ds-dark-theme])上报给宿主,桌面窗据此着色;没有网页在线(或上报过期)时桌面窗回落系统深浅色,独立窗口跟系统仍是合理默认。条目、顺序、几何参数同样逐项一致(开关行的勾选符不改变行高),两端色值另有跨文件断言钉住。 - 气泡翻页:状态与用量都开启时,点左侧圆点或在气泡上滚轮,在状态卡与余额页之间切换;停在当前页,不会自动回落。 - 滚轮(桌宠):调整角色大小。 - 页面内宠物菜单也可反向拉起桌面窗。 余额与今日已用 状态与用量都开启时,点气泡左侧圆点或在气泡上滚轮即可查看 DeepSeek 账户余额与今日消耗(气泡显示「DeepSeek 余额 ¥X」+「今日已用 ¥X · 空闲/高峰时段」,时段用颜色标识:空闲绿、高峰红)。只开用量时气泡直接显示余额页。停在当前页,不会自动回到状态。 - 余额:来自官方接口 api.deepseek.com/user/balance(凭据 DEEPSEEK_API_KEY)。60 秒自动刷新;切到余额页时会拉一次;余额变化时有数字滚动动画;网络瞬时抖动自动沿用最近余额不报错。 - 今日已用 · 小鲸鱼记账(默认,免令牌):每次观测余额后用余额差值自动累计,持久化到 $DSH_HOME/.dshp-usage.json,跨天自动归零归档。无需额外令牌,但属于估算——DSH 关闭期间的消耗会漏记。 - 今日已用 · 实时·令牌(精确):配置平台会话令牌 DEEPSEEK_PLATFORM_TOKEN 后,直连平台费用接口(platform.deepseek.com/api/v0/usage/by_api_key/cost),直接取平台按小时统计的真实金额——无需本地定价表,DeepSeek 调价自动跟随: - 气泡里同时显示当前所处时段(空闲 / 高峰):工作日高峰为 9:00–12:00 与 14:00–18:00(北京时间),周六周日与中国法定节假日全天空闲(调休上班的周末同样按空闲计费,与官方口径一致)。节假日日历以内置表兜底、后台静默刷新公共日历数据(缓存到 $DSH_HOME/.dshp-holidays-<年份>.json),仅在首次/过期时发一次只含年份的请求 - 令牌缺失或失效时自动回落记账模式 切换用量模式:插件 → 蕾米埃尔桌宠 → 行为 →「用量模式」(小鲸鱼记账 / 实时·令牌)。也可从「设置 → 宠物管理 → 行为」修改同一配置。 DEEPSEEK_PLATFORM_TOKEN 获取方式:登录 platform.deepseek.com → F12 开发者工具 → Network → 打开「用量」页面 → 复制 api/v0/usage/... 请求的 Authorization 请求头值 → 配置到 DSH 凭据服务。 配置(插件 → 蕾米埃尔桌宠) | 字段 | 默认 | 说明 | | enabled | true | 显示桌宠(关闭立即隐藏,重新启用恢复;插件管理器的组合包启停另行管理) | 其余外观/行为项(角色大小、透明度、镜像、锁定、气泡、用量模式、桌面悬浮、暂停、隐藏……)通过「设置 → 宠物管理」和插件详情页共同提供,不再重复展示在「内置插件」清单里;其中即时可见且高频的那几项同时出现在右键菜单(清单见「使用」一节)——两端菜单同骨架同名,改一端必须同步另一端。 本地访问与公开地址:插件注册的 HTTP 端点只接受来自同一台机器的请求(回环地址;或 DSH 绑定到非回环的 LAN/具体地址时,经该绑定地址发起的本机连接);跨机客户端一律拒绝,/check、/update、/info 等带副作用的端点仍严格限制回环。若用 --public-url 配置了对外地址,「在浏览器打开 DSH」会使用该地址并附带本进程的登录 token——该链接等同于登录凭证,不要分享给他人。 设置页与插件详情页 宠物注册表独立标签页,与外观 / 行为 / 桌面悬浮 / 关于并列为五个标签页。DSH 新版同时提供「设置 → 宠物管理」和「插件 → 蕾米埃尔桌宠」两个入口,共用同一套组件和配置端点;从任一入口保存后,重新打开另一入口即可读取相同配置。未提供插件管理器配置 slot 的旧版 DSH 继续使用「设置 → 宠物管理」。 - 启用/禁用宠物、设为当前、改名、添加新宠物;目录缺失或缺图的宠物会在卡片上显示原因(启用开关同时禁用)。 - 行为页:启用/锁定/暂停动画/隐藏/响应子 Agent/显示气泡/用量模式。 - 「更新」:显示当前版本,检查更新、一键更新、查看升级说明。 - 「反馈」:显示桌宠版本号,提交 Bug / 功能建议。 开发 npm install node scripts/build-client.mjs # 构建 lib/client.js(版本号从 package.json 注入) npm test # node --test 单测 npm run check # 语法检查 目录结构 src/ ├── index.js # 宿主:配置、事件接线、config/state/balance/pets/assets/desktop 端点、自更新路由 ├── balance.js # 余额服务:拉取余额(重试/缓存/抖动容错)、今日已用双模式(记账/平台费用接口) ├── holidays.js # 节假日日历:判定峰谷时段(周末/法定节假日全天空闲),内置表 + 远程刷新 + 磁盘缓存 ├── self-update.js # 版本检查 + 一键更新(GitHub 直连 + HTTP 代理回退;git pull / pnpm update) ├── pet-reducer.js # 纯状态机:会话事件 → state/pulse/task(可单测) ├── protocol.js # 类型化协议:PetState / PetMood / PetMessageKind ├── pets.js # 宠物注册表:目录发现/合并/校验(可单测) ├── status-copy.js # 蕾米埃尔风格状态文案(可整体替换) ├── turn-watchdog.js # 回合挂起看门狗:兜底「强杀会话后卡在分析阶段」 ├── desktop-window.js # 桌面模式:Electron 发现 + 窗口进程管理(可单测) ├── electron-fetch.mjs # 按当前平台/架构下载并解压 Electron 运行时 ├── pet-window.cjs # 桌面模式:Electron main(透明置顶窗口 + 屏幕右上角作品窗) ├── pet-window-paths.cjs # 桌宠窗 userData 目录决策(与宿主 Electron 隔离) ├── pet-preload.cjs # 桌宠窗 preload:页面 ↔ 主进程桥(点击穿透、拖拽、命中矩形、菜单展开) ├── pet-view.html # 桌面模式:宠物窗口页面(GIF + 气泡 + SSE + 画画 + 余额气泡) ├── balance-widget.js # 余额控制器(客户端):取数/滚动动画,渲染进宠物自带气泡 └── client.core.js # 浏览器端:宠物 UI + 设置(构建时包装) 两端共用的 .cjs(包是 "type":"module",宿主经 createRequire 取导出)。 网页端由 scripts/build-client.mjs 拼在 client.core.js 之前,桌面端由宿主注册路由提供 ——同一份实现,避免两端文案/几何漂移。 ├── session-order.cjs # 牌叠排序(审批 > 计划待审 > 等待回答 > 完成卡 > attention …) ├── pet-tip.cjs # 翻页圆点悬停文案、tip 视口钳位、气泡缩放口径 ├── pet-pos.cjs # 页面内桌宠的位置锚点(最近那条边 + 像素边距,换屏幕不越界、边距不变) ├── gif-frame.cjs # 取动图「此刻那一帧」(右键暂停用,canvas 只画首帧) ├── bubble-title.cjs # 气泡会话卡呈现层:标题节流、宽度测量、审批/待审/完成的文案与类名 └── markdown.cjs # release 说明的 markdown 渲染(先转义再变换,链接只放行 http(s)/mailto) lib/client.js # 构建产物(版本号注入,安装即用) assets/pets/remielle/ # 蕾米埃尔素材(GIF + 作品图) scripts/build-client.mjs test/ # node --test .cjs 后缀是为了让宿主 ESM 能 createRequire 拿到导出;对外 URL 仍是 .js (浏览器 script 不认 .cjs 扩展语义)。新增两端共用模块时记得同时补进 scripts/build-client.mjs 的拼接列表和宿主的路由注册。用 test/host-transport.test.js 验证真实路由返回脚本,再由 test/desktop-window-ui.test.js 检查页面的 script src 与共享模块调用。 发布到 npm npm login pnpm version patch # 升版本 pnpm pack --dry-run # 检查发布内容(不含 node_modules / vendor) pnpm publish 发布内容由 files 字段限定:src/、lib/client.js、assets/、scripts/、test/、cordis.patch.yml、NOTICE、README.md。vendor/(Electron 运行时)不发布,桌面模式按需下载。 许可与素材版权 代码以 MIT 许可分发;蕾米埃尔形象与 GIF/作品素材版权归米哈游(HoYoverse)所有, 禁止商业使用与再分发素材。详见 NOTICE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Gin-7/dsh-pet-remielle
dsh-pet-remielle · 蕾米埃尔桌宠
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目