Preface¶
When working on browser-related tasks in DeepSeek Harness (DSH), if the AI can only control the browser in the background, it’s not easy to directly verify the operation process. dsh-browser-control provides a more intuitive path: letting the AI control a real, visible Chrome browser and see each step in real-time in the conversation GUI.
Below is an introduction to this plugin’s positioning, core capabilities, installation method, and typical usage.
What This Is¶
dsh-browser-control is a DeepSeek Harness plugin maintained by kyo615, licensed under MIT, with copyright owned by kyo615.
Its one-line positioning: letting the AI in DeepSeek Harness control a real, visible Chrome browser and see each step in real-time in the conversation GUI.
The plugin is based on microsoft/playwright-mcp and connects via MCP stdio. It only calls the public plugin APIs of DSH / Cordis and does not include or modify their source code.
Core Capabilities¶
Real Headed Chrome¶
The plugin uses a real headed Chrome, not a headless browser. When the AI performs actions such as mouse movement, input, or clicks, you can directly see the actual browser actions on your desktop.
AI-Oriented browser_* Tools¶
The plugin registers approximately 80 browser_* tools to the AI, for example:
browser_navigatebrowser_clickbrowser_typebrowser_snapshotbrowser_press_keybrowser_mouse_click_xybrowser_tabsbrowser_evaluate
These tools are used to complete tasks such as web navigation, clicking, typing, key presses, tab management, and script execution.
Real-Time Embedded GUI Feed¶
After each AI action, the plugin takes a screenshot to live.png and refreshes it to the conversation panel via the host HTTP route /dsh-browser/shot.png.
The numbered boxes on the panel screenshot correspond to the element IDs the AI can click. This allows you to see both the browser view and the element positions the AI is interacting with simultaneously in the conversation GUI.
Interactive Panel¶
The conversation panel supports the following operations:
- URL bar navigation
- Refresh view
- Restart browser
- Close browser
Zero Hardcoded Paths¶
The plugin declares zero hardcoded paths. All paths are auto-detected or configurable. No manual assembly of local absolute paths is required.
Installation & Enablement¶
First, confirm the runtime environment:
- DeepSeek Harness, or an environment compatible with its dynamic Cordis plugin mechanism
- Node.js ≥ 18
- Google Chrome (or Edge) installed on the system
First, run the installation command:
dsh plugin add https://github.com/kyo615/dsh-browser-control
After installation, you also need to install dependencies in the corresponding workspace:
npm install @playwright/mcp
If you use the dynamic plugin approach—defined and run via cordis_define / cordis_run—then it is process-level: after restarting DSH, you need to redefine and rerun it. The Client part requires authorization.
Typical Usage¶
After completing the steps above, you can trigger browser operations in the following ways.
- Directly tell the AI:
Open a websiteSearch for somethingHelp me operate the webpage
-
Enter a URL in the panel’s URL input box and navigate.
-
If the browser is not running, the AI can call
browser_statuswithstart: trueto launch the browser itself. -
Use the panel to refresh the view, restart the browser, or close the browser.
Applicable Scenarios & Notes¶
Suitable for scenarios where you want to perform web navigation, search, clicks, typing, and other operations within DSH conversations while seeing the real browser view.
Things to note before use:
- The plugin allows the AI to control the browser and perform real operations. You are responsible for compliance with website terms, login states, automated access restrictions, etc.
- Before use, check the source code and license, and confirm the current DSH process’s permission scope, available resources, and target website access restrictions.
- Third-party dependencies include
microsoft/playwright-mcp, Playwright, etc., which involve the Apache-2.0 license. SeeTHIRD_PARTY_NOTICESin the repository for details. - The dynamic plugin approach requires redefining and rerunning after a DSH restart.
Related Links¶
GitHub repository:
https://github.com/kyo615/dsh-browser-control