deepseek-harness-android-app
把 DeepSeek Harness(DSH)打包成可直接安装的 Android APK —— 装上就能用,还能让 AI 免 Root 真正操作手机。
下载安装包 → dshaa.xin (官方下载页,含 SHA-256 校验值;也可在本仓库 Releases 页下载)
✨ 核心亮点
- 🌐 AI 浏览器:AI 真的能操作网页(v1.19.1 → v1.19.6):给它一个地址,它就能打开页面 → 读出结构化元素表(含稳定 ref)→ 找到要点的东西 → 点/输入 → 确认这一下点没点动 → 读正文。定位靠DOM 语义快照而不是截图猜;
ref是元素身份指纹,跨快照保持不变;snapshot{since}支持真差分(页面没变只花几十 token)。v1.19.6 起还有三件事:① 浏览器搬进独立进程:browser—— 页面崩了不会带走控制台和引擎(一键「整套丢弃」后下一次操作自动拉起全新进程);② 多页签(第 10 个工具browser_tabs:列出 / 新建 / 切换 / 关闭;拿 A 页签的 ref 去点 B 页签会被拦下并提示先切换);③ 控制台多了**「AI 浏览器」页** —— 看它正在哪一页、页签列表、「同屏查看」开关(把画面显示在屏幕上,只读:能看不能点);浏览器插件在「插件」页可以随时开关。工具共 10 个(caps/open/snapshot/find/click/type/read/nav/scroll/tabs),只允许 http/https 且禁止访问本机回环地址 - 🗂️ 会话管理 + 会话级自愈(v1.19.3 / v1.19.4):控制台里第一次能删会话 —— 「删除」= 先进回收站(随时一键恢复回原位),「彻底删除」只在回收站里提供且单独红框确认(写死:任何修复都不靠删掉整条会话解决);坏附件毒死的会话可在「会话修复」页只降级那一条消息里的坏附件(正文与上下文一字不动,先备份 → 写盘 → 立刻复检 → 写账本)
- 🩺 内核自检 + 自愈账本(v1.19.1):控制台新增「内核自检」——随包带一份内核清单(每个文件的路径/大小/sha256),点一次就告诉你到底哪个文件缺失或内容不符(快速自检约 1 秒 / 全量逐个 sha256);每次自检与修复都写进
/sdcard/<包名目录>/heal-ledger/的 JSON 账本,修过什么、依据什么,可查。自检只读;清理只碰内核自己的@deepseek-ai命名空间里dsh*陈旧条目,用户数据与第三方插件永不删 - 🔒 本地服务统一鉴权(v1.18.0):App 内 4 个绑
127.0.0.1的服务(通知 / 无障碍 / 虚拟屏桥 / 虚拟屏核心)一律要求令牌、拿不到就拒绝;虚拟屏 jar 增加随包 SHA-256 校验,被篡改即拒绝启动并自动重新提取 - 📦 APK 一键安装:不用 Termux、不用敲命令,下载安装即用(包名
com.deepseek.harness) - 🔓 免 Root 系统特权:通过 Shizuku 打通系统 shell —— AI 能装应用、点屏幕、改系统设置、截图、模拟输入,这是"手机上的 AI Agent",不只是聊天窗口
- 🟢 可选特权,不授予也能正常用(v1.4.0):不装 Shizuku/无 root 也能用——文件读写、预览、编辑只需「所有文件访问」权限;未授权时 AI 不会反复尝试系统操作,需要时会引导你授权
- 🔀 Root 优先,Shizuku 备用(v1.4.0):有 root 走 su 通道,无 root 走 Shizuku,自动选择
- 👁️ 无障碍屏幕助手(v1.7.0):系统设置开启「DeepSeek Harness 屏幕助手」后,AI 能读屏、点击、输入、滚动、无障碍截图理解——不需要 root / Shizuku,与特权通道互补
- 🖥️ 虚拟屏 vscreen(v1.10+):AI 可以创建一块独立于主屏的真·虚拟屏,把 App 启动进去、在里面点击/滑动/输入,你的主屏照常用;右上角悬浮窗实时显示虚拟屏画面(H.264 视频流,可拖动、可双指缩放),AI 在干什么全程可见。实现移植自开源项目 Operit(LGPL-3.0,详见 THIRD_PARTY_NOTICES.md)
- 🎛️ 原生控制台(v1.12+):冷启动先进 App 自己的控制台(解压 / 权限 / 插件开关 / 日志 四页),不必先等引擎起来;引擎状态判定全面重做——探测不再吃掉一次性 token、不再误报“未启动”、不会重复拉起两个引擎
- 🎨 控制台「一切皆自定义」(v1.17.3 → v1.19.6):一份
/sdcard/<包名目录>/console/console.json就能改控制台的外观(配色 / 字号 / 圆角 / 照片背景,含压暗·模糊·视差)、布局(卡片显隐顺序,甚至整页自己拼控件树)、文案(五十多个键)、行为(自定义按钮 + 动作,含 shell);主题包可导出/导入 zip(v1.19.6 起导入导出往返已按真实用户路径验过:导出 → 删掉 → 再导入,配置与图片逐字节还原),主题页内置 5 条「让 AI 做主题包」提示词与离线自检工具。坏配置自动回退、救援面不可移除、长按品牌字一键回默认 —— 永不因为配置打不开 App。⚠ 如实说明:layout.order/hidden/detailOpen与actions[]自定义按钮在默认(精简)界面下不生效(精简骨架是硬编码的,layout.pages整页自拼与layout.style:"classic"下照旧生效) - 🩹 混装树自愈(v1.17.3):升级后引擎起不来(
cosmokit does not provide an export named …那一类)不用再清数据 —— 控制台点一次「重新解压」即可修好;清理只发生在内核自己的@deepseek-ai命名空间、只删dsh*陈旧包,绝不碰用户数据与第三方插件 - 🌐 兼容版自带浏览器引擎(v1.17.3):compat 内嵌 GeckoView,不再依赖系统 WebView(Chromium 91~93 的老设备也能跑);代价是体积约 250MB、minSdk 提升到 26
- 🚑 救援能力(v1.15+):控制台提供「安全模式启动 / 退出」与「导出全部数据 / 从备份导入还原」。插件把配置写成非法 YAML 会导致引擎拒启(历史上只能清数据),安全模式把用户层整体旁置后用出厂配置启动、不动会话与凭证;备份导出把会话/插件/配置打成 zip 存到
Download,换机或彻底重装可还原 - 🔐 Shizuku 通道改走 App 进程(v1.13.1+):特权命令执行从“引擎内
rish子进程”改为经 App 进程内的 Shizuku API(新增本地/shell路由 + 随机令牌鉴权),根治手机上偶发的Request timeout. The connection between the current app … and Shizuku app … - ⏰ 前台保活(v1.4.0):AI 干活时挂后台/锁屏不被杀,任务完成推送通知
- 🔔 AI 发通知(v1.4.0):只需通知权限,任务完成/需要关注时推送到通知栏
- 🧠 完整 DSH 内核:
@deepseek-ai/dsh0.2.0-rc.2(v1.17.0 升级,上游当前 latest),保留插件生态 + RPC API,前端用 DSH 原生界面 - 🐍 内置 Python 3.14.6 + pip(v1.16.0/1.16.1):AI 可直接写脚本做数据处理、解析、统计;
pip install可用、venv可用,免安装免配置 - 📦 内置 npm / npx 11.20.0(v1.16.0/1.16.1):AI 可自己装 node 包,装出来的 CLI 可直接执行(已适配 Android 没有
/usr/bin/env这件事) - 🔌 插件三条输入全通(v1.15.3→v1.15.8):本地目录 / 包名 / GitHub 地址 —— 内置 pnpm 与 git 2.55.0,并把 curl / git 的证书链修好(启动时用系统 CA 合成 bundle)
- 📱 移动端适配:触摸优化 + 软键盘适配 + 首次启动权限引导页(9 项权限一站式配置)
- 💾 卸载不丢数据:dshroot 外置到
/sdcard/DeepSeekHarness,重装/升级不清空 AI 的运行时改动 - 🐋 鲸鱼品牌图标,横竖屏自由旋转
📸 界面预览
截图于 v1.2.0(2026-08-17)与 v1.4.0(2026-08-20),完整文件见
docs/screenshots/。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
v1.4.0(Lite 共存版)实测截图:
![]() |
![]() |
![]() |
🛠️ 手机端插件(本项目的核心特色)
| 插件 | 能力 |
|---|---|
dsh-tool-shizuku |
特权 shell:任意系统命令(pm/am/settings/dumpsys…),异步执行 + 环境消毒 + dex 只读自愈 |
dsh-tool-android |
结构化系统操作:包管理 / 应用管理 / 系统设置 / 截图 / 模拟输入 |
dsh-tool-accessibility |
无障碍读屏 + 模拟操作(v1.7.0):读控件树 / 点击 / 输入 / 返回主页 / 滚动 / 无障碍截图理解 |
dsh-tool-vscreen |
虚拟屏(v1.10+):建屏 / 把 App 启动到虚拟屏 / 看虚拟屏画面 / 在虚拟屏上点击·滑动·按键 / 关屏(8 个工具) |
dsh-tool-browser |
AI 浏览器(v1.19+):结构化 DOM 快照 + 稳定 ref + 真差分 + 检索式定位 + 动作后置校验;v1.19.6 起跑在独立进程 :browser、支持多页签(10 个工具:caps/open/snapshot/find/click/type/read/nav/scroll/tabs),可在控制台「插件」页随时开关 |
通过这五个插件,AI 不再只是"聊聊天",而是能真正控制你的手机——特权通道(root/Shizuku)负责系统级操作,无障碍通道(无需授权)负责读屏与交互,虚拟屏通道让 AI 在不打扰主屏的前提下跑自动化任务,AI 浏览器通道让它真的能打开网页、点进去、读完正文。
👁️ 无障碍屏幕助手(v1.7.0)
让 AI 看着屏幕操作手机:读屏、点击、输入、滚动、截图理解——不需要 root / Shizuku。
开启方式
- 系统设置 → 无障碍 →(已下载的服务/服务)→ 开启「DeepSeek Harness 屏幕助手」
- 在 App 里让 AI:先用
android_screen读屏 → 用android_tap/android_type/android_scroll操作 → 需要看图时用android_see截图理解
AI 可用工具
| 工具 | 能力 |
|---|---|
android_a11y_status |
查询无障碍服务状态(未开启时返回引导文案) |
android_screen |
读当前屏幕控件树(文字 / 坐标 / 可点击性 / 可输入性) |
android_tap |
按文字 / 描述 / 坐标点击 |
android_type |
输入文本到输入框(WebView / 网页输入框用 paste:true 走剪贴板粘贴) |
android_back / android_home |
系统返回键 / 回桌面 |
android_scroll |
上 / 下 / 左 / 右滚动 |
android_see |
无障碍截图并发送给视觉模型理解(需 Android 11+ 与支持图片的模型,如 deepseek-v4-flash-vision-exp) |
无障碍通道与特权通道互补:无障碍不依赖授权、擅长读屏与点击;Shizuku/root 通道擅长系统级操作(装应用 / 改设置 / 系统输入)。
🖥️ 虚拟屏 vscreen(v1.10+)
让 AI 在一块独立于主屏的虚拟屏里干活:你的主屏照常用,AI 在自己的屏里启动 App、点击、滑动、输入;右上角悬浮窗实时显示虚拟屏画面,AI 在干什么全程可见。
用法(3 步)
- 安装 APK(正式版或 Lite 共存版)
- 装好并授权 Shizuku(或设备有 root)—— 虚拟屏服务端必须以 shell 身份运行,没这一步虚拟屏用不了
- 打开一次 App —— 虚拟屏桥自动启动(此时它会拉起 shell 身份的服务端)
- 让 AI 建屏(或直接调
android_vscreen_create)→ 右上角自动弹出预览悬浮窗(可单指拖动、双指缩放)
尺寸:一律手机比例
- 竖屏 9:16(默认 1008×1792)、横屏 16:9(1792×1008)
- 即使显式传了非手机比例的宽高(如 1520×720),服务端也会归一化成 16:9(v1.11 修复)
- 切换横竖屏需先关屏再建屏
AI 可用工具
| 工具 | 能力 |
|---|---|
android_vscreen_create |
建虚拟屏(orientation 可选 portrait / landscape) |
android_vscreen_status |
查询当前虚拟屏(displayId / 宽高 / 是否在跑) |
android_vscreen_launch |
把指定 App 启动到虚拟屏 |
android_vscreen_see |
截虚拟屏画面发给视觉模型(返回换算系数,供坐标换算) |
android_vscreen_tap / swipe / key |
在虚拟屏上点击 / 滑动 / 按键 |
android_vscreen_close |
关闭虚拟屏 |
权限
| 权限 | 用途 | 必需? |
|---|---|---|
| Shizuku 或 root | 整个虚拟屏功能——服务端(现役核心 vscreen/Main.java)必须以 shell 身份运行:建屏、截图、把 App 启动到虚拟屏、注入触摸/按键全在它身上 |
必需。没有 Shizuku/root 就拉不起服务端,虚拟屏完全不可用(不是“能看不能点”) |
| 悬浮窗(显示在其他应用上层) | 虚拟屏预览窗 | 要看预览必须授权 |
| 存储(所有文件) | 虚拟屏截图保存 | 截图必需 |
| — | 不需要。虚拟屏与无障碍服务无关(不读控件树、不走 dispatchGesture),插件/服务端/桥都没有引用无障碍 |
技术要点
预览不是轮询截图,而是 服务端 MediaCodec H.264 编码 → App 内解码 → 渲染到悬浮窗的实时视频流。 该视频流方案与虚拟屏创建机制移植/对齐自开源项目 Operit(LGPL-3.0)。
已知限制
- 需要 Android 11+;
- 需要 Shizuku 或 root(原因见上表:服务端跑在 shell 身份下);
- 正式版与 Lite 共存版同时启动时 8999 端口互斥 → 虚拟屏实际二选一;
- 虚拟屏为 PUBLIC 类型显示,部分系统弹窗(如输入法)行为与主屏有差异。
📦 安装
下载 Releases 里的 APK 安装即可:
DeepSeekHarness-official-v1.19.6.apk(正式版,推荐):包名com.deepseek.harness,从旧版本同签名升级DeepSeekHarness-lite-v1.19.6.apk(Lite 共存版):包名com.deepseek.harness.beta(端口 3082),与正式版完全独立、可同时安装;数据独立在/sdcard/DeepSeekHarnessLite/,API Key 需单独填DeepSeekHarness-compat-v1.19.6.apk(兼容版):包名com.deepseek.harness.compat(端口 3084),内置 GeckoView(不依赖系统 WebView),老设备可用;体积约 250MB、要求 **Android 8.0(API 26)**及以上
⚠️ 从任何旧版本升级,请直接装 v1.19.6(这是 v1.19.1 之后的第一次发布,内容覆盖 v1.19.2 + v1.19.3 + v1.19.4 + v1.19.5 + v1.19.6 五级): ① AI 浏览器有了自己的独立进程 —— 页面崩了不带走控制台和引擎;支持多页签;各带一层 cookie / 存储隔离; ② 控制台多了「AI 浏览器」页 —— 看它在哪一页、页签列表、「同屏查看」开关(只读,能看不能点);浏览器插件可开可关; ③ 控制台全定制四层 + 导入导出往返全部真机测过(导出 → 删掉 → 再导入,配置与图片逐字节还原); ④ App 里第一次能删会话(删除 = 先进回收站,随时捞回来)+ 会话级自愈(坏附件只降级那一条,正文一字不动)+ 备份终于带上图片(附件实体 95MB); ⑤ 主控台与八个细页面统一版式(默认精简版,可切回完整版); ⑥ 修掉一批真缺陷:只写文案不写外观的主题被静默丢掉、长正文弹窗把按钮挤出屏幕、深色主题下日志弹窗"浅底浅字"、换页继承滚动位置、跨页签点错静默生效。 覆盖安装不会丢配置(模型/供应商、API Key、会话、插件都保留);同签名可直接覆盖,无需卸载。 ⚠️ versionCode 没变(仍是 54)→ 装机后设备不会自动重新解压:请在控制台「环境」→「重新解压」点一次,否则跑的还是旧插件。 完整变更见 CHANGES.md。
ℹ️ 内核仍是 DSH 0.2.0-rc.2,并移除了自研定时任务(0.2.0 内核自带
@deepseek-ai/dsh-schedule,到点作为 follow-up 投递回原会话,可在 控制台 →「插件」页启用)。v1.17.1 另修了两个社区报告的缺陷:虚拟屏入口闪退(#36)、平板分屏界面白闪(#37)。 v1.17.3 起另含:compat 内嵌 GeckoView(老设备不白屏)、控制台「一切皆自定义」(主题包)、混装树自愈(引擎起不来一键「重新解压」)。 更早的 v1.15.3 → v1.16.1 修掉了「插件装不上 / GitHub 装插件不通 / 证书报错 / 插件重启后消失 / 每次开机配置被重置」,并新增内置 Python 与 npm。完整变更见 CHANGES.md。
要求:
- Android 7.0(API 24)及以上
- 系统操作能力需配合 Shizuku(免 Root 授权)或有 root;都不授予也能正常使用(文件操作只需「所有文件访问」权限)
- API Key 在 App 内页面填写,只存本机,绝不打包进 APK
🆘 打不开 / 白屏 / 连接失败? 先看 启动排查(常见问题都能自助解决)。
🐞 遇到问题?日志在哪 / 怎么反馈
- v1.12 及以后(有控制台):打开 App → 控制台 →「日志」页 —— 「查看日志」看
dsh-web.log末尾 200 行(可截图发来),「分享」把日志以文件形式发出(QQ / 微信 / 邮件都能选;启动失败时还会带上startup-diag.txt) - 不用 App 也能取(v1.7.1 起,无需 root / adb):用文件管理器进手机存储根目录 ——
正式版
/sdcard/DeepSeekHarness/dsh-web.log、Lite 共存版/sdcard/DeepSeekHarnessLite/dsh-web.log、兼容版/sdcard/DeepSeekHarnessCompat/dsh-web.log; 启动失败时同目录另有startup-diag.txt(错误 + 端口 + node 是否存活 + 日志尾部) - v1.7.0 及更早:既没有控制台也没有外部日志镜像 → 只能
adb logcat | grep -i deepseek(引擎日志在 App 私有目录,无 root 一般读不到);建议先升级到 v1.12+ - 反馈请附:日志 + 机型 / Android 版本 + 用的哪个包(正式版 / Lite / 兼容版)+ 复现步骤
📁 目录结构
CHANGES.md 版本改动记录(含 @Suyi222 贡献的 v1.1.1 稳定基线)
android-app/ APK 构建工程(正式版源码;Lite = 同一份源码改包名)
├── build.sh 一键打包脚本
├── env.sh 编译工具链环境(可 export PREFIX 覆盖)
├── AndroidManifest.xml 包名/targetSdk(28)/横竖屏自由旋转/Shizuku 声明
├── libs/ Shizuku 官方 aar(api/provider/aidl 13.1.5)
├── res/ 图标 + 字符串资源
├── sdk/ 放 platform android.jar(见 sdk/README.md)
├── compat/ **兼容版差异文件**(内嵌 GeckoView):只放与上面不同的 4 个文件 + 说明 → compat/README.md
└── src/.../ 原生壳:MainActivity(权限引导/控制台/引擎启停)、ConsoleTheme(主题包解析)、
AccessibilityService(无障碍)、OverlayService(鲸鱼悬浮球)、
VsreenBridgeService(虚拟屏桥)、EngineService、LogShareProvider(日志分享)等
mobile-patch/ 移动端适配(注入 DSH 前端,不覆盖原生代码)
├── inject.sh 注入脚本(mobile.css + mobile.js 到 dist)
├── mobile.css 触摸优化 + 竖屏适配 + 插件管理页 UI 适配
└── mobile.js 软键盘适配(VisualViewport 方案,横竖屏通用)
plugins/ 手机端自定义 DSH 工具插件
├── dsh-tool-shizuku/ 特权 shell(Shizuku 通道)
├── dsh-tool-android/ 结构化系统操作(包管理/应用/设置/截图/输入)
├── dsh-tool-accessibility/ 无障碍读屏/模拟操作(v1.7.0)
├── dsh-tool-vscreen/ 虚拟屏工具(create/status/launch/see/tap/swipe/key/close,v1.10+)
└── dsh-tool-browser/ AI 浏览器工具(caps/open/snapshot/find/click/type/read/nav/scroll,v1.19+)
tools/ 构建期小工具
└── manifest-gen.mjs 生成内核树清单(assets/kernel-manifest.tsv,供 App 侧「内核自检」用,v1.19.1)
console-theme/ 控制台主题包规范与工具链(v1.17.3,随 APK 分发到设备)
├── THEME-PACK-SPEC.md 自包含规范(字段速查 / 卡片·积木·动作三张 id 表 / 5 条提示词模板)
├── console.schema.json 机器可读 schema(与 App 侧解析同一套规则)
├── console.example.json 可直接用的示例主题
├── theme_pack_check.py 零依赖离线校验器(AI 生成主题包后自检用)
├── test-checker.py 校验器自测(6 用例)
└── make-demo-theme.py 扮演"生成主题包的 AI":现画背景图 → 写配置 → 打包 → 自检
dsh-patches/ DSH 源码补丁归档 + overlay
├── README.md 补丁说明(适配原因/升级 DSH/打包)
├── apply.sh 重新应用源码补丁
└── overlay/ 改好后的源码文件
config/cordis.patch.yml DSH 组合配置(禁原生模块 + 插入 bash-local/shizuku/android 插件)
docs/开发指南.md 项目开发指南(架构/常用命令/注意事项)
🔨 构建说明
详见 docs/开发指南.md 第六节「常用命令」与第七节「注意事项」。
关键点:
targetSdk必须保持 28(≥29 会导致 node 二进制 EACCES 起不来)- 需准备
runtime/(node v26 + 依赖库)和dshroot/(DSH 内核)才能打完整 APK build.sh会自动注入 mobile.css/mobile.js,并做 API Key 安全检查
⚠️ 这是源码与配置仓库,不含 APK 二进制、签名密钥(release.jks)、node 运行时、payload.zip、凭证文件。 📦 安装包(DeepSeekHarness.apk)、node 运行时与 DSH 内核分块包见 Releases;构建源码前需准备 runtime/ 与 dshroot/(分块包合并方法见 Release 说明)。
💬 交流讨论
遇到问题、想提建议、或想交流用法?欢迎加入 QQ 群 / QQ 频道:
| QQ 群 | QQ 频道 |
|---|---|
![]() |
![]() |
也可以直接在 Issues 反馈,我会尽快回复。
🙏 致谢与开源许可
- Operit(AAswordman)—— 本项目虚拟屏(vscreen)功能移植/对齐自 Operit 的 shower 模块(虚拟屏创建、H.264 视频流预览、反射/隐藏 API 规避等)。Operit 采用 LGPL-3.0,因此本仓库的虚拟屏相关文件同样按 LGPL-3.0 分发。完整致谢与许可说明见 THIRD_PARTY_NOTICES.md。
- Shizuku(RikkaApps,Apache-2.0)—— 免 Root 特权通道。
- DeepSeek Harness(
@deepseek-ai/dsh) —— 本项目的运行内核。 - Node.js(MIT)—— APK 内置运行时。
📄 许可证
本项目源码主体采用 MIT 许可证。
- ⚠️ 例外:
android-app/src/com/deepseek/harness/vscreen/(虚拟屏)移植自 Operit,按 LGPL-3.0 分发。 这部分及其衍生修改必须继续以 LGPL-3.0 分发并保留原始声明,详见 THIRD_PARTY_NOTICES.md(LGPL-3.0 / GPL-3.0 全文见licenses/)。 - 依赖的 DSH 内核(@deepseek-ai/dsh)为 MIT;Shizuku SDK 为 Apache-2.0;node 运行时为 MIT。
- 仓库不含签名密钥与凭证;安装包与运行时见 Releases。











