Skip to content

Releases: MerZlin/dsh-pet-indesktop

v4.2.0

Choose a tag to compare

@github-actions github-actions released this 10 Sep 16:06

v4.2.0

v4.1.0 到 v4.2.0 的功能与修复完整汇总。包含自 v4.1.0 发布之后合并到主干的全部开发内容(PR #57/#64/#65/#68/#70/#71/#72/#73/#76/#79/#80/#82/#85/#86/#87/#90/#91/#93/#94/#96 及大量直推修复)。


📦 下载

发布构建由 tag 自动触发,产物生成后本 Release 会包含以下文件:

平台 变体 安装版 / 绿色版
Windows x64 WebM + Chat(AI 对话) dsh-pet-standalone-webm-chat-setup.exe / dsh-pet-standalone-webm-chat-portable.zip
Windows x64 WebM 无 Chat(纯桌宠) dsh-pet-standalone-webm-setup.exe / dsh-pet-standalone-webm-portable.zip
macOS arm64 WebM + Chat dsh-pet-standalone-webm-chat-macos-arm64.zip
macOS arm64 WebM 无 Chat dsh-pet-standalone-webm-macos-arm64.zip
Linux x86_64 WebM + Chat dsh-pet-standalone-webm-chat-linux-x86_64.zip
Linux x86_64 WebM 无 Chat dsh-pet-standalone-webm-linux-x86_64.zip

均为 onedir 形态:安装版与绿色版运行期都不解压、不产生临时缓存,启动快、卸载干净。GIF 变体自 v4.0.0 起停供。

⚠️ 升级说明

  • 直接覆盖安装或使用新版便携版即可;配置目录按变体独立,不影响旧版数据。
  • v4.0.0 以来的配置/会话数据会继续沿用,无需迁移;旧实验键(decode_broker_enabledclick_sound_paththrow_max_speedanimation_prewarm_enabled 等)自动清理/迁移,残留值无害。
  • 新开关大多默认关(灰度):单进程多开、边缘探头、省电模式、点击直连黄金回旋等需要先在设置中开启;单进程多开改动后需重启生效
  • 「清除子肥鱼」改为「退出子肥鱼」:只退出、不删除该子肥鱼的设置/会话/待办数据,下次生成原样恢复;操作不再弹确认框,结果写日志。
  • 多窗提醒行为变更:多开时「过程汇报 / 提醒 / 联动气泡」只在首个可见窗展示(此前每只桌宠各弹一遍);动画仍全窗扇出(多只一起表演保持不变)。单窗体验不受影响。

🚨 重要声明 / 已知问题

  • 系统通知功能仍未接入系统原生弹窗
    • AI 对话的“对话完成 / 生成失败 / 需要授权”目前只在聊天界面不在前台时用应用自绘的右下角提示气泡提醒(点击可跳回会话或打开 AI 设置),尚不能弹出 Windows 操作中心 toast / macOS 通知中心 / Linux 桌面通知。
    • 原因:Windows 下 QSystemTrayIcon.showMessage 的原生气泡在托盘图标被系统收进“隐藏的图标”区域时可能不弹出(v4.1.0 评估后弃用该通道);要真正进入 Windows 通知中心还需设置 AppUserModelID 并调用原生通知 API(WinRT),在 PyInstaller 冻结、多实例、绿色版与安装版并存下,打包身份与升级路径的验证成本高。macOS 系统通知需要用户授权且对签名打包的 .app 强依赖;Linux 桌面通知依赖各发行版 DBus/notify 服务,行为不一。
    • 三平台一致且可靠的原生通知列入后续待办;在此之前不把“系统通知”作为正式可用能力宣告。
  • 其它已知限制(详见 README):安装包/安装器未签名(SmartScreen / Gatekeeper 需手动放行);macOS 仅发布 Apple Silicon(arm64);Linux 仅 x86_64 + 需少量系统库、建议 X11;GIF 变体不再发布。

✨ v4.1.0 之后的新内容(v4.2.0 增量)

🎏 桌宠本体玩法

  • 黄金回旋:右键菜单新增「黄金回旋」入口(旧版 legacy 菜单与默认 modern 菜单都有);连点逐圈累计加速(700ms → ×0.82 → 200ms 下限);没有点击素材时也不再“只抬手不启动”。
  • 拖文件模拟吃掉:把文件拖到桌宠身上会播放吃动画并记录统计(不真实删除文件)。
  • 新动画素材:同步上游 9 个动画(工作状态×6 + 碎碎念×3),本地动画总数 97 → 106
  • 托盘与多窗子菜单「回到右下角」:会先取消探头姿态再移动,不再歪着被拖回去。

🕹️ 边缘交互、点击玩法与省电

  • 边缘探头 edge_probe_enabled(设置 → 桌宠行为 → 边缘探头):拖到屏幕左右边缘自动进入 ±45° 探头姿态(按旋转投影 bbox 计算露出量,常驻露出 0.55、点击拉直 0.82、数秒自动退回);探头激活时点击不播点击音效。
  • 撞飞彩蛋(被撞飞翻鱼头):探头激活状态下被撞,头部跟随速度方向整帧旋转(90+atan2(vy,vx));低速触碰边界/其它桌宠自动回正;阈值按实机反馈调到 780px/s;撞飞落地停稳 5s 后若静止在边缘会重新吸附(倒计时内拖拽作废)。
  • 点击触发黄金回旋 golden_spin_on_click + 子开关 点击回旋跳过动画 golden_spin_direct(设置 → 桌宠行为 → 点击反馈):点击动画播完自动接回旋;开启直连后点击直接回旋、跳过 Q 弹/点击素材,再点 130ms 内收尾当前圈并立即开下一圈。
  • 省电模式(原「闲置降帧」升级,设置 → 桌宠行为 → 动画与移动):闲置 30s+ 动画按半帧率呈现(24fps 素材 → 12fps 观感、时长不变)并停止后台动画预热,任何交互/Agent 忙碌立即回满。
  • 音乐自动唱歌 music_sing_enabled:检测到后台播放音乐时自动播唱歌动画,检测 timer 按需启停。
  • 拖拽合帧mouseMoveEvent 只记录最新目标、8ms 定时器消费(约 120Hz),碰撞提交维持 20Hz;拖拽/点击/菜单期间低优先级预热让路挂起。

💬 台词、气泡与提醒

  • 气泡配图大小可调 self_talk_image_scale(50–300%,默认 100,设置 → 桌宠行为 → 自言自语):标准气泡 220×140 目标框随缩放、呼吸气泡按 base_size;自言自语关闭时该行随从属行隐藏。
  • 图片目录预览抽屉:自言自语图片目录(桌宠行为)与彩蛋弹窗图片目录(外观 → 彩蛋入口)新增「预览」→ 右侧 3 列瀑布流缩略图(保留宽高比、512px 解码上限、文件名省略 + 全名 tooltip、空态文案、延迟解码)。
  • 台词模板(JSON)导入 / 导出 / 复制:一键导入弹窗文案模板;导出文档含 sources/displayHint/upstream 字段与脱敏隐私说明。
  • 台词模板 v2 渲染能力:预设台词支持 {payload.嵌套字段}{data.字段}{questions[0][label]}{count:02d} 等占位符(未知/缺失字段原样保留,只遍历 mapping/list、不暴露任意对象属性);预设台词不再展示原始 {callId}(用户看到“调用号是 call01oE3dtln…”没有信息量),占位符契约保留、自定义模板仍可用。
  • 表达风格 dialogue_mode(设置 → 桌宠行为 → 表达风格):内置「默认模式」「鲸鱼娘女仆模式」不可编辑,选「自定义台词」后可粘贴 JSON 导入。统一 Agent 联动相关提示气泡(状态/过程汇报/完成/审批/提问/错误/限流/卡住/循环检测)与余额气泡的说话方式;随机自言自语与点击台词在「桌宠行为 → 自言自语」中单独配置。
  • 待办提醒(PR #72,设置 → 桌宠行为 → 待办提醒):右键菜单「待办」面板增删改(带矢量图标);到期/提前提醒(todo_reminder_lead_minutes 可设,默认提前 5 分钟)、10 分钟宽限、一次性待办自动归档、错过宽限的提醒静默盖戳(醒来不轰炸);桌宠可见时气泡、否则走桌面通知(由 system_notifications_enabled 总门控,默认开);数据按实例落盘(todo_items[-instance].json,原子写)。
  • 会话保存原子化/异步化SessionStore.append_message(s) 在全局 io 锁内“读→追加→提交”原子完成,modern/legacy/quick chat 三前端与「看看屏幕」问答同步全部走原子路径——生成回复期间其它前端写入不再被整会话保存覆盖;不开聊天窗的识屏问答也会原子落盘;写盘入串行后台 worker(读穿 pending、诚实 flush/close、关闭屏障防双 writer、os.replace 遇瞬时 WinError 5 有界退避重试);Legacy 聊天时间戳改本地时区显示。

🎛️ 设置与菜单重构(PR #64

  • 七能力域侧栏:常规(含 macOS Dock 设置)、桌宠、互动、菜单、桌面组件、AI 与对话、自动化与联动;菜单域内含三个同级任务用页内 Tab(菜单编排 / 快捷启动 / 外观)。
  • 菜单编排(可配置右键菜单):左侧编辑、右侧实时预览。支持显隐勾选、移动到(子菜单/根)、新建子菜单、插入/删除分割线、更换别名(编辑器显示“别名(原名)”、运行时菜单只显别名)、图标覆盖(内置矢量 / none / 本地图片 PNG·JPG·WebP·BMP·GIF·TIFF ≤5MB,contain/cover 显示)、恢复默认名称/图标/布局、删除子菜单(二次确认,子项提升回根)。
    • 默认模板 modern-default-v1.json 内置显式分割线;配置缺失回默认、损坏/不支持的 schema 只保留「桌宠设置/退出」安全菜单;旧自定义树自动补入新默认 action(按最近模板兄弟锚点插入,不动现有顺序/显隐)。
    • 运行时能力判定:动作缺条件置灰 + tooltip;彩蛋关闭后节点保留原位显示「已停用」;无快捷应用时 quick_launch 置灰。
  • 快捷启动:设置内双行应用列表编辑(添加默认浏览器/选应用文件/移除);右键菜单「快捷启动」子菜单无项时恒出现并显示禁用占位「尚未配置快捷项」。
  • 外观/依赖显隐统一:菜单颜色主题成为设置窗口显式主题来源(开关/下拉/chevron/弹层明暗沿祖先链读取 settingsDark,选主题即时整页生效);ToggleSwitch 从属项统一「开显示/关隐藏」(灵动岛、彩蛋、碰撞、主动识屏、自言自语、半透明、Agent 音效等经审计);彩蛋入口标题/提示文字继承菜单前景色、悬停取主题 light_hover/dark_hover(深色主题下不再不可读)。
  • 三态响应式:1600 / 900 / 720px 断点(wide / medium / compact),窄宽隐藏「位置」列;125% 字体 + 极端中英文案矩阵逐页验收。
  • macOS 原生 Dock 右键菜单:显示桌宠 / 桌宠设置 / AI 对话 / 退出(setAsDockMenu),鼠标穿透后仍有稳定恢复入口。

👀 识屏与灵动岛

  • 识屏自我识别提示:看看屏幕与主动识屏的视觉请求会注入角色显示名(pet_name)——模型知道画面角落的桌宠就是自己的化身,以第一人称看待,不再把角色说成“陌生程序”;只加 user 文本,不污染自定义 system prompt。
  • 可选服务开关式加载门控:碰撞 IPC / 待办 / Agent 联动 / 主动识屏按配置懒创建,关闭即不装配、不启动、不拉线程与定时器;PIL 延后到截图时才导入。
  • 灵动岛余额峰谷按系统时间刷新:按北京时间档位直接显示「当前档位 → 下一档切换时间」,单发 QTimer 排到下一 9:00/12:00/14:00/18:00(或下周一 9:00)边界自动重排;峰谷颜色随档位生效。
  • 灵动岛单击聚合全部窗(多开时)。

🤖 Agent 联动与 DSH 生态

  • DSH 富事件状态:thinking(思考)/ working(干活,带工具名)/ attention(需确认)/ error / idle 多态呈现;多会话聚合优先级 attention > error > working > thinking > idle,子代理不抢状态;agent/status 作为旧宿主回退(见过富事件后自动停用)。
  • 统一事件层 / 事件队列 / 运行时(PR #57):bridge → monitor → AgentLinkManager → PetWindow 三层事件契约(agent-event/v1),定义审批/问题关联键、交互队列与气泡生命周期(见 docs/DSH-BRIDGE-PET-EVENT-CONTRACT-2026-09-02.md)。
  • 审批与提问交互:审批气泡带「同意 / 拒绝」按钮;提问气泡支持多问题项(section header + 选项多选 + 气泡内提交,全部带选项时在气泡内完成,含自由文本时提示回 DSH 界面);阻塞交互按 interaction_id 独立存储,同一 agent 并发审批/提问互不覆盖;新增 cordis request-run 交互。交互/告警气泡(sticky、interactive、alert)主体点击为 no-op,只有普通无按钮气泡点主体才打开快速对话。
  • 探索循环 Watchdog 与控制气泡:风险分达到控制阈值时发常驻气泡(带「自动优化(replan) / 终止(interrupt) / 忽略」);控制请求最长阻塞 30s,按钮回调只做“收气泡 + 起后台线程”,结果经 Qt 信号回主线程(GUI 线程不阻塞);回执按相位/失败原因区分文案(成功 / 超时 / 会话不存在 / 被拒绝);会话结束联动收起控制气泡;Watchdog 总开关关闭时不建线程、不订阅事件(零常驻开销)。
  • 行为检测器与限流跟踪:W6/W10 窗口告警可升级 control(升级路径跳过 step/time 门控并统计全量窗口);429 限流按 session 独立计数并展示连续次数;stuck / pattern / exploration 三个检测器共享 30s 跨模块弹窗节流(同档抑制、越级放行)。
  • Harness 复用本机已有实例:探测顺序改为配置端口优先、其次官方默认 3080——用户已自己跑着 dsh web 时直接复用打开,不再重复拉起第二个实例(关联 issue #10 双开浏览器);菜单点击启动新实例时冒泡提示「正在后台启动」(首次 npx 拉包可能几分钟)。
  • 「随桌宠启动 dsh 服务」 harness_autostart(默认关,设置 → 常规 → 应用启动,仅主桌宠可设置):开机自启场景下主窗就绪即后台拉起 dsh web,只起服务、不开浏览器、不弹窗口。
  • dsh 启动链路静默化:所有探测子进程隐藏窗口(CREATE_NO_WINDOW,去掉会弹常驻终端的组合);--no-open 能力探测三级缓存(进程内 dict → 落盘 harness_probe_cache.jsondsh --version 匹配 → 慢探测),超时放宽到 30s。
  • macOS Node 解析:新增桌面安全 Node 解析器(pet/node_runtime.py),Harness 与 Agent bridge 共用并增强 PATH 传播给 npm/pnpm。

🖥️ 多开、共享解码与子肥鱼

  • 单进程多开(省内存) experimental_single_process_spawn(设置 → 常规 → 多开,默认关,重启生效):开启后「生小肥鱼」在本进程内创建第二个桌宠实例(独立 slot / 配置 / 会话 / 素材库),不再拉起新进程。
  • 同角色共享解码链:进程内 DecodeFanoutHub(帧扇出)替代早前的 shm broker——同角色多窗只保留 1 条 ffmpeg 解码链,其余窗口“订阅”进食(首发窗发布、订阅窗进食、handover 扶正、消费侧看门狗)。
  • 进程级共享子系统 + 托盘聚合(flag 开时):Agent 联动/主动识屏/全屏探测上移到进程级共享,事件扇出到各可见窗;托盘聚合为「单托盘 + 每窗子菜单(显示/隐藏、切换角色、退出这只)」;DSH 插件授权弹窗只弹一次;主窗退出自动提升下一窗为主。
  • slot 配置作用域:每窗独立项(形象/位置/聊天)存 config-slot-N.json;进程级共享项(托盘/共享解码/Agent 联动/待办)以主桌宠 config.json 为准。
  • 新实例初始配置跟随主设置(slot 落种):新开小肥鱼首占某 slot 时用主配置落种(剔除位置/朝向等每窗状态键),已有存档一律不覆盖;可继承主大小或独立尺寸(spawn_inherit_size/spawn_scale)、继承灵动岛开关(spawn_inherit_dynamic_island);设置里可「一键清除子肥鱼」。
  • 子肥鱼生命周期:退出子肥鱼只退出不删数据;运行时标记 v2(未拖动过的新生鱼也能被枚举)、两段式杀法(无控制台弹窗)、杀前用 exe 路径核验 pid 身份(防 pid 复用误杀)、GetExitCodeProcess == STILL_ACTIVE 判真死活、slot-0(主鱼)永不杀、单进程模式先按进程内登记表链式关窗再文件级清理(防 UI 冻结)。

⚡ 流畅度与性能(实测口径)

  • 高刷屏流畅度(PR #70:物理/弹跳/拖拽节拍跟随主屏刷新率(165Hz→6ms、120Hz→8ms,≤90Hz 保持 16ms);QTimer 改 PreciseTimer(Windows 粗定时器 16ms 在 15.6/31.2ms 抖动);moveEvent DPR 兜底轮询限频 10Hz;新增 PET_PERF_STATS 观测模式(默认零开销)。
  • 内存:三开热机 361–402MB/只 → 多进程约 270MB/3 只;单进程多窗 3 窗 181–197MB 且 3.5h 无单调上涨(双窗 340MB vs 双进程 460MB)。
  • 主进程慢涨根因修复:每个播过的 clip 会永久持帧 ≈1.76MB/段(97 段 ≈170MB),改为切走/弃播/硬停即清空显示槽——15min 显示槽恒定 3.5MB(修前同口径 26MB 线性涨)。
  • 解码:ffmpeg 常驻循环解码(-stream_loop -1 -readrate)消灭“每 10s 杀进程重启”的 churn;-threads 1(实测每进程 −13MB);圈边界定期回收 ffmpeg_recycle_minutes(默认 10min,0=关)。
  • 帧转换链:移除帧缓存改直接重建(无缓存重建实测每帧 1.13ms(1 倍缩放)、2.37ms(2 倍缩放),24fps 下代价可忽略),改为首帧 8MB 字节预算 + pinned 交互核(约 5MB);预测式首帧预热 predict_prewarm_lead_ms(默认 350ms,高级键):当前动画剩余 ≤350ms 提前后台解码下一段首帧进 LRU,首帧 LRU 不逐出高频交互链(点击定格次数 8 → 1–2 次/局)。
  • 省电模式:解码 CPU −54.6%(台架 5.2% vs 11.5%)。
  • 碰撞预测限频:反弹预测每 tick 圆链扫描限 33Hz、状态上报先限流再建状态——多实例碰撞活跃期 CPU 61%→43%
  • 其它:窗口隐藏即停(暂停解码/定时器);关闭全部音效时不再加载 QtMultimedia(约 38MB);PIL 延后导入;Windows mask bounds 走 Qt C++ 路径(0.32ms/帧,与绘制逐像素一致)。
  • 高级内存调节键(README「内存调节(高级)」):first_frame_cache_max_mb(默认 8)、predict_prewarm_lead_ms(默认 350)、ffmpeg_recycle_minutes(默认 10)。

🔐 安全与跨平台

  • API Key 明文自动迁移 keyring(PR #68:升级加载时把磁盘明文 API Key(含视觉 Key)迁入系统 keyring;keyring 不可用时回退内存明文,不覆盖已有 keyring 值。
  • Linux Fcitx 中文输入(PR #71:构建时按 PySide6 Qt 精确版本编译 Fcitx5 Qt6 输入法插件随包分发(内置 Qt 与系统插件 ABI 不兼容导致中文输入法失效),真实 Fcitx/Rime 探针验证;Linux 设置页不再创建 Windows 专属「光标隐藏穿透」开关。
  • macOS:Dock 隐藏彻底生效并加恢复提示(issue #74,设置关闭「显示 Dock 图标」后真正隐藏 + 恢复路径提示气泡);原生 Dock 快捷菜单;Finder 启动的 Node/Homebrew 解析(issue #67)。
  • 直播捕获(OBS / 直播姬)兼容(#79:快速对话气泡并入主窗子内容、可点击、保持向上生成(自动申请透明头顶空间);不再冒出空白小气泡。
  • Windows:穿透切换改原生 WS_EX_TRANSPARENT,根治打字时桌宠频闪(见下方修复清单)。
  • DLC / 换角色场景加固(PR #94:为后续同路径替换素材换角色做准备——PetWindow._switch 增加中央存在性守卫(目标动画不在当前素材库时判失败返回,不再让 lib.movie(name) 的 KeyError 崩进 GUI 线程),一次性守住余额档位动画与音乐唱歌动画两条绕过资源池的直传路径;配置记住的角色素材目录缺失(如 DLC 卸载)时回退默认角色重试一次,不再直接弹错退出;点击台词绑定对话框改走 `catalog.r...
Read more

v4.1.0(累计版)

Choose a tag to compare

@MerZlin MerZlin released this 02 Sep 07:35

v4.1.0(累计版)

v4.0.0 到 v4.1.0 的功能与修复完整汇总。包含此前 v4.0.1 ~ v4.0.5 各补丁版内容,以及 v4.0.5 之后合并到主干的全部开发内容。


🚨 重要声明 / 已知问题

  • 系统通知功能暂未成功实现(目前无法触发)
    • 当前版本中,“对话完成 / 生成失败 / 需要授权时,切走窗口也会在桌面右下角弹系统通知”的能力尚不可用
    • 虽然界面已加入相关开关与实现代码,但实际触发仍不稳定,因此本版本不将该功能视为可用功能,后续版本会继续修复后再正式宣告完成。

✨ v4.0.5 之后的新内容(v4.1.0 增量)

🎏 多开碰撞物理“鱼塘碰碰车”(PR #41

  • 多开桌宠之间可发生物理碰撞:碰碰车 / 台球手感、拖拽/甩出/弹弓与碰撞后反弹。
  • 新增槽位系统与碰撞 IPC:多开不再互相覆盖位置,设置继承 + 个体记忆。
  • 碰撞检测与手感持续调优:三圆胶囊链碰撞体、扫掠检测防高速隧穿、预测反弹、质量权重、非弹性接触、碰撞音效门槛等一批修复。

💠 灵动岛(PR #36

  • 新增独立灵动岛胶囊窗口:显示时间 / DeepSeek 余额 / 状态灯 / 自定义短文本。
  • 支持拖动、贴边吸附、记忆位置。
  • 支持深色 / 浅色 / 玻璃风格、自定义 emoji 图标。
  • 灵动岛余额峰谷颜色会跟随设置的“高峰红 / 低谷绿”开关同步显示。

💬 快速对话气泡(PR #40

  • 点击桌宠头顶气泡可直接打开 Quick Chat。
  • 复用 ChatService / SessionStore,支持长回复分页、可滚动输出区。
  • 打开时自动聚焦输入框,气泡样式与自言自语气泡统一。

📌 聊天窗置顶与点击台词绑定(PR #36

  • AI 聊天窗支持始终置顶。
  • 点击桌宠可根据配置触发对应台词 / 动画。

🔌 自定义 Agent 联动通道(PR #44

  • agent_link.custom_agents 配置驱动:声明 {key, name, path} 即可零代码接入任意符合统一事件协议的 JSONL Agent。
  • 新增 docs/AGENT_LINK_PROTOCOL.md 统一事件协议文档。

🖱️ 右键菜单 LTR 与平滑入场(PR #47

  • 菜单始终 LTR 布局,子菜单不再镜像。
  • 新增 140ms OutCubic 平滑入场动画。

🌐 API / Provider 列表(PR #59

  • AI 设置中新增 API 列表,可快速添加 / 删除 / 切换模型服务 Provider。
  • 修复 Provider id 复用与 Key 草稿覆盖问题。

🧹 纯桌宠版本入口收敛

  • 无 Chat 的纯桌宠版本去掉“启动 DeepSeek Harness”入口,只保留“打开网页版 DeepSeek”,避免误用本地 DSH 入口。

🧪 工程与 CI

  • 统一 Linux / macOS / Windows 构建脚本与测试基建(PR #39)。
  • 修复 Wayland 会话下桌宠无法拖动与拖影。
  • CI 测试全局 mock QMessageBox,修复无人值守环境卡死。
  • 修复 macOS/Linux 右键菜单动画测试、POSIX 碰撞 IPC 测试、WebM 线程回收偶发失败等。

🐛 v4.0.5 之后的 Bug 修复

  • POSIX 碰撞 IPC 重选死循环(issue #42,PR #46/#49:QLocalServer 残留 Unix socket 导致协调者重选死循环;改为先探测活监听者、无人应答再清理残留并重试。
  • 碰撞协议与协调者生命周期加固(PR #49:协议载荷预算、成员数限制、残留端点恢复、锁文件初始化、leave/failover/epoch 切换时序修正。
  • 点击音效误触发(PR #50:拖动不再触发点击音效,只有确认是点击才播放 press+release。
  • Cloudflare 1010 拦截(PR #50:API 请求头增加浏览器特征,规避 opencode go 等网关的浏览器签名拦截。
  • 点击音效切换 / 解析失败(PR #52:每次按下重置音效 pair,不再复用上一次的旧音效。
  • 右键菜单动画 CI 不稳定(PR #53/#54:改为轮询等待首次位移,macOS offscreen 下不再 flaky。
  • 系统通知多次尝试仍未成功:改为设置开关、自绘右下角通知等方式后仍无法可靠触发,详见顶部“重要声明”。

📦 此前已发布版本内容(v4.0.1 ~ v4.0.5)

v4.0.5(功能版)

🔊 音效体系升级(PR #33

  • 点击音效升级为完整音效包:内置默认包 / 小黄鸭包 / 自定义单文件 / 自定义文件夹随机播放。
  • 新增音量(0–100%)与试听按钮,设置即时生效。
  • 统一 QtMultimedia:WAV 走 QSoundEffect,MP3/OGG 首次播放自动解码缓存,低延迟播放。

🤖 Agent 联动音效(PR #33

  • start / done / error 三类事件支持独立开关、独立音效路径与试听。
  • 统一音量与全局冷却,内置合成提示音。

🚀 弹弓弹射 / 💪 甩出力度档位(PR #33

  • 左键拖拽中按住右键进入蓄力弹弓模式,松左键发射。
  • 轻柔 / 标准 / 强力 / 疯狂四档力度;物理计时器改真实 dt + 子步积分。

🖱️ 光标隐藏自动穿透(PR #33,Windows)

  • 系统光标持续隐藏 200ms 自动鼠标穿透,光标出现立即恢复。
  • 只读 GetCursorInfo,不干扰其他程序。

⚡ 点击 Q 弹卡顿修复(PR #34

  • 音频预热等待加载完成、点击动画优先预热、音效延迟到下一事件循环。

🚦 开机自启改进(PR #35

  • Chat 版与无 Chat 版自启互不影响。
  • 启动时自动清理失效开机自启项。

v4.0.4(功能版)

  • 余额分档动画(PR #31:按余额档位播放对应动画(钱袋满溢 / 金袋叮当 / 钱袋如常 / 数金皱眉 / 袋空如洗 / 分文不剩)。
  • DeepSeek 峰谷提示(PR #31/#32:余额气泡显示高峰/空闲与下一切换时间;支持预设「梁文谷/梁文峰」、自定义文案与峰谷颜色开关。
  • 后台音乐自动唱歌(PR #31:检测到后台播放音乐时自动播放「悠闲哼歌」。
  • 移动动画调整(PR #31:漂浮踏步 / 左转奔跑归入移动动画。
  • 位置记忆修复(PR #31:自动移动 / 物理抛掷 / 退出不再覆盖手动保存位置。
  • 开机自启残留清理(PR #31
  • 右键菜单稳定性(PR #31/#32
  • 点击音效打断(开发版)
  • 长文本气泡与主动识屏回复同步(PR #29
  • DSH profile 枚举与 thinking 专属气泡(PR #29/#30:尊重 DSH_HOME、补全 web_search/read_page 工具映射、支持每个 Agent 自定义 thinking 文案。

v4.0.3(紧急修复版)

  • Windows 透明像素点击穿透(PR #27:透明区域鼠标穿透、可见像素正常点击。
  • DSH 桥接插件自动安装 pnpm(PR #27
  • Windows 官方包中文乱码修复(PR #28,issue #26:三平台构建强制 PYTHONUTF8=1,新增产物编码自检。

v4.0.2(修复版)

  • 自定义点击音效支持 MP3/OGG/FLAC/M4A:WAV 继续走 winsound,非 WAV 统一 QtMultimedia;修复 MP3 被系统提示音“播放”的问题。
  • 动画边缘毛边/暗边修复:预乘 alpha 缩放 + 逐像素命中测试。
  • Harness 启动兼容旧版 dsh:探测 --no-open 支持后再传参。
  • 动画帧率精度:24fps 精确帧时长 + PreciseTimer。
  • 右键菜单启动提速与智能避让:动画分类子菜单首次展开才填充;菜单弹出位置自动避让角色。
  • 设置窗口打开期间暂停气泡
  • macOS/Linux 补打包 integrations 资源(PR #22:修复 DSH 桥接一键安装失败。
  • Chat 版显式收集 keyring:API Key 系统安全存储可用。
  • 安装包卸载流程调整

v4.0.1(修复版)

  • Windows「自动隐藏任务栏」误隐藏桌宠(PR #18:真全屏判定增加“无标题栏”条件。
  • 副屏位置开机自启不恢复(issue #8,PR #16:目标屏上线后自动恢复保存位置。
  • 主动识屏恢复后不再重复请求(PR #16
  • DSH 桥接插件安装加固(PR #16:profile 只认含 cordis.yml 的真实目录,过滤 node_modules 残留。

🧪 测试与工程汇总

  • 三平台 CI(Windows / Linux / macOS)在构建前运行完整测试套件。
  • 统一构建入口:本地 scripts/build_onedir.ps1 / build_linux.sh / build_macos.sh 与 CI 一致。
  • 修复并加固 Linux/macOS 上 QLocalServer、WebM 线程、菜单动画等平台敏感测试。

📦 下载

发布构建由 tag 自动触发,产物生成后本 Release 会包含以下文件:

平台 版本
Windows x64 WebM + Chat 安装包 / 便携版
Windows x64 WebM 无 Chat 安装包 / 便携版
macOS arm64 WebM + Chat 便携版
macOS arm64 WebM 无 Chat 便携版
Linux x86_64 WebM + Chat 便携版
Linux x86_64 WebM 无 Chat 便携版

⚠️ 升级说明

  • 直接覆盖安装或使用新版便携版即可;配置目录按变体独立,不影响旧版数据。
  • v4.0.0 以来的配置/会话数据会继续沿用,无需迁移。

🙏 致谢

  • 感谢所有为 v4.0.0 之后版本贡献 PR 的开发者与参与反馈测试的用户。

What's Changed

  • 统一三平台构建流程 + 修复 CI 测试挂起 + 修复 Wayland 拖动/拖影 by @lscatfish in #39
  • feat: 第一批——灵动岛/聊天窗置顶/点击动画台词绑定 by @MerZlin in #36
  • feat(quick-chat): 第二批——快速对话气泡 by @MerZlin in #40
  • 鱼塘碰碰车震撼首发:多开大肥鱼物理对撞引擎 by @klxxya in #41
  • feat(agent-link): 自定义 Agent 联动通道 + 统一事件协议文档 by @shinelon in #44
  • fix(ipc): POSIX 协调者重选修复融合(#43 + #45 短服务名) by @MerZlin in #46
  • feat(menu): 右键菜单始终 LTR 布局 + 140ms 平滑入场动画 by @MerZlin in #47
  • docs(AGENTS): 修正 POSIX IPC 清理描述,匹配探测后清理实现 by @MerZlin in #48
  • fix: 拖动不触发点击音效 + API 请求头浏览器特征(Cloudflare 1010) by @MerZlin in #50
  • fix(ipc): 加固碰撞协议与协调者生命周期(issue #42) by @LoTwT in #49
  • chore: 移除死状态 + README 记录 v4.0.5 后变更 by @MerZlin in #51
  • fix: 点击音效 pair 每次按下重置,避免解析失败复用旧音效 by @MerZlin in #52
  • test(menu): 稳定 macOS offscreen 菜单动画时序测试 by @MerZlin in #53
  • test(menu): 轮询等待动画首次位移,恢复严格断言 by @MerZlin in #54
  • docs(README): 补充 v4.0.5 后修复与构建/CI 失败经验 by @MerZlin in #55
  • docs(README): 统一 POSIX IPC 表述并修正线程残留描述 by @MerZlin in #56
  • feat(settings): 增加 API/Provider 列表以快速切换模型服务 by @MerZlin in #59
  • feat(chat): 增加系统通知,对话完成/生成失败/需要授权时跳回处理 by @MerZlin in #60

New Contributors

Full Changelog: v4.0.5...v4.1.0

v4.0.5(功能版)

Choose a tag to compare

@github-actions github-actions released this 30 Aug 04:10

v4.0.5(功能版)

自 v4.0.4 以来的功能与修复:音效体系升级、弹弓弹射、甩出力度档位、光标隐藏自动穿透、点击 Q 弹卡顿修复、开机自启变体独立与失效项自动清理。

✨ 主要更新

🔊 音效体系升级(PR #33

  • 点击音效从单个 click.wav 升级为完整音效包:
    • 内置默认包 / 内置小黄鸭包 / 自定义单文件 / 自定义文件夹随机播放(尽量避免连续重复)
  • 新增音量(0–100%)与试听按钮,设置即时生效
  • 播放层统一 QtMultimedia:
    • WAV 走 QSoundEffect,每次点击即时从头重播
    • MP3/OGG 等首次播放自动解码为 WAV 缓存,之后低延迟播放
    • 首次解码期间由 4 路播放器池兜底
  • 旧配置自动迁移:已有 click_sound_path 自动识别为自定义单文件模式

🤖 Agent 联动音效(PR #33

  • start / done / error 三类事件:独立开关、独立音效路径、试听
  • 统一音量 + 全局冷却,避免多 Agent 并发连环响
  • 内置合成提示音,无第三方版权问题

🚀 弹弓弹射(PR #33

  • 左键拖拽中按住右键进入蓄力弹弓模式,松左键发射
  • 橡皮筋拉带 + 抛物线预测轨迹 + 方向性形变
  • 与锁定位置/鼠标穿透互斥,失焦/隐藏自动取消

💪 甩出力度档位(PR #33

  • 轻柔 / 标准 / 强力 / 疯狂四档
  • 物理计时器改为真实 dt + 子步积分,高速甩出不再单步瞬移

🖱️ 光标隐藏自动穿透(PR #33,Windows)

  • 系统光标持续隐藏 200ms 自动鼠标穿透,光标出现立即恢复
  • 只读 GetCursorInfo,绝不调用 ShowCursor 干扰其他程序
  • 手动穿透与自动穿透完全分离,自动恢复不改写用户配置

⚡ 点击 Q 弹卡顿修复(PR #34

  • 音频预热等待 QSoundEffect 加载完成
  • 点击动画首帧优先后台预热
  • 音效延迟到下一轮事件循环,避免阻塞 Q 弹画面
  • 消除首次点击/快速连点的数百 ms 卡顿

🚦 开机自启改进(PR #35 + 本次)

  • Chat 版与无 Chat 版各自管理自己的开机自启,互不影响
  • 启动时自动清理指向已不存在目录/程序的失效自启项
    • 修复“更新后直接删除旧文件夹但忘了关自启,每次开机弹终端报找不到文件夹”的问题

🧪 测试与工程

  • 修复 Windows 自启测试在 Linux/macOS 的跨平台兼容
  • QMenu 可见性测试兼容无交互桌面环境
  • README 明确:CI 使用 Python 3.11,Windows 实机验证覆盖 Python 3.13
  • 全量测试:524 passed / 5 skipped

📦 下载

平台 版本 下载
Windows x64 WebM + Chat 安装包 · 便携版
Windows x64 WebM 无 Chat 安装包 · 便携版
macOS arm64 WebM + Chat 便携版
macOS arm64 WebM 无 Chat 便携版
Linux x86_64 WebM + Chat 便携版
Linux x86_64 WebM 无 Chat 便携版

⚠️ 升级说明

  • 直接覆盖安装或使用新版便携版即可;配置目录按变体独立,不影响旧版数据。
  • 若旧版安装目录已被手动删除,新版本启动时会自动清理失效的开机自启项。
  • 小黄鸭音效来自 MeteorNOX/DeepSeek-Balance-Whale-Widget(MIT License),声明见 THIRD_PARTY_NOTICES.md

🙏 致谢

  • 感谢 klxxya 贡献 PR #33:音效体系、弹弓弹射、力度档位、光标隐藏自动穿透等大量功能。
  • 感谢所有参与反馈与测试的用户。

v4.0.4(功能版)

Choose a tag to compare

@github-actions github-actions released this 29 Aug 16:15

v4.0.4(功能版)

发布形态:onedir 目录打包 + Inno Setup 安装包(.exe)+ 便携 zip 绿色版。运行期不解压、不产生临时缓存,启动快、卸载干净。

本次重点

v4.0.4 是自 v4.0.3 以来的功能更新版,主要带来:

  • 上游余额动画与余额分档展示;
  • DeepSeek 峰谷提示(可切换/自定义文案、可开关颜色);
  • 后台音乐自动唱歌;
  • 点击音效打断;
  • 多项稳定性与体验修复。

更新内容

💰 余额分档动画

  • 同步上游 6 个余额动画:钱袋满溢 / 金袋叮当 / 钱袋如常 / 数金皱眉 / 袋空如洗 / 分文不剩。
  • 查询余额时按余额档位自动播放对应动画。
  • 余额动画同时进入随机动作池,可随机播放或从菜单手动点播。

📊 DeepSeek 峰谷提示

  • 余额气泡下方显示当前高峰/空闲与下一切换时间。
  • 支持三种文案模式:
    • 默认:空闲 / 高峰;
    • 梁文:梁文谷 / 梁文峰;
    • 自定义:分别填写高峰/空闲文本。
  • 支持开关峰谷提示颜色:开启时高峰红、低谷绿。
  • 跨天切换显示具体日期,例如「下周一 09:00」,避免周末/周五晚间歧义。

🎵 后台音乐自动唱歌

  • 新增 Windows 音频检测(pycaw)。
  • 检测到后台播放音乐时自动循环播放「悠闲哼歌」。
  • 可在设置中开关,默认关闭。
  • 复用音频检测 COM 对象,降低长时间运行崩溃风险。

🔇 点击音效打断

  • 再次点击桌宠时,会先停止上一段点击音效。
  • 覆盖 QtMultimedia、Windows winsound、系统播放器三条通道。
  • 避免自定义长音效叠放/排队播放导致很吵。

🏃 移动动画调整

  • 原「原地漂浮踏步 / 原地左转奔跑」重命名为「漂浮踏步 / 左转奔跑」。
  • 从随机动作归入移动动画,参与桌宠自动移动。

📍 位置记忆修复

  • 自动移动/物理抛掷/退出时不再覆盖保存位置。
  • 重启后回到用户最后一次手动放置/主动确认的位置。

🚀 开机自启残留清理

  • 清理所有已知 dsh-pet 注册表自启项。
  • 避免旧残留导致“关闭后仍自启”或“开机两个终端/两个桌宠”。

🖱️ 右键菜单稳定性

  • 释放菜单前非阻塞等待图标解码 worker 结束。
  • 降低多次右键后崩溃概率,避免菜单关闭时卡顿/假死。

🧵 长文本气泡与主动识屏回复同步

  • 长文本气泡分页自动翻页,不再截断。
  • 主动识屏回复全文写入日志,并同步进 AI 对话会话。

🤖 DSH / Agent 联动

  • DSH profile 枚举尊重 DSH_HOME 并过滤 node_modules
  • 补全 web_search / read_page 工具名映射。
  • thinking 状态有独立气泡文案,并支持每个 Agent 自定义 thinking 文案。

⚙️ 配置与构建

  • 修复新增设置项(峰谷文案/颜色、音乐开关)重启后丢失的问题。
  • 补充 tzdata 依赖,修复 Windows CI 时区数据缺失。

下载

平台 版本 安装包 绿色版
Windows x86_64 WebM + Chat dsh-pet-standalone-webm-chat-setup.exe dsh-pet-standalone-webm-chat-portable.zip
Windows x86_64 WebM(无 Chat) dsh-pet-standalone-webm-setup.exe dsh-pet-standalone-webm-portable.zip
macOS(Apple Silicon) WebM + Chat dsh-pet-standalone-webm-chat-macos-arm64.zip
macOS(Apple Silicon) WebM(无 Chat) dsh-pet-standalone-webm-macos-arm64.zip
Linux x86_64 WebM + Chat dsh-pet-standalone-webm-chat-linux-x86_64.zip
Linux x86_64 WebM(无 Chat) dsh-pet-standalone-webm-linux-x86_64.zip

升级说明

  • 安装版:直接运行新的 -setup.exe 覆盖安装即可,配置与角色数据保留。
  • 绿色版:解压后覆盖旧目录即可;如遇异常,可先备份 %APPDATA%\dsh-pet-standalone* 等配置目录后再替换。

致谢

感谢 @klxxya 提交的 DSH profile 枚举、thinking 气泡文案与工具名补全,以及所有参与测试和反馈的朋友。

完整变更v4.0.3...v4.0.4

v4.0.3(紧急修复版)

Choose a tag to compare

@github-actions github-actions released this 29 Aug 13:03

v4.0.3(紧急修复版)

发布形态:onedir 目录打包 + Inno Setup 安装包(.exe)+ 便携 zip 绿色版。运行期不解压、不产生临时缓存,启动快、卸载干净。

本次重点

本次为紧急修复版,重点解决 Windows 上桌宠透明区域点击被拦截、DSH 桥接插件一键安装失败,以及 v4.0.2 官方 Windows 包中文乱码问题。

修复内容

🖱️ Windows 透明像素点击穿透(PR #27

  • 修复 Windows 上透明区域被点击拦截的问题:透明像素鼠标穿透,可见像素正常点击。
  • 同时修复逐像素命中测试的双重失效:过滤器引用被 GC + MSG 字段名拼写错误。

🔌 DSH 桥接插件一键安装自动装 pnpm(PR #27

  • 一键安装桥接插件时若环境缺少 pnpm,会自动安装,不再因缺少 pnpm 导致安装失败。

🇨🇳 Windows 官方包中文乱码修复(issue #26,PR #28

  • 构建环境统一设置 PYTHONUTF8=1,避免 PyInstaller/辅助脚本按 GBK/cp1252 二次解码 UTF-8 中文源码或资源。
  • 新增打包产物中文编码自检:构建后检查字节码中文字面量、文本资源 UTF-8 编码、中文素材文件名,发现污染直接构建失败,杜绝乱码包再次发布。

🤖 Agent 联动修复(PR #25

  • dsh 过程汇报工具名识别补全。
  • Agent 联动动作轮换兜底,联动逻辑更稳定。

下载

平台 版本 安装包 绿色版
Windows x86_64 WebM + Chat dsh-pet-standalone-webm-chat-setup.exe dsh-pet-standalone-webm-chat-portable.zip
Windows x86_64 WebM(无 Chat) dsh-pet-standalone-webm-setup.exe dsh-pet-standalone-webm-portable.zip
macOS(Apple Silicon) WebM + Chat dsh-pet-standalone-webm-chat-macos-arm64.zip
macOS(Apple Silicon) WebM(无 Chat) dsh-pet-standalone-webm-macos-arm64.zip
Linux x86_64 WebM + Chat dsh-pet-standalone-webm-chat-linux-x86_64.zip
Linux x86_64 WebM(无 Chat) dsh-pet-standalone-webm-linux-x86_64.zip

升级说明

  • 安装版:直接运行新的 -setup.exe 覆盖安装即可,配置与角色数据保留。
  • 绿色版:解压后覆盖旧目录即可;如遇异常,可先备份 %APPDATA%\dsh-pet-standalone* 等配置目录后再替换。

致谢

感谢 @klxxya 提交的点击穿透、pnpm 安装与 Agent 联动修复,以及 @MerZlin 的中文乱码构建修复与发布支持。

完整变更v4.0.2...v4.0.3

v4.0.2

Choose a tag to compare

@github-actions github-actions released this 29 Aug 08:28

dsh-pet v4.0.2 修复版

v4.0.2 是 v4.0.1 的修复版,合并了社区 PR #19/#20/#22 与本地的多轮实测修复,并完成全平台回归测试(453 passed / 4 skipped)。功能与 v4.0.1 完全兼容,无需重新配置,覆盖安装/解压即升级。

🐛 本次修复的 Bug

自定义点击音效(MP3/OGG/FLAC/M4A)

  • 修复:自定义 click.mp3 等非 WAV 音效在 Windows 上被 winsound 用系统默认提示音"播放"(winsound 只支持 WAV)。音效播放器重构:WAV 继续走轻量 winsound;MP3/OGG/FLAC/M4A 统一走 QtMultimedia(QMediaPlayer,自带 FFmpeg 后端);QtMultimedia 不可用时 macOS/Linux 回退系统播放器(afplay/paplay/aplay),Windows 非 WAV 宁可静默跳过也不响系统音。Linux/macOS 构建同步补打包 PySide6.QtMultimedia。

动画边缘毛边 / 暗边

  • 修复:帧渲染改预乘 alpha 缩放——直通 alpha 缩放会让透明像素的 RGB 渗入半透明边缘,产生暗边/彩边(毛边来源之一);Windows 上点击命中测试由 setMask 的 1-bit 裁剪改为逐像素命中测试(WM_NCHITTEST + HTTRANSPARENT:透明区域鼠标穿透、可见区域可点击),不再破坏 WA_TranslucentBackground 的逐像素半透明边缘。

动画帧率精度

  • 修复:视频帧时长按 24fps 精确值修正(40ms → 42ms = 1000/24),动画播放定时器改用精确定时器(PreciseTimer),消除粗略定时器漂移导致的动画节奏/移动插值偏差。

Harness 启动兼容旧版 dsh

  • 修复:启动 DeepSeek Harness 前探测 web --help 是否支持 --no-open(按命令缓存)——旧版 dsh(如 0.1.0-rc.3)没有该选项,强行传参会启动失败;不支持时不传,由 dsh 自己打开浏览器,桌宠不重复打开。

macOS/Linux「一键安装 DSH 桥接插件」失败(PR #22

  • 修复:onedir 构建显式打包 integrations/ 目录(含 DSH 桥接插件),修复 macOS/Linux 上「启动 DeepSeek Harness → 一键安装桥接」因资源缺失而失败的问题;构建后增加断言检查,漏打包直接报错。感谢 williamhadeslee

其他稳定性修复

  • 设置气泡抑制防御:新版设置/聊天设置打开期间暂停桌宠气泡(避免盖住设置界面);状态判断改为防御式访问,兼容任意生命周期。
  • Python 3.11 urllib 兼容:CPython 3.11 官方 urllibaddbase 继承 tempfile._TemporaryFileWrapper,3.12 起重构)中 HTTPError(fp=None).read() 会抛 KeyError('file')——主动识屏 429 处理增加防御,读不到响应体按空处理,不影响状态码判断(三平台都需要)。
  • 安装包卸载流程调整:卸载时不再自动运行 --uninstall-cleanup 清理脚本(卸载更快更直接);源码运行 python -m pet --uninstall-cleanup 仍可用。
  • Chat 版 API Key 系统安全存储:Windows/Linux/macOS 构建显式 --collect-all keyring,确保 Chat 版 API Key 走系统凭据存储可用。

✨ 新加的小优化

  • 右键菜单启动提速:动画分类子菜单首次展开才填充动作(根菜单构建不再遍历 91 个动画,首次右键不再卡顿数秒)。
  • 右键菜单智能避让:弹出位置优先角色右侧(子菜单向右展开)→ 左侧(菜单树 RTL 向左展开)→ 屏幕远角,根菜单与子菜单都不再遮挡角色。
  • 快捷启动图标缓存:应用图标按(类型, 路径)缓存,避免每次打开菜单都等待文件图标探测。
  • 设置窗口打开期间暂停气泡:设置界面不再被置顶气泡遮挡。

📦 下载版本介绍

平台 文件 大小(约) 说明
Windows · Chat dsh-pet-standalone-webm-chat-setup.exe 135.3 MB 安装包:AI 对话 + 完整功能
Windows · Chat dsh-pet-standalone-webm-chat-portable.zip 166.1 MB 绿色版:解压即用
Windows · 无 Chat dsh-pet-standalone-webm-setup.exe 130.5 MB 安装包:仅桌宠本体
Windows · 无 Chat dsh-pet-standalone-webm-portable.zip 160.9 MB 绿色版:仅桌宠本体
macOS (Apple Silicon) dsh-pet-standalone-webm-chat-macos-arm64.zip 139.9 MB onedir .app,解压即用
macOS (Apple Silicon) dsh-pet-standalone-webm-macos-arm64.zip 134.5 MB onedir .app,解压即用
Linux (x86_64) dsh-pet-standalone-webm-chat-linux-x86_64.zip 246.0 MB onedir 目录,解压即用
Linux (x86_64) dsh-pet-standalone-webm-linux-x86_64.zip 233.9 MB onedir 目录,解压即用

选择建议:

  • 想体验完整功能(含 AI 对话):选 Chat 版。
  • 只需要桌宠陪伴:选无 Chat 版,包体更小、启动更轻。
  • 不想安装、追求便携:选绿色版 zip,解压到任意目录双击即用(卸载 = 删除目录)。

📝 已知说明

  • Win版本已替换为本地构建版
  • GIF 变体自 v4.0.0 起不再发布(包体约 800 MB,构建/上传/下载成本过高);需要请按 README「打包发布」一节自行构建。
  • 安装包未做代码签名:Windows SmartScreen 与 macOS Gatekeeper 首次运行需手动放行(右键打开)。
  • 升级方式:v4.0.1/v4.0.0 用户直接覆盖安装/解压新版即可,配置(API Key、角色、位置等)保存在数据目录,不受影响。
  • 未配置 API Key 时 AI 对话不可用;AI 设置里可配置 OpenAI 兼容端点(DeepSeek 等)。

🙏 致谢

  • klxxya:PR #19(Agent 联动二期:气泡通知/动作池轮换/平滑衔接/过程汇报、全屏自动隐藏重写、识屏/卸载/附件一批评审加固)。
  • williamhadeslee:PR #22(macOS/Linux 构建补打包 integrations 资源,修复 DSH 桥接一键安装)。
  • Vendela-Tu:PR #20(agent_link 增强)。
  • 所有在 Bilibili 上反馈问题的观众:点击音效、动画毛边、右键菜单卡顿等修复均来自用户实测反馈。

v4.0.1

Choose a tag to compare

@github-actions github-actions released this 28 Aug 11:41

dsh-pet v4.0.1 修复版

v4.0.1 是 v4.0.0 的修复版:合并社区两个修复 PR(#16#18),并完成全平台回归测试(362 passed / 4 skipped)。功能与 v4.0.0 完全一致,无需重新配置,覆盖安装/解压即升级。

🐛 更新内容(修复)

Windows「自动隐藏任务栏」下桌宠随任务栏一起隐藏(PR #18,感谢 lscatfish123-cell)

  • 现象:开启系统「自动隐藏任务栏」后,把窗口最大化时桌宠会被误隐藏,且不会自动恢复。
  • 原因:最大化窗口会铺满整屏(含任务栏区域),旧的全屏判定只看窗口几何,把它误判为「真全屏」。
  • 修复:真全屏判定增加无标题栏条件(WS_CAPTION)——真全屏的游戏/视频/浏览器 F11 都会去掉标题栏,普通最大化窗口带标题栏。自动隐藏任务栏下的最大化窗口不再误触发隐藏;已最大化后按 F11 的窗口(应用清掉了标题栏)仍能正确命中隐藏。

副屏位置开机自启不恢复(issue #8,PR #16,感谢 klxxya)

  • 现象:桌宠放在副屏并开启开机自启,重启后桌宠落到主屏,不再回副屏。
  • 原因:开机自启时副屏可能尚未就绪(显示器唤醒慢于自启),按屏名找不到目标屏就落主屏定型。
  • 修复:目标屏暂不在线时先落主屏、记录目标屏并监听屏幕变化(screenAdded 即时触发 + 5 秒轮询兜底),目标屏上线后自动恢复到保存位置(2 分钟超时放弃);等待期间不把临时落脚坐标写回配置;用户真正开始拖动或点「回到右下角」会立即撤销自动恢复。

其他修复(PR #16

  • 主动识屏恢复后不再重复请求:隐藏/恢复过程中不再清空网络请求标志,避免恢复后与在飞请求并发发起第二条视觉请求(迟到答复按代次丢弃,不冒泡/不计费/不写记忆)。
  • DSH 桥接插件安装加固:profile 枚举只认含 cordis.yml 的真实目录,过滤 node_modules 等残留,避免安装失败触发整体回滚。
  • pet_opacity 脏值兜底:手改配置文件出错(非法数值)不再导致启动崩溃。

📦 下载版本介绍

平台 文件 大小(约) 说明
Windows · Chat dsh-pet-standalone-webm-chat-setup.exe 124.1 MB 安装包:AI 对话 + 完整功能
Windows · Chat dsh-pet-standalone-webm-chat-portable.zip 151.8 MB 绿色版:解压即用
Windows · 无 Chat dsh-pet-standalone-webm-setup.exe 124.1 MB 安装包:仅桌宠本体
Windows · 无 Chat dsh-pet-standalone-webm-portable.zip 151.4 MB 绿色版:仅桌宠本体
macOS (Apple Silicon) dsh-pet-standalone-webm-chat-macos-arm64.zip 125.9 MB onedir .app,解压即用
macOS (Apple Silicon) dsh-pet-standalone-webm-macos-arm64.zip 125.9 MB onedir .app,解压即用
Linux (x86_64) dsh-pet-standalone-webm-chat-linux-x86_64.zip 222.7 MB onedir 目录,解压即用
Linux (x86_64) dsh-pet-standalone-webm-linux-x86_64.zip 215.6 MB onedir 目录,解压即用

选择建议:

  • 想体验完整功能(含 AI 对话):选 Chat 版。
  • 只需要桌宠陪伴:选无 Chat 版,包体更小、启动更轻。
  • 不想安装、追求便携:选绿色版 zip,解压到任意目录双击即用(卸载 = 删除目录)。

📝 已知说明

  • GIF 变体自 v4.0.0 起不再发布(包体约 800 MB,构建/上传/下载成本过高);需要请按 README「打包发布」一节自行构建。
  • 安装包未做代码签名:Windows SmartScreen 与 macOS Gatekeeper 首次运行需手动放行(右键打开)。
  • 升级方式:v4.0.0 用户直接覆盖安装/解压新版即可,配置(API Key、角色、位置等)保存在数据目录,不受影响。
  • 未配置 API Key 时 AI 对话不可用;AI 设置里可配置 OpenAI 兼容端点(DeepSeek 等)。

🙏 致谢

  • klxxya:PR #16(副屏位置开机自启恢复、主动识屏并发修复、DSH 桥接安装加固、pet_opacity 兜底)。
  • lscatfish123-cell:PR #18(Windows 自动隐藏任务栏下桌宠误隐藏修复)。
  • 所有在 Bilibili 上反馈问题的观众:副屏位置问题(issue #8)即来自用户实测反馈。

v4.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 04:15

dsh-pet-standalone v4.0.0

一个基于 Python + PySide6 的独立桌面宠物(透明无边框、置顶、可拖动、角色切换、动画播放、系统托盘、可选 AI 对话),脱离 DSH 运行时独立运行。

v4.0.0 是自 v3.1.1 以来的大版本升级:合并了社区贡献者的现代桌面体验重构(PR #11/#12/#13)与性能/主动陪伴体系(PR #7),并完成多轮用户反馈修复与新增功能。


✨ 更新内容

现代双 UI(PR #11 / #12 / #13

  • 新版右键菜单:紧凑七组布局 + 线性图标、顶部彩蛋入口、半透明表面;主题可跟随系统/浅色/深色,UI 字体/字号/密度/圆角可调;「切换菜单模板」可一键回到旧版经典菜单。
  • 新版设置对话框:侧边栏 + 卡片式布局(常规 / 桌宠行为 / 外观 / AI 对话 / 快捷启动 / 主动识屏);关闭即自动保存并立即生效(含直接点 X)。
  • 新版 AI 对话窗口:现代双栏工作台(左侧会话管理 + 右侧消息画布)、自绘标题栏、会话搜索/重命名/置顶/批量管理、跟随桌宠、背景主题(内置壁纸/自定义图片/裁剪取景);保留旧版手机式聊天窗可切换。
  • 彩蛋入口(欧鲸鲸):可配置的趣味入口,点击随机弹图;弹窗时机、图片回退、多开层叠均已打磨。
  • 「生小肥鱼」多开:一键孵化第二只独立桌宠,自动避让位置、配置与会话隔离。
  • CI 测试时序稳定(PR #12)。

性能与主动陪伴(PR #7

  • 隐藏即零功耗:桌宠隐藏后暂停动画解码与全部活动定时器(隐藏后 CPU ≈ 0%),显示时立即恢复。
  • 启动懒加载:动画素材按需加载与优先级预热,冷启动更快。
  • 主动识屏陪伴(Windows + Chat 版):白名单应用切换、停留时长门限、每日上限与冷却、dry-run 验证模式,截图不落盘。
  • Agent 联动:内置 DSH 桥接插件与 Claude hooks 安装器,桌宠可感知 AI Agent 干活状态并切换动作/冒泡。

新增桌宠功能(本版)

  • 锁定位置:桌宠固定不动、无法拖动(点击互动仍有效)。
  • SHIFT+左键拖动:开启后必须按住 SHIFT 才能拖动桌宠。
  • 不透明度:桌宠窗口 10%–100% 可调,保存立即生效。
  • 托盘菜单同步:鼠标穿透 / 开机自启在设置里改动后,托盘勾选状态弹出前实时刷新。
  • 旧版聊天窗补全:会话重命名(含深色主题适配)。

稳定与修复批次

  • 设置 X 关闭自动保存并立即生效;保存前重读配置避免覆盖外部改动。
  • 深色系统全面适配:设置界面、菜单、聊天窗按钮/图标不再白底白字。
  • 聊天窗渲染:无边框圆角窗口(去掉窗外方形背景)、图标随主题变色、缩放光标不再卡住。
  • 生成中/结束时快速新建会话不再串写;切长会话自动滚底;输入法组合中回车不上屏误发。
  • 内存与并发:菜单泄漏、ChatService 竞态、打字机残留、子进程回收等一批修复。

📦 下载版本介绍

平台 变体 文件 说明
Windows Chat WebM(推荐) dsh-pet-standalone-webm-chat-setup.exe(约 129 MB,安装包)/ dsh-pet-standalone-webm-chat-portable.zip(约 157 MB,绿色版) WebM 高清动画 + AI 对话,功能完整
Windows 无 Chat WebM dsh-pet-standalone-webm-setup.exe / dsh-pet-standalone-webm-portable.zip 只想要桌宠本体,不接入 AI,包体更小启动更轻
macOS(Apple Silicon) Chat WebM dsh-pet-standalone-webm-chat-macos-arm64.zip onedir .app,解压即用;首次打开需 Gatekeeper 放行(右键 → 打开)
macOS(Apple Silicon) 无 Chat WebM dsh-pet-standalone-webm-macos-arm64.zip 同上
Linux(x86_64) Chat WebM dsh-pet-standalone-webm-chat-linux-x86_64.zip onedir 目录,解压即用;建议 X11 桌面
Linux(x86_64) 无 Chat WebM dsh-pet-standalone-webm-linux-x86_64.zip 同上

选择建议

  • 想体验完整功能(含 AI 对话)→ 装 Chat 版
  • 只需要桌宠陪伴 → 装无 Chat 版
  • 不想安装、追求便携 → 用绿色版 zip,解压到任意目录双击即用。
  • 安装版免管理员、按当前用户安装,向导中可自由选择安装盘符与目录;卸载干净无残留。

已知说明

  • GIF 变体自 v4.0.0 起不再发布(包体约 800 MB×2,成本过高);需要请按 README「打包发布」自行构建(先运行 python scripts/convert_to_gif.py --force --clean)。
  • 安装包未做代码签名:Windows 首次运行 SmartScreen 点「更多信息 → 仍要运行」;macOS 需 Gatekeeper 放行。
  • 数据目录:Windows %APPDATA%\dsh-pet-standalone\,macOS ~/Library/Application Support/dsh-pet-standalone-<变体>/,Linux ~/.config/dsh-pet-standalone-<变体>/。重装/升级不丢配置与会话。
  • AI 对话需自行配置 API Key(DeepSeek 开放平台创建,默认已填好 https://api.deepseek.com + 模型);详细教程见 README「零基础快速配置」。

升级方式:安装版直接覆盖安装;绿色版用新 zip 覆盖旧文件夹。


🙏 致谢

  • @ushio2026-alt:现代桌面体验重构(PR #11)、CI 测试时序稳定(PR #12)、彩蛋弹窗时序与图片回退加固(PR #13)。
  • @klxxya:拖拽物理、全屏自动隐藏、看看屏幕、聊天窗主题背景、裁切取景等增强(PR #5),以及低功耗优化、主动识屏陪伴、Agent 联动(PR #7)。
  • @PC2005-cloud/dsh-pet:参考实现与动画素材基础。
  • 所有通过 Issue / Bilibili 提供反馈的用户:v4.0.0 多项修复与功能来自你们的实测反馈。

完整变更:v3.1.1...v4.0.0

v3.1.1

Choose a tag to compare

@github-actions github-actions released this 26 Aug 09:40

📦 文件说明(怎么选)

文件 类型 适用
dsh-pet-standalone-webm-chat-setup.exe Windows 安装包(约 101 MB) 推荐,含 AI 对话;免管理员安装到当前用户目录
dsh-pet-standalone-webm-chat-portable.zip Windows 绿色版(约 140 MB) 含 AI 对话;解压即用、删除即卸载
dsh-pet-standalone-webm-setup.exe / -portable.zip Windows 安装包 / 绿色版(无 AI) 只要桌宠本体、不接入 AI
*-macos-arm64.zip macOS 应用(Apple Silicon) 解压后把 .app 拖入「应用程序」;未签名需右键 → 打开
*-gif-*-macos-arm64.zip macOS GIF 素材版 兼容性备选(包体约 780 MB)
*-linux-x86_64.zip Linux 绿色版(WebM 两个变体,约 200 MB) 解压后运行目录内同名二进制;首次运行需安装系统库(见下)

WebM 版:高清透明动画(推荐);GIF 版:老素材路线。Chat = 含 AI 对话与「看看屏幕」,无 Chat = 精简版。

✨ v3.1.1 新增

Linux 版正式发布(x86_64,GitHub Actions 自动构建)

  • 两个变体:dsh-pet-standalone-webm-chat-linux-x86_64.zip(含 AI 对话)与 dsh-pet-standalone-webm-linux-x86_64.zip(无 Chat)
  • onedir 目录形态,解压即用(保留可执行权限);首次运行需安装少量系统库(README「Linux 使用」有 apt install 命令),建议 X11 桌面
  • 开机自启(XDG autostart)、点击音效(paplay/aplay)、置顶/拖拽/看看屏幕等能力与 Windows/macOS 一致

直播捕获兼容模式(Windows)

  • 直播姬 / OBS 窗口捕获找不到桌宠?桌宠默认是"工具窗口"形态(不占任务栏,捕获软件会过滤)。在「桌宠设置」勾选**「直播捕获兼容模式」**后,桌宠变为普通顶层窗口并显示标题「dsh-pet 桌宠」,捕获列表即可选中(代价:任务栏出现图标,直播结束取消勾选即恢复)

AI 对话开箱即用(新用户)

  • 出厂默认 Provider 改为 DeepSeek:API 地址 https://api.deepseek.com + 模型 deepseek-v4-flash——新用户只需在「AI 设置」粘贴 API Key 即可对话,无需改任何参数
  • README 新增「零基础快速配置(小白照抄版)」:含 DeepSeek 开放平台创建 API Key 的 5 步图文指引

macOS 焦点修复

  • 修复桌宠"一直占用窗口焦点":① accessory 激活策略设置后读回验证(失败会记日志并延迟重试,不再静默失效);② 置顶看门狗不再每 5 秒 raise_() 抢焦点(macOS 置顶由原生窗口层级保证);③ 主窗口补 WA_ShowWithoutActivating 兜底
  • 新增 macOS-only 冒烟测试(CI 实测 activationPolicy == Accessory)

其他

  • 「跳过 SSL 证书验证」选项的提示文案明确覆盖"代理/梯子拦截"场景(开梯子后 AI 对话报证书错误的用户更容易找到它)

🐛 v3.1.1 修复的 Bug

  • macOS 桌宠抢焦点(accessory 策略静默失败 + 看门狗反复 raise_)
  • 直播姬/OBS 窗口捕获列表找不到桌宠(工具窗口被过滤)
  • 新用户 AI 对话默认配置不可用(默认 Provider 已改为 DeepSeek)

⚙️ 使用提示

  • 首次运行 SmartScreen / Gatekeeper 提示属正常(未签名),放行即可
  • 配置目录:Windows %APPDATA%\dsh-pet-standalone-webm-chat\;macOS ~/Library/Application Support/…;Linux ~/.config/dsh-pet-standalone-webm-chat/
  • Linux:解压后进入目录运行 ./dsh-pet-standalone-webm-chat;首次运行需 sudo apt install libxcb-cursor0 libxkbcommon-x11-0 libegl1 libgl1 libfontconfig1 libdbus-1-3 fonts-noto-cjk(Debian/Ubuntu 系),建议 X11 桌面,详见仓库 README「Linux 使用」
  • 快捷键、全屏隐藏等更多设置见仓库 README

v3.1.0 更新记录(见上版 Release):检查更新与一键下载、DeepSeek 余额、会话管理、看看屏幕同步、点击行为、气泡美化与分页等

v3.1.0

Choose a tag to compare

@MerZlin MerZlin released this 25 Aug 17:07

📦 文件说明(怎么选)

文件 类型 适用
dsh-pet-standalone-webm-chat-setup.exe Windows 安装包(约 101 MB) 推荐,含 AI 对话;免管理员安装到当前用户目录
dsh-pet-standalone-webm-chat-portable.zip Windows 绿色版(约 140 MB) 含 AI 对话;解压即用、删除即卸载
dsh-pet-standalone-webm-setup.exe / -portable.zip Windows 安装包 / 绿色版(无 AI) 只要桌宠本体、不接入 AI
*-macos-arm64.zip macOS 应用(Apple Silicon) 解压后把 .app 拖入「应用程序」;未签名需右键 → 打开
*-gif-*-macos-arm64.zip macOS GIF 素材版 兼容性备选(包体约 780 MB)

| *-linux-x86_64.zip | Linux 绿色版(WebM 两个变体,约 200 MB) | 解压后运行目录内同名二进制;首次运行需安装系统库(见下) |

WebM 版:高清透明动画(推荐);GIF 版:老素材路线。Chat = 含 AI 对话与「看看屏幕」,无 Chat = 精简版。

✨ v3.1.0 新增功能

检查更新与一键下载

  • 右键/托盘 →「更新 / 帮助 → 检查更新」:自动查询最新版本(GitHub API 不可达时回退 jsDelivr CDN),有新版可一键下载当前平台安装包(进度条显示路径/大小/速度,可取消,完成后可打开所在文件夹)
  • 同菜单提供「GitHub 项目页」「夸克网盘下载」(Windows 备用渠道)

DeepSeek 余额显示(参考 MeteorNOX/DeepSeek-Balance-Whale-Widget)

  • 右键/托盘 →「DeepSeek 余额」:查询官方余额接口,气泡显示「余额 ¥xx(充值 / 赠送)」;30 秒缓存秒回
  • 桌宠设置:可开启余额自动刷新(分钟级);可设置「点击显示余额」

AI 对话会话管理

  • ✎ 重命名会话(自定义标题,可备注内容;下拉列表优先显示)
  • 删除当前会话 / 清空全部会话(均带确认,防误删)
  • 会话列表移到聊天窗左下角,标题显示加长(≥20 字)
  • API Key 提示「已保存,留空保持不变」——修改 System Prompt 等无需重输 Key

看看屏幕 → 同步到对话

  • 视觉模型回复自动写入当前 AI 会话(可继续追问),聊天窗未开时不写入

点击行为(桌宠设置)

  • 可勾选「点击显示余额」「点击随机显示自言自语」,两者同时勾选自动排队(先余额、隔 1 秒再自言自语);多次点击只按最后一次完整显示

气泡美化与分页

  • 圆角 + 指向箭头 + 柔和阴影;长文字自动分页,点击气泡翻页

其他

  • 右键菜单整理:「动画」二级菜单、隐藏桌宠、AI 设置/看看屏幕调换
  • 点击 Q 弹音效(内置合成音,可开关;把自定义 click.wav 放入数据目录 sounds/ 可替换)
  • 开机自启:写入验证 + 启动自检(被安全软件清理时提醒)+ macOS 登录项授权提示
  • 全屏时自动隐藏:修复高 DPI(125%/150%)下最大化窗口被误判为全屏的问题;开关持久化

🐛 修复的 Bug

  • 打包遗漏:聊天窗 QSS 样式、内置聊天背景壁纸、点击音效未进包(均已修复)
  • 无 Chat 版启动报 ModuleNotFoundError: pet.chat(vision 延迟导入)
  • 无 Chat 版桌宠设置误显示余额选项
  • 点击音效查找路径错误(onedir 数据在 _internal 下)
  • 全屏自动隐藏开关不保存(配置白名单漏键)
  • 高 DPI 下最大化窗口误判为全屏而误隐藏
  • 开机自启写入被安全软件静默拦截无提示(现在有验证与提醒)
  • Q 弹帧残留 / 透明边缘 / 耳朵被裁(v3.0.x 已修,随本版延续)
  • 点击音效关闭后仍出声(设置保存未同步)

⚙️ 使用提示

  • 首次运行 SmartScreen / Gatekeeper 提示属正常(未签名),放行即可
  • 配置目录:Windows
  • Linux:解压后进入目录运行 ./dsh-pet-standalone-webm-chat;首次运行需 sudo apt install libxcb-cursor0 libxkbcommon-x11-0 libegl1 libgl1 libfontconfig1 libdbus-1-3 fonts-noto-cjk(Debian/Ubuntu 系),建议 X11 桌面;配置目录 ~/.config/dsh-pet-standalone-webm-chat/,详见仓库 README「Linux 使用」
  • 快捷键、全屏隐藏等更多设置见仓库 README

What's Changed

  • feat: 拖拽物理、看看屏幕、聊天窗主题与裁切取景等陪伴增强合集 by @klxxya in #5

New Contributors

  • @klxxya made their first contribution in #5

Full Changelog: v3.0.0...v3.1.0