dsh-pet-in-frame

DeepSeek Harness (DSH) 的插件生态支持开发者通过插件扩展 Web 界面的功能。在 Web 界面操作智能体时,代理的内部状态(如思考、搜索、运行命令)往往难以直观感知。dsh-pet-in-frame 是一个插件,它将一个桌面宠物悬浮在 Web GUI 的角落,并跟随智能体的状态切换姿态。

这是一个单包插件,由 HarmlessFunny 维护。它将代理的生命周期状态映射为可视化的动画或静态图片,解决了 Web 界面反馈抽象、难以实时监控工具调用进度的问题。

核心功能

该插件通过监听代理的生命周期事件来控制宠物姿态。

  • 状态响应:宠物会根据智能体当前的动作切换姿态,包括 think(思考)、search(搜索)、learn(学习)、read(阅读)、bash(命令行)、edit(编辑)、plan(规划)、ask(提问)、subagent(子代理)、cordis(服务调用)、permission(权限)、error(错误)、idle(空闲)和 sleep(睡眠)。
  • 子代理隔离与指示器:只有主代理的活动会驱动宠物的姿态。当子代理运行时,宠物图像内部会显示一个徽章指示器。来自子代理的工具调用或错误事件不会影响主代理的状态。
  • 命令徽章:当主代理运行前台 bash 或 pwsh 工具时,宠物切换至命令姿态,并在图像内固定显示对应的徽章(如 bash_comp 或 pwsh_comp)。
  • 后台作业跟踪:支持对后台运行的 bash 或 pwsh 命令进行作业跟踪。命令成功、失败或退出时,宠物会根据状态更新显示。
  • 交互与性能:客户端每 250 毫秒轮询一次状态,姿态切换延迟约 0.25 秒。支持拖拽(带视口限制)、悬停缩放(100-320px)、点击查看气泡、隐藏和恢复。支持热重载,修改图片或 manifest.json 后约 3-4 秒内生效。
  • 无构建步骤:基于纯 JavaScript 实现,无需额外构建配置。

安装与启用

安装前需确保已运行 dsh web profile,且系统中有 pnpm。

安装命令:

dsh plugin --profile web add dsh-pet-in-frame

安装完成后,必须重启 dsh web 进程,新的插件条目才会加载。插件的 cordis.patch.yml 会自动插入加载行,无需手动编辑 cordis.yml。

配置与使用

资源目录配置

图片资源默认位于插件包的 assets/ 目录。也可通过环境变量 DSH_PET_ASSETS 或加载器的 config.assetsDir 指定其他路径。

约定模式(零配置)

将图片文件放置在 assets/ 目录下,文件名需与动作名一致(扩展名支持 png/jpg/jpeg/gif/webp/svg)。

assets/
├── default.png   # 空闲时的默认姿态
├── think.png     # 思考状态
├── search.png    # 搜索或阅读状态
├── bash.png      # 命令执行状态(可选)

Manifest 配置(显式控制)

若需更精细的控制或帧动画,可创建 manifest.json:

{
  "default": "default.png",
  "think": { "imgs": ["think1.png", "think2.png"], "delay": 1000 },
  "sleep": { "imgs": ["sleep1.png", "sleep2.png"], "delay": 500 },
  "bash": "bash.png"
}

注意事项

  • 后台作业跟踪:若要支持后台命令的作业跟踪,需要加载器实现 ctx.jobs.onJobDone 接口。
  • 权限:插件以当前 dsh 进程的权限运行,使用前请检查源码与许可证(MIT)。
  • 子代理行为:Shell 调用若发生在子代理内部,不会触发命令徽章;只有主代理的工具调用才会驱动宠物姿态。

总结

dsh-pet-in-frame 通过简单的静态图片或帧动画,为 DSH 的 Web 界面提供了直观的代理状态反馈。它通过约定优于配置的方式降低了使用门槛,同时支持热重载和丰富的交互,适合需要在开发过程中实时监控智能体行为的场景。

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

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

小夜