egnmosk / dsh-browser-bridge

목록에 있음

DeepSeek Harness plugin + browser extension bridge: browser_* agent tools (navigate, click, type, screenshot, eval) over a localhost WebSocket — like Kimi WebBridge / Claude's browser extension.

main도구 소스 보기

설치

npx -y @deepseek-ai/dsh plugin --profile web add github:egnmosk/dsh-browser-bridge

이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.

README

유지 관리자가 작성한 문서 스냅샷입니다.

GitHub에서 보기 ↗
커밋 d47a0d7동기화 2026. 8. 18.

dsh-browser-bridge

A DeepSeek Harness plugin + browser extension pair that lets DSH agents read and control your browser - the equivalent of Kimi's WebBridge extension or Claude's browser extension, but for your own local harness.

+-----------------------------+        WebSocket         +--------------------------+
|  DeepSeek Harness (dsh)    |  ws://127.0.0.1:3080/     |  Your browser            |
|                             |  bridge                  |  (Chrome / Edge / Yandex)|
|  browser_* tools           | <------------------------> |  DSH Browser Bridge      |
|  (this plugin)             |   commands / responses    |  extension (MV3)         |
+-----------------------------+                          +--------------------------+

The DSH side exposes 13 model-facing tools; the extension side executes them in the browser (tabs, DOM, clicks, typing, scrolling, screenshots, eval).

Agent tools

ToolWhat it does
browser_statusIs the extension connected? Bridge URL, pending commands.
browser_list_tabsList open tabs (id, title, url, active).
browser_activate_tabBring a tab to the foreground.
browser_navigateOpen a URL, or reload / back / forward; optional new tab.
browser_snapshotInteractive elements (buttons, links, inputs...) with stable CSS selectors.
browser_read_pageVisible page text (or a subtree), capped in characters.
browser_clickClick an element by CSS selector.
browser_typeFill an input / textarea / contenteditable (native events).
browser_pressSend a key (Enter, Tab, Escape, arrows...).
browser_scrollScroll the page or a scrollable element.
browser_waitWait for a selector to appear/disappear, or just let the page settle.
browser_screenshotSave a PNG/JPEG of the current tab to disk (~/.dsh/browser-bridge/).
browser_evalEvaluate a JS expression in the page (content-script world).

When the extension is not connected, every tool fails with a clear message telling the model (and the user) how to connect it.

Layout

dsh-browser-bridge/
|-- lib/            # the DSH plugin (node side)
|   |-- index.js    # plugin entry: tools + WS upgrade route + /bridge/info
|   |-- ws.js       # minimal RFC 6455 WebSocket server (no dependencies)
|   |-- bridge.js   # connection registry, request/response correlation, timeouts
|   `-- tools.js    # the 13 browser_* tool definitions
|-- extension/      # the browser extension (Manifest V3)
|   |-- manifest.json
|   |-- background.js   # WebSocket client + chrome.tabs / messaging dispatch
|   |-- content.js      # DOM actions in pages (top frame only)
|   |-- popup.html/js   # connection status, read-this-page preview
|   |-- options.html/js # server URL, auto-connect, "Test connection"
|   `-- icons/
`-- test/run-test.mjs   # standalone protocol test (no harness boot required)

Install

  1. The package lives in the web profile's node_modules (~/.dsh/profiles/node_modules/dsh-browser-bridge).
  2. Registered in ~/.dsh/profiles/web/cordis.patch.yml as row browser-bridge (name: dsh-browser-bridge).
  3. Recorded in ~/.dsh/profiles/web/package.json dependencies.

Verify the composition at any time:

dsh --profile web --dump-config | grep -A 3 browser-bridge

Activate

The plugin is loaded at boot, so restart dsh web once after installing (restarting drops the GUI for a few seconds; it comes back on the same URL). After the restart, the server prints [browser-bridge] bridge ready - point the DSH Browser Bridge extension at ws://127.0.0.1:3080/bridge, and http://127.0.0.1:3080/bridge/info answers JSON. Verify with:

dsh --profile web --dump-config | grep -A 3 browser-bridge
curl http://127.0.0.1:3080/bridge/info   # -> {"name":"dsh-browser-bridge",...}

Load the extension

  1. Open your browser: Chrome, Edge, or Yandex (all Chromium).
  2. Go to chrome://extensions (Edge: edge://extensions, Yandex: browser://extensions).
  3. Enable Developer mode (top-right toggle).
  4. Click Load unpacked and select the extension folder of this package.
  5. Click the extension icon - the popup should show Connected to DeepSeek Harness.

The default server URL is ws://127.0.0.1:3080/bridge, which matches dsh web running on its default port. If your harness listens on another port, open the extension's Options page, set the URL, and use Test connection.

Then just ask an agent, for example:

Use the browser to open example.com, read the page, and click the first link.

Configuration (cordis.patch.yml)

KeyDefaultMeaning
path/bridgeWebSocket endpoint path on the web server.
commandTimeoutMs60000How long a tool waits for the extension to answer.
screenshotDir~/.dsh/browser-bridgeWhere screenshots are saved.
maxMessageBytes8 MiBMax WS message size (screenshots travel over WS).

Development

  • node test/run-test.mjs - boots a real server + fake extension client and exercises every tool, timeouts, disconnect, and the /bridge/info route (40 assertions, no harness boot required).
  • Protocol: JSON text frames. Server -> client request/ping/welcome; client -> server hello/response/pong. Commands are camelCase in the extension protocol (listTabs, snapshot, click, ...) and snake_case in the model-facing tools.

Security notes

  • The bridge binds only to the web server's loopback host (127.0.0.1 by default) and has no authentication: any local process could connect to /bridge and drive the browser. Treat it like shell access.
  • browser_eval executes JavaScript in pages - powerful by design; only grant it to trusted agents.
  • The extension has <all_urls> host permissions (required to read tab URLs and act in any page). It talks only to the configured localhost URL.

프로젝트 파일 및 신호

표시된 항목은 디렉터리 스냅샷에서 감지된 공개 저장소 신호입니다.

플러그인 매니페스트감지됨
테스트감지됨

저장소 정보

언어
JavaScript
라이선스
MIT
최신 릴리스
v0.1.0
마지막 업데이트
2026. 8. 13. 오후 10:24

신중하게 설치하기

소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.