- Início
- Plugins
- Só por diversão
- fanggao-pet
G
fanggao-pet
gavinff1990/fanggao-pet
A draggable square-cake mascot that runs while a turn is in progress, sleeps when it finishes, and gets angry on errors.
Instalar
dsh plugin --profile web add github:gavinff1990/fanggao-petREADME
方糕萌宠 · Fanggao Pet
一只会跟着 DeepSeek Harness 对话状态变化的方糕萌宠:对话进行时奔跑、完成时躺下睡觉、出错时生气。可鼠标任意拖拽,位置自动记忆。

特性
- 三态动画:由当前会话的
SessionSnapshot实时驱动状态 触发条件 形象 🏃 奔跑 running === true上下弹跳 + 双腿交替摆动 + 速度线 😴 睡觉 空闲 / 无报错 横躺、闭眼、头顶飘 Z z z😡 生气 lastAgentError/promptError/openError存在,或openState === 'error'竖眉、撇嘴、红脸、额头青筋脉冲 - 悬浮常驻:渲染在
shell.overlay帧级浮层,始终位于最上层,不占布局。 - 鼠标拖拽:按住可拖到屏幕任意位置,位置存入
localStorage,刷新后保留。 - 永不遮断操作:浮层本身 click-through,只有方糕本体响应指针事件。
- 纯 SVG + CSS 动画:矢量、任意分辨率清晰、体积小、跟随时序流畅。
安装
本插件是 DeepSeek Harness 的本地 bundle(@local/fanggao-pet):
- 克隆仓库到本地:
git clone https://github.com/gavinff1990/fanggao-pet.git - 在 Harness 中通过插件管理器安装该目录(绝对路径):
- 动作:
install_bundle - 目标:
<克隆目录的绝对路径>
- 动作:
- 插件会立即激活并出现在页面右下角(默认位置)。
安装/卸载时插件管理器会重新链接该 bundle;修改
client.js后重新安装即可热加载。
工作原理
- Host 半(
index.js)无需逻辑,只负责注册 bundle。 - Client 半(
client.js):- 注入
slots+sessions服务。 - 订阅
sessions.list找到当前主视图会话(retainedBy.mainView > 0)。 - 订阅该会话的
SessionFace(sessions.binding(id).session)读取SessionSnapshot,据此选出三种形态。 - 通过
ctx.slots.inject('shell.overlay', …)注册悬浮层条目,并用指针事件实现拖拽。
- 注入
文件结构
fanggao-pet/
├── package.json # bundle 清单(dsh.bundle.patch + dsh.client)
├── cordis.patch.yml # 插入 fanggao-pet 插件行
├── index.js # Host 半(空 apply)
├── client.js # Client 半:SVG 萌宠 + 状态 + 拖拽
├── icon.svg # 插件管理器中显示的图标
├── locale/{en,zh}.json # 插件标题/描述
└── docs/preview.png # 形态预览
自定义
- 颜色/造型:
client.js顶部的COLORS常量与runningPose/sleepingPose/angryPose三个函数。 - 拖拽记忆:
STORE_KEY(默认fanggao-pet.position)。 - 默认位置:
defaultPos()(默认右下角)。
FAQ / 排错
- 页面看不到方糕? 确认插件已启用,且当前在主界面;它是
shell.overlay条目,打开任意会话即可看到。 - 拖动没反应? 指针要落在方糕本体上;它只占约 88×88 的区域,其余浮层区域是 click-through。
- 状态不切换? 需要一个打开的会话;没有会话时默认显示睡觉。
- 想重置位置? 清除
localStorage键fanggao-pet.position后刷新。
许可
MIT,见 LICENSE。