
DSH-Android란
DSH-Android는 DeepSeek Harness를 Android 기기에서 직접 실행하는 커뮤니티 프로젝트입니다. APK를 설치한 후 자연어로 작업을 설명하면 agent가 파일 정리, 앱 조작, 시스템 설정 변경 또는 시간과 기기 이벤트에 따라 실행되는 자동화 작업 생성을 수행할 수 있습니다.
이 프로젝트는 Root가 필요하지 않으며 Termux에도 의존하지 않습니다. Node 24와 fork되지 않은 dsh 엔진을 앱에 내장하고, Kotlin으로 구현된 기기 기능을 통해 Android 시스템과 상호 작용합니다. 현재 버전은 Android 10 이상 및 arm64-v8a 기기를 요구합니다.
DSH-Android는 커뮤니티 프로젝트이며 DeepSeek 공식 프로젝트와 관련이 없고, 공식적인 보증도 받지 않았습니다.

주요 기능
파일 및 문서 처리
DSH-Android에 파일 검색, 정리, 이동 및 이름 변경을 요청할 수 있으며, 압축 및 압축 해제도 수행할 수 있습니다. 또한 PDF, Word, Excel 및 PPT 파일의 텍스트를 읽을 수 있습니다.
- 저장 공간을 많이 차지하는 파일 찾기.
- 유형 또는 날짜별로 다운로드 디렉터리 정리.
- 파일 일괄 이동 또는 이름 변경.
- 일반적인 오피스 문서의 텍스트 읽기.
화면 및 앱 조작
접근성 서비스를 활성화하면 DSH-Android가 화면을 읽고, 클릭하고, 스크롤하고, 텍스트를 입력할 수 있으며 앱을 열거나 지정된 페이지로 이동할 수도 있습니다. 그래픽 사용자 인터페이스를 조작해야 하는 여러 단계의 작업을 수행하는 데 적합합니다.

시스템 설정 및 알림
이 프로젝트는 밝기, 볼륨, 방해 금지 모드, 알람, Wi-Fi, 블루투스 및 위치를 제어할 수 있으며 알림을 읽고 답장하거나 미디어 재생을 제어할 수도 있습니다. 일부 시스템 기능은 바로 사용할 수 있지만, 다른 기능은 추가 권한 또는 선택 사항인 Shizuku가 필요합니다.
자동화 트리거
명령을 즉시 실행하는 것 외에도 예약 작업을 만들거나 Wi-Fi 연결, 블루투스 연결, 충전 시작, 특정 장소 도착, 알림 수신 등의 조건에 따라 작업을 실행할 수 있습니다.
완전한 dsh 기능
앱에서는 별도로 유지 관리되는 fork가 아니라 원본 dsh가 실행되므로 스킬, MCP, 하위 agent 및 웹 검색 등의 기능을 계속 사용할 수 있습니다. 작업 기록에는 agent가 실행한 작업이 라운드별로 표시되어 과정을 확인하기 쉽습니다.

설치 전 준비
시작하기 전에 기기가 다음 조건을 충족하는지 확인하세요.
- Android 10 이상.
- 프로세서 ABI가 arm64-v8a.
- 설치 패키지는 약 110 MB이며, 최소 500 MB의 여유 공간을 확보하는 것이 좋습니다.
- 기기가 구성된 모델 API에 액세스할 수 있음.
- DeepSeek 계정, DeepSeek API key 또는 지원되는 타사 모델 서비스의 인증 정보 보유.
설치 및 초기 설정
프로젝트의 Releases 페이지에서 최신 APK를 다운로드하고 Android 기기에 설치합니다.
앱을 열고 DeepSeek 계정으로 로그인하거나 DeepSeek 플랫폼에서 발급받은 API key를 입력합니다.
다른 모델을 사용하려면 설정 → 모델 서비스로 이동해 해당 제공업체를 추가하고 API key를 입력한 다음 모델 목록을 불러옵니다.
홈으로 돌아가 간단한 작업을 입력합니다. 특정 기기 기능을 처음 사용할 때 앱에서 해당 권한을 부여하도록 안내합니다.
권한은 필요할 때 요청되므로 처음부터 모든 권한을 허용할 필요가 없습니다. 설정 → 휴대폰 권한에서 한 번에 확인하고 관리할 수 있습니다.

첫 작업 실행
예시 1: 큰 파일 찾기
홈 화면에 다음을 입력합니다.
다운로드 디렉터리에서 가장 큰 파일 5개를 나열해agent는 작업에 따라 파일 기능을 호출하고 결과를 반환합니다. 추가 처리가 필요하면 같은 세션에서 계속 입력할 수 있습니다.
그중 500 MB를 초과하는 파일을 “큰 파일”이라는 디렉터리로 정리해. 단, 어떤 파일도 삭제하지 마이동, 수정 또는 기타 민감한 작업이 포함된 경우 앱에 표시되는 작업 단계와 승인 안내를 꼼꼼히 확인하세요.
예시 2: 휴대폰 상태 조정
다음과 같이 목표를 직접 설명할 수 있습니다.
미디어 볼륨을 낮추고 방해 금지 모드를 켜작업을 바로 완료할 수 있는지는 Android 버전, 기기 ROM 및 이미 부여된 권한에 따라 달라집니다. 권한이 필요하면 앱에서 활성화 방법을 안내합니다.
예시 3: 앱 조작
접근성 서비스를 활성화한 후 다음을 시도할 수 있습니다.
시스템 설정을 열고 블루투스 페이지로 이동해화면 조작은 현재 인터페이스 상태에 따라 달라집니다. 작업이 완료되면 기록 페이지에서 라운드별로 agent의 동작과 결과를 다시 확인할 수 있습니다.
빠른 호출 방식 설정
DSH-Android는 플로팅 버튼, 시스템 어시스턴트, 빠른 설정 타일 및 시스템 공유 메뉴를 통한 호출을 지원합니다. 사용 습관에 맞는 진입점을 활성화하면 매번 앱 홈으로 돌아가지 않고도 작업을 제출할 수 있습니다.

일부 중국산 ROM에서는 플로팅 버튼과 백그라운드 자동화를 사용하려면 백그라운드 팝업 허용 및 자동 시작을 수동으로 허용해야 합니다. 앱의 점검 페이지를 확인하고 안내에 따라 시스템 설정을 조정할 수 있습니다.
Shizuku를 설정해 더 많은 시스템 기능 잠금 해제
Shizuku는 기본 사용에 필수는 아니지만 shell 권한을 제공하여 더 많은 시스템 스위치를 잠금 해제할 수 있습니다. 프로젝트에는 공식 설치 패키지가 내장되어 있으며 다음 단계에 따라 설정할 수 있습니다.
설정 → 휴대폰 권한으로 이동합니다.
원클릭 설치 기능으로 Shizuku를 설치합니다.
Shizuku의 안내에 따라 시작 및 권한 부여를 완료합니다.
기기가 Android 11 이상이고 Shizuku 버전이 13.6 이상이면 부팅 시 시작(무선 디버깅)을 활성화하는 것이 좋습니다.
기기를 재부팅한 후에는 일반적으로 Shizuku를 다시 시작해야 합니다. 무선 디버깅 부팅 시 시작을 활성화하면 반복 작업을 줄일 수 있지만, 실제 동작은 시스템 버전과 제조업체 제한에 따라 달라집니다.
자동화 작업 만들기
자동화 작업은 정해진 시간에 실행하거나 기기 이벤트에 의해 실행할 수 있습니다. 지원되는 이벤트에는 Wi-Fi 연결, 블루투스 연결, 충전 시작, 특정 장소 도착 및 알림 수신 등이 있습니다.
작업을 만들 때는 트리거 조건, 실행 동작 및 필요한 제한 조건을 명확히 작성하는 것이 좋습니다. 예를 들면 다음과 같습니다.
매일 밤 11시에 방해 금지 모드를 켜고 미디어 볼륨을 낮은 수준으로 설정해집 Wi-Fi에 연결되면 지정된 작업을 실행해두 번째 예시는 앱에서 실제 네트워크 조건과 구체적인 동작을 추가로 설정해야 합니다. 위치, 알림 또는 백그라운드 실행이 포함된 규칙에는 해당 권한을 부여해야 합니다. 데이터를 수정하거나 이동할 수 있는 자동화는 먼저 비파괴적인 작업으로 테스트하는 것이 좋습니다.
타사 모델 서비스 사용
DeepSeek 외에도 OpenAI, Claude, Gemini, Grok, OpenRouter, Kimi, 지푸 GLM, 통이첸원, 화산 아크, MiniMax, 실리콘플로우, StepFun 또는 모든 호환 인터페이스를 추가할 수 있습니다.
설정 → 모델 서비스를 엽니다.
서비스 제공업체를 선택하거나 호환 인터페이스를 구성합니다.
API key를 입력하고 모델 목록을 불러옵니다.
모델 선택기에서 사용할 모델로 전환합니다.
현재 타사 모델은 HTTPS를 통해 액세스하는 OpenAI 호환 Chat Completions 인터페이스만 지원합니다. 컨텍스트는 모두 128K로 계산되며 추론 수준 선택은 제공하지 않습니다. 도구 호출 결과는 선택한 모델에 따라 달라집니다. DeepSeek에서 제공하는 인터넷 검색을 사용하려면 주 모델이 타사 모델이더라도 별도로 DeepSeek API key를 구성해야 합니다.

고급 사용 권장 사항
기록으로 복잡한 작업 확인
여러 단계의 작업에서는 최종 답변만 확인하지 마세요. 작업이 완료된 후 기록을 열어 agent가 매 라운드마다 어떤 기능을 호출하고 어떤 동작을 실행했는지 확인하세요. 이를 통해 권한 부족, 인터페이스 변경 또는 모델 판단의 편차를 더 쉽게 발견할 수 있습니다.
작업을 더 명확하게 작성
자연어 지시에는 목표, 범위 및 안전 경계를 포함하는 것이 좋습니다. 예를 들어 “다운로드 디렉터리 정리”보다 다음과 같이 작성하는 편이 더 제어하기 쉽습니다.
다운로드 디렉터리의 PDF를 Documents/PDF로 이동하고, 파일명이 중복되면 덮어쓰지 말고 다른 파일은 그대로 둬작업에 삭제, 덮어쓰기, 메시지 전송 또는 알림 답장이 포함되는 경우 먼저 후보를 나열하거나 확인을 기다리도록 명시하는 것이 좋습니다.
인터페이스 조작과 시스템 기능 구분
화면이 잠긴 후에도 파일, 시스템 설정 및 알림과 같은 시스템 API 기반 작업은 계속 실행할 수 있습니다. 그러나 보안 잠금 화면이 활성화된 경우 Android는 앱이 다른 앱의 인터페이스를 조작하는 것을 허용하지 않습니다. 이러한 작업은 일시 중지되며 잠금 해제 후 계속하라는 안내가 표시됩니다.
콜드 스타트 시간 확보
현재 엔진의 콜드 스타트에는 약 5초가 걸립니다. 앱을 처음 열거나 엔진이 아직 실행되지 않은 경우 작업 응답이 다소 느릴 수 있습니다.
세션 및 권한 관리
서로 다른 목적의 작업을 별도 세션에 배치하면 컨텍스트를 명확하게 유지하는 데 도움이 됩니다. 휴대폰 권한, 접근성 서비스, 알림 접근 권한 및 백그라운드 실행 설정을 정기적으로 확인하고 더 이상 사용하지 않는 기능은 끌 수 있습니다.
소스 코드에서 빌드
개발에 참여하려면 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.mjsAPI key를 파일에 저장한 다음 DSH_E2E_KEY_FILE로 경로를 지정합니다. 기본 경로는 다음과 같습니다.
~/.config/dsh/deepseek_api_key아키텍처 개요
앱의 메인 프로세스는 Kotlin과 Compose를 사용하며, 대화, 작업 흐적, 승인, 설정, 기기 기능 및 자동화 트리거를 담당합니다. Node 24는 독립적인 :engine 포그라운드 서비스에서 Android 네이티브 공유 라이브러리 형태로 실행되며, JNI를 통해 dsh를 시작합니다.
UI와 dsh는 SDK JSON-RPC를 통해 통신하고, 기기 기능은 Kotlin으로 구현되어 전용 소켓 채널을 통해 dsh에 노출됩니다. 선택 사항인 Shizuku는 일부 기능에 셸 권한을 제공하며, 모델 요청은 HTTPS를 통해 해당 API로 전송됩니다.
이 설계는 proot이나 Termux를 사용하지 않으며, 별도의 독립적인 Node 프로세스에 대한 의존성도 피합니다. dsh 자체는 fork를 수행하지 않고, Android 호환성 처리는 플러그인과 소수의 패치에 집중되어 있습니다.
요약
DSH-Android는 완전한 dsh 에이전트 엔진을 하나의 Android APK에 패키징하여 자연어 작업이 파일, 앱 UI, 시스템 설정, 알림 및 자동화 트리거에 연결되도록 합니다. 처음 사용할 때는 읽기 전용 파일 조회와 같은 위험이 낮은 작업부터 시작하고, 필요한 권한을 부여한 뒤 접근성 서비스, Shizuku, 바로가기 및 자동화 규칙을 단계적으로 구성하는 것이 좋습니다.
프로젝트는 Apache License 2.0을 따르지만, 내장된 Node.js, dsh, Shizuku, ripgrep 등의 타사 구성 요소는 각각 고유한 라이선스를 따릅니다.
