unipet-dsh:DSH 与 UniPet 状态联动插件

前言

DeepSeek Harness (DSH) 负责编排智能体的运行与工具调用,而 UniPet 是一个运行在桌面上的宠物进程。二者之间缺乏直接的交互接口。unipet-dsh 插件填补了这个空白,它监听 DSH 的 agent/session 生命周期事件,将思考、工具执行、等待审批或失败等状态,通过 HTTP API 推送给本地 UniPet 宠物,使其状态与 AI 的实际运行情况保持同步。

插件概览

  • 名称:unipet-dsh
  • 维护者:ztyhehe
  • 许可:MIT
  • 定位:工作流插件,负责 DSH 与 UniPet 的状态桥接。

核心功能

  • 监听 DSH agent/session 的生命周期事件。
  • 实时将状态推送到本地 UniPet 宠物。
  • 支持状态映射(thinking, waiting, failed, review 等)。
  • 宠物不在线时自动执行 unipet start 拉起。
  • 定期进行健康探测,断线期间停止推送,恢复后自动回 idle。
  • 对高频事件进行去抖动处理,并支持失败语义识别。

安装与启用

在 DSH 的 web profile 环境下执行以下命令进行安装:

cd ~/.dsh && dsh plugin --profile web add git+https://github.com/ztyhehe/unipet-dsh.git

安装完成后,重启 dsh web 服务即可生效。

状态映射

插件会将 DSH 的特定事件映射为 UniPet 的状态,具体对应关系如下:

DSH 事件 UniPet 状态 气泡文案
turn/start running Thinking…
tool/call running Editing code / Running command / Searching / Delegating
approval/asked waiting Waiting for your approval
ask/question waiting Waiting for your answer
tool/result 失败 / agent/error failed Task failed
agent/status idle review Done - ready for review(8s 后自动复位)

配置说明

默认配置即可满足基本使用。如需调整,可在 profile 的 cordis.patch.yml 中覆盖插件的 config 字段。

  • host / port:UniPet 的 HTTP 地址与端口,默认 127.0.0.1:8768。
  • source:事件来源标识,默认 dsh。
  • autoStart:宠物不在线时尝试拉起,默认 true。
  • debounceMs:同类状态的最小发送间隔(去抖窗口),默认 400ms。
  • healthIntervalMs:宠物健康探测周期,默认 30000ms。
  • aggregate:多 agent 聚合策略,默认 true。
  • softFail:扩展语义失败识别,默认 true。

注意事项与限制

  • 本插件为纯 host 侧插件,不包含客户端代码,仅访问本机回环地址,不外发任何数据。
  • 卸载前需手动清理定时器与未发出的去抖状态。
  • 若 cordis.patch.yml 中存在旧的手工挂载行(name: './plugins/unipet-dsh/index.js'),请务必删除该条 insert,否则可能导致双实例重复推送。

验证与故障排除

若日志中出现 push failed: request timeout,但 UniPet 明显在运行,这可能是旧版本误报。v0.2.0 已修复此问题(通过消费 HTTP 响应避免 socket 空闲超时)。确保完全重启 dsh web 后再观察。

可通过以下命令手动验证推送链路,确认 UniPet 正常接收:

curl -sS -m 5 -w "\nHTTP=%{http_code} total=%{time_total}s\n" \
  -X POST http://127.0.0.1:8768/api/pet/events \
  -H 'Content-Type: application/json' \
  --data '{"source":"dsh","state":"idle","message":"DSH ready","action":"update"}'

短结尾

通过上述配置,DSH 的运行状态将实时反馈在桌面宠物上。更多细节可查阅项目目录页或源码。

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

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

小夜