用 dsh-kun-like-pet 给 DeepSeek Harness 加一只跟着 Agent 干活的小坤桌宠

前言

用 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-state RPC 和 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.webpdocs/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/executeapproval/requestagent/request-error 事件一起推导。

CHANGELOG v3 / v4 记录了为什么不用纯事件监听:作者用 internal/dispatch 探针统计过 831 次总线事件,其中 agent/statusagent/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 步骤走动态插件安装。

方式一:动态插件(仓库推荐,已实测)

  1. 克隆仓库:
git clone https://github.com/liyupi/dsh-kun-like-pet.git
  1. 修改 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, "'\\''") + "'",
}
  1. 生成 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 内容>" }
}
  1. 把这份 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 走:

  1. 给 Agent 派一个会调工具的任务(写文件、跑命令都可以)。右下角应切到「努力工作中…」。
  2. 工具暂时停住、模型还在回合中时,切到「思考中…」。
  3. 出现审批或需要你回复时,切到「在等你回复哦~」。
  4. 回合干净结束(running → idle,且没有其他 Agent 在跑、没有等待输入),播放「你干嘛~哎哟」,动画在挥手和跳跃之间交替,持续约 4.8 秒(celebrateMs 默认 4800)。
  5. 请求出错时,低落动画持续约 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,看 modepollCountlastPlayError 是否在更新。

适用场景与注意事项

适合已经在用 DSH Web UI、希望给长时间任务加一层状态提示的人;也适合想看动态插件(Host / Client、shell.overlay、轮询 agents)怎么写的开发者。它不提供新的编码能力,不会加快任务本身。

使用前注意这些边界,都来自仓库 README、CHANGELOG 和源码:

  1. 动态插件是会话级绑定。 桌宠界面只注入到激活它的那一个会话页面。v5 起完成音由宿主进程播放,其他窗口或其他会话结束任务时本机也会响,但形象不会出现在所有窗口。README 写明:若要让桌宠出现在所有窗口,需要升级成宿主组合级插件包。
  2. 素材路径和播放命令必须按本机改。 源码默认是 macOS + afplay。Windows / Linux 不改 playCommand,完成音不会响。精灵图加载失败时,Client 会退回显示一个 emoji 占位。
  3. 完成音依赖 shell 服务。 Host 用 ctx.get('shell') 执行播放命令;没有这个服务时,lastPlayError 会记 shell service unavailable
  4. 素材版权和代码许可证不是一回事。 代码是 MIT。assets/voice.mp3 是网络公开的二创梗语音(含公众人物声音),版权归原作者,README 写明仅供个人学习交流,不要商用;商用需自行换成无版权素材。assets/spritesheet.webp 是粉丝二创像素形象,沿用 Codex 桌宠契约。权利人如需删除,仓库请联系维护者。
  5. 插件以当前 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜