中文 · English
为 DeepSeek Harness 生态打造的共享真实浏览器插件(装好即用,人机同页)
agent 驱动一个真实、可见、可随时人工接管的浏览器——人与 agent 操作的是同一个页面。
这是什么
dsh-builtin-browser 给 DeepSeek Harness 提供浏览器能力:
- 真实页面,而非转播:页面由真实的浏览器承载 —— 桌面端就是官方侧栏里那一个,Web 端是插件拉起的窗口,也可以在设置里改用你本机的 Chrome / Edge。用户直接看到 agent 在做什么,随时可以上手接管;
- 人机同页(桌面端):agent 操作的页面与人看到的是同一个页面 —— 不再是一个你看不见的窗口;
- 装好即用:载体自动选择(桌面端侧重侧栏 → 否则自托管),纯
dsh web不需要任何额外配置; - 一插件即一套工具:安装后 agent 自动获得 34 个
dsh_browser_*工具(打开、查看、无障碍树、等待、语义/坐标操作、滚动、回退、批量/单控件填表、按键、结构化提取、截图、下载、登录态管理……)。
一句话:安装插件 = 获得一个与用户共享、可被 agent 驱动的真实浏览器。
快速开始
先确认你在哪一端 —— 两端是两份独立安装,更新其中一端不会带上另一端,浏览器的承载方式也不同。
更新已安装的插件是两步(DSH 0.2.1-alpha.2 起,对已装包再装会直接报
already-installed):先dsh plugin --profile <profile> remove dsh-builtin-browser,再add目标版本。详见用户指南。
DSH Desktop(桌面端)
dsh plugin --profile desktop add dsh-builtin-browser
桌面端默认驱动官方侧栏里那个浏览器面板 —— 不额外开窗口,也不依赖 Electron,agent 操作的就是你在界面上看到的那一个页面。
要让插件驱动侧栏,还需要一条 bridge(它装在桌面端自己的安装目录里,不在 profile 中):
node desktop-bridge/install.mjs # 幂等;首次会备份 main.js.before-bridge
node desktop-bridge/install.mjs --revert # 回滚
这不是必做项:不装 bridge,插件自动退回自托管 —— 功能完全一样,只是会多出一个独立窗口。桌面端升级后要重跑一次,因为升级会替换
resources/app/,bridge 随之消失。
Web 端(dsh web)
dsh plugin --profile web add dsh-builtin-browser
Web 端没有侧栏,也没有 bridge:共享浏览器由插件自托管拉起一个独立窗口(标题 dsh-browser),自带完整工具栏(地址栏 / 后退前进刷新 / 标签条),你可以像用普通浏览器一样直接用它。
首次安装若缺少 Electron 二进制(44+ 不再随安装下载),按报错提示执行一次
npx install-electron,需要网络。
两端通用
装完不需要其它配置,直接让 agent 用它:
帮我打开 https://example.com,把页面上的主要内容用中文总结一下。
浏览器窗口会随第一次调用出现;你可以随时在那个窗口里自己操作,agent 会接着往下走。两端都可以在设置里改用你本机已安装的 Chrome / Edge,那是行为完全一致的选项。
文档
| 目标 | 入口 |
|---|---|
| 了解插件为什么存在、与无头方案的区别 | 为什么做共享真实浏览器 |
| 安装、配置、日常使用与常见问题 | 用户指南 |
| 全部 34 个工具的参数、输出与示例 | 工具参考 |
| 了解 seam / provider / 工具三层与自托管实现 | 架构说明 |
| 知道哪些事做不到、以及为什么 | 已知限制 |
| 构建、测试、复验宿主兼容性 | 开发 |
| 查看全部文档与 README 分工 | 文档索引 |
环境要求、四种载体的取舍、配置项、操作纪律、故障排查与更新方式都在上面这几篇里 —— README 只做入口,细节不在这里重复。
工具名空间
本插件占用全局 dsh_browser_* 名空间(34 个工具)。
0.4.8 之前是 browser_*。 那个名字是无前缀通用词,与腾讯 BrowserSkill 的 DSH 插件(@wxg-prc-cpg/browser-skill-dsh-plugin @0.3.2 的 browser_session)直接相撞 —— 而 DSH 的工具注册是全局且不允许重名的,后注册的一方直接抛错。对方六个工具因此全部注册失败,表现成"装了但没反应"。
为什么是我们改: browser_* 这种无前缀的名字不属于任何一方,而一次冲撞的代价不是"两个插件各用一个",是后注册者整套消失。把通用名让出来,比让每个用户去改自己的 node_modules 合理。腾讯上游也已把它们的六个工具改为 bsk_*。
如果你日志里出现 could not register dsh_browser_xxx:说明有另一个插件占了同一个名字。0.4.8 起每个工具独立注册,所以碰撞只影响那一个名字,其余工具照常可用 —— 这条检查就是为了让下次撞名一眼可见,而不是从"插件坏了"开始排查。
谁需要更新 0.4.8:只有名字变了,功能一字未改。只装这一个浏览器插件的人不必更新;装了其它浏览器插件(尤其腾讯 BrowserSkill)的人建议更新。详见用户指南的升级说明。
更新记录
完整明细(按轮次,含每处修复的原因与证据)见 CHANGELOG.md。0.1.16 起随版本发布(tag v0.1.16)。
| 版本 | 日期 | 主题 |
|---|---|---|
| 0.4.8 | 2026-10-14 | 工具名空间:34 个工具移入 dsh_browser_*,一个名字被占不再毁掉整套工具 |
| 0.4.7 | 2026-10-12 | 三个"同形"缺陷:载体被写死、宿主死了不换、设置读了不生效;收 #26 的四条建议 |
| 0.4.6 | 2026-10-08 | 跨会话读错侧栏、等待期间误建空白页、升级把浏览器登出 |
| 0.4.5 | 2026-10-06 | 会话串扰的真正根因:面板放置改按会话 id,而非"外壳当前显示谁" |
| 0.4.0–0.4.4 | 2026-10-02 | 把"限制"分成真限制与实现限制:dsh_browser_auth 三种载体全可用、本机 Chrome/Edge 支持 JPEG、降采样全载体可用;修掉会崩宿主、会静默做错事、会永久挂住的缺陷 |
特别感谢
特别感谢 DeepSeek Harness 原始仓库 与 DeepSeek AI 团队:本插件的 seam、工具运行时与插件体系都构建在这个项目之上。
同时感谢 Cordis 提供的插件化基础,以及所有参与讨论、测试、反馈和插件开发的社区成员 —— 包括带着完整复现与本地补丁来的报告者,他们让这些修复不必靠猜。
作者的话
对插件本身有意见或者有想要制作的其他插件,欢迎加我微信来讨论:
wx:hui13866591135(请在申请好友时注明)
License
本项目遵循 MIT License。
本项目是 DeepSeek Harness 的社区插件,并非 DeepSeek 官方产品。