在安卓桌面养一条会弹会甩的大肥鱼,实时看工作状态
31.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add gqpG10/dsh-pet-android该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0⚪ 扫描:无法判定尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。
- · 包内无可扫 JS
- · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
把 DeepSeek Harness 的网页桌宠 dsh-pet 搬上安卓主屏的悬浮窗版本:常驻桌面、106 个透明动画、Q弹/甩飞/接住物理互动、好感度、实时显示 DSH 工作状态与余额,免 root。
README
由 DeepSeek 最新模型翻译生成大肥鱼桌宠 · dsh-pet Android
把 dsh-pet(DeepSeek Harness 的网页桌宠)搬到 Android 主屏的悬浮窗版本。
一条蓝色的大肥鱼常驻在手机桌面上:会待机、会碎碎念、会显示 DSH 的工作状态和余额,可以拖着走、甩出去撞墙反弹、被你接住,单击会 Q 弹,长按还能呼出原生菜单。
不需要 root,不需要 Xposed / LSPosed,不需要 ADB / Shizuku,也不需要无障碍服务。
它只是一个普通的悬浮窗 App,通过 127.0.0.1 读取你本机 DSH 的状态。
目录
- 1.0.0.1 改版重点
- 它是什么
- 功能特性
- 界面与交互一览
- 依赖环境
- 安装
- 首次使用
- 使用方法
- 与 DSH 的联动机制
- 权限说明
- 常见问题
- 性能与耗电
- 兼容性
- 隐私与安全
- 从源码构建
- 版本记录
- 致谢
- 下载
1.0.0.1 改版重点
这一版不是常规小更新,而是把「看起来能动」修成「真的把每个动作播完」。四处都是亲眼盯真机日志才定位到的:
一、正式定名「大肥鱼桌宠」
应用名、主界面标题、通知标题、长按菜单标题、文档全部统一,版本号定为 1.0.0.1(versionCode 10001)。之前那套「蓝毛小女仆」的叫法和 5.x 的版本号一起退役。
展开完整文档(README 剩余 1 节)
大肥鱼桌宠 · dsh-pet Android
把 dsh-pet(DeepSeek Harness 的网页桌宠)搬到 Android 主屏的悬浮窗版本。
一条蓝色的大肥鱼常驻在手机桌面上:会待机、会碎碎念、会显示 DSH 的工作状态和余额,可以拖着走、甩出去撞墙反弹、被你接住,单击会 Q 弹,长按还能呼出原生菜单。
不需要 root,不需要 Xposed / LSPosed,不需要 ADB / Shizuku,也不需要无障碍服务。
它只是一个普通的悬浮窗 App,通过 127.0.0.1 读取你本机 DSH 的状态。
目录
- 1.0.0.1 改版重点
- 它是什么
- 功能特性
- 界面与交互一览
- 依赖环境
- 安装
- 首次使用
- 使用方法
- 与 DSH 的联动机制
- 权限说明
- 常见问题
- 性能与耗电
- 兼容性
- 隐私与安全
- 从源码构建
- 版本记录
- 致谢
- 下载
1.0.0.1 改版重点
这一版不是常规小更新,而是把「看起来能动」修成「真的把每个动作播完」。四处都是亲眼盯真机日志才定位到的:
一、正式定名「大肥鱼桌宠」
应用名、主界面标题、通知标题、长按菜单标题、文档全部统一,版本号定为 1.0.0.1(versionCode 10001)。之前那套「蓝毛小女仆」的叫法和 5.x 的版本号一起退役。
二、每个动作都能完整播一遍(最重要)
症状:10 秒的素材,实际只播 3~7 秒就被切下一个动作。
根因:桌宠用两个 元素轮流复用,换片时只做了 src=...; load(),没有把播放位置拨回 0。元素还停在上一条片子的片尾附近,新片一开播就"到头",ended 提前触发,于是动作被腰斩。真机日志是铁证:
21:52:53 swap idx=40 → 21:53:00 oneshot end (只播了 7 秒) 21:53:00 swap idx=36 → 21:53:04 oneshot end (4 秒) 21:53:04 swap idx=19 → 21:53:10 oneshot end (6 秒) 21:53:11 swap idx=58 → 21:53:14 oneshot end (3 秒)
修法:preload() 与 commit() 都把 currentTime 归零;ended 回调加校验——不在当前元素上的(stale ended)或距片尾还差 0.25 秒以上的(early ended)一律忽略,日志会写清 ct/dur。顺带修了 loop 标志串位(一次性动作被循环播、待机只播一遍),兜底看门狗也从"固定 20 秒"改成"素材实际时长 + 2 秒"。
三、静默时人偶是扁的
fitCanvas() 用 getBoundingClientRect() 量画布,而这个接口会把 Q 弹动画的 transform: scale(1.28,.7) 算进去。点一下宠物若正好赶上换动作的窗口 resize,画布就按"被压扁的矩形"建立宽高比,实测偏差 +83%,之后没有 resize 事件就一直扁着。改为量布局尺寸 clientWidth/clientHeight(不含 transform),并加了两道兜底:每 250ms 自校准 + ResizeObserver;改尺寸后立即补画一帧,避免换动作瞬间闪白。
四、其它的手感修正
- 点一下之后安静 8 秒(原 3 秒),拖动松手也走同一个静默时长,不再松手 2 秒就开始乱抽动作。
- 修一次性动作闸门不清零:随机动作被点击打断后 oneShotPlaying 会卡到 20 秒兜底,现在 petTap() / petSettle() 立刻清零。
- 修 DSH 工作时工作动画播不出来:if(curWork ...) return; 写在 wantWork 分支之前,桌宠停在循环待机时永远轮不到工作动画。
- 修宠物大小上限被钳到 150%:滑块支持 200%,重启后却被压回 150%。
- 构建签名跨次复用:证书固定放在 signing/debug.keystore,以后新版本可以直接覆盖安装,不用卸载重装丢存档。
- 开机自启 / 心跳看门狗:桌宠开着的时候重启手机,BootReceiver 会自动拉起来;心跳停了 3 分钟以上,15 分钟一次的心跳检查会把服务救回来。
它是什么
DSH(DeepSeek Harness)自带的桌宠是一个网页组件,只在浏览器里出现。这个项目把它做成了 Android 悬浮窗:
- 用 TYPE_APPLICATION_OVERLAY 常驻桌面,切到任何 App 都还在;
- 用 WebView + Canvas 逐帧绘制 106 个 VP9-alpha 动画,没有黑底、没有原生播放控件;
- 用前台服务保活,锁屏、切后台都不掉;
- 通过本机 HTTP 读取 DSH 的工作状态、余额和碎碎念;
- 用 Java 实现了一套简单的物理:拖动、甩飞、撞墙反射、接住、好感度。
它和 DSHA(DeepSeek Harness 的 Android 客户端)是两个独立的应用:DSHA 负责在手机上把 DSH 跑起来,桌宠只负责「显示 + 互动」。所以:
- 没有 DSHA:桌宠照样能装、能看动画、能甩能接,只是拿不到状态 / 余额 / 碎碎念;
- 有 DSHA:三项联动功能自动出现,不需要额外设置。
功能特性
| 分类 | 功能 | 说明 |
| 显示 | 桌面常驻悬浮窗 | TYPE_APPLICATION_OVERLAY + 前台服务,不占任务栏,切应用也在 |
| 显示 | 透明动画 | 内嵌 106 个 VP9-alpha 动画,Canvas 逐帧绘制,无黑底、无原生播放控件 |
| 显示 | 动态窗口 | 每个动画按内容包围盒(bbox.json)调整窗口,思考冒泡、烟花、汗滴等特效不会被裁 |
| 显示 | 原生气泡 | 文字气泡是独立小窗,贴在宠物头顶(上面放不下自动翻到脚下),不挡角色 |
| 联动 | 工作状态 | 轮询 /dsh-pet-7340/state,思考 / 干活 / 等待确认 / 完成 / 出错 对应不同动作和文案 |
| 联动 | 余额显示 | 先 POST /balance 触发刷新,再读 /state,显示最新钱包余额 |
| 联动 | 碎碎念 | 调 POST /whisper 生成一句;也同步网页端 pets.main.say 的推送 |
| 交互 | 单击 | Q 弹(squash & stretch)+ 随机换动作,好感 +1 |
| 交互 | 双击 | 打开 DSHA |
| 交互 | 长按 0.5 秒 | 先 Q 弹 + 震动,再在宠物旁边弹出小菜单 |
| 交互 | 拖动 | 按住移动位置,12dp 死区,不手抖就飘 |
| 物理 | 甩飞 | 拖动后快速松手,宠物按速度飞出去,撞屏幕边缘真实反射,线性减速停稳 |
| 物理 | 接住 | 飞行途中点一下即可接住,好感 +2 |
| 养成 | 好感度 | 单击 +1、接住 +2,本地持久化,每 20 点升一级 |
| 支持 | 赞赏作者 | 主界面「赞赏作者 ♥」弹出微信赞赏码,扫码请作者喝奶茶 |
| 自定义 | 大小调节 | 菜单「大小」→ 滑块 50%–200% 实时缩放,只影响宠物,不影响气泡和菜单 |
| 稳定性 | 静默操纵 | 拖动 / 甩飞 / 点击期间冻结动画,只做物理运动,动作播完 1.2 秒后恢复随机待机 |
| 适配 | 自动检测 DSHA | 没装 DSHA 时隐藏四项联动菜单,主界面给出下载入口;装了自动恢复 |
| 适配 | 端点自动发现 | 手动指定 / 缓存 / 扫 30000–61000 / 深度全端口,握手校验后才采用,换设备、换端口都能连 |
依赖提醒:表中的「工作状态」「余额显示」「碎碎念」三项依赖 DSHA(DeepSeek Harness 的 Android 客户端,负责在本机跑起 DSH Web 服务)。
没有 DSHA 时,宠物本体、Q 弹、甩飞、接住、好感、大小调节都正常,只是这三项拿不到数据。
DSHA 下载:<https://github.com/DSH-APP/DSHA> App 会自动检测 DSHA:没装时菜单里不出现这三项,主界面会多出一个「去 GitHub 获取 DSHA」按钮;装上后自动恢复。
界面与交互一览
主界面(控制面板)从上到下:
1. 头像卡:圆形头像 + 「大肥鱼桌宠」+「吃饱了就赖在你桌面上 · 不需要 root」;
2. 运行状态卡:四行实时状态
- 悬浮窗权限:已授予(绿)/ 未授予(橙)
- DSH 连接:OK 服务正常(绿)/ HTTP 错误(橙)
- DSHA 客户端:已安装(绿)/ 未安装(橙)
- DSH 端点:已连接 127.0.0.1:38859(cache) / 正在扫描… / 未找到 DSH,请先打开 DSHA
3. 按钮区:启动桌宠(渐变主按钮)、停止桌宠 / 授予悬浮窗权限(并排)、测试 DSH 连接、重新检测 / 手动填写(并排)、深度查找(全端口,较慢);
4. 玩法卡:四行手势说明;
5. 页脚:版本号 + 「常驻不耗电 · 不依赖 ADB / Shizuku」。
桌宠本体(悬浮窗)上:
| 操作 | 效果 |
| 单击 | Q 弹 + 换动作,好感 +1 |
| 双击 | 打开 DSHA |
| 长按 0.5 秒 | Q 弹 + 震动,弹出小菜单 |
| 拖动 | 移动位置 |
| 快速甩 | 飞出去,撞边反弹,减速停下 |
| 飞行中单击 | 接住,好感 +2 |
| 长按 → 大小 | 50%–200% 滑块 |
| 长按 → 动作 | 106 个动画按分类挑选 |
| 长按 → 显示位置 | 仅网页 / 仅桌面 / 两者 / 都不 |
依赖环境
手机端
| 项目 | 要求 |
| 系统版本 | Android 8.0(API 26)及以上 |
| 架构 | 通用(纯 Java + WebView,不区分 arm64 / x86) |
| 存储 | 安装包约 55.6 MB,安装后约 120 MB |
| 权限 | 悬浮窗(必须)、通知(建议),其余为普通权限 |
| Root | 不需要 |
| Xposed / LSPosed | 不需要 |
| ADB / Shizuku | 不需要 |
| 无障碍服务 | 不需要 |
服务端(想用状态 / 余额 / 碎碎念才需要)
| 项目 | 要求 |
| DSHA | 推荐安装 DSHA:在手机上免 root 跑 DeepSeek Harness,自带 Web 服务与端口管理 |
| DSH | 本机跑着 DeepSeek Harness 的 web 服务,默认地址 http://127.0.0.1:38859 |
| 插件 | DSH 的 web profile 里启用 dsh-pet 插件(提供 /dsh-pet-7340/* 接口) |
| 显示模式 | 宠物 main 的显示模式需为 web 或 both,否则 whisper 会返回 pet-not-displayed |
没有 DSH 也能装、也能看动画和互动,只是「工作状态 / 余额 / 碎碎念」三项不可用(会显示连接失败,不影响其他功能)。
数据插件(状态 / 余额 / 碎碎念的数据源)
这三项数据来自 dsh-pet 插件。想要「查看余额 / 跟随思考状态」,装这个官方插件就行,本仓库不再自带插件:
- 仓库与文档:<https://github.com/PC2005-cloud/dsh-pet>
- 安装:DSHA 的「插件」页搜索 dsh-pet 安装(或按仓库 README 手动装),装完重启 DSHA
关键设置:安装后把显示位置选成「窗口和桌面都不显示」(配置项 display: "none")。
这样插件只当数据源,不会在网页或桌面上再冒出一只宠物;桌宠 App 照旧从它的路由取工作状态、余额和碎碎念。
验证:
curl -s http://127.0.0.1:38859/dsh-pet-7340/state | head -c 120
返回带 "sections" 的 JSON 即正常。
| 接口 | 用途 |
| GET /dsh-pet-7340/state | 工作状态 / 余额缓存 / 会话事件 / 宠物语录 |
| POST /dsh-pet-7340/balance | 触发余额刷新 |
| POST /dsh-pet-7340/whisper?pet=main&surface=web | 生成碎碎念 |
说明:状态与余额不校验显示模式,none 下照常可用;碎碎念要求显示模式覆盖 web,若提示 pet-not-displayed,App 会自动切到 both 重试一次。
如果喜欢这个插件,欢迎去 PC2005-cloud/dsh-pet 给作者点个 ⭐ Star,感谢插件作者的支持。
没装插件时桌宠本体照常(动画、Q 弹、甩飞、好感、大小),只是这三项拿不到数据。
安装
1. 下载 pet-1.0.0.1.apk(见文末「下载」);
2. 点击安装,首次需允许「安装未知应用」;
3. 打开「大肥鱼桌宠」→ 点「授予悬浮窗权限」→ 在系统设置里允许「显示在其他应用上层」;
4. Android 13+ 建议允许通知权限(前台服务通知,可设为静默);
5. 回到 App 点「启动大肥鱼」,返回桌面即可看到宠物。
MIUI / HyperOS 额外一步:在「应用设置 → 大肥鱼桌宠 → 权限管理」里允许「后台弹出界面」,否则双击宠物打不开 DSHA。
其他 ROM:
- 三星:设置 → 应用程序 → 桌宠 → 权限 → 允许显示在其他应用上层;
- ColorOS / OriginOS:应用管理 → 桌宠 → 权限管理 → 悬浮窗;
- 原生 Android:设置 → 应用 → 特殊应用权限 → 显示在其他应用上层。
首次使用
1. 打开 App,状态卡三项应依次变绿:悬浮窗权限 → DSH 连接 → DSHA 客户端;
2. 点「启动桌宠」,App 会自动结束自己并回到桌面;
3. 桌面上出现宠物,它会先播一个待机动作;
4. 单击试试 Q 弹;拖动试试移动;快速甩试试物理;
5. 长按 0.5 秒打开菜单,试试「大小」和「动作」。
如果状态卡里「DSH 连接」是橙色,先确认 DSHA 已启动、端口是 38859;不影响宠物本体使用。
使用方法
手势与物理
| 操作 | 判定 | 效果 |
| 单击 | 按下到抬起 < 500ms、位移 < 12dp | Q 弹 + 随机换动作,好感 +1 |
| 双击 | 两次点击间隔 < 400ms、位移 < 80dp | 打开 DSHA |
| 长按 | 按住 ≥ 500ms 且未移动 | Q 弹 + 震动 28ms + 弹菜单 |
| 拖动 | 位移 > 12dp | 窗口跟随手指移动 |
| 甩飞 | 松手时拖动距离 > 24dp 且速度 > 1400px/s | 按速度飞出去 |
| 接住 | 飞行中 ACTION_DOWN | 停下,好感 +2,气泡「接住啦~」 |
物理参数(给想调的人):
- 反弹系数 0.95,撞边不补能量;
- 线性减速 480 px/s²,速度低于 40 px/s 停稳;
- 甩出初速上限 2200 px/s;
- 位置用浮点锚点 anchorX/anchorY 维护,换动作不会累积取整误差。
长按菜单
菜单是贴在宠物旁边的一张圆角小卡片(不是系统对话框),12 秒无操作自动关闭,点空白处也关闭。项目会随 DSHA 是否安装变化:
| 菜单项 | 条件 | 作用 |
| 打开 DSH | 装了 DSHA | 启动 DSHA 客户端 |
| 查看余额 | 装了 DSHA | 触发刷新并显示 ¥x.xx |
| 碎碎念 | 装了 DSHA | 让宠物说一句,失败用内置文案兜底 |
| 对话 | 装了 DSHA | 提示去 DSH 里聊,并打开 DSHA |
| 获取 DSHA ↓ | 没装 DSHA | 打开 <https://github.com/DSH-APP/DSHA> |
| 动作 ▸ | 总是 | 两级分类,选一个动画播放 |
| 大小 ▸ | 总是 | 50%–200% 滑块,实时缩放,可重置 |
| 显示位置 ▸ | 总是 | 仅网页 / 仅桌面 / 两者 / 都不 |
| 回到初始位置 | 总是 | 回到第一次出现的位置 |
| 好感度 | 总是 | 显示 ♥ 好感 Lv.x n 点 |
| 退出桌宠 | 总是 | 关闭悬浮窗和前台服务 |
大小调节
菜单 →「大小 ▸」打开深色卡片,拖动滑块 50%–200%,宠物实时缩放;松手写入 SharedPreferences,下次启动保持;点「重置 100%」恢复默认,「完成」关闭。
只缩放宠物窗口,气泡、菜单、文字不跟着变,避免大字挡住桌面。
显示位置
对应 DSH 网页端桌宠的右键菜单「显示位置」:
- 仅网页:只在浏览器里出现;
- 仅桌面:只在桌面悬浮窗出现;
- 两者:两边都显示(推荐,碎碎念需要 web 或 both);
- 都不:都隐藏(相当于关闭显示器)。
命令通过 POST /dsh-pet-7340/pet-display {"id":"main","display":"web|desktop|both|none"} 下发。
与 DSH 的联动机制
轮询
App 每 2 秒请求一次:
GET http://127.0.0.1:38859/dsh-pet-7340/state
返回结构(节选):
{
"counter": 1793330785636,
"sections": {
"workStatus": { "data": { "state": "working", "task": "…" } },
"balance": { "data": { "wallets": [ { "total": "4.60", "currency": "CNY" } ] } },
"notify": { "data": { "type": "session/event", "event": { "type": "turn/end" } } }
},
"pets": { "main": { "say": { "counter": 123, "text": "…" } } }
}
状态映射
| workStatus.state | 宠物动作 | 文案示例 |
| thinking | 思考冒泡 | 「让我想想…」 |
| working | 忙碌点按 | 「正在干活…」 |
| waiting | 原地踱步张望 | 「在等你确认哦」 |
| success | 雀跃庆祝 | 「搞定啦!」 |
| error | 垂头叹气冒汗 | 「出错了…」 |
状态变化且有内置文案时,用原生气泡显示 6–7 秒。
余额
/state 里的 sections.balance 是服务端缓存,可能几分钟不更新。所以「查看余额」不是直接读缓存,而是:
1. POST /dsh-pet-7340/balance 触发服务端刷新;
2. 等 1 秒;
3. 再 GET /state 取 wallets[0].total;
4. 气泡显示 余额 ¥x.xx。
碎碎念
1. POST /dsh-pet-7340/whisper?pet=main&surface=web;
2. 返回 {"ok":true,"text":"…","image":"…"} 就显示 text;
3. 如果返回 {"ok":false,"reason":"pet-not-displayed"}(DSH 重启后显示模式回到 desktop),App 会自动 POST /pet-display {"id":"main","display":"both"} 再重试一次;
4. 仍失败则用 8 句内置文案兜底,不至于「点了没反应」。
碎碎念推送
网页端(或其他端)产生的 pets.main.say 也会被轮询读到:counter 变化且文本与最近一次不同,就弹气泡 7 秒;首帧只记录 counter,避免一启动就弹旧消息。
权限说明
| 权限 | 用途 | 是否必须 |
| SYSTEM_ALERT_WINDOW | 显示悬浮窗、气泡、菜单 | 必须(手动授予) |
| FOREGROUND_SERVICE / FOREGROUND_SERVICE_SPECIAL_USE | 前台服务保活,避免被系统回收 | 必须 |
| POST_NOTIFICATIONS | 前台服务通知(Android 13+) | 建议 |
| INTERNET | 访问本机 127.0.0.1:38859 的 DSH 接口 | 必须 |
| VIBRATE | 长按、接住、撞墙的震动反馈 | 可选 |
<queries> 里声明了 dsh.android.client,仅用于判断 DSHA 是否安装,不读取其他应用信息。
所有权限都是普通应用权限,不涉及 root、shell、无障碍、设备管理员。
常见问题
| 现象 | 可能原因 | 处理 |
| 宠物没出现 | 没给悬浮窗权限 | 设置里允许「显示在其他应用上层」后重新启动 |
| 状态 / 余额 / 碎碎念没有 | 没装 DSHA,或 DSH 没起 | 看状态卡三项是否全绿;装 DSHA 后重开 App |
| DSH 连接 显示 HTTP 错误 | DSH 端口不是 38859 / 服务没起 | 打开 DSHA 看实际端口;确认 127.0.0.1:38859 可访问 |
| 点碎碎念提示 pet-not-displayed | DSH 重启后显示模式回到 desktop | App 会自动改回 both;仍失败去网页端右键菜单设「两者」 |
| 双击打不开 DSHA | MIUI 拦截后台弹出 | 允许「后台弹出界面」 |
| 悬浮窗过一会消失 | 系统省电/后台清理 | 省电策略「无限制」、允许自启动、加白名单 |
| 黑底 / 不动 | WebView 版本太旧 | 更新 Android System WebView 或 Chrome |
| 点一下会飘 | 旧版本取整误差 | 4.1 起已用浮点锚点;若仍偶发多为动画本身位移 |
| 点一下被甩出去 | 旧版本阈值太低 | 4.3 起需拖动 > 24dp 且速度 > 1400px/s 才触发 |
| 第一次播某动作卡一下 | 视频解码 | 正常现象,后续缓存后消失 |
更多排查:看 /sdcard/Android/data/com.dsha.pet/files/poll.log,里面记录每次轮询的 URL 和返回前几十个字符。
性能与耗电
- 待机时只做 2 秒一次的 HTTP 轮询 + 视频播放,CPU 占用通常 < 2%;
- 飞行 / 拖动时按屏幕刷新率绘制(120Hz 屏可到 120fps);
- 前台服务常驻会显示一条通知,可设为静默;
- 106 个动画按需加载,首次播放某个动作有几十毫秒解码延迟,之后走缓存。
兼容性
| 项目 | 情况 |
| Android 8.0–16 | 支持 |
| MIUI / HyperOS | 支持,需额外允许「后台弹出界面」 |
| 三星 One UI | 支持 |
| ColorOS / OriginOS | 支持,需允许悬浮窗 |
| 平板 / 折叠屏 | 可用,未专门适配横屏和大屏布局 |
| 模拟器 | 未测试 |
隐私与安全
- 不联网上传任何数据,不包含统计 SDK、广告 SDK;
- 只访问 127.0.0.1 上你本机的 DSH 接口;
- 好感度、大小等设置只存在应用私有 SharedPreferences;
- 诊断日志写在应用外部目录 Android/data/com.dsha.pet/files/poll.log,仅本机可读,可随时删除;
- 不读取通讯录、短信、位置、相册,不申请无障碍。
从源码构建
依赖:JDK 17、aapt、zipalign、apksigner、android-34 的 android.jar(或 Android SDK build-tools)。
./build.sh # 生成 build/pet.apk ./deploy.sh # 按 versionName 导出 build/pet-<ver>.apk
构建流程:
1. aapt package -m -J build/gen 生成 R.java;
2. aapt package -F build/base.apk -A assets 打包资源与素材;
3. javac -encoding UTF-8 -source 1.8 -target 1.8 编译 Java;
4. d8 生成 classes.dex;
5. zip 把 dex 塞进 APK;
6. zipalign -f 4 对齐;
7. apksigner 用 debug.keystore 签名。
目录结构:
app/src/main/
├── AndroidManifest.xml
├── java/com/dsha/pet/
│ ├── MainActivity.java # 控制面板 │ └── PetService.java # 悬浮窗、动画、物理、菜单、轮询 ├── assets/ │ ├── pet.html # Canvas 播放器(由 scripts/gen_html.py 生成) │ ├── webm/ # 106 个动画 │ ├── bbox.json # 每个动画的内容包围盒 │ ├── actions.json # 动作分类 │ └── font/cute.ttf # 站酷快乐体 └── res/drawable/ic_launcher.png
素材说明:assets/webm 来自 dsh-pet 的 assets/webm,按中文名排序复制为 001.webm…106.webm;bbox.json 用 ffmpeg(-c:v libvpx-vp9 解 alpha)+ 逐帧统计生成。
版本记录
完整记录见 CHANGELOG.md,近期版本:
- 1.0.0.1 定名「大肥鱼桌宠」;修「每个动作只播 3~7 秒就被切掉」「静默时人偶是扁的」「点击后闸门卡住」「大小上限被钳到 150%」;签名跨次复用、支持覆盖安装;新增开机自启与心跳看门狗
- 5.4 「查看余额」区分“没连上 DSH”与“连上了但查不到余额”,后者提示 无法查询「模型/供应商」的余额🥰
- 5.2 只看桌宠开关、START_STICKY + onTaskRemoved 自重启、省电白名单按钮、插件缺失自动降级
- 5.1 IPv6 回环扫描、自动全端口兜底、失败状态三档提示
- 5.0 DSH 端点自动发现:手动 / 缓存 / 本机扫描 / 深度查找四级发现,握手校验,断线自愈带动画退避
- 4.3 自动检测 DSHA:未安装时隐藏状态 / 余额 / 碎碎念,并在主界面与菜单给出下载入口
- 4.2 主界面重做:渐变背景、头像卡、状态卡、圆角按钮、玩法说明
- 4.1 修复点击 Q 弹后的位置漂移(浮点锚点 + 统一 moveWindow)
- 4.0 碎碎念 pet-not-displayed 自愈;余额刷新链路修复;菜单补齐对话 / 显示位置 / 大小
- 3.9 大小调节改为实时滑块(50%–200%)
- 3.8 新增「大小」菜单
- 3.7 甩飞阈值提高,点击不再误触发甩动;减速放缓
- 3.6 撞墙只反弹、不补能量,线性减速
- 3.5 修复换动作后位置累积偏移
- 3.4 修复撞墙后一段时间点击不 Q 弹;操纵期间静默
- 3.3 弹跳帧率提升、飞行时冻结动作
- 3.2 修复单线程被轮询占死导致菜单功能无响应
- 3.0–3.1 余额实时刷新、碎碎念解析返回文本
- 2.x 动态窗口、原生气泡、字体、甩飞 / 接住 / 好感
致谢
- 桌宠素材与网页端实现、以及状态/余额/碎碎念数据源:dsh-pet(喜欢的话欢迎给作者点个 ⭐ Star)
- 字体:站酷快乐体(ZCOOL KuaiLe,免费可商用)
- 运行环境:DeepSeek Harness
- Android 客户端:DSHA
本项目以 MIT 协议开源,动画素材版权归原作者所有。
下载
最新版:v1.0.0.1(versionCode 10001)
- GitHub Releases:<https://github.com/gqpG10/dsh-pet-android/releases/latest>
- APK 直链:<https://github.com/gqpG10/dsh-pet-android/releases/download/v1.0.0.1/pet-1.0.0.1.apk>
国内访问慢可以用酷安附件或网盘镜像。
配套的 DSHA(状态 / 余额 / 碎碎念依赖它):<https://github.com/DSH-APP/DSHA>
文件校验:
文件名:pet-1.0.0.1.apk 大小:37,666,556 字节 MD5:3ae9103de44fc394843613447cee996b
安装前建议核对 MD5,避免下载到被二次打包的版本。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
gqpG10/dsh-pet-android
在安卓桌面养一条会弹会甩的大肥鱼,实时看工作状态
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2