dsh-answer-pet:DSH Web 可扩展回答状态宠物框架

前言

在 DeepSeek Harness(DSH)Web 界面里跑多会话智能体时,常见问题是:模型正在思考、流式输出还是调用工具,页面上往往缺少统一、可读的反馈。刷新页面或切到别的标签页后,更难判断当前有哪些会话在跑、进度到哪一步。

dsh-answer-pet 面向这一场景:在 Web GUI 角落挂一只可拖拽的「回答状态宠物」,用动画和状态卡把会话进度、输出速率和模型执行轨迹可视化。外观通过声明式 PetTheme v1 与进度核心解耦,默认蓝鲸,也内置橘猫与银渐层猫主题。

这是什么

dsh-answer-pet 是 DSH Web bundle 插件,由 Nanki-nn 维护,当前版本 0.6.0,MIT 许可证。插件分 Node half 与浏览器 client:前者监听 session/event 维护进度与轨迹,后者渲染宠物、状态卡和交互。

目录页:SkillHub - dsh-answer-pet
源码:github.com/Nanki-nn/dsh-answer-pet

核心功能

可扩展宠物主题

主题通过 PetTheme v1 契约定义 SVG、动画、宽高比和阶段文案,与回答进度逻辑分离。当前内置三个可信主题,随插件构建加载,不执行第三方任意 JavaScript,也不注入未经清理的外部 SVG。

主题 id 名称 说明
blue-whale 蓝鲸 默认主题
orange-cat 橘猫 PetTheme v1 示例
silver-shaded-cat 银渐层猫 构建时注入内嵌 PNG,不加载外部图片

未知主题 id 会安全回退到 blue-whale。自定义主题开发见仓库内 docs/PET_THEME.md

回答进度与状态卡

插件按 DSH 会话事件驱动阶段机,实时映射到宠物动画和进度百分比:

阶段 主题接口 状态卡进度
空闲 idle 不显示运行会话卡
turn/start turn 2%
思考(step/start think 5% → 10%
输出(assistant/chunk stream 10% → 90%
工具(tool/call tool 冻结当前进度
完成(turn/end done 100%

进度优先使用 assistant/chunkusage;有 maxTokens 时按 outputTokens / maxTokens 填充,否则用饱和曲线估算,同一回合内单调不减。状态卡还显示输出 token、token/s、耗时和文本片段。

多会话与模型轨迹

多个会话并发时,每个运行中的会话对应一张独立进度卡,纵向排列;无运行会话时不显示卡片,也不显示数量 0

每张卡内展示最近模型轨迹,例如分析任务、推理与规划、组织回答、工具调用及结果。工具失败在轨迹中标红。轨迹最多保留 6 条(卡片显示最近 4 条)。工具名会显示(如 readgrep),参数只从白名单字段提取简短摘要,不展示完整 Shell 命令或原始 JSON。

交互与数据更新

  • 拖拽宠物:位置持久化到 localStorage
  • 单击宠物:触发主题定义的眨眼,不移动位置。
  • 状态卡可折叠;收起后仅在存在运行会话时显示数量按钮。
  • 轮询与 SSE 结合:流式数据平滑更新,阶段切换即时刷新。

安装与启用

插件需安装到 Web profile。在终端执行:

dsh plugin --profile web add github:Nanki-nn/dsh-answer-pet

安装后停止并重新启动当前的 dsh web 进程,再刷新 Web GUI 页面。升级插件时重复同一条命令即可。

从旧版本升级到 0.6.0 后必须重启 dsh web;仅刷新浏览器不会加载新的配置 schema 和 Node half 逻辑。

典型用法

切换宠物主题

<dshHome>/settings.yamlanswer-pet 段配置主题。主题更新会在下一次配置刷新时挂载。

answer-pet:
  theme: silver-shaded-cat # blue-whale / orange-cat / silver-shaded-cat

调整尺寸、位置与显示项

同一 section 下可配置宠物尺寸、停靠角、透明度、轮询间隔,以及是否显示进度卡和状态气泡。

answer-pet:
  theme: blue-whale
  size: 96          # 宠物高度 px(48–200)
  corner: br        # 停靠角:br / bl / tr / tl
  opacity: 1        # 透明度(0.2–1)
  pollMs: 800       # /state 轮询间隔
  showBar: true     # 显示会话进度卡
  showBubble: true  # 显示状态气泡

恢复默认位置

若拖拽后想恢复宠物默认停靠位置,在 DSH Web 页面打开开发者工具执行:

localStorage.removeItem('answer-pet:pos')
location.reload()

同时恢复状态卡展开状态:

localStorage.removeItem('answer-pet:bar')
location.reload()

适用场景与注意

适合谁

  • 经常在 DSH Web 界面跑多会话智能体,需要一眼看到哪些会话在跑、当前阶段和工具调用情况。
  • 希望在角落放轻量状态指示,而不是反复切会话页查看日志。
  • 想基于 PetTheme v1 做自定义宠物主题(需阅读仓库开发指南并按构建流程接入)。

使用前注意

  • 插件以当前 dsh web 进程权限运行;安装前建议查看 源码 与 MIT 许可证,确认符合你的环境要求。
  • 模型轨迹依赖 Node half 监听 session/event;安装或升级后务必重启 dsh web,单独刷新页面只能更新浏览器端样式。
  • 进度百分比是插件根据阶段、token 和 maxTokens 估算的,多数模型接口不会提供精确完成百分比。
  • SkillHub 是 DSH 社区插件目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-answer-pet 把 DSH Web 里的回答过程拆成可读的宠物动画、多会话进度卡和模型轨迹时间线,并通过 PetTheme v1 把外观与核心逻辑分开。若你已在用 DSH Web 跑智能体,可按上文命令安装到 Web profile,重启服务后刷新页面即可试用。

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

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

小夜