Cài mấy app agent trên điện thoại thường vướng một câu: hoặc phải root, hoặc phải chạy Termux rồi dựng môi trường, hoặc phải nối sang máy tính. jackwener/DSH-Android làm khác. Nó là một APK, cài vào là có DeepSeek Harness (dsh) chạy ngay trong máy, dùng chính quyền của app để đọc màn hình, bấm, nhập chữ, sửa cài đặt hệ thống.
Nó làm gì, cụ thể
Đây là một app Android viết bằng Kotlin, đóng gói nguyên bộ dsh vào bên trong. Bạn nói việc cần làm, agent thực hiện trên điện thoại: mở app, đọc nội dung màn hình, bấm nút, gõ chữ qua Accessibility Service. Ví dụ trong README: nhắn tin bằng WeChat, tóm tắt group chat, lấy nội dung trên Xiaohongshu, gửi lời chào và ứng tuyển trên BOSS Zhipin, đặt hàng trên Taobao. Nghe hơi “Trung Quốc hoá” nhưng cơ chế thì app nào cũng vậy.
Phần engine là điểm đáng nói nhất. Node 24 được biên dịch thành shared library native của Android (bionic), nạp qua JNI trong một foreground service tên :engine. Không proot, không Termux, nên không dính giới hạn “ghost process” từ Android 12 trở đi. dsh chạy nguyên bản, không fork; phần thích nghi Android nằm ở plugin và vài patch nhỏ. Nghĩa là skill, MCP, sub-agent, web search của dsh vẫn dùng được như trên desktop.
Phía app có CapabilityHub (bộ công cụ thiết bị do Kotlin viết) và TriggerHub (rule tự động). Hai bên nói chuyện qua một socket nội bộ, gọi là “engine contract”. Toàn bộ file, màn hình, cài đặt hệ thống, thông báo, media đều đi qua kênh này.
Vì sao 637 sao trong 4 ngày
Repo tạo ngày 27/10/2026, cập nhật 31/10/2026. Bốn ngày được 637 sao. Con số này không khổng lồ nhưng tốc độ thì đáng để ý, nhất là với một app Android cần cài APK ngoài store.
Lý do thực tế: nhu cầu “để agent làm việc trên điện thoại” có thật, nhưng giải pháp hiện có đa số đòi root hoặc đòi máy tính chạy kèm. DSH-Android gói gọn vào một file cài. Thêm nữa, nó không tự viết lại engine mà bám vào dsh, nên ai đã quen dsh trên desktop có thể mang cùng cấu hình, cùng skill xuống điện thoại. Cái này hấp dẫn hơn một app agent tự phát minh ra hệ sinh thái riêng.
Điểm khác biệt nữa: hỗ trợ Android 14+ “không làm phiền” bằng cách chạy agent trên virtual screen khi có Shizuku hoặc tự nối ADB. Bạn vẫn dùng máy bình thường trong lúc agent làm việc ở nền. Đây là chi tiết mà mấy tool điều khiển màn hình thường bỏ qua.
Cài và chạy thử

Yêu cầu: Android 10 trở lên, arm64-v8a. APK khoảng 110 MB, nên chừa 500 MB trống. Máy cần gọi được DeepSeek API.
- Tải APK từ mục Releases và cài.
- Đăng nhập tài khoản DeepSeek, hoặc điền API key. Muốn dùng provider khác thì vào Settings, Model Service để thêm.
- Nói việc cần làm, ví dụ “liệt kê 5 file lớn nhất trong thư mục Download”. App sẽ hỏi xin quyền khi cần.
- Tuỳ chọn: vào Settings, Phone Permissions để cài Shizuku một chạm, rồi bật “khởi động cùng máy (wireless debugging)” trong Shizuku.
Nếu Google Play Protect chặn (app không phát hành trên Play, lại xin quyền Accessibility, đọc thông báo, SMS), đối chiếu SHA-256 với release note rồi làm thế này:
adb shell settings put global verifier_verify_adb_installs 0
adb install dsh-android.apk
adb shell settings put global verifier_verify_adb_installs 1
Hoặc trên máy, bấm “More details” rồi “Install anyway”. Đừng bấm “Got it”, nó huỷ cài.
Muốn build từ source thì cần JDK 21, Android SDK (compileSdk 37.2), NDK r29:
# 1. Native libs (libnode...): tải bản prebuilt và verify hash
native/prebuilt.sh fetch
# 2. Engine package: dsh + plugin + patch -> engine.zip
OUT_DIR= js/build-engine.sh
# 3. APK
./gradlew :app:assembleDebug -Pdsh.engineOut=
Test end-to-end gọi API thật:
node js/test/host-e2e.mjs
API key đặt trong file, đường dẫn truyền qua biến môi trường DSH_E2E_KEY_FILE (mặc định ~/.config/dsh/deepseek_api_key).
Ai nên thử
Dev muốn nghịch phone agent mà không muốn mua máy root hay dựng Termux. Người làm automation cá nhân: rule theo giờ, theo sự kiện (kết nối Wi-Fi, cắm sạc, tới địa điểm, có thông báo) đều có sẵn. Ai cần đọc và xử lý file trên điện thoại (PDF, Word, Excel, PPT) rồi tóm tắt cũng hợp, vì agent có Linux environment chạy Python ngay trong máy.
Còn nếu bạn chỉ cần chat với LLM trên điện thoại thì đừng cài. App này xin nhiều quyền, nặng, và engine cold start mất khoảng 5 giây. Đổi lại là khả năng thao tác thật.

So với lựa chọn khác
Tôi không tiện so trực tiếp vì các tool phone agent khác (AutoJS, Tasker + plugin, mấy bản chạy dsh qua Termux) khác nhau về triết lý. Nhưng có một so sánh rõ ràng: cách chạy dsh trong Termux cần bạn tự cài Node, tự quản lý process, và dễ chết khi hệ thống kill background. DSH-Android nhét Node vào app process, có foreground service giữ sống. Về mặt vận hành thì gọn hơn nhiều. Về mặt kiểm soát thì ít hơn: bạn không can thiệp sâu vào môi trường Node như khi dùng Termux.
Ưu, nhược, và mấy thứ cần biết
Ưu: cài một APK là xong; dsh nguyên bản (không fork) nên hệ sinh thái skill/MCP dùng lại được; hỗ trợ nhiều provider qua OpenAI-compatible Chat Completions (OpenAI, Claude, Gemini, Grok, OpenRouter, Kimi, GLM, Qwen, Volcengine Ark, MiniMax, SiliconFlow, StepFun); code Kotlin + Compose + Hilt + Room, cấu trúc rõ ràng, có tài liệu kiến trúc và engine contract trong thư mục docs.
Nhược và giới hạn:
- Khoá màn hình thì không thao tác được app khác. Task kiểu UI sẽ dừng, phải mở khoá. Task hệ thống (file, settings, notification) vẫn chạy.
- Shizuku phải khởi động lại sau reboot. Bật “khởi động cùng máy (wireless debugging)” được, nhưng cần Shizuku 13.6+ và Android 11+.
- ROM nội địa Trung Quốc đôi khi phải bật tay “hiện popup nền” và “tự khởi động” mới ổn định.
- Provider bên thứ ba chỉ hỗ trợ Chat Completions kiểu OpenAI qua HTTPS, context cố định 128K, không chọn mức reasoning, web search vẫn cần DeepSeek API key. Chất lượng tool calling phụ thuộc model bạn chọn.
- Cold start engine khoảng 5 giây, README ghi rõ đang tối ưu.
License là Apache-2.0, khá thoáng cho việc fork và dùng thương mại. Nhưng đây là project cộng đồng, không liên kết với DeepSeek chính thức, và mới 4 ngày tuổi. Đừng kỳ vọng API ổn định hay tài liệu đầy đủ. Đọc docs/architecture trước khi quyết định gắn vào workflow.
Một điểm tôi thấy đáng để mổ xẻ: việc app xin quyền Accessibility, đọc thông báo, SMS là bắt buộc với kiểu agent này, nhưng cũng là bề mặt tấn công lớn. Nếu bạn cài, ít nhất hãy tự build từ source hoặc đối chiếu SHA-256 của APK với release note. Đừng tải APK từ link lạ.
Nếu muốn xem thử trước khi cài, repo có ảnh giao diện và mô tả kiến trúc khá chi tiết. Còn muốn thử nghiệm thật thì nên bắt đầu bằng một task đơn giản như “liệt kê file lớn nhất trong Download”, xem agent xử lý quyền thế nào, rồi mới giao việc phức tạp hơn. Đó cũng là cách tôi hay làm với mọi tool tự động hoá: cho nó làm việc nhỏ trước, xem nó sai ở đâu.
Repo: jackwener/DSH-Android
