dsh-pet
PC2005-cloud/dsh-petDSH Web UI 桌面宠物,Windows / macOS / Linux 三端可用:浏览器浮层或透明置顶桌面窗口,106 个透明动画、带挤压与粒子的甩抛反弹物理、随会话事件实时联动的工作状态气泡、碎碎念与带持久记忆的对话、余额展示、表情包配图、多开同屏,并支持直接放入的自定义动画与宠物种类(pet pack)。
DSH Web 界面的桌宠插件:可拖拽的像素猫,带番茄闹钟、经验等级与 30 条可解锁的托托事实。
English | 中文
一只名叫**托托(Toto)**的桌宠,住在 DeepSeek Harness 的 Web 界面里。
形象完全来自 assets/ 目录的自定义图片(透明 PNG 立绘或序列帧动画);
没有图片资源时托托不会显示。零依赖、零构建,像皮肤一样即装即用。
![放入 assets/ 图片即可定义托托的外观;无资源时不显示]
idle-0.png…连续帧默认约 4 fps 循环(240ms/帧,设置页可调),或单帧 idle.png 静态totoTheCat/
├── package.json # 插件清单:dsh.bundle.patch + dsh.client.platform=web
├── cordis.patch.yml # patch 层:把本包作为一行插件挂进 web profile
├── index.js # host(Node)半边 —— assets 静态路由 + /state 进度路由
├── client.js # browser 半边 —— 托托本体 + 番茄闹钟/等级/30个事实
├── assets/ # 外观资源 + 事实文档(发布包含)
│ ├── idle-0.png… # 示例帧动画
│ └── 有关托托的30个事实.md
├── tools/
│ └── slice-frames.ps1 # 长图切帧工具
├── dev/ # 开发期文件(画师源图/旧版备份,不发布)
├── README.md # 本文档
└── README.en.md
$DSH_HOME/profiles/<name>/package.json 的 dsh.profile.bundles 里。package.json 声明了
dsh.bundle.patch,dsh plugin 安装后就会自动把它加入 profile 的层栈,
该 patch 文件(cordis.patch.yml)在 profile 启动时被合成进 Cordis 配置。dsh.client.platform: "web" + exports["./client"] 声明,
由 dsh-client-modules 服务加载,通过 Slot(如 shell.overlay、
settings.section)把 UI 挂进界面。本仓库同时也是一个完整的、可直接照抄的最小插件模板。参考实现:
@deepseek-ai/dsh的 web profile 里已装的cyber-particle插件 (粒子背景),本插件的结构与其一致。
dsh plugin --profile web add toto-the-cat
dsh web # 重启 web 服务使新的 bundle 生效
用 link: 协议安装,profile 的 node_modules 里会放一个指向本仓库的
链接,改完代码重启 dsh web 即可看到新效果,无需反复重新安装:
cd D:\WORK\Project\totoTheCat
dsh plugin --profile web add link:D:\WORK\Project\totoTheCat
dsh web
dsh plugin --profile web add D:\WORK\Project\totoTheCat
dsh web
dsh plugin --profile web remove toto-the-cat
dsh web
卸载不会删除经验进度文件
$DSH_HOME/toto-the-cat-state.json, 重新安装后进度仍在(如需彻底清除,手动删除该文件即可)。
dsh web)。host 半边
依赖 webServer 服务、浏览器半边依赖 shell.overlay / settings.section
槽位,headless 等其它 profile 下本插件不生效(也不影响它们)。dsh web:profile 的 bundle 层在启动时合成,新增或
更新插件后重启才生效。$DSH_HOME/toto-the-cat-state.json
(DSH_HOME 未设置时回退 ~/.dsh),需要该目录可写。assets/idle-0..3.png);替换
外观见自定义外观。client.js(浏览器侧)或 index.js(host 侧);node --check client.js 做语法自检;dsh web(或让 DSH 的 HMR 生效)观察效果。提示:
dsh plugin add会运行 pnpm 并自动把包名写进dsh.profile.bundles(通过检查dsh.bundle声明),无需手动编辑 profile 的 package.json。
托托没有内置形象——外观完全由你在 assets/ 目录提供的图片决定:
没有图片则托托不显示(设置页会提示原因)。在 assets/ 放入以下资源即可:
| 用途 | 文件 | 说明 |
|---|---|---|
| 单帧立绘 | assets/idle.png | 静态显示 |
| 序列帧动画(推荐) | assets/idle-0.png、idle-1.png、… | 默认约 4 fps 循环播放(设置页可调速) |
.png 后缀文件名,
WebP/JPG 等不会被识别dsh web;删除文件则托托不再显示
资源由 host 半边的 /toto-the-cat/assets/* 静态路由供给,浏览器侧启动时自动探测;探测完成前页面不会显示任何占位形象。工作时长(分钟)× 1 经验;经验由
host 半边持久化到 $DSH_HOME/toto-the-cat-state.json,Chrome / Edge /
多标签页共享同一份进度assets/有关托托的30个事实.md 运行时
加载解析(格式:1. 标题: 内容,改文档刷新即生效,无需改代码);每条
事实含标题 + 内容两个字段,模块内只显示标题列表,点击标题展开详细
内容;未解锁的显示「???」(第 N 条在 L = N+1 级解锁)。
第 30 级同时解锁第 30 条事实与「作者后记」。升级时屏幕下方弹出
提示,告知解锁了哪条新事实。文档缺失/解析失败时回退占位符。| 参数 | 默认值 | 说明 |
|---|---|---|
| 显示托托 | 开 | 彻底隐藏/显示桌宠(托托右上角 × 可快速隐藏) |
| 大小 | 0.9 | 0.6–1.8 倍缩放(默认画面约 180×225 px) |
| 动画 | 开 | 关闭后渲染静态帧(也尊重系统减少动态效果) |
| 动画速度 | 240ms | 帧间隔 120–400ms,左快右慢 |
| 像素渲染 | 开 | 最近邻缩放,像素画任意尺寸都锐利;非像素图可关闭 |
| 位置 | 右下角 | 拖拽调整,设置页可一键复位 |
界面偏好与位置保存在浏览器 localStorage(键 toto-the-cat:config);
经验进度在 host 侧(见上)。
托托目前是纯前端宠物;后续想让它「感知」你的工作状态,可从这几处入手:
index.js 注释里有事件清单):
agent/status、subagent/start、subagent/end、goal/changed、
tools/change、agent-preset/selected 等;harness.handle(method, fn) 注册,
浏览器侧用 host.call(method, args) 调用(JSON 双向,见
cordis-plugin-development skill 的「Call Host from Client」一节);idle-N.png)或在 client.js 里增加
状态(如 sleeping、excited 时的不同帧组)即可;dsh web;确认
dsh web --dump-config 里有 toto-the-cat 行。/toto-the-cat/state 由 host 半边
注册,新增该路由后必须重启 dsh web;重启前经验只保存在 localStorage
兜底(跨浏览器不共享)。进度文件位于 $DSH_HOME/toto-the-cat-state.json。localStorage.removeItem('toto-the-cat:config') 后刷新。settings.section 槽位是否被其他
插件整体替换(Slots.listSubTree 可查)。dsh web,然后直接在浏览器
访问 http://127.0.0.1:3080/toto-the-cat/assets/idle-0.png 自测:
返回图片 → 正常;返回 HTML 页面 → host 半边未激活(资产路由未注册),
检查终端里 toto-the-cat 插件行是否有报错。dsh plugin --profile web remove toto-the-cat 后重启。MIT