Bundle
@dsh-external/dsh-client-ui-furina-desk-pet
芙宁娜卡通大头桌宠:DeepSeek Harness Web GUI 客户端插件(点击特效 / 好感度系统 / 可拖拽 / 本地持久化)
- Source
- fykuang02
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 12 days ago
Readme
# 芙宁娜卡通大头桌宠 · Furina Desk Pet
为 **DeepSeek Harness Web GUI** 制作的可移植客户端插件:一只漂浮在页面上的
卡通大头芙宁娜桌宠,带点击特效与好感度系统。
> 纯展示层客户端插件:不注入任何服务、不发 Cordis 事件、不触碰模型请求;
> 卸载即还原(所有 DOM / CSS 写入都由 Cordis effect 销毁器收回)。
> ⚠️ **版权与免责声明**:本插件的芙宁娜图片素材系发布者**从网络公开资源
> 收集**,**无法核实其原始版权归属**;本项目**不涉及任何商业行为**,
> 仅作学习与同好分享。**如相关素材存在侵权,请联系发布者
> (提交 GitHub Issue 或联系仓库维护者),将立即删除相关内容。**
> 素材来源明细见 `NOTICE.md`。
## ✨ 特性
- **点击特效**:点击芙宁娜会弹跳 + 迸发爱心粒子 + “+1” 飘字 + 随机台词气泡;
约 8% 概率触发**金色暴击**(好感度 +3)。
- **好感度系统**:宠物下方常驻好感度条(❤ 数值 + 等级名 + 进度),
点击即可涨好感度,随等级成长并触发升级庆祝:
`初识 → 相识 → 熟悉 → 亲密 → 挚友 → 水神的宠儿`。
- **可拖拽**:按住芙宁娜拖动到任意位置(拖拽时切换惊讶表情),位置按
视口百分比持久化,窗口缩放自动钳制在可视区内。
- **右键菜单**:重置好感度(二次确认)/ 收起·展开好感条 / 暂时隐藏
(右下角“芙”按钮唤回)。
- **本地持久化**:好感度、位置、紧凑模式写入 localStorage
(键 `dsh-furina-desk-pet.v1`),刷新页面 / 跨标签页自动同步。
- **零运行时依赖**:两张透明 chibi 表情以 data URI 内联进 bundle,
不依赖任何外部图片 URL 或资源服务器。
- 支持键盘(Tab 聚焦后 Enter/空格 摸摸头)、prefers-reduced-motion 降级。
## 🖼 插图预览
插件内置的两张透明 chibi 表情(构建时以 data URI 内联进 bundle,
运行时不依赖任何外部图片;下方引用的是仓库内 `assets/source/` 原始文件,
GitHub 会直接渲染仓库内相对路径的图片):
<table>
<tr>
<td align="center" bgcolor="#eef4fb">
<img src="assets/source/furina-happy.webp" width="170" alt="芙宁娜 · 开心" />
<br /><sub>开心 · 常驻表情 / 点击时</sub>
</td>
<td align="center" bgcolor="#eef4fb">
<img src="assets/source/furina-shocked.webp" width="170" alt="芙宁娜 · 惊讶" />
<br /><sub>惊讶 · 拖拽时 / 升级庆祝时</sub>
</td>
</tr>
</table>
## 🚀 安装(移植到任意 DeepSeek Harness)
插件遵循 dsh 官方插件形态(dsh.bundle + dsh.client 双面声明),
可安装到任意一个 profile(下例为 web)。
### 方式一:自己一条命令搞定(推荐)
```sh
dsh plugin --profile web add "github:fykuang02/furina-desk-pet"
```
然后重启 web 界面(`dsh web`)并刷新浏览器页面即可。
### 方式二:让你的 DeepSeek Harness 帮你安装
如果你是 DeepSeek Harness 用户但不想自己敲命令,直接把下面这段话发给
**你自己的 harness**(Chat 或 Web 界面里的 AI 助手),它会自己完成
克隆、安装与验证:
> 请帮我安装 GitHub 上的芙宁娜桌宠插件(仓库 fykuang02/furina-desk-pet)
> 到我的 dsh web 界面:克隆该仓库,然后用
> `dsh plugin --profile web add` 或等效方式装进 web profile 并让它生效。
> 如果本机无法直连 GitHub,请按你环境里的网络方案(镜像/代理)克隆。
### 方式三:克隆后本地链接
```sh
git clone https://github.com/fykuang02/furina-desk-pet.git
dsh plugin --profile web add link:"<克隆目录>/furina-desk-pet"
```
### 只想下载源码(不安装插件)
```sh
git clone https://github.com/fykuang02/furina-desk-pet.git
# 或直接下载 ZIP:
# https://github.com/fykuang02/furina-desk-pet/archive/refs/heads/main.zip
```
> 说明:`dsh plugin add` 本质是向 profile 的 pnpm 依赖里加入本包;
> 本包通过 dsh.bundle.patch(cordis.patch.yml)自动把客户端条目
> `furina-desk-pet` 插入插件花名册,因此**安装即生效,卸载即还原**。
### 热更新(不重启 dsh,适用于已经跑着的实例)
如果 dsh web 已经在本机运行、不想重启进程:把本包用 junction/符号链接
挂进 profile 的 node_modules(例如
`<dsh-home>/profiles/web/node_modules/@dsh-external/dsh-client-ui-furina-desk-pet`),
然后在 `<dsh-home>/profiles/web/cordis.patch.yml` 末尾追加:
```yaml
- insert:
- id: furina-desk-pet
name: '@dsh-external/dsh-client-ui-furina-desk-pet'
```
profile 的补丁层由 Cordis HMR 监听,保存后数秒内生效,刷新浏览器即可。
(注意:这种方式与“方式 A/B”二选一,不要叠加使用,避免条目重复。)
### 卸载
```sh
dsh plugin --profile web remove "@dsh-external/dsh-client-ui-furina-desk-pet"
```
## 🖱 使用说明
| 操作 | 效果 |
| --- | --- |
| 单击芙宁娜 | 好感度 +1(暴击 +3)、爱心粒子、弹跳、台词气泡 |
| 按住拖动 | 移动位置(惊讶表情),松手记住位置 |
| 右键 | 打开菜单:重置好感度 / 收起好感条 / 暂时隐藏 |
| 连续点击 | 每次点击都涨好感度(粒子特效有 250ms 节流防刷屏) |
## 🖼 独立预览(无需 dsh)
直接用浏览器打开 `preview/demo.html` 即可体验(`preview/pet-standalone.js`
由构建脚本生成,内置模块加载协议的模拟层)。
## 🛠 开发与构建
零依赖构建链,不需要 npm install:
```sh
node build/build.mjs # 生成 lib/client.js、lib/index.js、preview/pet-standalone.js
node tests/smoke.mjs # Node 冒烟测试(自带极简 DOM shim,37 项断言)
```
- 桌宠全部逻辑在 `src/client/index.js`(原生 JS,无框架、无导入)。
- 换表情图:替换 `assets/source/furina-happy.webp` / `furina-shocked.webp`
后重新构建即可(建议 300×300 以上、透明背景的方形 webp/png)。
- 改台词、等级阈值、暴击率:编辑 `src/client/index.js` 顶部的常量表。
## 📁 目录结构
```
furina-desk-pet/
├── package.json # dsh.bundle.patch + dsh.client 声明
├── cordis.patch.yml # 把客户端条目插入插件花名册
├── src/
│ ├── index.js # 主机侧入口(无行为)
│ └── client/index.js # 桌宠全部客户端逻辑
├── build/build.mjs # 零依赖构建脚本(内联素材 + 包装 bundle)
├── lib/ # 构建产物(client.js / index.js,随仓库分发)
├── assets/source/ # 原始素材(透明 chibi 表情)
├── preview/ # 独立演示页(demo.html)
└── tests/ # 冒烟测试 + 极简 DOM shim
```
## ⚖ 许可与版权
- 插件**代码**:MIT License(见 `LICENSE`)。
- **素材**(`assets/source/` 两张 chibi 表情):系从**网络公开资源收集**
(原神维基 Genshin Impact Wiki),发布者**不确定其原始版权归属**;
来源与链接详见 `NOTICE.md`。角色“芙宁娜”及其形象版权归
**© miHoYo / HoYoverse** 所有。
- 本项目是**非商业同人分享**,不进行任何商业行为;请勿将本仓库用于商业用途。
- **如相关素材存在侵权,请联系发布者(提交 GitHub Issue 或联系仓库维护者),
发布者收到通知后将立即删除相关内容。**
Install
dsh plugin --profile web add github:fykuang02/furina-desk-pet
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-external-dsh-client-ui-furina-desk-pet from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.