BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edge Agent Window,支持可访问性与 VOM 页面观察、截图、隔离的多会话控制和 Web UI 实时观察浮层。
安装
# npm 包(预构建)
dsh plugin --profile web add @wxg-prc-cpg/browser-skill-dsh-plugin
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Tencent/BrowserSkill#path:/packages/dsh-plugin-browserskill
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
该插件的 README 只有英文版本。
Use BrowserSkill in
DeepSeek Harness (dsh) to browse
websites, fill forms, and capture screenshots through native browser_* tools.
Browser tasks run in Agent Windows, with a live view in the dsh Web UI.
Installation
Before installing the plugin:
- Install DeepSeek Harness and pnpm, which dsh uses to manage plugins.
- Install the
bskCLI and connect the BrowserSkill extension in Chrome or Edge. Follow the BrowserSkill setup guide. - Make sure
bskis on thePATHused to start dsh, or setbskPathin the plugin configuration.
Install the plugin into the web profile, then start it:
dsh plugin --profile web add @wxg-prc-cpg/browser-skill-dsh-plugin
dsh --profile web
Replace web with your profile name if you use a different profile. The plugin
includes the complete browser-skill package; no separate bsk install-skill step is needed.
Its compact entry point loads first; references ship with the plugin and are read only
when needed. Relative paths resolve from the packaged skill directory, not your project.
In a conversation, try:
/browser-skill open example.com and summarize the page.
By default, the browser tools become available when the skill is invoked.
The plugin declares support for DSH ^0.1.5-rc.3 || ^0.2.0-rc.1.
DSH 0.2 checks these peer requirements before loading the plugin; versions outside
this range are not declared compatible. The range preserves the existing 0.1.x
baseline and admits 0.2.x without opting into future 0.3.x hosts.
Updating
Installed plugins do not update automatically. To upgrade this plugin to npm's
latest version, including versions outside the profile's saved dependency range:
dsh plugin --profile web update @wxg-prc-cpg/browser-skill-dsh-plugin --latest
Restart that dsh profile after upgrading. This command updates the plugin; update
the bsk CLI and browser extension separately when a release requires it.
Tools
| Tool | Actions | Purpose |
|---|---|---|
browser_session |
start, stop, list |
Manage plugin-owned Agent Window sessions. |
browser_page |
navigate, back, forward, reload, wait |
Navigate the active tab and wait for page lifecycle events. |
browser_inspect |
observe, snapshot, html, screenshot, console, network |
Read semantic or diagnostic page state and capture screenshots. |
browser_interact |
click, hover, wheel, scroll-to, focus, blur, fill, select, press |
Interact with controls using fresh refs or selectors. |
browser_tabs |
list, create, select, close, borrow, return |
Manage Agent Window tabs and temporarily borrow user tabs. |
browser_assist |
resize, emulate, request-help |
Resize or emulate the browser and pause for human-only steps. |
For native wheel input (action: "wheel"), see the wheel reference
for signed deltas, optional targets, result semantics and interruption.
For browser_interact with action: "scroll-to", see the
scroll-to reference for parameters, visible bounds and errors.
Arbitrary page-script evaluation and interaction recording are not supported.
Multi-session model
One agent conversation can drive several browser sessions at once:
browser_sessionwithaction: startreturns the session id and makes it the current session.- Every operation tool accepts an optional
sessionargument. When omitted, the call acts on the current session (the one most recently started or used); when given, that session becomes current. - Every tool result echoes the session it actually acted on, so the model never has to guess.
- The number of concurrent sessions started through the plugin is capped (
maxSessions, default 5). - Unloading the plugin stops every session it started and kills in-flight bsk processes.
Starts are journaled before creating a window. Lost replies and failed cleanup remain
recoverable on reload; browser_session action=list reports pendingCleanup, and stop
can retry it even when there is no current session. This requires a CLI and daemon
that support recoverable starts. See the lifecycle contract.
Stops also retain their target and cleanup intent. A failed or interrupted stop can be
retried without accidentally stopping the next current session. Once the intent is saved,
cancelling the call only stops waiting; cleanup continues in the background. If it finishes
before a retry, that retry acknowledges the original result. With several unacknowledged
stops, pass session or the owned requestId explicitly (not both). List exposes request
IDs; stop results include requestId and alreadyClosed. Completed receipts survive reload
until acknowledged and do not occupy browser capacity.
Ownership boundary: the bsk daemon may be shared with other agents, terminals, or dsh
instances. The plugin therefore only ever sees and operates on sessions it created itself —
an explicit session argument naming a foreign or unknown id is rejected, the list action on
browser_session shows plugin-created sessions only (no daemon-wide view), and stop/unload cleanup
can never touch a session owned by another program.
Configuration
After installing the plugin, edit your profile's cordis.patch.yml. For the web
profile, the default location is ~/.dsh/profiles/web/cordis.patch.yml. If you set
DSH_HOME, use $DSH_HOME/profiles/web/cordis.patch.yml instead. Replace web with
your profile name as needed.
If the file contains only comments and [], keep the comments and replace []
with the YAML below. If it already contains patch entries, add this entry to the
existing list or edit its existing id: browserskill entry. Keep a single
top-level YAML list. This overrides the plugin registered by the installed bundle:
- id: browserskill
config:
bskPath: bsk
defaultTimeoutMs: 120000
maxSessions: 5
observationEnabled: true
thumbnailIntervalMs: 1500
idleIntervalMs: 8000
lazyTools: true
Change bskPath to the full path of your CLI binary if it is not on dsh's PATH.
A patch replaces the entry's entire config object, so keep all overrides you need
together in that object.
Configuration changes follow dsh.profile.patchReload in the profile's
package.json: live (the default for web) applies changes when you save the
patch file; startup requires restarting the profile. Restart after upgrading
the plugin in either case.
All fields are optional; omitted fields use the defaults below:
| Option | Default | Purpose |
|---|---|---|
bskPath |
bsk |
Path to the CLI binary. |
sessionStateDirectory |
Scoped under $BSK_HOME/dsh-starts (or ~/.bsk/dsh-starts) |
Durable recovery records; optionally isolate by host/profile. |
defaultTimeoutMs |
120000 |
Default command execution timeout in milliseconds; output collection after exit has a separate 2-second limit. |
maxSessions |
5 |
Maximum concurrent sessions started by this plugin. |
observationEnabled |
true |
Enable live browser observation. |
thumbnailIntervalMs |
1500 |
Screenshot interval for active sessions, in milliseconds. |
idleIntervalMs |
8000 |
Screenshot interval for idle sessions and the recent-activity window, in milliseconds. |
lazyTools |
true |
Reveal the browser tools when the skill is invoked. Set false to register them at startup. |
With lazyTools: true, only the skill's catalog entry is initially advertised to
the model. The six browser_* tool schemas are added to the system prompt after
the browser-skill skill is successfully invoked, either by the model or through
/browser-skill. Set lazyTools: false to make the tools available immediately.
After a plugin reload, a live or resumed conversation's successful skill invocation
restores the tools from its stored history. If an older plugin reports
unknown tool "browser_session", invoke skill browser-skill again, or set
lazyTools: false in the profile patch as a temporary workaround.
Live browser view
The dsh Web UI prefers a Browser Skill tab in DSH's native right sidebar. The native tab opens when the current conversation first has a browser session; ordinary screenshot and action updates do not switch tabs or reopen a tab you closed. You can reopen it from the sidebar's guide.
The native sidebar is optional. Profiles without its services use a floating
panel, and a failed native integration falls back to that panel. No
dsh-better-sidebar installation is required; it can coexist with BrowserSkill,
which registers directly with DSH rather than with the third-party sidebar.
- See the current action, elapsed time, and recent screenshot for each session.
- Select a session to focus on it. The sidebar view follows the current conversation.
- Use Use floating view to move observation into a floating panel, and Move to sidebar (or Show here in the tab) to return. This choice lasts only until the page reloads; it is not saved in your profile or browser storage.
- Use Interrupt to cancel the current browser command. The agent may continue with another action afterward.
- Drag or resize the floating panel, or use Pop out to open a Picture-in-Picture window in browsers that support it.
- Periodic screenshots are requested while a browser observation view is visible. Configure the active and idle intervals with the options above.
The floating panel shows all browser sessions managed by this plugin instance; the native tab shows the current conversation's browsers and those of its subagents.
The observation endpoints require a loopback address such as localhost or
127.0.0.1. Access through a LAN hostname or non-loopback reverse proxy is not supported.
Development
pnpm install
pnpm --filter @wxg-prc-cpg/browser-skill-dsh-plugin typecheck
pnpm --filter @wxg-prc-cpg/browser-skill-dsh-plugin test # unit tests mock bsk; no browser needed
pnpm --filter @wxg-prc-cpg/browser-skill-dsh-plugin build # tsdown -> lib/
See the development notes for skill registration, tool results, and observation APIs in the current source.
Publishing
The Release dsh plugin workflow
publishes the package and this README to npm. Pushing a dsh-plugin-vX.Y.Z tag
triggers it; ordinary commits to main do not.
Commit this README and any other changes intended for the release.
From the repository root, run the release script with a new stable version, replacing
<version>below. The script updates the CLI, extension, and DSH plugin versions, commits the version changes, and creates their release tags:node scripts/release.mjs <version>Push the version commit to the release branch, then push the DSH plugin tag created by the script, using the same
<version>:git push origin HEAD git push origin dsh-plugin-v<version>This publishes the DSH plugin. Push the CLI and extension tags separately when those components are ready for release.
The workflow checks the version, runs typechecks and tests, builds the package, and publishes it to npm.
You can also run the workflow manually from GitHub Actions on the intended release
ref. Both triggers require an unpublished version and the NPM_TOKEN secret in the
npm-publish GitHub Environment.
npm updates the package README only when a new version is published, including for documentation-only changes. Published versions cannot be overwritten. See npm's README update rules.
License
MIT
链接
同类插件
omdsh-dev/dsh-browser#packages/browser/bridge-browser★ 763
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
liustack/modsearch★ 591
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
DDDMUC/dsh-free-search★ 313
DSH 免费搜索插件:7 个引擎(DuckDuckGo/Bing/SearXNG 免费 + Exa/Perplexity/DeepSeek 付费)、自动回退、设置页 UI(API key 输入 + 官网链接)、web_fetch、引擎测试工具。
Tabbit-Browser/dsh-tabbit★ 101
让 DeepSeek Harness 能够控制 Tabbit 浏览器:安装即自动加载 tabbit-browser skill,检测国际版 Tabbit 与国内版 Tabbit Browser 正式版(>= 1.9.0),检查 tabbit-cli 常驻运行时,按平台诊断调用 CLI 所需的 DSH sandbox 模式,并在没有合格版本时通过后台任务下载与系统地区匹配的正式版安装包。
wqty123/dsh-browser★ 100
共享真实浏览器:用户可观看并随时接管的原生 Electron 窗口,agent 通过 CDP 驱动,内置 20 个 browser_* 工具(打开/快照/执行/填表/截图/下载/登录态);任务级会话隔离、登录态持久化、人机验证识别,纯 `dsh web` 无需桌面外壳即可自托管。
anweat/dsh-web-search-pro★ 73
增强型、可持久化的网页搜索:多引擎路由(DeepSeek/Exa/DDG/Bing/Jina + GitHub/B站/YouTube/V2EX/小红书/Twitter/Reddit/RSS)、SQLite+LRU 缓存、userscript 风格抽取、Playwright 渲染。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。