前言¶
用 DeepSeek Harness(dsh)跑长时间任务时,注意力往往在编辑器和终端之间来回切。Web 界面里虽然能看到工具调用和流式输出,但「现在是在执行、在思考、在等你审批,还是已经结束了」这几件事,仍然要盯着会话内容自己判断。任务跑完如果窗口被挡住,也很容易错过。
dsh-kun-like-pet 把这件事做成右下角的桌面宠物:小坤会按智能体的工作状态切换动作,任务干净结束时再播一段「你干嘛~哎哟」。它解决的不是写代码本身,而是给当前 dsh 会话补一层可见、可听的状态反馈。
本文按社区目录页、GitHub 仓库 README / CHANGELOG / 源码,以及 DeepSeek Harness 官方仓库交叉核对后整理。目录站点是独立社区项目,与 DeepSeek、幻方没有从属或背书关系;DeepSeek Harness 本身采用「一切皆插件」架构,目前仍处于开发者预览阶段。
这是什么¶
dsh-kun-like-pet 是一款趣味类 DeepSeek Harness 插件,由 liyupi 维护,代码以 MIT 许可证开源,主要语言是 JavaScript。社区目录于 2026-08-15 收录,仓库创建于 2026-08-14。截至 2026-08-17,GitHub 显示 47 颗星(目录页收录时显示为 26)。
一句话定位:它在 DSH Web 界面右下角放一只小坤桌宠,轮询 Agent 的 running / idle 状态,再配合工具执行、审批和出错事件,切换 9 种动作;任务完成时由宿主进程播放完成音。
仓库 README 写明,桌宠以 DSH 动态插件 形式开发并实测(cordis_define),分成 Host 半和 Client 半:
- Host(
src/host.js):读本地精灵图和语音、注册 HTTP 路由、跑状态机、用系统命令播完成音、提供pet-stateRPC 和kun_pet_debug工具 - Client(
src/client.js):注入shell.overlay,在右下角渲染动画,支持拖动和点击
当前版本在 CHANGELOG 中记为 v5。代码版本号在 package.json 里是 1.0.0。
核心功能¶
9 种状态动画¶
素材完全沿用 Codex 桌宠精灵图契约:一张 1536×1872 的 WebP,网格是 8 列 × 9 行,每格 192×208。动画靠 CSS background-position 取帧,没有另外重绘。仓库里的 assets/spritesheet.webp 和 docs/SPRITESHEET-CONTRACT.md 对行列约定写得很清楚。
宿主状态机输出 mode,客户端映射到图集行。仓库 README 给出的对应关系如下:
| Agent 工作状态 | 桌宠动作 | 气泡文案 |
|---|---|---|
| 工作中(有工具在执行) | 专注干活(第 7 行) | 努力工作中… |
| 回合中但空闲 | 思考循环(第 8 行) | 思考中… |
| 等待用户回复 / 审批 | 期待等待(第 6 行) | 在等你回复哦~ |
| 出错 | 难过低落(第 5 行) | 呜…出错了 (._.) |
| 空闲 | 呼吸待机(第 0 行) | 休息中~ 有事叫我 |
| 任务完成 | 挥手 + 跳跃庆祝(第 3/4 行交替),并播放系统音 | 完成啦!你干嘛~哎哟 |
| 拖动 | 跑步(第 1/2 行,方向跟随) | 呜哇~ 别拽我! |
| 点击 | 挥手(约 2.4 秒) | 诶嘿~ |
可以拖着它在窗口里跑,点击会挥手打招呼。点击互动的声音走浏览器 Audio;任务完成的声音不走浏览器,避免点一下响两次。
用轮询感知 Agent 状态¶
Host 默认每 500ms 轮询一次 agents 服务,读取每个 Agent 的 status(running / idle)。工作、思考、等待、出错、空闲这五种模式,再叠上 tools/execute、approval/request、agent/request-error 事件一起推导。
CHANGELOG v3 / v4 记录了为什么不用纯事件监听:作者用 internal/dispatch 探针统计过 831 次总线事件,其中 agent/status、agent/turn-stopping 这类状态事件为 0。动态插件所在总线和这些事件的分发路径是隔离的,只监听事件会永远等不到「任务完成」。轮询 agents 服务是仓库里写明的跨部署方案。
v5 把庆祝条件放宽为:任意 Agent 干净结束回合(running → idle),此时没有其他 Agent 在跑,也没有在等用户输入。庆祝进行中不会二次发声。
完成音走宿主进程¶
任务完成时,Host 通过 shell 服务执行系统播放命令,默认是 macOS 的 afplay。README 写明:任何窗口、任何会话完成任务,本机都会响,和浏览器是否静音无关。
Windows / Linux 需要改 playCommand。仓库给出的对应写法是:
- Windows:
powershell -c (New-Object Media.SoundPlayer '…').PlaySync() - Linux:
ffplay -nodisp -autoexit '…'
调试工具 kun_pet_debug¶
Host 注册了一个诊断工具 kun_pet_debug,用来查看状态机内部计数和轮询健康度,例如当前 mode、庆祝次数、工具执行计数、轮询次数、最近一次播放错误。README 写明它只用于排查桌宠行为,不是日常对话工具。
安装与启用¶
社区目录页给出的安装命令是:
dsh plugin add github:liyupi/dsh-kun-like-pet
如需可复现安装,目录页建议固定 commit 哈希。当前 main 最新提交为 87bb6e1762618dd7727d285ffeeadd86a3799425(2026-08-14):
dsh plugin add github:liyupi/dsh-kun-like-pet#87bb6e1762618dd7727d285ffeeadd86a3799425
指定 profile 时,官方文档的写法是 dsh plugin --profile <name> add github:owner/repo。
有两点需要分开看。目录页把这条 dsh plugin add 当作通用安装入口;仓库 README 则把 已实测 的路径写成动态插件:用 cordis_define 注入 Host / Client 代码,再用 cordis_run 激活。当前 package.json 只有 test 脚本,没有 prepare,也没有声明 dsh 组合包字段。如果按目录命令装完后右下角没有出现桌宠,应按下面的 README 步骤走动态插件安装。
方式一:动态插件(仓库推荐,已实测)¶
- 克隆仓库:
git clone https://github.com/liyupi/dsh-kun-like-pet.git
- 修改
src/host.js顶部的CONFIG。仓库里的默认路径指向维护者本机(/Users/yupi/.codex/pets/...和~/Downloads/你干嘛哎呦.mp3),换机器后必须改成自己的绝对路径。README 安装示例是指向仓库内素材:
const CONFIG = {
spritePath: '/你的/路径/dsh-kun-like-pet/assets/spritesheet.webp',
voicePath: '/你的/路径/dsh-kun-like-pet/assets/voice.mp3',
// macOS 默认用 afplay;Windows / Linux 请改成对应播放命令
playCommand: (path) => "afplay '" + path.replace(/'/g, "'\\''") + "'",
}
- 生成
cordis_define载荷:
node scripts/build-kunpet-package.mjs -
输出是一份 JSON。kind: "new" 表示创建新插件,后续更新用 kind: "existing" 并带上 pluginId。载荷结构如下:
{
"plugin": { "kind": "new", "idPrefix": "kunpet" },
"name": "Kun Like 桌宠",
"purpose": "在 Web 界面右下角显示 Kun Like 桌宠,随 Agent 工作状态切换动作,任务完成时播放「你干嘛~哎哟」语音。",
"code": { "host": "<src/host.js 内容>", "client": "<src/client.js 内容>" }
}
- 把这份 JSON 交给 DSH 会话里的
cordis_define工具(也可以让 Agent 代为执行),再用cordis_run激活。Web 界面右下角应出现桌宠。
安装前可用仓库自带脚本做完整性校验:
node scripts/validate.mjs
它会检查精灵图是否为合法 WebP、尺寸是否为 1536×1872,以及 Host / Client 是否符合动态插件格式。
方式二:不装 DSH,只预览动画¶
打开 demo/index.html 即可查看 9 种动画,并试用拖动和点击。README 建议起一个静态服务器,例如:
npx serve .
或:
python3 -m http.server
典型用法¶
装好并激活后,不需要额外斜杠命令。桌宠会跟当前会话里的 Agent 走:
- 给 Agent 派一个会调工具的任务(写文件、跑命令都可以)。右下角应切到「努力工作中…」。
- 工具暂时停住、模型还在回合中时,切到「思考中…」。
- 出现审批或需要你回复时,切到「在等你回复哦~」。
- 回合干净结束(running → idle,且没有其他 Agent 在跑、没有等待输入),播放「你干嘛~哎哟」,动画在挥手和跳跃之间交替,持续约 4.8 秒(
celebrateMs默认4800)。 - 请求出错时,低落动画持续约 2.6 秒(
failedMs默认2600)。
所有可调项都在 src/host.js 顶部的 CONFIG:
| 配置 | 默认值(README 表格) | 说明 |
|---|---|---|
spritePath |
~/.codex/pets/kun-like/spritesheet.webp |
精灵图路径;源码里目前是维护者本机绝对路径,安装时请改 |
voicePath |
~/Downloads/你干嘛哎呦.mp3 |
完成音路径;同样请改到本地文件 |
playCommand |
afplay '…' |
系统播放命令 |
pollMs |
500 |
Agent 状态轮询间隔 |
celebrateMs |
4800 |
庆祝动画时长 |
failedMs |
2600 |
失败动画时长 |
改完 CONFIG 后需要重新生成载荷并再次 cordis_define。桌宠行为异常时,在会话里调用 kun_pet_debug,看 mode、pollCount、lastPlayError 是否在更新。
适用场景与注意事项¶
适合已经在用 DSH Web UI、希望给长时间任务加一层状态提示的人;也适合想看动态插件(Host / Client、shell.overlay、轮询 agents)怎么写的开发者。它不提供新的编码能力,不会加快任务本身。
使用前注意这些边界,都来自仓库 README、CHANGELOG 和源码:
- 动态插件是会话级绑定。 桌宠界面只注入到激活它的那一个会话页面。v5 起完成音由宿主进程播放,其他窗口或其他会话结束任务时本机也会响,但形象不会出现在所有窗口。README 写明:若要让桌宠出现在所有窗口,需要升级成宿主组合级插件包。
- 素材路径和播放命令必须按本机改。 源码默认是 macOS +
afplay。Windows / Linux 不改playCommand,完成音不会响。精灵图加载失败时,Client 会退回显示一个 emoji 占位。 - 完成音依赖
shell服务。 Host 用ctx.get('shell')执行播放命令;没有这个服务时,lastPlayError会记shell service unavailable。 - 素材版权和代码许可证不是一回事。 代码是 MIT。
assets/voice.mp3是网络公开的二创梗语音(含公众人物声音),版权归原作者,README 写明仅供个人学习交流,不要商用;商用需自行换成无版权素材。assets/spritesheet.webp是粉丝二创像素形象,沿用 Codex 桌宠契约。权利人如需删除,仓库请联系维护者。 - 插件以当前 dsh 进程的权限运行。 目录页和官方安装文档都提醒:安装时可能执行代码,且不在 Agent 沙箱内。安装前应检查源代码仓库和许可证;需要可复现安装时,固定 commit 哈希。只对源码可信的包授权。
小结¶
dsh-kun-like-pet 把 Agent 的工作、思考、等待、出错和完成,映射成右下角小坤的 9 种动作,并用宿主进程播放完成音。它是社区趣味插件,不是官方应用商店里的产品。目录页的通用安装命令是 dsh plugin add github:liyupi/dsh-kun-like-pet;仓库当前实测路径是改 CONFIG 后走 cordis_define / cordis_run。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-kun-like-pet/
GitHub:https://github.com/liyupi/dsh-kun-like-pet