Introduction

DeepSeek Harness (DSH) usually starts the Web service by running dsh web from the command line. This requires keeping the terminal window open or manually managing the process in the background. For scenarios where the service needs to remain running continuously or where users want to start and control the service quickly through a graphical interface, this interaction model is not intuitive.

DSH Tray aims to solve this problem. It is a Windows system tray launcher that runs the DSH Web service headlessly and provides control through a tray icon.

What Is This

DSH Tray is a Windows client plugin maintained by nxz1026. It uses a PowerShell script to create a system tray notification icon for managing the lifecycle of the DeepSeek Harness Web service.

The tool does not depend on a graphical installer. It is run directly through a script, allowing users to start, stop, and restart the service and view logs without occupying a terminal.

Core Features

DSH Tray provides the following capabilities:

  1. System Tray Control: Start, stop, and restart the service through the tray icon.
  2. Web UI Access: Open the Web UI directly from the tray menu.
  3. Log Viewing: View service logs in real time in Windows Terminal.
  4. Auto Start on Login: Supports automatic startup of the service at system login.
  5. Remote Mode: Supports connecting to a cloud host over SSH, starting the service remotely, and accessing it through a local port tunnel.

Installation and Enablement

It can be registered using DSH’s plugin command, or the script can be run directly.

  1. Register as a plugin:
    Use the following command to register the plugin in the web profile configuration:
    dsh plugin --profile web add https://github.com/nxz1026/dsh-tray
  1. Run directly:
    After downloading or cloning the repository, run the script directly:
    powershell -File assets\dsh-tray.ps1

Typical Usage

  1. Prepare the environment:
    Ensure the system is Windows and that the node command is available in the system path (PATH).

  2. Configure (optional):
    Copy and edit the sample configuration file:

    Copy-Item assets\dsh-tray.config.example.ps1 assets\dsh-tray.config.ps1
Edit `assets\dsh-tray.config.ps1` to configure the following items:
*   `$port`: Service port (default `3080`).
*   `$startCommand`: The specific command used to start `dsh web` (must be available in `PATH`).
*   `$autoStart`: Whether to automatically start the service when the tray application starts.
*   `$pollIntervalMs`: Interval for tray checks of service status (default `3000`).
*   `$workDir`: Root directory of the DeepSeek Harness repository, used to resolve dependency paths.
*   `$mode`: Running mode; `local` for local and `remote` for SSH remote.
  1. Start the service:
    After running the script, the service starts silently and the tray icon appears.
    To start it via VBS and avoid a console window:
    wscript.exe dsh-tray.vbs
  1. Use remote mode:
    In the configuration file, set $mode to 'remote' and fill in $sshHost, $sshKey, and $remoteStartCommand. After startup, the service runs on the cloud host and is mapped to a local port through an SSH tunnel, enabling local access.

Applicable Scenarios and Notes

  • Applicable scenarios: Developers who need to run the DSH service silently in the background on Windows, or users who need to manage service status quickly through a graphical interface.
  • Notes:
    • Windows only.
    • The default service port is 3080. If it is changed, the configuration must be updated accordingly.
    • This is a standalone tool and is not an official DeepSeek product.
    • Permissions: The plugin runs with the permissions of the current DSH process. The auto-start-on-login feature relies on the user Run registry entry.
    • Path dependency: If the repository path is moved, the auto-start-on-login option must be toggled again to update the registry path.

Conclusion

DSH Tray turns a command-line tool into a visual system tray application, lowering the barrier to using the DSH service. For more details and the latest updates, visit the plugin directory or check the GitHub repository.