deepseek-harness-android-app

Introduction: DeepSeek Harness 手机版:可直接安装的 Android APK,AI 免 Root 操作手机(Shizuku/root 可选),文件编辑只需所有文件访问权限,前台保活 + AI 通知
More: Author   ReportBugs   OfficialWebsite   
Tags:

把 DeepSeek Harness(DSH)打包成可直接安装的 Android APK —— 装上就能用,还能让 AI 免 Root 真正操作手机。

License Stars Release

下载安装包 → 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/dsh 0.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/。

界面截图 1 界面截图 2 界面截图 3
界面截图 4 界面截图 5 界面截图 6

v1.4.0(Lite 共存版)实测截图:

Lite 截图 1 Lite 截图 2 Lite 截图 3

🛠️ 手机端插件(本项目的核心特色)

插件 能力
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。

开启方式

  1. 系统设置 → 无障碍 →(已下载的服务/服务)→ 开启「DeepSeek Harness 屏幕助手」
  2. 在 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 步)

  1. 安装 APK(正式版或 Lite 共存版)
  2. 装好并授权 Shizuku(或设备有 root)—— 虚拟屏服务端必须以 shell 身份运行,没这一步虚拟屏用不了
  3. 打开一次 App —— 虚拟屏桥自动启动(此时它会拉起 shell 身份的服务端)
  4. 让 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 频道
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。
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest