照着参考图做的宝蓝色像素小鲸鱼,趴在 DeepSeek Harness 输入框上沿,会用不同表情跟随智能体状态, 每 30 秒转身下潜巡游一次。
## 它会做什么 Deepy 只读取会话的实时状态,不持有任何智能体状态: | 状态 | 触发条件 | | --- | --- | | 空闲 | 会话已结束且没有待处理任务 | | 思考 | 助手正在推理或调用工具 | | 写回答 | 助手正在流式输出回答 | | 失败 | 最近一轮失败,或提示词发送失败 | | 完成 | 一轮刚刚成功结束 | | 调皮 | 你戳了它,或随机空闲行为 | | 等你操作 | 有审批或提问正在等你处理 | | 等你输入 | 你正在输入框里打字;会立刻停止巡游并看着你 | | 发呆 | 随机空闲行为 | | 睡着 | 两分钟没有活动,或随机小睡 | | 游动 | 每 30 秒的下潜巡游 | 鲸鱼保留参考图的身形比例:脑袋小巧、身体修长、分叉尾巴向右上翘,有两只小眼睛和腮红。 表情会随状态变化:等你输入时睁大眼睛,发呆时半眯眼,睡着时闭眼戴睡帽,完成时开心,调皮时眨眼。 **输入优先。** 只要输入框里的草稿变成非空文本,Deepy 就会取消巡游并切到期待表情。最后一次 编辑后还会继续看几秒,然后回到当前工作状态。 ### 30 秒巡游 每 30 秒,在没有工作或审批需要展示状态时,Deepy 会离开原位: 1. 用短暂的横向压缩和翻面过渡转成侧身,不是硬切。 2. 平缓地游到本次随机选中的位置,下潜点每次都不一样,不需要固定在最边上。 3. 水面先凭空鼓起一大团深蓝色的像素水,水团炸开、溅起水花之后,鲸鱼才倾斜着低头 扎进水里,慢慢沉到聊天框上沿以下。聊天框上沿就是海平面,身体被水面挡住消失, 不是整体淡出。 4. 在水下返回。**返程和去程时间完全一样长**(各 6 秒)。 5. 回到原位时,头和上半身先从海平面下升起来,带起第二团水花,再恢复侧身停靠姿势。 上浮和下沉都不使用透明度淡出。 当智能体正在思考、写回答、等你操作、显示失败,或你正在输入时,巡游会推迟,保证状态动画清晰。 两次巡游之间,空闲的 Deepy 会随机发呆、调皮或小睡,和工作状态混在一起。普通动作每次约两秒, 然后休息约两秒。画布使用 `image-rendering: pixelated`,任何尺寸下都保持像素锐利。 ### 名字和小播报 打开 **⚙ → 你的名字 / 鲸鱼的名字** 可以给两个角色改名,名字保存在本地。任务完成后,Deepy 会 随机挑一句完成播报显示在气泡里,例如: > {pet}已经帮{user}完成啦! 失败、等你操作、输入、被戳、发呆、睡着、巡游、浮出水面也都有各自的一组随机台词,并使用当前 保存的名字。 ## 安装 Deepy 是 Web UI 客户端插件,纯 ESM + Canvas 代码,没有构建步骤,不需要编译。 **要求:** DeepSeek Harness `>= 0.2.0 < 0.3.0`,并且使用 Web 界面(`dsh web` 或桌面版)。 下面的命令以 `web` profile 为例;桌面版请直接在 **设置 → 插件** 里操作(桌面版使用自己的 `desktop` profile)。 ### 从 GitHub 安装 ```sh dsh plugin --profile web add github:ChenWeiqi12345/dsh-deepy-pet ``` 桌面版:打开 **设置 → 插件 → 安装**,粘贴仓库地址。 ### 从本地目录安装 开发调试时最方便: ```sh git clone https://github.com/ChenWeiqi12345/dsh-deepy-pet.git dsh plugin --profile web add link:/本地路径/dsh-deepy-pet ``` ### 从压缩包安装 ```sh pnpm pack dsh plugin --profile web add ./dsh-deepy-pet-1.0.0.tgz ``` 安装完成后刷新 Web 页面即可看到鲸鱼。卸载: ```sh dsh plugin --profile web remove dsh-deepy-pet ``` ## 操作 - **拖动**:左右拖动让它沿着输入框上沿移动;巡游去程中抓住它会停在当前位置。 - **点击 / 轻触**:让它调皮一下。 - **⚙**:打开设置面板,可改你的名字、鲸鱼的名字、大小和位置。 - **方向键**微调位置;**+ / -** 调整大小;聚焦时按 **R** 复位大小和位置。 名字、大小和位置保存在浏览器本地存储(`deepy-pet.settings.v1`)中,刷新后自动恢复。复位不会 清空名字。 ## 实现说明 - 注册到 `conversation.input.dock`,顺序为 `30`,正好在输入框上方。 - 从插槽的标准 props 读取 `useSession`、`useSessionStatus` 和 `useChat`,并直接读取 owner 传入的 input 快照。 - 只用 `useChat` 区分「流式推理」和「流式回答」。 - 通过 owner 传入的 input 草稿和短时间窗口检测输入;草稿非空时停止巡游并显示期待表情。 - 巡游分为 React 管理的停靠位置和命令式 `requestAnimationFrame` 层;另有一条 `requestAnimationFrame` 绘制正面/侧面转身、下潜、水下返程和浮出水面。两条循环都不会触发 会话重渲染。 - 鲸鱼沿用参考图的侧视像素遮罩;转身用短暂的横向压缩和 CSS 翻面过渡衔接, 水花是独立的 CSS 像素层,不跟随画布移动。 - 所有界面元素使用 `--dsw-*` 主题变量;鲸鱼本身保持宝蓝色配色。 - 画布透明、没有卡片或面板背景,能自然融入深色输入区。 ## 隐私 没有网络请求、没有埋点、没有宿主侧服务。插件只读取会话插槽已经暴露的状态。 ## 许可证 [MIT](LICENSE)