The project's README from github.com/jackwener/DSH-Android. As one markdown file: README.md.
不要 root,不用电脑,直接跑在你的安卓手机上。真正的手机 Agent,替你把手机上的事干完。
在安卓手机上运行 DeepSeek Harness(dsh):让它操作 App、整理文件、修改系统设置,或者自动执行任务。
flowchart LR
subgraph main[":main 进程(Kotlin · Compose)"]
UI["对话 · 轨迹 · 审批<br/>唤起层 · 设置"]
CAP["CapabilityHub<br/>设备工具"]
TRG["TriggerHub<br/>自动化"]
SVC["无障碍 · 通知监听<br/>系统助手 · 输入法"]
end
subgraph engine[":engine 进程(前台服务)"]
NODE["libnode.so<br/>Node 24 · bionic"]
DSH["dsh --profile android<br/>+ device / guard / account 插件"]
end
SHZ["Shizuku(可选)"]
API["DeepSeek API"]
UI <-- "dsh SDK JSON-RPC(stdio)" --> DSH
DSH <-- "能力桥 JSON-RPC(socketpair)" --> CAP
TRG --> DSH
CAP --- SVC
CAP -. shell 权限 .-> SHZ
NODE --- DSH
DSH -- HTTPS --> API
:engine 前台服务中启动。不用 proot、不用 Termux,也不会碰到安卓 12 以后的“幽灵进程”限制。Android 10 及以上,arm64-v8a;安装包约 110 MB,建议预留 500 MB 可用空间;需要能访问 DeepSeek API。
.apk.1)。从 Releases 重新下载,核对 SHA-256 与发布说明一致后再装。DSH-Android 不在 Google Play 上分发,又用到了无障碍、通知读取、短信等能力,Google Play 保护机制可能把它误判为有害应用。核对过下载的 APK 和发布说明里的 SHA-256 一致后,可以这样安装:
adb install:命令会一直没有输出,因为手机上在等你处理上面这个弹窗,看一眼手机屏幕就行。也可以先执行 adb shell settings put global verifier_verify_adb_installs 0 跳过对 adb 安装的检查,装完再改回 1。需要 JDK 21、Android SDK(compileSdk 37.2)、NDK r29。在 arm64 Linux 主机上构建时,需要额外传入 -Pandroid.aapt2FromMavenOverride=<arm64 版 aapt2 的路径>。
# 1. 原生库(libnode 等):下载预编译产物并校验哈希,不用自己编 Node
native/prebuilt.sh fetch # → toolchains/out/jniLibs/arm64-v8a/
# 2. 引擎包:dsh + 插件 + 补丁 → engine.zip
OUT_DIR=<engineOut> js/build-engine.sh
# 3. APK
./gradlew :app:assembleDebug -Pdsh.engineOut=<engineOut>
native-node24.22.1-caacecde44)。只有升级 Node 或改动原生补丁时才需要重编:先运行 native/build.sh,再用 native/prebuilt.sh publish 发布。node js/test/host-e2e.mjs,API key 放在一个文件里,用环境变量 DSH_E2E_KEY_FILE 指定路径(默认是 ~/.config/dsh/deepseek_api_key)。app/ Android App(Kotlin · Compose · Hilt · Room)
core/engine/ 引擎进程、JNI 启动、崩溃恢复
core/capability/ 设备工具(文件、屏幕、系统、通知、媒体……)
core/trigger/ 自动化规则和事件源
feature/ 界面:对话、轨迹、快捷面板、自动化、设置、登录
js/ dsh 的 android profile、插件、补丁,build-engine.sh → engine.zip
native/ Node 24 安卓构建、JNI 包装、原生插件、预编译产物脚本
tools/ 字符串、图标、README 首图(tools/ui/hero.py)、App 内更新清单(make-update-manifest.py)等生成脚本
update/ latest.json:App 内更新读取的最新版本清单(docs/RELEASE.md)
docs/ 架构说明、引擎契约、设计 token、截图
app/src/main/res/values/ 是中文(默认),values-en/ 是英文。添加一种语言只需两步:
app/src/main/res/values-<语言代码>/,复制 values-en/ 下的全部 strings*.xml 并翻译(lint 的 MissingTranslation 会报漏翻的条目);app/src/main/res/xml/locales_config.xml 里加一行 <locale android:name="<语言代码>" />。设置 → 通用 → 语言 的选项和 Android 13+ 系统设置里的“应用语言”都读这份列表,不用改代码;单元测试 LocalesConfigTest 会检查两者一致。引擎拿到的语言(DSH_ANDROID_LOCALE)跟随 App 语言。
js/packages/llm-service-lite/本项目是社区项目,与 DeepSeek 官方无关联,也未获其背书。“DeepSeek”及相关商标归其各自所有者所有。
Apache License 2.0。内置的第三方组件(Node.js、dsh、dsh-llm-service-lite、Shizuku、ripgrep 等)遵循各自的许可证。