dsh-ego-browser:看得见、控得住的 Agent 浏览器

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. [1]
  2. [2]
  3. [3]
  4. [4]
  5. [5]
  6. [6]
  7. [7]
  8. [8]
  9. [9]
  10. [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