@angelky7/dsh-browser-control
Controls your real Chrome from DSH over a local WebSocket bridge: tab management, navigation, DOM snapshots, page JS evaluation, clicks, typing, screenshots, waits and dialog handling behind a Settings toggle.
Install
dsh plugin --profile web add @angelky7/dsh-browser-control
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
DSH Browser Control
<p align="center">
<img src="extension/icons/icon128.png" width="100" alt="DSH Browser Control">
</p>
<p align="center">
<a href="README.md">简体中文</a> · <a href="README.en.md">English</a>
</p>
<p align="center">
<a href="https://github.com/angelky7/dsh-browser-control/releases"><img src="https://img.shields.io/github/v/release/angelky7/dsh-browser-control" alt="release"></a>
<a href="https://github.com/angelky7/dsh-browser-control/blob/main/LICENSE"><img src="https://img.shields.io/github/license/angelky7/dsh-browser-control" alt="license"></a>
<a href="https://awesome-dsh-plugin.com"><img src="https://awesome-dsh-plugin.com/badge.svg" alt="Awesome DSH Plugin"></a>
<a href="https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline"><img src="https://img.shields.io/badge/Chrome-MV3-yellow" alt="chrome mv3"></a>
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-purple" alt="dsh plugin"></a>
<img src="https://img.shields.io/badge/CDP-powered-orange" alt="cdp">
<img src="https://img.shields.io/badge/tools-11-red" alt="11 browser tools">
<img src="https://img.shields.io/badge/tests-29%2F29-brightgreen" alt="tests">
</p>
Chrome 浏览器扩展 + DeepSeek Harness 插件,让 AI Agent 像人一样操控你的真实浏览器。
<p align="center">
<img src="assets/banner.png" width="480" alt="DSH Browser Control — a whale searching Google with a mouse">
</p>
这是什么
不是无头浏览器,不是 Puppeteer——是你的真实 Chrome,带着你的登录态、你的 cookies。AI 通过 Chrome DevTools Protocol 驱动标签页,你可以在屏幕上看到每一步操作。
你对 AI 说一句话
↓
Agent 调用 browser_* 工具
↓
DSH 插件(WebSocket 桥)
↓
Chrome 扩展(CDP 驱动)
↓
你的真实浏览器执行操作
↓
结果返回给 Agent
和 MCP 浏览器方案的区别
市面上已经有 Playwright MCP、Puppeteer MCP、browser-use 等,它们的共同点:启动一个自己下载的全新浏览器实例。本项目走的是另一条路:
· 本项目 · Playwright / Puppeteer MCP
浏览器 · 你正在用的真实 Chrome · 自动下载的独立实例
登录态 / Cookies · ✅ 全部继承,无需重新登录 · ❌ 每次全新 profile
过验证码 / 扫码登录 · 你的会话已经登录,基本不遇到 · 经常卡在登录墙
可见性 · 屏幕上实时可见,agent 新建的标签自动归进 DSH 分组,随时鼠标接管 · 无头运行或独立窗口
环境依赖 · 无需 Node / npx / Python · 需要 npx 或 uvx 运行时
接入方式 · 加载扩展 + 设置页开关 · 编辑 MCP 客户端 JSON 配置
磁盘占用 · 复用现有 Chrome,零新增 · 额外下载数百 MB 浏览器
集成深度 · dsh 原生插件(状态页 / 清理按钮;设置页卡片由宿主版本决定,见下) · 通用 MCP server
一句话:要 AI 用"你自己的"浏览器干活(已登录的 B 站、知乎、淘宝后台),用本项目;要做跨浏览器、跨应用的通用自动化测试,用 MCP。
下载
文件 · 说明
DSH-Browser-Control-v1.7.2.zip · Chrome 扩展(解压后加载;这一版新增 cdp 通道与 capabilities 握手,必须重装——也是最后一次因功能更新而重装,此后 CDP 层新能力只更 dsh 插件)
dsh-browser-control-plugin-v1.7.2.zip · dsh 插件(离线兜底,在线装直接用方式 A/B)
安装 Chrome 扩展(30 秒)
下载 zip → 解压到固定文件夹(别删)→ Chrome 打开 chrome://extensions → 开启「开发者模式」→ 点「加载已解压的扩展程序」→ 选解压后的文件夹。
工具栏出现鲸鱼图标 → 绿点呼吸 = 已连接。需要 Chrome 116+。
安装 dsh 插件
📦 本包是 bundle 包(package.json 中 dsh.bundle.patch 指向 cordis.patch.yml)。dsh plugin 安装成功后会自动把它加入 profile 的 dsh.profile.bundles,重启即加载。
前置:dsh plugin 转发给 pnpm,需要 pnpm 在 PATH 上;首次使用会自动初始化目标 profile。
方式 A:从 npm 安装(推荐)
# 通过 dsh plugin 从 npm registry 安装并自动注册到 profile dsh plugin --profile web add @angelky7/dsh-browser-control
如果自行管理 profile 的 node_modules,也可以在对应目录中直接使用 npm 安装:
npm install @angelky7/dsh-browser-control
刚发布的新版本可能一时装不上,那不是插件坏了。dsh plugin add会把依赖钉成确切版本号,而 pnpm 用的是你自己配置的源——国内默认常常是registry.npmmirror.com,它同步官方源有延迟(实测 1.0.10 在官方源已发布时,镜像的latest还停在 1.0.8)。撞上ERR_PNPM_NO_MATCHING_VERSION ... while fetching it from https://registry.npmmirror.com/时有三条路:
1. 这一次显式走官方源:dsh plugin --profile web add @angelky7/dsh-browser-control@<版本> --registry=https://registry.npmjs.org/
2. 用 Release 里的离线包dsh-browser-control-plugin-v<版本>.zip,解压后对含有package.json的那一层执行dsh plugin --profile web add file:<那一层>(个别版本的 zip 会把条目包进一层子目录,以解压后含有package.json的那一层为准)
3. 等镜像同步后重试原命令:curl -s https://registry.npmmirror.com/@angelky7/dsh-browser-control,看到该版本、且dist-tags.latest也跟上即可
另一种装不上长得像、原因完全不同,别改 registry。 dsh 的 profile 自带 24 小时「包龄」供应链闸门(node_modules/.pnpm-workspace-state-v1.json里的minimumReleaseAge: 1440)。发布未满 24 小时的版本被它拦下时报的是ERR_PNPM_NO_MATURE_MATCHING_VERSION,而且报文里会直接写was published at …, within the minimumReleaseAge cutoff (…)——版本是存在的,只是太新。这种只有等满 cutoff 时刻这一条路(改 registry、离线包都不必)。两个码的判据:NO_MATCHING_VERSION= 你配置的源里没有这个版本;NO_MATURE_MATCHING_VERSION= 有,但没满 24 小时。
方式 B:从 GitHub 或本地目录安装
# 直接从 GitHub 安装 dsh plugin --profile web add "github:angelky7/dsh-browser-control#v1.7.2" # 本地目录调试(注意:必须显式 file: 前缀) dsh plugin --profile web add "file:D:\path\to\dsh-browser-control"
重启 DSH 后生效。卸载:
dsh plugin --profile web remove @angelky7/dsh-browser-control
⚠️ 本地目录请用file:前缀。裸路径 / 相对路径会被 pnpm 当作link:协议,
在 hoisted 布局下不会物化到 node_modules 顶层,导致启动时无法解析该包。
安装并重启后,桥接默认开启(v1.0.6+),不需要再去设置里手动启用。状态页 http://127.0.0.1:9777/ 可看到服务已监听。
想关掉默认开启:在你的 profile 覆盖层 $DSH_HOME/profiles/<名字>/cordis.patch.yml 里写
- id: browser-bridge+config: { enabled: false }即可(写法见 [dsh-config/README.md](dsh-config/README.md))。
注意包内cordis.patch.yml里那份enabled: true不要改回 false —— 那会盖掉 schema 默认值,
表现为装上后 9777 无人监听(issue #4)。
方式 C:复制进 harness 源码树(旧方式,v1.0.2 及以前)
git clone https://github.com/angelky7/dsh-browser-control.git cd dsh-browser-control git checkout v1.0.2 # 旧布局在 v1.0.2 tag ./install.sh /你的路径/deepseek-harness
脚本只负责把插件文件复制到位,完成后仍需手动改三处配置,改完重启 dsh 才会生效:
下载 dsh-browser-bridge-plugin-v1.0.2.zip,解压到 deepseek-harness 的 packages/web/browser-bridge/。
然后补充三处配置:
1. packages/bundle/base/package.json 的 dependencies 加:
"@deepseek-ai/dsh-browser-bridge": "workspace:^"
2. cordis.patch.yml 的 plugins 列表加:
- i …(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::10,最后更新 2026-11-04