dsh-pet-progress:给桌面宠物补上任务进度气泡

前言

在 DSH 里用 dsh web pet 时,状态气泡通常只反映智能体「此刻」在做什么:思考、调工具、回合结束。长任务做到九成和刚起步,在宠物上看起来差不多,因为宠物本身没有「还剩多少」这一层信息。

dsh-pet-progress(维护者 Elefseus,社区分类:趣味换装)是挂在宠物旁边的进度伴侣插件:它读取会话里已有的 todo/write、goal/change 等事件,把完成比例折进宠物上方的气泡;没有待办或目标时,则退回一行纯活动说明,而不是硬凑百分比。

这是什么

一句话:把智能体写入会话的待办列表与目标轮次,汇总成宠物状态气泡里的进度(或当前活动行)。

插件通过宠物的插件接缝(announce、registerPanelAction、session/event)工作,属于 host-only,不向客户端单独打 bundle。

核心功能

气泡里会出现什么

待办或目标变化时,宠物上方会出现一行小气泡,典型情况如下(与 README 一致):

情况 气泡表现
待办列表,一项进行中 3/7 · 43%,标题为该项任务
多项同时进行 同上比例,列出最多三项任务名,其余用 +N
待办全部完成 绿色「任务全部完成」,约 10 秒后消失
长期目标、无待办 如 2/8 轮(目标轮次预算)
目标完成 绿色「目标完成」,短暂显示
目标被阻塞 显示阻塞原因,替代进度数字
既无待办也无目标 无百分比的一行:思考(正在思考)、最近输出(最近输出)、或当前工具用途(当前过程)

多会话同时打开时,最近活跃的会话占用气泡。常显气泡在最后一次进度更新约 30 秒后会淡出;「完成」类瞬间提示只宣布一次,并保留约 10 秒以免被下一轮输出立刻盖掉。

查看完整待办

气泡只有一行。在宠物面板上点 进度,完整待办列表会写入 dsh 日志,便于核对。

行为原则(README 中的 Good to know)

  • 不夸大进度:无法识别的待办状态按未完成计;若一整次写入都不可读,则保留上一次有效信息。
  • 不猜测任务名:只展示实际进行中的项(最多三个,每项截断至 32 字符),多项并行用 +N,不会随便挑一个冒充「当前工作」。
  • 只读会话事件算百分比,不按运行时长推断;没有待办/目标时显示活动行。
  • 无任务列表时,跟随模型流式输出与工具说明(例如 正在调用 read:progress.ts),而不只写「正在调工具」。

安装与启用

安装使用插件完整 GitHub URL(不要用 github:owner/repo 形式拼接):

dsh plugin add https://github.com/Elefseus/dsh-pet-progress

若使用命名 profile,将命令中的 add 前加上 profile 参数,例如:

dsh plugin --profile <name> add https://github.com/Elefseus/dsh-pet-progress

必须先安装 dsh web pet(peer:@linxin666/dsh-pet >=0.4.0)。未安装时插件仍会加载,但不会发布任何内容,dsh 日志里会有说明,不会因此崩溃。

安装后 重启 DSH:bundle 仅在启动时读取,不重启不会挂载。智能体下次写入待办或启动目标后,气泡会自动出现,无需单独开关。

环境要求

组件 版本
DSH >=0.1.7-rc.1
@linxin666/dsh-pet >=0.4.0(peer)
Node ^22.19.0 \|\| >=24.0.0

较旧的宠物若未暴露上述三条接缝,插件无法完整绑定。

可选配置

插件入口为 Cordis 风格的 apply:

apply(ctx, { enabled?: boolean, heartbeatMs?: number })

enabled: false 时不挂载任何内容;heartbeatMs 默认 10000。淡出时长与同时跟踪的会话数可在源码 src/progress.ts 中调整 PROGRESS_TTL_MS、MAX_TRACKED_SESSIONS(改后需按仓库说明重建 lib/)。

典型用法

对普通用户,流程就是:装好 pet → 装上本插件 → 重启 DSH → 照常让智能体写待办或 goal。无需额外 API 调用。

需要从代码侧理解时,插件使用与宠物相同的三条接缝:

接缝 用途
ctx.on('session/event', …) 读取 todo/write、goal/change 及回合/步骤/工具/消息事件
ctx.pet.announce(…) 发布进度气泡
ctx.pet.registerPanelAction(…) 注册面板上的「进度」按钮

服务侧可通过 ctx.pet 访问宠物能力。

更新已安装插件示例(README Development 节):

dsh plugin --profile desktop up dsh-pet-progress

固定 tag 安装:

dsh plugin --profile desktop add "https://github.com/Elefseus/dsh-pet-progress#<tag>"

本地开发可将 checkout 以 file: 依赖写入 profile 的 package.json,并在 dsh.profile.bundles 中加入 dsh-pet-progress,然后重启应用(路径含非 ASCII 时用 file:// URL)。

适用场景与注意

适合谁:已经在用 dsh web pet、希望长任务时一眼看到「做了多少」而不是只看当前一步的 DSH / 智能体开发者。

权限与安全:与其它 DSH 插件一样,本插件在 当前 dsh 进程权限 下运行,会订阅会话事件并向宠物 UI 发布内容。安装前请自行查看 源码 与 MIT 许可证,确认符合你的环境策略。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

生态背景:DSH 奉行「一切皆插件」;本仓库是宠物的伴生插件,通过接缝扩展而非直接改 pet 本体,设计说明见仓库 docs/DESIGN.md。

结尾

dsh-pet-progress 把会话里已有的待办与目标折成宠物上的进度气泡,并在没有列表时诚实地显示当前活动行,补上「还剩多少」这一维。若你已在用桌面宠物,一条官方安装命令加上重启即可试用。

  • 目录页:https://www.skillhub.cn/plugins/Elefseus/dsh-pet-progress
  • GitHub:https://github.com/Elefseus/dsh-pet-progress
羽毛球分组比赛记分
小程序二维码

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

Xiaoye