Foreword¶
DeepSeek Harness (DSH) adopts an “everything is a plugin” architecture. When debugging or running agents locally, directly operating through the Web UI is not efficient enough if a dsh web instance is already running. The dsh-web-submit plugin solves this separation problem by allowing developers to drive an existing Web instance directly from the command line, making CLI sessions visible in real time in the Web UI.
Plugin Overview¶
This is a DSH plugin maintained by JohnXu22786 and classified under online tools. It provides a set of HTTP endpoints and reuses the ApiProxyService inside the Web process, so task execution occurs within the Web process. This means no separate headless process or webhook glue is needed, and tasks submitted from the CLI are directly reflected in the session list in the Web UI.
Core Features¶
The plugin provides three core interfaces:
- Submit Task: Send task parameters via
POST /x/headless. - Query Status: Poll for the latest session status via
GET /x/headless/status. - Receive Events: Receive the SSE real-time event stream via
GET /x/headless/events.
- All interfaces support local loopback requests only (127.0.0.1 / localhost).
- Task execution is performed inside the Web process, and interactions such as permission approval are directly reflected in the Web UI.
Installation and Enablement¶
The installation command is as follows:
dsh plugin --profile web add file:C:/dsh-web-submit
The plugin relies on cordis.patch.yml for automatic configuration. After installation, restart dsh web for the plugin to take effect:
~/.dsh/start-web.cmd
Typical Usage¶
- Submit a task:
curl -s -X POST http://127.0.0.1:3080/x/headless \
-H 'content-type: application/json' \
-d '{"task":"Summarize the README","cwd":"C:/my/project","preset":"coding"}'
- View the event stream in real time:
curl -sN "http://127.0.0.1:3080/x/headless/events?sessionId=session-xxx"
While the task is running, open the Web UI to see the real-time session synchronized with the CLI.
Applicable Scenarios and Notes¶
This plugin is suitable for local development environments where you need to debug or batch-submit tasks by reusing an existing Web process. Keep the following in mind:
- All requests must come from a local loopback address.
- After installation, be sure to restart the Web service to load the plugin.
- Tasks are executed within the Web process, and operations involving permission approval must be confirmed in the Web UI.
Conclusion¶
By reusing ApiProxyService, this plugin achieves a seamless connection between the CLI and the Web UI. If you prefer working from the command line but also need real-time feedback provided by the Web UI, you can use this plugin. For more details, see the GitHub repository.