dsh-ego-browser:看得见、控得住的 Agent 浏览器
一、先说它是什么
dsh-ego-browser 是 DeepSeek Harness 的一个插件,它把“给 AI Agent 用的 Chromium”接入了 DSH,并用一套实时推流界面,把 agent 操作浏览器的全过程暴露在你眼前——你既能看,也能随时接管。
用一句话概括它的定位:别家插件把浏览器当黑盒,它把黑盒打开,还把“看”和“控”做成了第一等能力[2][9]。
它解决的核心矛盾是:Agent 需要真实浏览器(登录态、验证码、动态渲染、SPA 站点),但一旦 agent 在后台操作,用户完全处于盲区。卡在验证码不知道、走错路径不知道、想插手也插不上。dsh-ego-browser 的答案是:让 agent in 浏览器里干活,你在旁边既看得见、又随时能接手[9][16]。
二、双层架构:工具层 + 观察层
理解这个插件,关键是看清它是“两个独立系统共用同一个浏览器”。
2.1 工具层:32 个 ego_* 结构化工具
Agent 侧能调用的是一组职责单一的工具。它们的工作原理非常直接:
每个工具把参数拼成一段 JS 脚本,经
ctx.subprocess用ego-browser nodejs喂给 stdin 运行,宿主经 CDP 驱动共享 Chromium。结果以@@DSH_RESULT@@哨兵行解析。[7]
所有 ego_* 工具经过进程内互斥锁串行化,错误统一归一。这意味着 agent 在同一时刻只能执行一个浏览器操作,不会出现并发点击导致的竞态[7]。
32 个工具覆盖了从导航、快照、点击、填表到下载、验证码检测、登录态导入的全链路。与同类插件只做了 3 个工具(run/help/status)形成鲜明对比[2]。
2.2 观察层:实时推流 + 直接接管
工具层是 agent 的“手”,观察层是人的“眼”和“手”。观察层的技术栈是[7][9]:
lib/cast-server.js:代理元数据 SSE、watch API 和带背压的二进制视频流lib/client.js:管理 watcher lease、JPEG<img>与 MSE<video>双后端- worker 中的
CaptureManager:保证同时只有一个活动后端和一个当前 target
CDP 控制面(标签、viewport、输入、验证码)独立于画面后端。这个设计的意义是:即使视频流因网络原因卡顿,你的点击、输入、接管操作仍然通过 CDP 直达浏览器,不会被画面延迟拖累。
观察窗支持监控窗鼠标直接操作——点击、拖拽、滚动回传 CDP,驱动的是同一个 agent 浏览器,不是另开一个窗口[2][9]。
2.3 两种形态:侧边栏 Tab 与浮动球
观察窗的呈现方式取决于宿主是否安装了 dsh-better-sidebar[1][10]:
| 条件 | 形态 |
|---|---|
安装了 dsh-better-sidebar ≥ v0.12.2 |
注册为侧边栏原生 Tab「Agent 浏览器」,随抽屉固定展示 |
| 未安装 | 自动回退为右下角浮动观察球(#dsh-ego-fab) |
两种形态共用同一套 SSE 推流 / 点击 / 输入 / 下载捕获能力。观察窗还提供一个「弹出窗口」按钮:无头运行的 agent 浏览器可以一键替换为同 Profile 的有头窗口,标签页保留,方便手动接管[1]。
三、真正的独特之处:self-observation
这是我认为这个插件最值得单独说的设计。
Agent 用的就是这一个 Chromium——连它操作 DSH 自身(管理会话、任务看板、调设置)时,观察窗也实时显示、你能随时接手。[1][2]
这意味着什么?意味着你获得的不是“浏览器监控”,而是对 agent 全部行为的可见性。当 agent 在浏览器里调整 DSH 的会话配置、修改任务看板状态、切换插件设置时,这些操作和它在外部网页上的操作走的是同一条 CDP 通道,因此观察窗一视同仁地显示。
这个设计背后的洞察是:Agent 的“浏览器操作”和“操作 DSH 界面”本质上是同一类行为——都是通过 CDP 驱动 Chromium。既然能用同一套观察机制覆盖,就没有理由把它们分开。
四、对比同类插件:差异是可核实的
| 能力 | dsh-ego-browser | 同类插件(Da1dr1em) |
|---|---|---|
| 结构化工具数 | 32 个,职责单一 | 3 个(run/help/status) |
| 实时观察窗 | ✅ CDP JPEG / FFmpeg H.264 双后端 + 标签条 + 历史抽屉 | ❌ 无 |
| 监控窗鼠标直接操作 | ✅ 点击/拖拽/滚动回传 CDP | ❌ 无 |
| worker 单实例守卫 + 崩溃自愈 | ✅ 有 | ❌ 无 |
| 下载捕获 / 人机验证检测 | ✅ ego_download / ego_captcha |
❌ 无 |
| 平台自适应 | Linux/macOS/Windows 自动探测 | 仅 Windows,需手动配 |
| 登录态落盘持久化 | ✅ ego_auth_flush + ego_login_import |
⚠️ 仅文档说明 |
以上对比基于公开可核实的源码和 README,不含主观贬低[2][9]。
关键差异两条:
- 看得到:别家是“跑完告诉你结果”的黑盒;ego-browser 实时推流,你看着 agent 操作,卡在验证码/走岔立刻发现。
- 控得住:别家只读;ego-browser 监控窗直接驱动同一个浏览器,需要时你亲手接管,不必打断 agent 重来。
五、开箱即用的工程细节
5.1 内置 ego 运行时
插件包内置了 ego 运行时(runtime/,MIT 许可),无需克隆官方仓库、无需手动构建,--no-sandbox wrapper 随包自带,root / Docker / 无显示器环境一键跑[1][2]。
5.2 平台自适应
resolveEgoEnv 自动探测 Chrome/Edge/Brave,根据运行环境自动选择启动参数。Linux/macOS/Windows 全平台覆盖,root / 无头 / --no-sandbox 都有兜底[2][9]。
5.3 健壮性层
冷启动自动重试(只重试 CDP 瞬态,不吞真错)、worker 单实例守卫 + 崩溃自动重启、插件卸载 fire-and-forget 不阻塞宿主退出、前端帧缓存上限。这些“看不见的工程”决定了在真实使用中插件是否稳定[9]。
5.4 登录态导入
设置页提供「从系统浏览器导入登录态」,把你日常 Chrome/Edge/Brave 里的登录 cookie 按域名复制进 agent 浏览器。cookie 值不出现在任何日志与输出中;导入前自动备份源 cookie 库,异常清空自动还原。配合默认的磁盘持久化 Profile,导入的登录态跨重启永久保留[1]。
六、与你的体系的契合点
你目前的 AI 操作系统里,WeClaw 负责连接与编排,Knowly 负责记忆,yuangs 负责执行,Sourcepack 打包代码,MCP 负责扩展分析能力,浏览器插件成为感知器官。
dsh-ego-browser 恰好可以成为那条**“感知器官”的落地实现**——而且它比一般的浏览器插件多了一层关键能力:可观测性。
你的 Knowly 强调“后台静默监听”,你的 WeClaw 强调“一个微信账号对接多个 agent”。dsh-ego-browser 的 self-observation 设计意味着:当 agent 通过浏览器操作你的 DSH 界面时,这条操作链路也在你的观察范围内。这和你的“external watchdog”思路一致——关键链路本身要被监控。
另外,32 个 ego_* 工具的结构化程度,和你的 yuangs CLI、sourcepack 的设计哲学一脉相承:职责单一、可确定性调用、不堆框架。它没有把浏览器自动化做成一堆模糊的“智能操作”,而是做成了 32 个可组合的原子动作。
七、一句话总结
dsh-ego-browser 不是“给 DSH 加个浏览器”,而是“给 agent 的浏览器操作加了一套完整的观测与控制平面”。 它把黑盒打开的方式——双后端推流、CDP 直操、self-observation、32 个结构化工具——共同构成了一个可核实的工程主张:Agent 的浏览器行为,应该和人操作浏览器一样可见、可干预。
- [1]
- [2]
- [3]
- [4]
- [5]
- [6]
- [7]
- [8]
- [9]
- [10]
参考来源
[1] dsh-ego-browser — https://www.npmjs.com/package/dsh-ego-browser#1
[2] dsh-ego-browser - npm Package Security Analysis - Socket — https://socket.dev/npm/package/dsh-ego-browser#1
[3] 来源 3 — https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web-server.md
[4] @dshworks/dsh-ego-browser - npm Package Security Analysis - ... — https://socket.dev/npm/package/@dshworks/dsh-ego-browser#1
[5] GitHub - Fisfzy/dsh-ego-browser: DSH(DeepSeek Harness)插件... — https://github.com/Fisfzy/dsh-ego-browser#1
[6] dsh-builtin-browser - ⚠️ — https://www.npmjs.com/package/dsh-builtin-browser#1
[7] GitHub - Fisfzy/dsh-ego-browser... — https://github.com/Fisfzy/dsh-ego-browser#2
[8] 来源 8 — https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web-client.md
[9] 来源 9 — https://raw.githubusercontent.com/Fisfzy/dsh-ego-browser/master/README.md#1
[10] ego-browser — 看得见的 Agent 浏览器 — https://raw.githubusercontent.com/Fisfzy/ego-browser/master/README.md#1