跳到主要内容
AI教程

DSH-Android 入门教程:用自然语言控制安卓手机与创建自动化任务

本教程带你安装并配置 DSH-Android,连接 DeepSeek 或第三方模型,通过自然语言管理文件、操作界面、修改系统设置,并进一步配置 Shizuku、自动化触发器和源码构建环境。

DSH-Android 入门教程:用自然语言控制安卓手机与创建自动化任务

DSH-Android 是什么

DSH-Android 是一个将 DeepSeek Harness 直接运行在安卓设备上的社区项目。安装 APK 后,你可以用自然语言描述任务,让 agent 整理文件、操作 App、修改系统设置,或者创建按时间与设备事件触发的自动化任务。

项目不需要 Root,也不依赖 Termux。它把 Node 24 和未经 fork 的 dsh 引擎嵌入 App,并通过 Kotlin 实现的设备能力与安卓系统交互。当前版本要求 Android 10 及以上和 arm64-v8a 设备。

DSH-Android 是社区项目,与 DeepSeek 官方无关联,也未获得其背书。

DSH-Android 首页

主要功能

文件与文档处理

你可以让 DSH-Android 查找、整理、移动和重命名文件,也可以执行压缩与解压。它还能读取 PDF、Word、Excel 和 PPT 文件中的文字。

  • 查找占用空间较大的文件。
  • 按照类型或日期整理下载目录。
  • 批量移动或重命名文件。
  • 读取常见办公文档中的文本。

屏幕和 App 操作

启用无障碍服务后,DSH-Android 可以读取屏幕、点击、滑动和输入文字,还能打开 App 或跳转到指定页面。这适合完成需要操作图形界面的多步骤任务。

手机操作界面

系统设置与通知

项目支持控制亮度、音量、勿扰模式、闹钟、Wi-Fi、蓝牙和定位,也能读取与回复通知、控制媒体播放。部分系统能力可直接使用,另一些能力需要额外授权或借助可选的 Shizuku。

自动化触发

除了立即执行命令,你还可以创建定时任务,或者在连接 Wi-Fi、连接蓝牙、开始充电、到达某地、收到通知等条件下触发任务。

完整的 dsh 能力

App 中运行的是原版 dsh,而不是单独维护的 fork,因此可以继续使用技能、MCP、子 agent 和网页搜索等能力。任务轨迹会按轮次展示 agent 执行过的操作,方便检查过程。

Agent 任务轨迹

安装前的准备

开始前,请确认设备满足以下条件:

  • Android 10 或更高版本。
  • 处理器 ABI 为 arm64-v8a。
  • 安装包约 110 MB,建议至少预留 500 MB 可用空间。
  • 设备能够访问所配置的模型 API。
  • 拥有 DeepSeek 账号、DeepSeek API key,或受支持的第三方模型服务凭证。

安装与初始设置

  1. 从项目的 Releases 页面下载最新 APK,并在安卓设备上安装。

  2. 打开 App,登录 DeepSeek 账号,或者填写从 DeepSeek 平台获取的 API key。

  3. 如果希望使用其他模型,进入设置 → 模型服务,添加对应服务商并填写 API key,然后拉取模型列表。

  4. 返回首页,输入一个简单任务。首次使用某项设备能力时,App 会引导你授予对应权限。

权限采用按需申请方式,不必一开始开放全部权限。你可以在设置 → 手机权限中统一查看和管理。

手机权限管理

第一次执行任务

示例一:查找大文件

在首页输入:

列出下载目录里最大的 5 个文件

agent 会根据任务调用文件能力并返回结果。如果需要进一步处理,可以在同一会话中继续输入:

把其中超过 500 MB 的文件整理到一个名为“大文件”的目录,但不要删除任何文件

涉及移动、修改或其他敏感操作时,请仔细检查 App 显示的任务步骤与审批提示。

示例二:调整手机状态

你可以直接描述目标,例如:

把媒体音量调低,并打开勿扰模式

具体操作能否直接完成取决于安卓版本、设备 ROM 和已经授予的权限。需要权限时,App 会给出开启指引。

示例三:操作 App

启用无障碍服务后,可以尝试:

打开系统设置,进入蓝牙页面

屏幕操作依赖当前界面状态。任务完成后,可以进入轨迹页面,按轮次回看 agent 的动作和结果。

设置快捷唤起方式

DSH-Android 支持通过悬浮球、系统助手、快捷磁贴和系统分享入口唤起。根据你的使用习惯启用相应入口后,无需每次返回 App 首页即可提交任务。

快捷唤起面板

在部分国产 ROM 上,悬浮球和后台自动化还需要手动允许后台弹出界面与自启动。可以查看 App 的体检页,根据提示调整系统设置。

配置 Shizuku 解锁更多系统能力

Shizuku 不是基本使用的必需项,但可以提供 shell 权限,从而解锁更多系统开关。项目内置了官方安装包,可按以下步骤配置:

  1. 进入设置 → 手机权限。

  2. 使用一键安装功能安装 Shizuku。

  3. 按照 Shizuku 的指引完成启动和授权。

  4. 如果设备为 Android 11 或更高版本,并且 Shizuku 版本不低于 13.6,建议开启开机启动(无线调试)。

设备重启后,Shizuku 通常需要重新启动。开启无线调试开机启动可以减少重复操作,但实际行为仍取决于系统版本和厂商限制。

创建自动化任务

自动化任务可以按固定时间执行,也可以由设备事件触发。支持的事件包括连接 Wi-Fi、连接蓝牙、开始充电、到达某地和收到通知等。

创建任务时,建议清楚写出触发条件、执行动作和必要的限制条件。例如:

每天晚上 11 点打开勿扰模式,并把媒体音量调到较低水平
连接到家里的 Wi-Fi 后执行指定任务

第二个示例仍需在 App 中配置实际的网络条件和具体动作。涉及定位、通知或后台运行的规则,需要授予相应权限。对于可能修改或移动数据的自动化,建议先用无破坏性的操作测试。

使用第三方模型服务

除 DeepSeek 外,项目还允许添加 OpenAI、Claude、Gemini、Grok、OpenRouter、Kimi、智谱 GLM、通义千问、火山方舟、MiniMax、硅基流动、阶跃星辰,或任意兼容接口。

  1. 打开设置 → 模型服务。

  2. 选择服务商或配置兼容接口。

  3. 填写 API key,并拉取模型列表。

  4. 在模型选择器中切换到需要使用的模型。

第三方模型目前只支持通过 HTTPS 访问的 OpenAI 兼容 Chat Completions 接口。上下文统一按 128K 计算,不提供推理等级选择。工具调用效果取决于所选模型。如果要使用 DeepSeek 提供的联网搜索,即使主模型来自第三方,也需要另外配置 DeepSeek API key。

会话列表界面

进阶使用建议

用轨迹检查复杂任务

对于多步骤操作,不要只查看最终回答。任务完成后打开轨迹,检查 agent 每轮调用了什么能力、执行了哪些动作。这样更容易发现权限不足、界面变化或模型判断偏差。

把任务写得更明确

自然语言指令最好包含目标、范围和安全边界。例如,相比“整理下载目录”,下面的写法更可控:

把下载目录中的 PDF 移动到 Documents/PDF,文件重名时不要覆盖,其他文件保持不变

如果任务涉及删除、覆盖、发送消息或回复通知,建议明确要求先列出候选项或等待确认。

区分界面操作和系统能力

锁屏后,文件、系统设置和通知等系统 API 类任务仍可执行;但在启用安全锁屏的情况下,安卓不允许 App 操作其他 App 的界面。这类任务会暂停,并提示你解锁后继续。

为冷启动预留时间

当前引擎冷启动大约需要 5 秒。首次打开 App 或引擎尚未运行时,任务响应可能稍慢。

管理会话和权限

将不同目的的任务放在不同会话中,有助于保持上下文清晰。定期检查手机权限、无障碍服务、通知访问权和后台运行设置,不再使用的能力可以关闭。

从源码构建

如果你要参与开发,需要准备 JDK 21、Android SDK,其中 compileSdk 为 37.2,以及 NDK r29。在 arm64 Linux 主机上构建时,还需要传入 arm64 版 aapt2 的路径。

首先下载并校验 libnode 等预编译原生库:

native/prebuilt.sh fetch

产物会写入:

toolchains/out/jniLibs/arm64-v8a/

然后构建包含 dsh、插件和补丁的引擎包:

OUT_DIR=<engineOut> js/build-engine.sh

最后构建 Debug APK:

./gradlew :app:assembleDebug -Pdsh.engineOut=<engineOut>

如果在 arm64 Linux 主机上执行 Gradle,还需按环境补充:

-Pandroid.aapt2FromMavenOverride=<arm64 版 aapt2 的路径>

通常不需要自行编译 Node。只有升级 Node 或修改原生补丁时,才需要先运行:

native/build.sh

之后通过以下命令发布预编译产物:

native/prebuilt.sh publish

运行主机端到端测试

项目提供会真实调用 DeepSeek API 的主机端到端测试:

node js/test/host-e2e.mjs

将 API key 保存在文件中,再通过 DSH_E2E_KEY_FILE 指定路径。默认路径为:

~/.config/dsh/deepseek_api_key

架构概览

App 主进程使用 Kotlin 与 Compose,负责对话、轨迹、审批、设置、设备能力和自动化触发。Node 24 以安卓原生共享库形式运行在独立的 :engine 前台服务中,并通过 JNI 启动 dsh。

界面与 dsh 通过 SDK JSON-RPC 通信;设备能力由 Kotlin 实现,并通过私有 socket 通道暴露给 dsh。可选的 Shizuku 为部分能力提供 shell 权限,模型请求则通过 HTTPS 发送到相应 API。

这种设计不使用 proot 或 Termux,也避免依赖额外的独立 Node 进程。dsh 本身不做 fork,安卓适配集中在插件和少量补丁中。

总结

DSH-Android 把完整的 dsh agent 引擎封装进一个安卓 APK,让自然语言任务可以连接文件、App 界面、系统设置、通知和自动化触发器。初次使用时,建议从只读文件查询等低风险任务开始,按需授予权限,再逐步配置无障碍服务、Shizuku、快捷入口和自动化规则。

项目采用 Apache License 2.0,但内置的 Node.js、dsh、Shizuku、ripgrep 等第三方组件分别遵循各自许可证。