dsh-ego-browser
Drive a real Chrome/Chromium browser from DeepSeek Harness with 35 structured tools for navigation, snapshots, clicks, forms, JavaScript/CDP, screenshots, downloads and tabs; a live sidebar mirrors the page and accepts mouse and keyboard input. It ships a managed CDP runtime, keeps login state acros
Install
dsh plugin --profile web add dsh-ego-browser
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
ego-browser — 看得见的 Agent 浏览器
<p align="center">
<a href="https://dshfind.com/zh/plugins/Fisfzy/ego-browser?ref=badge"><img src="https://dshfind.com/api/badge/Fisfzy/ego-browser?lang=zh" alt="dshfind - ego-browser"></a>
<a href="https://dshfind.com/zh/plugins/Fisfzy/ego-browser"><img src="https://dshfind.com/api/card/Fisfzy/ego-browser?lang=zh" alt="ego-browser card"></a>
</p>
<p align="center">
<img src="https://img.shields.io/badge/DSH-%3E%3D0.1.2--rc.1-blue" alt="DSH >= 0.1.2-rc.1">
<img src="https://img.shields.io/badge/DSH--better--sidebar-%3E%3D0.12.2(optional)-red" alt="dsh-better-sidebar >= 0.12.2 (optional)">
<img src="https://img.shields.io/badge/Node-%3E%3D22-brightgreen?logo=node.js&logoColor=white" alt="Node >= 22">
<a href="https://www.npmjs.com/package/dsh-ego-browser"><img src="https://img.shields.io/npm/v/dsh-ego-browser?logo=npm" alt="npm version"></a>
<a href="https://github.com/Fisfzy/dsh-ego-browser/releases"><img src="https://img.shields.io/github/v/release/Fisfzy/dsh-ego-browser" alt="GitHub release"></a>
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="license MIT"></a>
</p>
仓库:github.com/Fisfzy/dsh-ego-browser|当前版本 v0.9.10|版本历史见 [CHANGELOG.md](CHANGELOG.md)|详情页:dshfind
<p align="center">
<img src="https://raw.githubusercontent.com/Fisfzy/dsh-ego-browser/master/docs/assets/panel-live-view.png"
alt="Agent 浏览器侧栏:实时画面、标签页、尺寸同步与登录态入口"
width="760">
<br>
<sub>右侧边栏实时显示 agent 正在操作的页面;可直接点击 / 滚动 / 输入,或点「弹出窗口」接管。</sub>
</p>
版本兼容矩阵
依赖 · 最低版本 · 推荐版本 · 说明
DSH (DeepSeek Harness) · 0.1.2-rc.1 · ≥ 0.1.2-rc.1(v0.8.6 起适配 0.1.7 settings;v0.8.8 起支持 0.2.1 原生右侧边栏,截至 0.2.1 验证通过) · engines.dsh 声明地板;peer 依赖同步锁定 >=0.1.2-rc.1。0.1.0-rc.x / 0.1.1-rc.x 请使用 v0.8.0 及更早版本
dsh-better-sidebar · 0.12.2(可选) · ≥ 0.17.1 · 官方右侧边栏不可用时的可选侧栏回退(v0.9.3 起不再回退浮动球);< 0.12.2 可运行但外部链接拦截(urlTarget)静默降级
dsh-TUI(可选) · — · 提供 tuiSettingsSections / tuiStatus / tuiToast / tuiPanels 的版本 · 按服务能力启用设置页、底栏状态、通知、纯文字侧栏面板;缺席时静默跳过,无额外 I/O
Node.js · 22 · — · harness 环境自带
DSH 全版本适配说明:v0.9.10 已在 DSH 0.1.2-rc.1 至 0.1.7(含 0.2.0-rc.x / 0.2.1-rc.2 桌面端的 0.1.7 settings 路径 + 原生右侧边栏)上验证;核心 API(defineTool、ctx.tools.register、ctx.subprocess.spawn、ctx.webServer.register、ctx.inject、ModuleLoader CJS factory、cordis.patch.yml)在 v0.1.0-rc.7 → v0.2.1 无破坏性变更。0.1.2-alpha.x 系列按声明可装但未实测。
dsh-better-sidebar 适配说明:ego-browser 通过 ctx.betterSidebar 服务(try-catch 防御性获取)注册侧边栏 Tab 并监听外部链接。关键 API 引入版本:
API · ego-browser 用法 · better-sidebar 引入版本
registerTab() / openTab() / ctx.betterSidebar · Tab 注册 + 打开 · v0.9.0+
TabDescriptor.single · 单实例 Tab · v0.9.0+
TabDescriptor.urlTarget · 外部链接拦截 · v0.12.2+(低于此版本链接拦截静默失效)
DSH 版本支持详情:v0.8.2 → v0.8.3 主要变更:合并 6 个社区 PR(root/xvfb/macOS headless 适配、rc.1 兼容、Windows 稳定性),修复无认证 /api/ego/* 路由安全漏洞、无 dsh-better-sidebar 宿主 client 启动失败(#29)、Windows 冷启动回归(#22 引入的 Xvfb 误判),并修复 gateway 设置白名单缺 egoCliArgs/chromeArgs。适配点:client 运行时改名(@deepseek-ai/dsh-client-store)、client 模块注册 id 与装载行名按声明包名、dsh.client.inject 仅声明真实模块图行、webServer 以嵌套注入交付(可选服务),并同步侧边栏 Tab(dsh-better-sidebar)模式。
侧边栏支持:v0.8.8 起优先注册进 DSH 原生右侧边栏(@deepseek-ai/dsh-client-ui-sidebar-right,DSH ≥ 0.2.1 桌面端自带)——「Agent 浏览器」出现在侧边栏「+」的新标签页列表里(带自绘图标),点击打开并随侧边栏抽屉固定展示;agent 首次调用 ego_* 工具时自动打开该 Tab(按调用会话作用域,多会话不会弹错位置)。宿主没有原生右侧边栏时,回退到 dsh-better-sidebar(推荐 ≥ v0.12.2)的原生 Tab;两者都没有时不显示侧栏面板。两种 Sidebar 形态共用同一套 SSE 实时推流 / 点击 / 输入 / 下载捕获能力。观察窗还提供一个「弹出窗口」按钮:无头(headless)运行的 agent 浏览器可一键替换为同 Profile 的有头窗口(标签页保留),方便手动接管。
登录态导入(v0.8.5 新增;v0.9.4 起 #69 安全重构):工具 ego_login_import 把你日常 Chrome/Edge/Brave 里的登录 cookie 按域名复制进 agent 浏览器。现在有两条安全路径:
1. 扩展桥接(推荐,Chrome 保持打开,支持 Chrome 127+ ABE):在 Agent 浏览器面板点 「连接 Chrome 登录态」 → 面板显示 6 位配对码;在 Chrome 的 chrome://extensions 开启开发者模式 → Load unpacked 选择插件目录下的 extension/,打开扩展弹窗输入配对码并点 Pair。之后每次只需在面板点 「复用 Chrome 登录态」——扩展在后台轮询本地桥接(30 秒内)并自动导出当前网站 cookie,不需要再打开 Chrome UI、不需要手动点 Export,也不需要复制 token。Agent 侧仍可调用 ego_login_import(source: "extension",带 domains),行为相同。全程不复制 profile、不关闭浏览器、不做离线解密。扩展随 npm 包(extension/)与 GitHub Release 的 extension.zip 分发,安装一次即可。
2. 安全复制(旧版浏览器 / 已关闭的浏览器):只复制 Local State + Cookies 数据库到临时目录再用无头浏览器读取;真实 profile 从不被浏览器打开、也不会被写入。Chrome/Edge 127+ 的 ABE 绑定原始路径,复制会读到 0 条 cookie,工具会明确报错并提示改用扩展路径。
cookie 值不出现在任何日志与输出中;导入是单次快照。配合磁盘持久化 Profile,导入的登录态跨重启保留。
⚠️ Windows + Chrome/Edge ≥127 的 profile 复制路径会被拒绝(ABE 导致 0 cookies,旧 junction 真实 profile 启动路径已在 0.9.4 删除)。请使用上面的扩展桥接;EGO_LINUX_LOGIN_IMPORT_FORCE=1 仅作为老版本浏览器的调试开关。
常驻执行器(v0.8.8,可选,默认关闭):设置页「常驻执行进程」开启后,ego_* 调用复用同一个 ego-browser --serve 进程——首次调用支付启动开销,之后每次 ~1–2 ms(一次性 spawn 基准 ~340 ms)。浏览器被空闲回收或崩溃后,下一次调用自动回退到一次性 spawn 并重新拉起浏览器(带启动重试),随后恢复常驻;已经写出的请求不会重试,避免重复点击/填表。空闲停止时间可配(默认 30 分钟)。
把 CitroLabs/ego-lite(给 AI Agent 用的 Chromium)接入 DeepSeek Harness:以 **35 个结构化 ego_* 工具驱动浏览器,并配一套实时观察前端口**——agent 后台操作网页时,你能像看直播一样看到它正在浏览的每个页面,还能直接操作它。
一点私藏的独特之处(self-observation):agent 用的就是这一个 Chromium——连它操作 DSH 自身(管理会话、任务看板、调设置)时,观察窗也实时显示、你能随时接手。不只是"看得见 agent 在网页上干活",连 agent 操作 DSH 界面本身都是全程可见、可掌控的。
开箱即用:插件包内置 ego 运行时(runtime/,MIT,见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md))——无需克隆官方仓库、无需手动构建,--no-sandbox wrapper 随包自带,root / Docker / 无显示器一键跑。
🚀 快速启动
# 安装(任选一种;桌面端也可以走 插件 → 添加插件) dsh plugin --profile desktop add dsh-ego-browser@0.9.10
1. 在 DSH 会话里说一句让 agent 用浏览器的话,例如:
> 打开 https://example.com ,截图并告诉我页面标题
2. agent 第一次调用 ego_* 时,右侧边栏的「Agent 浏览器」标签会自动出现(没有原生侧边栏时回退到 dsh-better-sidebar;两者都没有时不显示侧栏面板),实时显示它正在操作的页面。
3. 想接手时,直接在观察窗里点击 / 输入 / 滚动;需要完整浏览器窗口就点面板上的「弹出窗口」。
宿主侧无需配置:Chrome/Edge/Brave 自动探测,root / 无头自动兜底。第一次启动约 2–4 秒。如果观察窗没出现,先跑一次 ego_doctor 看环境;更换浏览器路径后需要让 agent 浏览器冷启动才生效(见「已知限制」)。
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::17,最后更新 2026-11-06