Install
openclaw skills install @lingyu9495-source/hermes-profile-browser-isolation多个 AI 助手同时干活时,浏览器会互相抢占:弹窗抢焦点、任务互相打断、你正在用的 Chrome/Edge 被顶掉——**你连自己的网页都点不动了**。 这套给每个助手(profile)配一套**独立的持久浏览器实例**:固定调试端口 + 固定数据目录,默认无头运行不抢屏,各自保存登录态,不用反复扫码。你照常用自己的浏览器,完全不受打扰。 - 一键配置 / 一键审计 / 一键回收,三条命令搞定 - 纯本地脚本,零 token 消耗 - 跨平台:Windows / macOS / Linux 通用 - 输入:要并行的助手数量与名字 - 输出:每个助手一套独立浏览器环境 + 冲突自检报告 适用:多智能体并行干活、需要各自保存不同账号登录态、共享一台电脑但互不干扰。 触发词:浏览器隔离、多智能体并行、不抢屏、无头浏览器、CDP、调试端口、独立 profile、登录态保存、多账号同时登录、AI 抢鼠标。
openclaw skills install @lingyu9495-source/hermes-profile-browser-isolation一句话:让同一个 Hermes 里的多个 profile / 多个 AI 成员各自用一个独立浏览器,互不抢占、不弹窗抢焦点、不打断你正在用的 Chrome 或 Edge。
%TEMP% 里堆一堆 agent-browser-chrome-xxxx 目录,内存几个 G 地涨。根因不复杂:多个 profile 没有各自固定的浏览器实例时,Hermes 会按需临时起一个,于是出现「抢端口、抢焦点、攒垃圾、丢登录态」。
| 之前 | 之后 |
|---|---|
| 多成员抢同一个浏览器 | 每个 profile 一个独立实例(固定端口 + 固定 --user-data-dir) |
| 干活时弹窗抢你的鼠标/焦点 | 默认无头,前台窗口数为 0,你完全无感 |
| 每次都要重新登录 | 登录态存进该 profile 自己的数据目录,登一次长期复用 |
| 临时实例堆积吃内存 | 全部登记在册,stop all 一键释放;孤儿目录自动回收 |
| 出问题靠猜 | audit 一条命令列出每个实例的端口、PID、可见窗口数、进程内存 |
实测账(某生产机多成员场景,同一个 Hermes 5 个 profile):
Hermes 源码里 browser.headed 默认就是 False,官方注释写得很清楚:
"Headless by default (a focus-stealing window defeats a background capability)"
也就是说「抢焦点的可见窗口会破坏后台能力」是官方设计取向。本技能要做的就是把这个取向固定下来并防复发:给每个 profile 写死一个 cdp 端点,再配一条每天自检的闸门,一旦发现谁的实例冒出了可见窗口,自动重启回无头。
第一步 · 装依赖(只有一个)
pip install psutil
第二步 · 把技能装进 Hermes
方式 A(有 SkillHub CLI):
skillhub install hermes-profile-browser-isolation --namespace user_2a1415c1 --dir <你的Hermes技能目录>
方式 B(手动):把本技能文件夹整个复制到你的 Hermes 技能目录下,例如
| 平台 | 技能目录 |
|---|---|
| Windows | %LOCALAPPDATA%\hermes\skills\devops\ |
| macOS / Linux | ~/.local/share/hermes/skills/devops/ |
第三步 · 配置实例(一条命令)
cd <技能目录>/hermes-profile-browser-isolation/scripts
python hermes_browser_provision.py discover # 先看它打算怎么分(不改任何文件)
python hermes_browser_provision.py apply # 真正写入各 profile 的 config.yaml + 起实例
python hermes_browser_audit.py # 验收:每个实例端口 / PID / 可见窗口数
discover 会自动发现你机器上所有 Hermes profile,并自动分配互不冲突的端口(会避开配置里已声明的端口,也会避开机器上实际已被监听的端口),所以换台机器、换成 3 个 profile 或 8 个 profile 都能直接用,不需要改脚本。
python hermes_browser_provision.py status # 看谁在跑、占多少内存
python hermes_browser_provision.py stop all # 全部停掉,立刻释放内存(需要时再 start all,约 2 秒)
python hermes_browser_audit.py # 体检:谁冒出了可见窗口(抢屏)就报出来
想让它自己管自己,把这两条加进你的定时任务:
provision.py apply(探活 + 自动拉起掉线的实例 + 回收 %TEMP% 下的孤儿目录)audit.py --enforce-headless(发现可见窗口就地纠正回无头)| 验证项 | 结果 |
|---|---|
三种 config.yaml 写法 | 已有 browser: 段插进去(保缩进保注释)/ 没有段落就追加 / 已有 cdp_url 就地替换并沿用端口 ✅ |
| 端口分配 | 自动避开已声明端口 和 机器上实际在监听的端口 ✅ |
| dry-run | 不动任何文件(哈希前后一致)✅ |
| 真起实例 | 一次配好多个 profile,实例全部起来 ✅ |
| 审计器可信度(关键) | 故意把实例改成有头 → 立刻报「有可见窗口」并给出 PID + 窗口标题 → --enforce-headless 自动纠回无头 ✅ |
特意做了「故意做错看它抓不抓得住」的反向测试:一个永远说 OK 的检测器是没有用的。
audit 报某实例丢不了可见窗口? 跑 audit.py --enforce-headless 让它按端口重启回无头;反复出现就检查是不是有别的程序(非 Hermes)也占了同端口。config.yaml 里把 browser.headed 设为 true,并从审计的「后台型」清单里排除它。pywin32 缺失时脚本会自动降级为命令行参数判断,功能不中断(只是判据变弱),装 pywin32 到完整精度。stop all 更划算。%TEMP% 下形如 agent-browser-chrome-* 的临时目录,绝不误删具名实例的数据目录(否则会丢登录态)。本技能面向「本地私有 AI 员工 / 多智能体协作落地」场景:把 AI 部署在自己的机器上,多个 AI 成员分工干活、互不干扰。
MIT。随便用、随便改、可以商用;能注明出处更好。
九品锦锂e | 把踩过的坑封装成"拿来就能跑"的 skill,不写教科书。这个 skill 是我自己每天在用的版本。
微信:ly5419495(加时备注「SkillHub」,我优先通过) 公众号:初五Agent(微信搜一搜,复盘和方法都写在那儿,不加微信也能读)
我另外做的几个能直接跑的工具,都放在这个货架页(复制到浏览器打开): https://skillpay.alipay.com/public/jiupinjinlie
用的时候卡住了、或者有别的场景想让我封装成 skill,按上面任意方式找我就行。
