Nono-neko/dsh-browser2

@nono-neko/dsh-browser

Embedded browser for the DSH web and desktop GUI: a sidebar entry plus a center-column panel with multi-tab iframe browsing (address bar, back/forward, per-workspace persistence), a workspace file viewer, agent tools (browser_open, browser_read), a plugin settings card, and a system-prompt announcement. Hot-pluggable as a standalone cordis bundle — mounted via `dsh plugin --profile <name> add link:<repo>`. Web version requires a one-line whitelist patch in DSH source; Desktop works out of the box.

包名
@nono-neko/dsh-browser
版本
0.1.0
许可证
Apache-2.0
最近更新
2026年8月22日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Nono-neko/dsh-browser

Configuration

The plugin reads its settings from a layered source: schema defaults, then the plugin's cordis.yml entry (composition base), then the user settings document. All fields are optional.

FieldTypeDefaultDescription
enabledbooleantrueMount the sidebar entry, tools, and proxy routes.
announceToAgentbooleantrueInject a system-prompt section telling agents about browser_open / browser_read.
defaultHomestringhttps://www.bing.comURL loaded by the new-tab / home button.
maxTabsnumber10Per-workspace tab cap; oldest inactive tab is trimmed.
allowPrivateAccessbooleanfalseLet browser_read fetch private / loopback addresses.
browserExecutablestringauto-detectAbsolute path to a Chromium-based browser (Chrome / Edge / Chromium).
proxyServerstringemptyRoute Puppeteer traffic through a proxy, e.g. http://127.0.0.1:7890.

Option A — Settings card in the DSH GUI

The plugin provides an interactive settings form:

  • Web: Settings → Plugins → Embedded browser — requires the DSH whitelist patch (see below)
  • Desktop: standalone Embedded browser entry in the left nav — works out of the box, no source changes needed
Web settings cardDesktop settings page
Web settings cardDesktop settings page

Web requires a DSH whitelist patch. As of DSH rc.6, the settings API only exposes namespaces in a hard-coded allowlist inside packages/host/apiproxy/src/api-proxy.ts (WEB_SETTINGS_NAMESPACES). An external plugin's namespace is filtered out even after it registers correctly, so the card renders "not exposed" until you add 'dsh-browser' to that array and restart dsh web. The DSH team has noted that moving this declaration to settings.register() so plugins can self-expose is deferred work.

Edit packages/host/apiproxy/src/api-proxy.ts in your DSH checkout:

const WEB_SETTINGS_NAMESPACES = [
  'agent-loop', 'shell', 'locale', 'permission', 'ui-conversation',
  'ui-theme', 'web-search-deepseek', 'dsh-browser',  // <-- add this
] as const

DSH runs through tsx, so no rebuild is needed — restart dsh web and the card becomes editable.

Option B — Config file only (no DSH source changes)

If you do not want to patch DSH, set the same fields directly. Two layers are available:

Plugin entry config (cordis.yml or your profile's plugin config) — the composition base, applies to every user of that profile:

plugins:
  dsh-browser:
    defaultHome: https://www.google.com
    maxTabs: 20
    proxyServer: http://127.0.0.1:7890

User settings document (~/.dsh/settings.yaml) — per-user overrides that layer on top of the entry config:

dsh-browser:
  browserExecutable: C:\Program Files\Google\Chrome\Application\chrome.exe
  allowPrivateAccess: true

The settings card stays read-only ("not exposed") in this mode, but every field is honored from the files above.