AI 插件dsh-plugin交互助手桌面应用【免费下载链接】dsh-petDSH 桌面宠物一行命令装好即用的透明动画小桌宠支持多开、大小位置随心配置还内置 DIY 素材链能用 AI 视频自造专属宠物项目地址https://gitcode.com/gh_mirrors/ds/dsh-pet点击查看免费下载dsh-pet 是一款一行命令装好即用的透明动画桌宠它最贴心的功能之一是工作状态联动桌宠会实时监听 DSH 的会话事件流把 agent 的思考、调工具、等确认、完成、出错等过程压缩成 6 档动画档位 气泡文案。本文拆解这套工作状态状态机的设计——事件如何映射到档位、多会话如何聚合以及goal 自动续跑时如何做到真收尾才庆祝。为什么桌宠要跟着会话干活平时你让 agent 跑一个长任务时界面滚动、日志刷屏很难一眼看出它现在是在想、在干、还是在等我确认。dsh-pet 的思路是不做日志解析也不调模型只监听 DSH 的session/event事件流用最轻的方式把当前活动工作状态聚合成一个快照前端按档位切换预置动画。开关就藏在宠物实例配置里pets[].workStatusEnabled true时host 侧开始聚合会话事件浏览器/桌面端轮询/state后按 counter 变化切动画。整个链路纯监听、零模型调用配置见 config.jsonc。6 档状态机6 类会话事件 → 6 个动画档位工作状态只有 6 个档位顺序固定与配置里animations.events.workStatus动画数组的索引严格一一对应注释里专门叮嘱勿在中间插入新档档位索引状态触发事件默认动画0thinkingturn/start回合开始工作状态-思考冒泡1workingtool/call工具调用工作状态-忙碌点按2resulttool/result工具返回工作状态-清点归档3waitingapproval/asked/ 问用户选择题工作状态-原地踱步张望4successturn/endreasoncompleted工作状态-雀跃庆祝5errorturn/endreasonerror/max-tokens/timeout工作状态-垂头叹气冒汗核心压缩逻辑就一个纯函数 reduceWorkStatus几行 switch 把所有事件收敛成档位或nulltool/call有个特例工具名是ask_user_questionagent 弹选择题问你时归为waiting——问你的题不是在干活turn/end的blocked回合被阻塞等确认归waiting其余 reason如aborted返回null含义是该会话回合已结束清空回空闲。这是当年这一步正在进行中哦永久挂死的根因修复——回合被打断后绝不能残留上一档。档位与索引常量在 shared/work-status.ts 中单一来源定义气泡文案则完全由配置驱动workStatusTexts 是一个二维数组每档放多个备选句播放时随机抽一句想换文案只改配置不用碰代码。goal 续跑判定真收尾才庆祝上面 6 档里有个隐藏矛盾turn/end completed只代表这一轮结束不等于整个任务完成。DSH 的 goal 机制会自动续跑一轮跑完如果目标没达成会带着source.kind goal的消息再开新一轮。如果每轮完成都播雀跃庆祝就会出现任务还没干完桌宠先撒花的尴尬。解法是给每个 turn 维护一对轻量标志WorkStatusTurnContext由 index.ts 在事件流里置位、在turn/start清零goalRound收到user/message且source.kind goal时置true——本轮属于自动续跑closing本轮出现过update_goal工具调用且action为complete/blocked时记录收尾动作解析函数 goalUpdateAction 对非法 JSON 一律按未收尾容错。终局判定收敛到 completedState 一个函数规则非常干净场景turn/end completed 时的档位语义非 goal 轮普通问答success一轮答完即成功原行为向后兼容goal 续跑·中间轮未收尾result本轮完成 ≠ 任务完成只播清点归档不庆祝收尾轮action: completesuccess整个目标达成才雀跃庆祝收尾轮action: blockederror目标被阻塞诚实表达沮丧而不是假装成功这套判定被单测逐条钉死见 work-status.test.ts中间轮 completed → result不庆祝收尾轮 complete → success / blocked → error。多会话聚合等待和错误优先浮出桌宠常同时挂着多个会话子代理、委派任务展示时不能先到先得。WorkStatusStore 按会话各记一条state task对外用 pickDisplayed 挑出优先级最高的一条展示waiting(60) error(50) working(40) thinking(30) result(25) success(20)这个优先级表里有两处刻意的取舍waiting永远最优先——只要有会话在等你确认其他一切动画都该让位你该去点那个批准按钮了result高于success——任何一个会话的进行中过渡态都不允许被别的会话的已完成盖过去这正是防中途庆祝在多会话下的兜底。另外两个细节让状态不会赖着不走同档去重同会话同状态不重复更新签名比对防刷屏状态或任务文案任一变化才刷新时间戳终态 60 秒窗口success/error展示约 60s 后自动清掉会话条目陈旧完成态不会在后续无关活动里反复浮上来若会话期间回到非终态到期的清理定时器会被取消。任务详情气泡正在做第几步也挂在会话条目上而非全局单值——条目一清文案随之消失不会再出现A 会话的状态配 B 会话的文案或任务结束后文案永久残留issue #59 的根治点详见 currentTaskFromTodo 的注释。渲染端轮询 counter 触发切档host 侧聚合结果写进/state的sections.workStatus浏览器与桌面端共用同一份纯逻辑 shared/work-status.tstoWorkStatus把不认识的状态安全归一成空闲形状非法直接跳过这一拍、不抛错前端按 counter 变化切到对应workStatus动画并弹出该档文案终态气泡 10 秒自动收起非终态常驻。小结把状态机做轻的三条经验dsh-pet 的工作状态联动给自研状态展示功能提供了不错的参考压缩而不是解析不碰日志和模型输出只靠 6 类事件 → 6 档的固定映射纯函数可单测天然稳定完成要分级区分本轮完成与整个任务完成goal 续跑的goalRound closing双标志只在真收尾时庆祝失败就诚实表达终态要有生命周期去重防刷屏、终态定时过期、文案与状态同生共死——状态机的下半身和上半身同样重要。想深入源码从 dsh-pet/src/host/work-status.ts 入手即可6 档压缩、goal 收尾判定、多会话聚合全在这个文件里配套的 work-status.test.ts 把每条边界行为都写成了用例。赞分享AI 插件dsh-plugin交互助手桌面应用【免费下载链接】dsh-petDSH 桌面宠物一行命令装好即用的透明动画小桌宠支持多开、大小位置随心配置还内置 DIY 素材链能用 AI 视频自造专属宠物项目地址https://gitcode.com/gh_mirrors/ds/dsh-pet点击查看免费下载相关推荐窗口一失焦它就弹通知dsh-pet 系统通知机制详解5种DSH会话事件全覆盖窗口一失焦它就弹通知dsh pet 系统通知机制详解5种DSH会话事件全覆盖 dsh pet 系统通知 是桌面宠物 dsh pet 里一个「独立于宠物本体AI 插件dsh-plugin交互助手桌面应用dsh-graded-mode分级模式 v0.0.1-rc1技术指南DSH 生态下的会话级两级任务协议与规格化门控状态机dsh graded mode分级模式 v0.0.1 rc1技术指南DSH 生态下的会话级两级任务协议与规格化门控状态机 本指南以 graded/ 子模块dsh-pluginAI 插件提示工程人工智能开发工具庆祝开源创新celebrate - 动态生成庆祝动图的工具庆祝开源创新 celebrate 动态生成庆祝动图的工具 在这个数字化的时代我们经常需要为各种线上活动增添一些趣味性。 是一个由 Continuation创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考