Preface

DeepSeek Harness (DSH) adopts a plugin-based architecture, allowing developers to enhance functionality through extensions. When developing or operating with DSH, it is sometimes necessary to use a mobile device for interaction or remote control. dsh-gb is a client plugin designed to turn a phone into a voice remote peripheral for DSH. Through LAN communication or a built-in public network tunnel, it enables the phone to monitor status, provide voice input, handle approvals, and browse messages.

Core Features

dsh-gb provides the following core features:

  • Real-time Status Bar: Displays the current workspace, session, and Agent status (running/idle/awaiting approval), as well as message browsing progress on the phone interface.
  • Voice Input: Directly invokes the phone’s input method speech-to-text function and sends messages by pressing a key.
  • Approval and Multiple-Choice Questions: Supports YES/NO approval logic, as well as selecting and submitting multiple-choice options.
  • Joystick and Keys: Uses the joystick and keys to browse messages, flip pages, and pause Agent execution.
  • Session Management: Supports switching workspaces, switching sessions, or creating a new session on the phone.
  • Public Network Tunnel: Enables remote access through built-in cloudflared, without requiring external services such as Peanut Shell.
  • Zero Runtime Dependencies: The QR code encoder is built in, with no additional npm dependencies.

Installation and Enablement

Prerequisites

Before installation, ensure the environment meets the following conditions:

  • Node.js ≥ 20
  • pnpm ≥ 10
  • git

Installation Command

In the DSH Web configuration directory, run the following command to install the plugin:

dsh plugin --profile web add github:zingzheng/dsh-gb

After installation, DSH must be restarted to load the Host-side components. After the restart, a dynamic QR code can be found under the “Handheld” option on the GUI Settings page to establish a connection.

Usage

LAN Connection (Default Mode)

  1. Ensure that the phone and the computer running DSH are on the same LAN.
  2. Find the “Handheld” option on the DSH GUI Settings page and scan the displayed QR code.
  3. The phone interface will display a Game Boy-style remote control panel.

Basic Operations

  • Voice Input: Use the phone’s input method for speech-to-text, then press the A key or Enter to send.
  • Message Browsing: Use the ←→ keys to switch between messages, and the ↑↓ keys to scroll through the full content.
  • Approval and Multiple-Choice Questions: When an approval or multiple-choice question is present, the interface will show a highlighted prompt. Use the joystick or arrow keys to select, then press the A key to confirm.

Public Network Tunnel

Default mode only supports LAN connections. If remote access is required, switch to “Public Network Mode” on the GUI Settings page:

  • Quick Tunnel: When first enabled, cloudflared is automatically downloaded (approximately 30-60MB, cached in ~/.dsh/cache), and a temporary public address is generated (*.trycloudflare.com). The address will change after DSH restarts, requiring the QR code to be scanned again.
  • Named Tunnel: A tunnel must be created in the Cloudflare console and mapped to a hostname. Once filled in on the settings page, a fixed address can be obtained.

Technical Details

  • Port: The default listening port is 7788. If the port is occupied, the service automatically shifts to 7795.
  • Authentication: Persistent token authentication is used. The token is stored in ~/.dsh/dsh-gb.token and can be reset on the settings page.
  • Architecture: The plugin is divided into a Host side and a Client side. The Host side runs locally and provides an HTTP server and SSE push; the Client side is integrated into the browser and is responsible for QR code generation and UI rendering.
  • Security: All endpoints require a random token. The /info endpoint only allows local loopback access, and action endpoints have stricter CORS restrictions.

Use Cases

  • DSH needs to run in the background, and the phone is used to check status or send commands at any time.
  • Approval flows or multiple-choice questions can be handled through the phone without operating the computer.
  • In a remote network environment, the local DSH can be securely controlled through a public network tunnel.