DeepSeek Harness plugin

dsh-android-agent

Android phone test automation for the dsh web GUI: persist phone-agent devices (~/.dsh/dsh-phone.json), keep WebSocket connections to the on-phone agent, drive JSON-RPC methods (openApp / tap /

Jump to install

Source facts

Repository
ravenli059/dsh-android-agent
Latest update
Aug 20, 2026
Category
Workflow & Automation
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/ravenli059/dsh-android-agent
Plugin: dsh-android-agent
Author: ravenli059

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only
README language

dsh-android-agent — Android phone testing plugin for DSH

中文 | English

A mobile-app testing plugin for DeepSeek Harness: it connects over WebSocket to an Android phone running dsh-android-agent on the same LAN and lets you open apps, tap at coordinates, input text, swipe, send key events, take screenshots and dump the UI tree from the dsh-web「Phone」panel, with the same phone_* tools exposed to agents. Built entirely on official NPM SDK packages — no dsh source changes.

Features

FeatureDescription
Device managementCRUD phone devices (alias / WebSocket URL / token / notes); stored in ~/.dsh/dsh-phone.json (0600)
ConnectionsOne WebSocket per device (ws://phone-ip:8080/ws?token=...), auto-reconnect (max 3), 5s status refresh
Open appopenApp by package name (e.g. com.android.settings)
Tap / swipetap/swipe at pixel coordinates, configurable gesture duration
Input textinputText — optional tap-to-focus first (accessibility ACTION_SET_TEXT / paste based)
Key eventskeyevent (back=4, home=3, recents=187, enter=66, delete=67 ...)
Screenshotpreview + download from the panel; agent tool saves into ~/.dsh/phone-screenshots
UI treegetUI dumps accessibility nodes (text / class / bounds / actions) to locate elements
Agent toolsphone_list / phone_rpc / phone_open_app / phone_tap / phone_input / phone_swipe / phone_keyevent / phone_screenshot / phone_get_ui / phone_ui_find / phone_ui_tap / phone_ui_input / phone_ui_back — same device config as the GUI
UI-tree-driven actionsphone_ui_find (contains / resourceId) locates nodes in the accessibility tree and returns bounds + tap center; phone_ui_tap clicks the best matching node; phone_ui_input focuses a field by label and types; phone_ui_back sends the Android back key or the edge-swipe back gesture. The GUI panel now renders the UI tree as a clickable row list (tap / input buttons per node) — no manual coordinate typing needed.

Security model

  • All /api/dsh-phone/* routes are loopback-only (with same-origin checks) — the execution

surface that drives a real phone is never exposed to the LAN.

  • Tokens are stored in plaintext in ~/.dsh/dsh-phone.json (0700 dir / 0600 file, atomic writes) —

same trust model as dsh-ssh.

  • Agents can only use devices configured by the user in the GUI first.
  • Screenshots/actions consume real phone resources and battery; confirm before operating.

Phone prerequisites

1. Install and start the Agent app's foreground service (enable accessibility / screen capture on the phone, same LAN). 2. Note the Agent's WebSocket endpoint ws://phone-ip:8080/ws and its token. 3. Add the device in the dsh-web「Phone」panel: alias, WebSocket URL, token.

Install

This plugin is a standalone package (not part of the @linxin666/dsh-web-ui-all aggregate), installed via a local link:

### npm (not yet published — available once published)
dsh plugin --profile web add dsh-android-agent

### local standalone package (development, at D:\code\dsh\dsh-android-agent)
cd D:\code\dsh\dsh-android-agent
pnpm install && pnpm build
dsh plugin --profile web add link:D:\code\dsh\dsh-android-agent

Windows users can install with one command (build + link, PowerShell):

powershell -ExecutionPolicy Bypass -File D:\code\dsh\dsh-android-agent\scripts\install.ps1

Full install & verification checklist (build → tests → install → GUI/device checks) lives in docs/VERIFY.md.

Restart dsh web afterwards: the「Phone」entry appears in the sidebar and the agent prompt picks up the plugin announcement automatically.

Data

  • Device config: ~/.dsh/dsh-phone.json
  • Agent screenshots: ~/.dsh/phone-screenshots/

Development

pnpm install
pnpm typecheck
pnpm build

Known limitations

  • inputText relies on accessibility injection (ACTION_SET_TEXT / clipboard paste); some input

fields may reject it — under root/Shizuku you can fall back to adb-style input via shell.

  • Screenshots travel as base64 inside JSON-RPC; panel preview defaults to JPEG (PNG supported).
  • Auto-reconnect can replay unfinished operations (non-idempotent) — mind side effects in long flows.
  • The plugin only operates devices the user configured in the GUI.