{"_id":"@duke-dsh-plugins/dsh-whaleharbor-pet","name":"@duke-dsh-plugins/dsh-whaleharbor-pet","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@duke-dsh-plugins/dsh-whaleharbor-pet","version":"1.0.0","description":"鲸港 WhaleHarbor 大白鲸娘桌面窗宠：透明置顶浮窗，实时反映 DSH 空闲/繁忙/审批/子代理等工作状态。px-v42 拆件 + CSS 纸片人动画。","main":"index.js","exports":{".":"./index.js","./cordis.patch.yml":"./cordis.patch.yml","./package.json":"./package.json"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"keywords":["dsh","deepseek-harness","whaleharbor","desktop-pet","float-window","pixel-art"],"repository":{"type":"git","url":"git+https://github.com/MoonlitDropOfBlood/dsh-whale-pet.git"},"homepage":"https://github.com/MoonlitDropOfBlood/dsh-whale-pet#readme","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-whale-pet/issues"},"publishConfig":{"access":"public"},"author":{"name":"duke","email":"wwhbygx@sina.com","url":"dukebywwh / MoonlitDropOfBlood"},"license":"MIT","gitHead":"8e25b37023918ccb527456ec20bf27416512b3cb","_id":"@duke-dsh-plugins/dsh-whaleharbor-pet@1.0.0","_nodeVersion":"24.14.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-uq8rrHW0kspS4s8Nm08ZX1016aCWvrnMIcpYt7YiYBkbQH9Na/mX/tSkOSOnmlHUZGB/7Nmo5L0HHeiUp61c7g==","shasum":"2d45e02f0c1ef38ed6e3136cb0d1a1f9763ffcb8","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-whaleharbor-pet/-/dsh-whaleharbor-pet-1.0.0.tgz","fileCount":18,"unpackedSize":119041,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEk8LreFmVgEKCvsdPdXlJLimhWGSPWTzsigAQ06M3N+AiB3AphLH5LIx0Dx5nch1YvfzlRKv73fW94nHFy9VJwevw=="}]},"_npmUser":{"name":"dukebywwh","email":"wwhbygx@sina.com"},"directories":{},"maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-whaleharbor-pet_1.0.0_1788612493041_0.47740979102345604"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-05T12:48:12.852Z","1.0.0":"2026-09-05T12:48:13.186Z","modified":"2026-09-05T12:48:13.444Z"},"maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"description":"鲸港 WhaleHarbor 大白鲸娘桌面窗宠：透明置顶浮窗，实时反映 DSH 空闲/繁忙/审批/子代理等工作状态。px-v42 拆件 + CSS 纸片人动画。","homepage":"https://github.com/MoonlitDropOfBlood/dsh-whale-pet#readme","keywords":["dsh","deepseek-harness","whaleharbor","desktop-pet","float-window","pixel-art"],"repository":{"type":"git","url":"git+https://github.com/MoonlitDropOfBlood/dsh-whale-pet.git"},"author":{"name":"duke","email":"wwhbygx@sina.com","url":"dukebywwh / MoonlitDropOfBlood"},"bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-whale-pet/issues"},"license":"MIT","readme":"# dsh-whaleharbor-pet · 鲸娘桌宠\n\n鲸港 WhaleHarbor 的**大白鲸娘桌面窗宠**：一只透明、置顶、不抢焦点的悬浮小鲸娘，实时反映 DeepSeek Harness（DSH）的工作状态。\n\n形象采用 **px-v42 像素画拆件 + CSS 纸片人动画**：原画拆成 13 个零件（底座/眼×4/嘴×6/呆毛/汗滴），底座擦除与表情件重组误差为 **0 像素**，动作全部由 CSS keyframes 驱动（呼吸、眨眼、呆毛摇摆、汗滴、蹦跳、抖动），60fps、缩放无损。\n\n![鲸娘桌宠](docs/hero.png)\n\n## 状态表情\n\n![八种状态](docs/states.png)\n\n| 状态 | 触发 | 表现 |\n|---|---|---|\n| 空闲 A/B | 无任务 | 呼吸浮动 + 眨眼 + 呆毛摇摆；两种 idle 每 18s 随机轮换（B 有快速双眨和视线偷瞄）；每 9s 轮换闲扯台词 |\n| 忙碌 | 主 agent 运行 / 根工具执行 / 子代理 / 工作流 | 快速浮动 + 波浪嘴 + 汗滴滑落 + 冒泡，气泡显示当前工具名 |\n| 审批等待 | `approval/request`（主 agent） | 头顶红色 `!` 徽章 + O 嘴 + 歪呆毛 + 提示气泡 |\n| 提问等待 | `user-questions/request`（主 agent） | 头顶蓝色 `?` 徽章 + 瞳孔偏移 + 呆毛大摆 |\n| 出错 | `agent/error`（主 agent） | XX 眼 + 高频抖动 + 橙色 `✕` 徽章 8 秒 |\n| 完成庆祝 | 忙碌 → 空闲跳变 | 蹦跳三下 + ∩∩ 笑眼 + 开怀大笑 + 星星爱心 6 秒 |\n| 打盹 | 连续空闲 3 分钟 | 慢深呼吸 + 闭眼 + 画面变暗 + `Z z z` |\n| 子代理分身 | `subagent/start` 存活数 | 右下角小鲸鱼（最多 6 只） |\n\n气泡副栏实时统计：本次开机工具调用数、累计忙碌分钟、被戳次数。\n\n## 交互\n\n- **拖动**：按住鲸娘或空白处拖动（壳的 float-preload 实现，零页面协议）\n- **戳一戳**：点击鲸娘 → 压缩回弹动画 + 随机吐槽，计数上报\n- **右键**：原生菜单 —— 小号/中号/大号（重建浮窗，状态自动续上）、隐藏\n- **托盘菜单**（WhaleHarbor 托盘）：状态行 + 「显示/隐藏鲸娘」\n- **悬停**：显示状态气泡\n\n## 架构\n\n```\nDSH 核心进程（本插件 Host 半部，index.js）\n  │  监听 agent/status、tools/execute、approval/request、user-questions/request、\n  │  subagent/start|end、workflow/start|end、agent/error（subagent 按 session header 过滤）\n  │  聚合成 ≤2.5KB 状态快照\n  ▼\nRPC 桥  http://127.0.0.1:<随机端口>（DSH_DESKTOP_NOTIFY_PORT/_TOKEN，请求体上限 4KB）\n  │  float.window.create（url 模式：内联 html 超 4KB 会被静默断开，\n  │  页面与零件由插件本地服务器自取：/pet.html + /parts/*.png，路径白名单 404 兜底）\n  │  → float.window.state（1s 节流，变化才推）\n  │  float.window.menu（右键原生菜单）\n  ▼\nWhaleHarbor 壳：透明显示浮窗（floating 置顶 / focusable:false / 不进任务栏）\n  ▲  反向通道（插件自起 127.0.0.1 eventPort）\n  └── float.window.input（戳一戳）/ float.window.menu.click / float.window.closed\n```\n\n- 页面是一张零件叠加的 DOM：底座常驻，表情件按 mood class 切换透明度，动作全在 CSS keyframes（`translateY` 相对自身盒高，窗口三档尺寸自适应）。\n- 零件缺失（打包漏发 `parts/`）时自动退回占位鲸鱼，不白屏。\n- 桥不可达（纯浏览器/CLI 启动、旧壳、浮窗开关关闭）时**安静空转**，无任何副作用。\n- 卸载/HMR/核心退出时 `ctx.effect` 清理：`float.window.closeAll` + 托盘分区清除 + 事件服务器关闭。\n- 窗口是壳的资产：核心重启时代际清理，宠物不会变孤儿。\n\n## 安装\n\n```bash\ndsh plugin --profile web add @duke-dsh-plugins/dsh-whaleharbor-pet\n```\n\n> 国内网络请显式指定 `--registry=https://registry.npmjs.org`（本机默认 registry 常被镜像源覆盖）。\n\n装完**必须重启 DSH 核心**生效（桌面壳 Ctrl+Alt+R 或设置 → 核心 → 重启）。\n\n## 本地开发\n\n```bash\nnode --check index.js                  # 语法检查\nnode -e \"console.log(require('./index.js')._buildPetPage())\"   # 导出浮窗页面\n```\n\n页面通过插件事件服务器提供 `/pet.html` 与 `/parts/*.png`；开发时用任意静态服务器指向本目录即可预览（支持 `?mood=idle-a|idle-b|busy|nap|celebrate|approval|question|error` 钉死状态）。\n\n## 已知边界\n\n- 改大小 = 关窗重建（浮窗宽高创建即固定），位置回到默认右下角。\n- `float.window.state` 是替换最新值语义：页面刷新自动补发最新状态。\n- 每插件浮窗限额 3 / 全局 6；本插件只用 1。\n\n## License\n\n[MIT](LICENSE) © dukebywwh\n","readmeFilename":"README.md","_rev":"1-f073323ef45921f209d0255081f58894"}