参考 / Reference
CLI 更新日志
每个版本改了什么、为什么改——这一页是完整的版本历史, 按次版本号分组、新到旧排列。chrome-use 自己的功能开发都在 v1.x 系列;再往前, 还有重塑品牌前的 fork 阶段,以及定期从上游 agent-browser 合并进来的版本号。
ℹ️ 逐条 commit diff:GitHub Releases
这一页按版本汇总了每次改动的要点。想看某个版本的完整 diff,去
GitHub Releases。
🧩 找扩展(插件)的版本?
这一页是 CLI(chrome-use 命令行)的版本历史。驱动真实 Chrome 的
ab-connect 扩展有它自己的版本号(0.5.x),单独一页:
插件更新日志。
v1.5.x
- v1.5.265(2026-10-24):会话列表新增“初始网页”“最终网页”和需确认的“删除”按钮。分别保存首次与最近记录的网址,打开初始网页不会覆盖最终地址,旧会话缺少初始地址时明确提示。修复 Ant Design 日期范围草稿失焦丢失(#717);有头浏览器保留与 Worker 一致的原生指纹,明确无头检测限制(#718)。修复 iOS 相机权限与扫码生命周期并补充商店构建工具,iOS 分发单独处理。兼容扩展 0.5.86。贡献者:@leeguooooo。
- v1.5.264(2026-10-24):会话列表右侧新增独立窗口按钮,定位 agent 最近记录的网页,误关后按原网址重开,不重发消息或重跑任务;适配窄侧栏、浅色与深色主题(#714)。删除会话会等待网页地址清理完成并提示存储失败,迟到的浏览器观察不会恢复已删记录(#715)。修复隐身模式光标残留、扩展 frame 阻止调试时的错误说明、扫码登录安全验证状态,以及自定义 Chrome 数据目录的本地 host 注册;ClawHub 发布改为显式启用(#712、#695、#694、#706、#689)。兼容扩展 0.5.85。贡献者:@leeguooooo、@euvoor、@Jerryx333、@leinaldo。
- v1.5.263(2026-10-24):手机网关在指定 IP 暂不可用时按 1–60 秒指数退避等待,避免启动失败后被服务管理器反复拉起;保留原监听地址,监听成功后才报告就绪,端口占用等其他错误仍立即报错。补充换网和 launchd 重启间隔配置说明(#713)。兼容扩展 0.5.83。贡献者:@leeguooooo。
- v1.5.262(2026-10-23): 模型容量不足或回复中断后,重新发送消息会在原会话中使用原模型开始,不再卡在暂停队列。旧队列仍需手动恢复,不自动重发失败任务。需扩展 0.5.83。贡献者:@leeguooooo。
- v1.5.261(2026-10-23):
args.ui在滚动过的页面上不再把目标误判为被遮挡。隔离环境里的遮挡判断用的是DOM.getNodeForLocation,它不按视口坐标计算,页面滚动后(抖音发布页)取到的是别处的元素,点击就退回了合成点击。现在改用隔离环境里的elementFromPoint:按视口坐标、能穿过pointer-events: none,也不会调用页面自己的那份函数。贡献者:@leeguooooo。 - v1.5.260(2026-10-23):
args.ui能点穿pointer-events: none的覆盖层(下拉框的箭头、按钮上的图标),不再把目标判成被遮挡、退回合成点击(抖音发布页上出现过)。--launch模式的隐身脚本不再替换页面能检查的原生函数:去掉了Error.prepareStackTrace/captureStackTrace包装,针对 disable-devtool 的querySelector改写默认关闭,需要时设AGENT_BROWSER_DISABLE_DEVTOOL_SHIM=1;--launch模式下 botcheck 的原生函数检查通过,stealth-bench --launch原来通过的项全部照常通过(#703)。setOn可以直接传元素(也可以是没插进页面的元素),适配器不必再给输入框加属性或 id 来按选择器定位。贡献者:@leeguooooo。 - v1.5.259(2026-10-23):站点适配器可以在页面看不到的地方运行。在
@meta里声明"world": "isolated"的适配器在标签页的隔离环境里运行(DOM、cookie、存储与页面共享,JS 是自己的),它的querySelector、fetch等不会经过页面装的任何包装。只有页面 JS 才有的东西(React fiber、应用状态、页面自己带签名的fetch)通过新增的args.page(fn, ...args)获取:按源码把fn送到主环境、带 JSON 参数执行,返回 JSON 结果。没有声明的适配器照旧运行。chrome-use-sites 里抖音、B站创作中心、YouTube Studio 和 X 的写操作适配器改用它。贡献者:@leeguooooo。 - v1.5.258(2026-10-23):所有命令都在隔离环境里读取页面。1.5.257 先改了
args.ui和scrollintoview,这次snapshot、click、type、fill、hover、find/getby*、get text等全部跟进。chrome-use 自己读页面(找元素、测量、判断遮挡、读值和文字)以前在页面主环境里执行,页面只要包装querySelector、getBoundingClientRect、getComputedStyle、innerText就能看到一个<anonymous>调用者。现在 chrome-use 发出的、没有指定执行环境的Runtime.evaluate和DOM.resolveNode都进标签页的隔离环境(页面跳转后重建;同进程 iframe 里的节点退回主环境),页面自己的函数一次都不会被调用。必须看到页面 JS 的仍在主环境:你的eval、wait --fn、extract、addscript、pushstate、站点适配器、React 工具、反爬厂商探测、site analyze、stealth status、密钥防护,以及 Monaco、CodeMirror 编辑器的fill和读值(它们的数据在页面 JS 里)。AGENT_BROWSER_MAIN_WORLD=1可以全部退回主环境。弹窗防护也不再在页面上留下window.__chromeUsePopupGuard。贡献者:@leeguooooo。 - v1.5.257(2026-10-23):
args.ui和scrollintoview读取页面时页面看不到。botcheck 0.2 会包装页面的querySelector、getBoundingClientRect、elementFromPoint、getComputedStyle等函数,看是谁在调用(rebrowser 的mainWorldExecution对一个函数做同样的事);chrome-use 以前在页面主环境里调用它们,调用者显示为<anonymous>。现在args.ui和scrollintoview在隔离环境里查找、测量元素,用 CDP 的DOM.getNodeForLocation判断遮挡,页面自己的函数一次都不会被调用。适配器自己读页面仍算适配器的;其他命令后续版本跟进。把元素滚进可见区时一直滚到可见为止(最多 60 步),只有元素不再移动时才提前停下。贡献者:@leeguooooo。 - v1.5.256(2026-10-23):
scroll和scrollintoview默认用滚轮。1.5.255 把scroll --until改成了滚轮,但普通scroll和scrollintoview仍用scrollBy/scrollIntoView,页面看到的是没有任何输入就滚动了。现在 humanize 开着时(默认)它们在元素或页面上滚滚轮;scrollintoview在元素所在的滚动容器上滚,每滚一步重新测量。滚轮滚不动时退回原来的方式;AGENT_BROWSER_HUMANIZE=off保持原样。贡献者:@leeguooooo。 - v1.5.255(2026-10-23):常用命令默认隐身。botcheck(botcheck.leeguoo.com,我们自己做的检测站,看自动化在网页里留下了什么、输入像不像人)发现
click、type、scroll --until会暴露自己,现在默认像人一样操作。所有网站默认按 Fast 档拟人(鼠标走曲线、落点有抖动、按键间隔有变化);对自带风控、厂商识别看不出来的网站按 Human 档(抖音、TikTok、小红书、B站、X、微博、快手、知乎、淘宝、天猫、京东、拼多多、Instagram、Facebook、LinkedIn、YouTube)。用 CSS 选择器点击不再每次都点在正中间。在网页上type不加--key-events也逐键输入,中文和 emoji 走输入法组合(compositionstart / update 再上屏),几个字一提交;非 http(s) 页面(VS Code、Electron 的 webview)仍整段插入。scroll --until用滚轮滚动,滚轮滚不动的那一步退回scrollBy。大写和需要 Shift 的符号在按下 Shift 后停一下。AGENT_BROWSER_HUMANIZE=off恢复原来的瞬时操作。运行中的站点适配器不再在window上留任何东西:botcheck 用Object.getOwnPropertySymbols找到了 1.5.253 的Symbol.for槽位,现在 daemon 通过 CDP 句柄访问运行对象;页面跳转照样结束这次运行并报告为中断。args.ui.type输入中文也走输入法组合。贡献者:@leeguooooo。 - v1.5.254(2026-10-22):隐身模式开关,默认开启。扩展设置页新增「隐身模式」开关(扩展 0.5.82)。开启时 chrome-use 不往它操作的网页里加任何自己的东西,会画进网页的功能只在关闭后可用,目前是 agent 光标:隐身开着时它的开关是灰的,之前已经打开过光标的,在关闭隐身模式前也不会显示。Inspect & Ask 由你自己触发,不受影响。今后贡献、合并和发版都要检查改动里有没有网页能看到的东西(AGENTS.md 的「Stealth first」和新的 PR 模板)。站点适配器用
args.ui点击、悬停或滚动之后,daemon 记录的鼠标位置跟着更新,不带坐标的mouse down不再按在旧位置(#698);把元素滚进可见区时,每步之间的等待改为随机,不再固定 120 毫秒(#699)。贡献者:@leeguooooo。 - v1.5.253(2026-10-22):站点适配器可以让 chrome-use 代为输入:
args.ui。适配器在页面里运行,自己调用的el.click()、dispatchEvent、execCommand都是isTrusted: false,也没有鼠标移动和按键,网站的风控能看出来。写操作的适配器现在可以调用args.ui.click(el)、hover、type(el, text, {clear})、typeHere(text)、press(key, {repeat})(支持Mod+a这类组合键)和scroll(el | 像素),参数是元素或 CSS 选择器。daemon 先用滚轮把元素滚进它所在滚动容器的可见区,选一个确实落在元素上的点,再用真实的 CDP 输入去点、去打字:鼠标走曲线,按下有停顿,按键间隔有变化,不看风控识别的结果。英文和数字逐键输入,大写字母和需要 Shift 的符号带着 Shift;中文和 emoji 像输入法上屏一样,停顿后几个字一起插入。元素不见了、没有尺寸或被挡住时调用会失败,并说明是什么挡住了它。适配器不等结果的请求也会在读取结果之前处理完,所以页面跳转前的最后一次点击照样生效。chrome-use-sites 里抖音、抖音创作者中心、B站创作中心、YouTube Studio 和 X 的写操作适配器已经改用它,在旧版 chrome-use 上仍用原来的事件。运行中的适配器不再是window上的具名属性:原来在window.__cu_site_<id>(eval --background是__cu_eval_<id>),页面脚本用Object.getOwnPropertyNames(window)按固定前缀就能找到;现在放在Symbol.for(<随机 id>)下,Object.keys、getOwnPropertyNames和for…in都列不出来。type --key-events和args.ui输入H、#、@时shiftKey以前是 false,真实键盘不会这样,现在会按住 Shift,!@#$%^&*()也用对应的数字键(Digit1…),不再是空 code。拟人输入的随机种子以前从固定值开始,每次 daemon 启动都重复同一串鼠标轨迹和按键间隔,现在从随机值开始。find … click回复里的at (x,y) 宽x高以前把带小数的坐标读成 0(x 是 525、宽 66 的元素显示成at (0,205) 0x18),点击本身不受影响,现在显示实际位置。适配器发出输入请求后,轮询间隔回到 100 毫秒,不再每个请求多等最多一秒。贡献者:@leeguooooo。 - v1.5.252(2026-10-21):AI 标签组不再堆进 Chrome 的「已保存的标签页组」。窗口关闭或 Chrome 退出时还开着的标签组,Chrome 都会存下来(登录账号后同步到所有设备),扩展没有办法删除。以前项目里最后一个会话结束后,
✦组只是折叠起来,等下一个会话接手或 30 分钟后的清理,这期间退出 Chrome 就会被存下来。现在最后一个会话闲置退出时,它的标签移出分组;tabs cleanup和自动清理对没有会话在用的 AI 组也这样做。标签留在原处,同项目的下一个会话照样接手并放回组里,30 分钟后照样被清理。Chrome 恢复上次的标签页时,扩展 0.5.81 会把恢复出来的 AI 组里的标签移出分组,对应的已保存组也随之删除,不关闭任何标签。之前已经存下的组 chrome-use 删不掉;会话还在运行时退出 Chrome,它的组仍会被存下(#692)。贡献者:@leeguooooo。 - v1.5.251(2026-10-21):
site add支持 OpenCLI 格式的适配器和插件。它会识别 OpenCLI 插件仓库(如chrome-use site add darinouyang/opencli-plugin-shipxy)、zip 或本地目录(如~/.opencli/clis),用 chrome-use 自带的 OpenCLI 运行时在你的 chrome-use 会话里执行这些命令,site list里标(opencli: 来源)。支持.js;只有.ts的插件在 Node 22.13+ 上用 Node 自带的类型擦除编译;只有 YAML 的插件会被拒绝并说明原因(OpenCLI 1.8 起自己也不再加载 YAML)。OpenCLI 适配器是以你的用户权限运行的 Node 代码,不像我们的适配器关在网页里,所以本地目录直接加,远程来源锁定到你确认时的 commit(zip,或不经 GitHub API 下载的仓库,锁定 SHA-256):在终端里site add会列出模块请你确认,脚本和 agent 必须加--trust-node-code。site update重新拷贝本地目录,不会挪动锁定版本;要用新版本就再site add一次。同名时仍是我们的适配器优先,其次是你加的 OpenCLI 来源,最后是 OpenCLI 官方包;site sources、site remove也支持它们。适用扩展 0.5.80。贡献者:@leeguooooo。 - v1.5.250(2026-10-20):同一项目里还在干活的会话,标签不再被后起的会话接管。同项目的会话共用一个标签组,以前只要某个会话的 daemon 没应答,新会话就会接管它的标签,哪怕它的 agent 还在等一条命令(例如中继恢复中途停掉了 daemon)。现在只有没有 daemon、没有
chrome-use进程在用、并且两分钟内没跑过命令的会话才算结束;daemon 启动或重新同步时也不再收编这类会话的标签,别的会话同时开的新标签也不会被当成点击打开的标签。命令已发出但没收到确认(daemon 超时仍忙、回复丢失、执行中 daemon 消失)时,退出码非 0、错误码action_outcome_unknown,不会自动重试,并说明它可能已经执行。新增chrome-use session last:不执行任何命令、不启动 daemon,列出会话最近几条命令的结果(completed、failed、running、unknown),只记录动作名(和站点适配器名)及结果,不记录参数和输出,方便在结果未知时先核对再决定是否重发。中继恢复不再停掉机器上所有的本机消息宿主(会把其他 profile 或别的会话刚恢复的中继一起断开,扩展只能重新连),现在只停本安装中没有在服务中继端点的宿主(#687)。适用扩展 0.5.80。贡献者:@leeguooooo。 - v1.5.249(2026-10-20):CLI 升级后,Chrome 之前启动的
__nm-host还在跑旧程序;1.5.239 之前的版本不报版本号,侧边栏于是提示「chrome-use CLI 太旧」让你重新安装,哪怕磁盘上已经是新版。现在扩展会在没有命令和侧边栏请求在跑时先重连一次,新连上的 host 仍不报版本号才显示这条提示(ab-connect 0.5.80,#684)。修好两个在 Windows 上必挂、在 macOS 上偶发失败的 Rust 测试(#685)。贡献者:@Jerryx333、@leeguooooo。 - v1.5.248(2026-10-20):
hover和click一样可以用视口坐标:hover 767 340(也支持767,340、--coords 767,340和x=767 y=340,click现在也认后一种),把真实指针移到该点,用于没有稳定选择器的提示框、角标;结果写明收到可信移动事件的元素(receivedBy、verified),落在跨源 iframe 里的点会移过去但标为未确认。MCP 的chrome_use_hover支持x、y。只给一个数字、数字个数不对,或把数字当选择器被页面拒绝时,提示改为指出坐标写法(#662)。页面卡住和连接断开不再混为一谈:扩展中继上命令超时时,chrome-use 通过不需要渲染进程的chrome.tabs询问这个标签:Chrome 还能回答,就说明标签还在、只是页面忙(脚本占住主线程,或页面还在加载、网络被挂住),让你等几秒重试,而不是没用的「重启会话再试」;什么都没回答,就说明连接已断,应该开新标签或新会话。忙碌或已关闭的标签截图时也如实报告,不再报「screenshot target drifted … unknown target」(#661)。适用扩展 0.5.79。贡献者:@leeguooooo。 - v1.5.247(2026-10-20):侧边栏输入框里选中的元素下方新增「复制元素」和「复制整条输入」:把所有选中元素的上下文(页面、selector、跨 frame 和 shadow root 的定位方式、源码位置、文字、位置尺寸、HTML)复制成文本,后者在前面加上你输入的话,内容与发给 agent 的一致;不会为了发送上限截断,截图和附图会写明没有包含在复制的文本里(#680)。附图和选中元素的截图本来就以图片形式交给 Codex、Claude Code、OpenCode 和 Pi,现在消息文字末尾还会列出这些图片在本机的文件路径(「attached image N」对应第 N 个),agent 把任务转交给别的会话时图片不再丢失(#680)。MCP 的
chrome_use_snapshot支持diff: true增量读取;换了filter会重新取完整基线,有效的增量只列出其中出现的 ref,会话里的全部 ref 保留。read --help有了单独的说明,read --filter是按字面、不分大小写匹配(不是正则,和snapshot --filter不同)。关掉的 agent 标签页不再留下 Chrome 的「已保存标签页组」:扩展的 worker 刚重启、agent 打开的弹出页、清理时直接关掉的标签页,以前不会先移出分组,于是cu-chatdev-*之类的组越积越多;现在都会先移出分组,你自己的、借出的和接管的标签页不受影响(#674)。因为元素被遮挡而拒绝的点击报element_occluded,不再因为遮挡物上写着「Connection timeout」之类的字被当成可重试的超时。适用扩展 0.5.79。贡献者:@leeguooooo。 - v1.5.246(2026-10-20):
auth login --bwu能在很多匹配项里选对密码库条目:bwu 会列出同一注册域名下的全部登录(apple.com 有 32 个),以前只能停下来让你--item。现在依次用:上次在这个主机上登录成功的条目(只在确认网站接受了登录后、只按 id 记在~/.chrome-use/bwu-items.json)、名字正好是页面主机名的、名字正好是页面登录 iframe 主机名的(App Store Connect 的登录框是idmsa.apple.com的 iframe),选了哪个、为什么写在 stderr(--json也写);都没有时,列表把名字对应页面、登录 iframe 或站点的条目排在前面,--item的名字不分大小写。自动登录的登录墙按同样规则选。登录 iframe 在另一个进程里、且在命令开始后才加载时,auth login(带不带--bwu)以前找不到字段,现在能找到;登录后 iframe 随页面消失也不再报错。agent 标签页开在你自己的窗口里时,后台标签页上 Bitwarden 的内联菜单以前会挡住所有命令、只能请你按 Esc;现在 chrome-use 在自己的 agent 窗口里激活一个空白页,Bitwarden 当作切换标签页把菜单关掉,你的窗口、当前标签页和焦点都不变。为此打开的窗口里只有这个空白页,在本次 session 里保持最小化:第一次最小化时会出现约一秒(macOS 上实测),之后不再出现;已经装着其他 agent 标签页的 agent 窗口(--window dedicated)照原样使用,不会被最小化。你正在看的标签页仍留给你处理。auth login填完每个字段后会移开光标,菜单通常还没挡路就关了。适用扩展 0.5.78。贡献者:@leeguooooo。 - v1.5.245(2026-10-20):扩展 0.5.78 换了一套暖色外观:侧边栏、弹窗、设置页和点选浮层共用一份
theme.css,纸色底、一个陶土色强调色,标题和 agent 回复用系统衬线字体,状态和元数据用等宽字体,深浅色文字对比度都在 4.5:1 以上。新图标:陶土底上的米白光标,16px 单独绘制。「agent 与模型」分组显示:能对话的在前,已安装的在后,未安装的收成列表下方的小标签(虚线表示找到配置但程序未安装),整行点击打开配置。贡献者:@leeguooooo。 - v1.5.244(2026-10-20):用手机遥控插件对话:
chrome-use mobile。chrome-use mobile serve启动网关,chrome-use Remote App(iOS)经你自己的线路连上来:Tailscale、Cloudflare 命名隧道或同一局域网,我们不运营转发服务器。手机上可以看对话列表、新建对话、发文字和最多 5 张图、实时看进度(断线重连后从原位置继续,事件不丢不重)、回答审批、停止一轮、给对话自己的浏览器 session 截图(只在它已经在运行时;手机永远不会打开浏览器)、列出模型、运行或开关定时任务。mobile pair --url ws(s)://…打印二维码,10 分钟内有效、只能用一次;另有mobile devices、mobile revoke <id>(一秒内断开)、mobile access <id> full|limited、mobile push-test <id>。默认只监听127.0.0.1:17345;--trust-cf-header供同一台电脑上的 cloudflared 使用,--name设置 App 里显示的电脑名。每一帧端到端加密(HMAC 握手、每个方向独立的 AES-256-GCM 密钥、严格序号),在边缘解开 TLS 的隧道看不到指令、页面文字或截图;配对时手机再加一份自己生成的密钥,配对后终端里留下的链接就没用了。手机拿到的权限比电脑少:不能开完全访问,从手机新建的对话最多到 writeFiles(Pi 只有浏览器工具),不能改项目文件夹、可执行文件、配置、技能或定时任务,也不能提高已有对话的权限;完全访问、能执行命令或 Pi 有浏览器以外工具的对话,手机默认只能看、停止、拒绝,要发消息、批准或运行,需在电脑上执行mobile access <id> full。网关从不转发/api/v1/*、stream WebSocket 或侧栏服务的 capability,拒绝浏览器发起的连接。新增推送通知:agent 等你审批、一轮结束、定时任务完成或失败时通知,每个对话 10 秒最多一条,可按对话静音;经无状态的 Cloudflare Worker(https://chrome-use-push.leeguoo.com)转发,内容在电脑上加密,Worker 只看到密文。侧栏和另一个读取方在不同位置轮询同一对话时,不再每次从头重读整个 journal。适用扩展 0.5.77。贡献者:@leeguooooo。 - v1.5.243(2026-10-19):AI 标签按项目分组,不再按会话分组。项目是侧栏对话的项目文件夹,否则是工作目录所在的 git 仓库,否则是工作目录;同一个仓库里的两个终端、之后的每个新对话,都用同一个
✦ <项目名>组,不再一个会话开一组;项目名和别的项目重名时加上上级文件夹名,定下后不再变。每个会话只操作自己打开的标签:同一项目里正在运行的其他会话的标签留给它们,两个 agent 同时工作不会互相抢,一个会话done只关自己的;会话的 daemon 退出后,同项目的下一个会话接管并复用它的标签。同一个页面不再重复打开:open发现本会话已有标签停在这个页面(忽略 #片段和 utm_*、fbclid、gclid 等跟踪参数)就切到那个标签,在后台、不重新加载;open --new-tab仍然另开。不同项目之间不共享标签,你自己的标签不会被移动或分组。项目里最后一个会话闲置退出时,它的标签组立刻折叠;30 分钟后关闭(AGENT_BROWSER_GROUP_CLEANUP_MS,设 0 关闭)。会话第一次连接时开的空白标签,如果之后没用上(只读取了内容或什么都没做),以前会留在它自己的组里;现在会话闲置退出时关掉仍是 about:blank 或新标签页的标签,清理时已结束会话的空白标签立刻关闭(不等 30 分钟),组随之消失;空白标签即使在前台也不算你的;tabs cleanup同样清理。升级后,标签还在按会话命名的组里(1.5.236–1.5.242)的会话,下次运行时把标签移到项目组里。中继断开时,只有确定 Chrome 没在运行才会启动它:扩展连着就算在运行,看不到系统进程的进程列表(比如 Codex 的 macOS 沙盒)不算数,不再因此多开一个 Chrome。留给你的标签(keep、done --keep、清理时留下的)不会被同项目的其他会话接手。适用扩展 0.5.77。贡献者:@leeguooooo。 - v1.5.242(2026-10-19):AI 用完标签自己收尾,标签组不再越堆越多。任务结束时 agent 运行
chrome-use done,自己决定留什么:--keep <标签>留下你还要用的页面(你要看的结果、留给你登录的页面),移出 ✦ 组变成普通标签,其余它开的标签全部关掉,不会问你;skill 和使用指南已写明每个任务结束都要这样做。没收尾的会话:daemon 退出且闲置 30 分钟后(AGENT_BROWSER_GROUP_CLEANUP_MS,设 0 关闭),下一个新会话会在后台关掉它的标签,你正在看或切过去看过的标签保留下来、移出分组;你借出的、被接管的标签从不关闭。同一个终端、同一个目录里的新任务接着用上一个任务的标签组,不再另开一组;status显示会话的标签组。新增chrome-use tabs cleanup立即清理所有已结束会话的标签组(含旧版本的⬉、🤖组)。修复keep实际没把标签移出分组。macOS 上打开 Inspect & Ask 不再弹「Apple 无法验证 .bun-501-….dylib」:运行 ocs 改由 launchd 启动的侧栏服务执行,不再继承 Chrome 的隔离标记。agent 光标不再从页面左上角滑进来,箭头尖端对准点击位置。适用扩展 0.5.77。贡献者:@leeguooooo。 - v1.5.241(2026-10-19):一个网站有很多项目的,也按项目选,不按域名:App Store Connect 应用(含 TestFlight 页面)、Vercel、Netlify、Cloudflare Workers 和 Pages、Firebase/Google Cloud、Sentry 由 CLI 里的一张规则表从 URL 认出项目;最近文件夹根目录里的 fastlane(应用 ID)、.vercel/project.json、wrangler.toml、.firebaserc、.sentryclirc 写明该项目时自动选中,显示「按项目匹配」。记住时默认「这个应用 / 这个项目」,用页面标题里的名字称呼它,这类网站不会默认绑定整个网站。仓库的 ssh 远程用了 ~/.ssh/config 里的别名(如 git@github-work:…)时,也按其 HostName 匹配。适用扩展 0.5.76。贡献者:@leeguooooo。
- v1.5.240(2026-10-19):仓库页面按仓库选项目,不再按域名:在 github.com/<用户>/<仓库> 等代码托管页面(含 GitLab 子组和自建的 Gitea、Gogs、GitLab),侧边栏自动选中 git remote 指向该仓库的最近文件夹,并显示「按仓库匹配」;整站绑定不再盖过它,绑定在该仓库上的项目仍然优先。记住项目时提示里可以直接改范围,仓库页面默认「这个仓库」,代码托管网站不会默认绑定整个网站;选项页可以修改绑定范围。适用扩展 0.5.75。贡献者:@leeguooooo。
- v1.5.239(2026-10-19):CLI 自动保持最新。以前后台升级要手动打开,提示只是 stderr 里的一行,大多数安装一直停在最初的版本。现在有新版时,任何命令以及 Chrome 每次启动本机连接时,都会在后台原地安装(下次运行生效),装完刷新 skill 副本;
CHROME_USE_AUTO_UPGRADE=0可关闭,改为只提示。装在没有写权限的位置或是 cargo 构建出来的二进制不会被替换。macOS 上升级交给 launchd 运行,避免从 Chrome 里启动时装出带隔离标记的程序。记录上一次后台升级的结果,doctor会说明为什么还没更新、该运行什么。扩展 0.5.74 在弹窗和侧边栏显示版本状态:CLI 过旧(能自更新时有「更新 CLI」按钮,否则给出命令)、后台升级失败及原因、本版之前的老 CLI 需要重装一次;新 CLI 装好后在 agent 空闲时切换过去;扩展自己的更新也有提示。适用扩展 0.5.74。贡献者:@leeguooooo。 - v1.5.238(2026-10-19):修复 agent 点开新标签的链接时抢走你正在看的标签。1.5.236 起 AI 标签和你共用窗口,而 Chrome 会把页面里
target=_blank链接或弹窗作为窗口的前台标签打开。现在共用窗口时,跨站的target=_blank链接由 chrome-use 在后台标签打开,不切你的标签、Chrome 也不会跳到前面(AGENT_BROWSER_BACKGROUND_LINKS在这种模式下默认cross-site,设off关闭;代价不变:重定向回原站点的链接收不到SameSite=Strictcookie)。其他由 AI 标签打开的标签(同站链接、window.open)由扩展 0.5.73 把原来的前台标签切回来,弹窗留在后面并归入 AI 的会话(--follow能跟过去);扩展更新到位之前这类仍会切走你的标签、也归不进会话。AI 标签组的标记从⬉换成单色的✦,升级时正在跑的会话会另开一个✦组,只发生一次。适用扩展 0.5.73。贡献者:@leeguooooo。 - v1.5.237(2026-10-19):/resume 里选择仍在终端运行的会话时,确认提示不再压到下面的面板上。适用扩展 0.5.72。贡献者:@leeguooooo。
- v1.5.236(2026-10-19):AI 标签改回开在你自己的窗口里:以后台标签打开、不抢焦点,每个会话一个标签组,组名以
⬉开头(如⬉ 🔎 查快递)。独立的 AI 窗口要另外去找,看它干活、接手都不方便;需要时用--window dedicated或AGENT_BROWSER_DEDICATED_WINDOW=1恢复。旧版本建的组没有标记,升级时正在跑的会话会在旁边另开一个⬉组,只发生一次。贡献者:@leeguooooo。 - v1.5.235(2026-10-17):macOS 上以
ChromeUse.app安装:签名、公证并装订票据的应用包放在<prefix>/share/chrome-use/,chrome-use是指向它的软链接。系统设置「文件与文件夹」以前按路径记录裸二进制,没有名字和图标,每多一份二进制就多一条;现在侧栏服务、它运行的 agent 和扩展的 native host 都算作这一个带图标的「ChromeUse」,授权提示也说明了用途。upgrade照旧装回原目录;不带应用包的旧版本仍装裸二进制;AGENT_BROWSER_NO_APP_BUNDLE=1可关闭。Linux、Windows 不变。贡献者:@leeguooooo。 - v1.5.234(2026-10-17):修复 CSS 平滑滚动导致后台表单控件未滚入视口的问题;页面或容器未移动时返回警告,scrollintoview 检查目标是否进入视口。pick 使用真实指针事件打开和选择下拉选项,报告选中后清空搜索文本时的隐藏表单变化,未确认选中时明确警告(#656)。贡献者:@leeguooooo。
- v1.5.233(2026-10-17):修复 agent 正在回复时发出的消息显示两遍(对话里一条带「未记录检查」,排队区一条),现在只在排队区显示,轮到执行时才进入对话;Thermo 整理标签页可加入它之前建的分组,新分组留在原窗口。适用扩展 0.5.71。贡献者:@leeguooooo。
- v1.5.232(2026-10-16):修复「选择元素」点中按钮时按钮被真的点击(比如点选搜索按钮会直接提交搜索)。适用扩展 0.5.70。贡献者:@leeguooooo。
- v1.5.231(2026-10-16):侧栏输入框新增「选择元素」:点一下按钮,再点页面上的元素,元素带着截图(能对上项目代码时还有文件和行号)直接进入输入框,Shift 可连选,Esc 取消;Inspect & Ask 默认发到侧栏对话,发到终端会话改为第二选项;设置里可一次性允许在所有网站选择元素。适用扩展 0.5.69。贡献者:@leeguooooo。
- v1.5.230(2026-10-16):修复停止或恢复对话时可能误报“结果未知”的问题(进程组正在退出时被误当成别的用户的进程);/resume 里会话的文件夹按真实路径显示,走软链接的项目也能和网站记住的项目对上。适用扩展 0.5.68。贡献者:@leeguooooo。
- v1.5.229(2026-10-16):新增
chrome-use upgrade -f:不再弹出安装设置,直接停掉旧版侧栏服务里还在跑的对话和服务,让新版接管,已是最新版时也会这样做;侧栏的“旧版还在运行”提示可以复制这条命令。修复旧版服务忙时,它正在跑的对话在侧栏里读不了截图、借不了标签页、回应不了提示。适用扩展 0.5.68。贡献者:@leeguooooo。 - v1.5.228(2026-10-16):侧栏输入框布局整理:附带的页面和「agent 工作位置」合并成一行标签,添加图片和会话选项改成图标,完全访问、录制和停止并发送统一样式,录制改成圆点开关。适用扩展 0.5.67。贡献者:@leeguooooo。
- v1.5.227(2026-10-16):/resume 按项目分组,最近活跃的项目在前,可展开更多,可按标题、项目名和路径搜索;当前网站记住的项目排在最前。修复所有 Codex 会话都显示“刚刚”“在别处运行中”的问题(Codex 桌面版导入会话时改写了文件时间)。适用扩展 0.5.66。贡献者:@leeguooooo。
- v1.5.226(2026-10-16):在 macOS 和 Linux 上点“停止”时,总会结束 agent 的整组进程。以前取决于时机,子进程有时被留下、对话显示“结果未知”。Windows 本来就会结束整组进程。适用扩展 0.5.65。贡献者:@leeguooooo。
- v1.5.225(2026-10-16):侧栏「agent 与模型」设置页重新设计:卡片列表、状态徽标,配置在 agent 下方展开,定时任务和技能的表单平时收起;输入框下的项目文件夹改成显眼的文件夹标签,可以不选,也可以选一个工作目录。适用扩展 0.5.65。贡献者:@leeguooooo。
- v1.5.224(2026-10-16):修复借标签页时的同意问题:自动借出时刚切到别的对话不会把标签页借给它;在整页标签里收回的标签页,侧栏不会再自动借出;正在发送时把对话移到别的标签页,不会让两个侧栏同时占着它。适用扩展 0.5.64。贡献者:@leeguooooo。
- v1.5.223(2026-10-16):每个标签页有自己的侧栏和对话;侧栏里的 agent 默认就在当前标签页操作(显示 AI 标记,可随时收回),不再开新窗口;消息中间输入 / 也能补全 skill;界面不再出现未翻译的文字代号;旧版对话挡住升级时可直接打开或停止。适用扩展 0.5.63。贡献者:@leeguooooo。
- v1.5.222(2026-10-16):旧版侧栏服务还有对话在运行或等你回应(比如没批准的工具调用)时,新版接管不了,发送会失败;现在报错会写出是哪几个对话,回应或停止后再发即可。适用扩展 0.5.62。贡献者:@leeguooooo。
- v1.5.221(2026-10-16):对话可以在整页标签里打开,和侧栏同步;可以把自己的一个标签页借给对话里的 agent 用(标签上显示 “AI” 标记,随时收回,收回后 agent 的操作会被拒绝)。适用扩展 0.5.62。贡献者:@leeguooooo。
- v1.5.220(2026-10-16):侧栏支持 /resume,把终端里的 Codex、Claude Code、OpenCode 会话接到侧栏继续;新会话可以选项目文件夹(最近项目 + 系统选择框),网站会记住对应的项目;扩展支持中文界面;修复 Inspect & Ask 的回复发到同名终端会话的问题。适用扩展 0.5.61。贡献者:@leeguooooo。
- v1.5.219(2026-10-15):connect 的 profile 列表会标出扩展落后于最新版本的 profile,并写明多少天前用过、怎么更新(Chrome 只在 profile 打开时更新它的扩展)。侧栏服务启动后会卸载启动它的 launchd 任务,不再堆积空闲任务。适用扩展 0.5.58。贡献者:@leeguooooo。
- v1.5.218(2026-10-15):macOS 上的恢复功能重新可用:由 launchd 启动的侧栏服务改为在自己的会话中运行,停止未确认时侧栏能确认旧 agent 进程并提供"结束旧进程"和"在新会话中继续"(1.5.208 起失效)。passkey 防护恢复时也能找到被挪到原型链更深处的防护。适用扩展 0.5.58。贡献者:@leeguooooo。
- v1.5.217(2026-10-15):只有 agent 引用的是同一个浏览器检查时,需求才算已检查(值必须完全一致,运算词、外层引号和空格可以不同)。auth login --bwu 的 passkey 防护在仍有残留时不会报告已清理。按文字命名的 snapshot ref 不会沿用到新内容。适用扩展 0.5.58(#634)。贡献者:@leeguooooo。
- v1.5.216(2026-10-15):侧栏补丁。只有引用的浏览器检查记录了 agent 所描述的内容时,需求才算已检查(允许换说法);引用无关检查只算声称。脱敏只在协议位置保留协议字段,流式回答超过 256 个秘密时其余内容整段隐藏且仍能学习被拆开的秘密,过大无法记录的消息在发送时拒绝。auth login --bwu 的 passkey 防护覆盖已有和跨站 iframe,并按身份恢复。取消命令时也会释放对象组。适用扩展 0.5.58(#633)。贡献者:@leeguooooo。
- v1.5.215(2026-10-15):侧栏按每条请求展示为一轮:发送时所在的页面、agent 实际操作过的页面、每个浏览器动作的结论、回答和结果。浏览器调用先向面板服务领取租约再执行,证据按动作 id 关联到步骤,按下停止后不会再有新动作执行。徽章只反映记录下来的浏览器检查("agent 的浏览器检查已通过"、"未检查"),从不写"已验证"。截图、下载和经同意的录屏按会话保存,并用 SHA-256 校验。结果不确定时提供复核、结束旧 agent 进程(仅在确认归属时)和在新会话中继续。密码、令牌、cookie 等在写入 journal 前就被遮蔽;审批回复由服务端按原始输入生成。新增任务完成通知和工具栏计数;HEIC 照片转为方向正确、不含 EXIF 的 JPEG。native 修复:匹配多个元素的选择器会被拒绝(selector_ambiguous),名称重新渲染后 snapshot ref 仍可用,富文本校验忽略零宽字符和 NBSP,观察模式下的点击会报告 toast,follow 无法接管新标签时会明确说明,请求日志有上限。Codex 完全访问配合仅浏览器工具时不再拒绝 chrome_use 调用。需要扩展 0.5.58(#631)。贡献者:@leeguooooo。
- v1.5.214(2026-10-15):点选改代码新增页面与本地会话的匹配。每个站点(或路径)第一次选取时出现一张确认卡,写明会话、所在目录、项目和依据;Hand over 设为默认,Only this tab 只对当前标签页生效。只有本地证据才会预选:仓库里提交的 .chrome-use/inspect.json(支持一层子域名通配、按路径的 pathScope、共享 sourceRoots),或本地 dev server 的目录,并且该项目里正好一个会话。测试环境按 CI 源码路径和部署版本与各 worktree 的关系排序。新增 chrome-use inspect link/unlink/list,会话可以认领站点,站点已属于别的会话时要在浏览器里确认。每次发送都带上面板显示的路径和目标,单页应用切换路由、认领被接受、解绑或改绑后都会拒绝发送,不会改投。侧栏输入框的停止和发送按钮保持在一起。配套扩展 0.5.57(#628)。贡献者:@leeguooooo。
- v1.5.213(2026-10-14):新增点选改代码(Inspect & Ask)。按 Alt+Shift+C(或工具栏弹窗里的 Inspect element),点选页面元素,写一句要改成什么样,回车后连同每个元素的源码 文件:行号、截图和样式,通过 ocs 交给已经在这个项目里运行的 Claude Code、Codex 或 Pi 会话。本地 dev server 和测试环境域名都能用。源码位置来自 code-inspector-plugin 的 data-insp-path,React 18 与 Vue 开发构建可作后备;CI 构建里的绝对路径只在绑定的项目目录内按后缀匹配。支持多选、框选、父子切换、暂停动画、逐元素备注和截图画笔,可复制为 Markdown 或在编辑器中打开。每个站点第一次发送时选择项目和会话;接入源码标记、为测试构建开启标记都会先列出改动,经你同意后才交给 agent。输入框运行在扩展自己的 iframe 中,凭一次性密钥认证,页面读不到也改不了;每次发送前重新确认输入框可见;选取不会触发页面上的按钮和链接。投递带批次 ID,不会重放,存储与唤醒结果分开显示。配套扩展 0.5.56(#626)。贡献者:@leeguooooo。
- v1.5.212(2026-10-14):Windows 侧栏补齐聊天、CLI 模型探测、配置预览/应用/恢复、技能库与导入、图片、会话参数、定时任务和面板 MCP,四个 agent 与 macOS/Linux 保持一致。不需要管理员权限。Windows Job 确认停止、删除和参数修改后的全部子进程退出,私有数据使用用户/SYSTEM ACL,配置原子替换保留原权限并校验文件身份。支持原生 exe 与 cmd/bat 入口,修复 Path 环境变量大小写匹配。新增 Windows 原生消息、权限及进程树验收。配套扩展 0.5.55,模型探测只启动用户选中的 CLI。贡献者:@leeguooooo。
- v1.5.211(2026-10-14):扩展 0.5.55 不再在打开侧栏时自动运行 Codex。以前新会话默认选中 Codex 并读取它的模型列表,只用 Claude Code 的人每次打开侧栏也会启动一次 Codex CLI;机器上的 Codex 版本过旧时,macOS 每次都弹“codex 包含恶意软件”。现在侧栏记住你选的 agent(没选过就用最近一次会话的 agent),只读取这个 agent 的模型。CLI 一启动就被系统杀掉(Gatekeeper、XProtect 拦截)时,侧栏会说明是系统拦下了它,并提示升级或重装,不再只显示“Model metadata unavailable”。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.210(2026-10-14):扩展 0.5.54 新增侧栏技能选择与共享技能库,支持目录、ZIP 和 HTTPS Git 导入;所选技能及文件随消息保存,队列和重试保留同一版本。可粘贴、拖入或选择最多五张图片,按各 agent 的原生格式发送并随会话保存。会话可单独设置工具范围、Codex/Claude 推理强度和 Codex 服务等级,不改全局配置;修改参数后先确认旧进程退出。新增间隔、每天、工作日和五字段 cron 定时提示,使用独立后台 session,保留历史并通知结果;错过的周期只补一次,活跃或结果未知的运行不重放,跨后端调度不能扩大工具和审批权限。修复 Codex 恢复默认推理强度仍沿用旧值,以及运行历史缺失阻塞其他任务、压缩包包裹目录未识别等问题。Windows 侧栏继续只读。扩展 0.5.54 已通过 Google 审核并公开发布。贡献者:@leeguooooo。
- v1.5.209(2026-10-14):扩展 0.5.53 的工具栏弹窗(Chrome 不支持侧栏时显示)改用侧栏同一套配色,跟随系统深色模式,并加了 Settings 按钮。扩展商店换上四张新截图、小宣传图和横幅图,由
scripts/store-screenshots.sh用真实侧栏界面生成。README 插图改为 WebP(4.4 MB 降到 180 KB)并加上侧栏截图,文档站的 VIP 徽章从 1.38 MB 降到 6.6 KB,删掉了未使用的图片和旧扩展压缩包。扩展商店需等待 Google 审核。贡献者:@leeguooooo。 - v1.5.208(2026-10-14):修复 macOS 弹出“Apple 无法验证 .bun-501-….dylib 是否包含恶意软件”。从侧栏启动的 agent 继承了 Chrome 的文件隔离标记,它写出的每个文件都带隔离属性;OpenCode、Claude Code 等用 Bun 打包的 CLI 会把原生库解压到
$TMPDIR/.bun-<uid>-*.dylib再加载,于是被系统拦下。现在面板的 agent 服务改由 launchd 启动,不在 Chrome 的进程树里,agent 写出的是普通文件;服务启动时还会清掉之前留下的.bun-*库上的隔离属性。贡献者:@leeguooooo。 - v1.5.207(2026-10-14):扩展 0.5.52 让侧栏里连续的工具调用合成一组:有步骤在跑时展开,跑完折叠成“4 steps · 1 failed”一行,下面的回复不会被挤出视野;你手动展开过的组保持展开。运行中的步骤显示转圈,回复结束后没跑完的步骤不再显示为忙碌;agent 还在工作而界面上没有其他迹象时显示三个点。顶栏图标统一,排队消息显示为待发送气泡,表格加了圆角边框,空白会话给出三个示例任务,点一下只填进输入框、不会直接发送。Agents & models 里每个 agent 前有状态圆点(已登录、未登录、已安装、未安装),正在配置的 agent 高亮,模型字段会提示 CLI 报告的模型 id,推理强度提示可选档位,预览改动显示为旧值 → 新值。扩展设置页改用侧栏同一套配色,并跟随系统深色模式。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.206(2026-10-14):扩展在开任何东西之前就拒绝开标签时,
open现在报first tab refused … Nothing was opened or attached.(错误码first_tab_refused),不再说“结果未知”、让你去找一个根本没开的空白标签页。首次open被拒(包括profile not open)后,同一会话的tab list --all不再报Browser not launched,会改走新会话那条只读列表路径,仍然不 attach、不创建任何东西。贡献者:@leeguooooo。 - v1.5.205(2026-10-13):你在 AI 窗口里开了或拖进自己的页面后,之后的
open不再报“the shared agent window contains user tabs”而失败。这个窗口改归你,里面已有的 AI 标签照常工作,新的 AI 标签开到一个新的 AI 窗口,之后的会话共用它;你的页面仍然不会被移动或关闭。native host 断线后扩展 1 秒后主动重连,连续失败最多退避到 30 秒,断线时命令和事件等待直接结束,不再卡住。需要扩展 0.5.51,扩展商店需等待 Google 审核。贡献者:@leeguooooo。 - v1.5.204(2026-10-13):扩展 0.5.49 的侧栏会话列表可以在“本站 · x.com”和“全部”之间切换。会话归属于发第一条消息时所在页面的主域名,在 mobile.x.com 上开始的会话也会出现在 x.com 下。每条会话显示 agent、网站和最近使用时间,切换选择会被记住。这个版本之前的会话没有网站信息,只出现在“全部”里。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.203(2026-10-13):扩展 0.5.47 让侧栏回复按 Markdown 显示:标题、加粗斜体、行内和多行代码、列表、引用、表格和链接都会渲染,不再显示原始符号;回复内容不会被当作 HTML,只有 http(s) 链接可以点击。浏览器工具行显示为“Browser · open”并附上访问的网址、操作或命令,不再显示
mcp__chrome_use__chrome_use_open这类内部名称;只有空行的回复不再留下空白。扩展商店需等待 Google 审核。贡献者:@leeguooooo。 - v1.5.202(2026-10-13):删除侧栏会话时会清理它的浏览器 session。会话里可能有
close永远无法确认的标签页记录(旧的 target id,或 Chrome 重启前打开的标签页),删除后会话进程仍在运行。现在删除会依次尝试close、close --forget-untracked、session stop --force,只针对这个会话自己的 session;只有普通 close 成功才报告标签页已关闭,否则侧栏提示 AI 窗口里可能留下一个标签页。贡献者:@leeguooooo。 - v1.5.201(2026-10-13):扩展 0.5.46 修复侧栏慢操作被直接断开:本地面板服务给每个请求限时 10 秒,超时后不回任何内容就关掉连接;OpenCode 冷启动时的模型检查会超过这个时间,首次打开时模型菜单可能读不出来,删除会话时等 agent 退出再关浏览器标签页也可能超时。现在模型检查限时 30 秒、删除 45 秒,超时会返回错误,上一层的等待时间都比下一层长。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.200(2026-10-13):扩展 0.5.45 修复 Agents & models 里部分 agent 显示“状态不可用”:本地服务同时最多跑两个 CLI 检查,四个可对话 agent 同时检查时有两个会失败;现在侧栏让检查排队。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.199(2026-10-13):侧栏的 Pi 模型菜单接受
openrouter/~anthropic/claude-opus-latest这类 OpenRouter 别名;个别仍无法使用的模型 id 会被跳过,不再让整个菜单失败。贡献者:@leeguooooo。 - v1.5.198(2026-10-13):Pi 会列出所有已配置的模型,超过 256 个时侧栏的模型检查会失败;现在菜单保留前 256 个并标明列表不完整。OpenCode 拒绝消息时,侧栏显示 OpenCode 给出的原因(例如默认模型已停用),不再只显示“OpenCode refused the prompt”。贡献者:@leeguooooo。
- v1.5.197(2026-10-13):扩展 0.5.44 在侧栏里加入 OpenCode 和 Pi。OpenCode 走它的 Agent Client Protocol(
opencode acp):流式回复、工具行、停止、排队、恢复会话不重放历史,权限请求显示为卡片;完整权限下自动允许,关闭时开关显示“CLI permissions”,按 OpenCode 自己的规则执行,可能不询问;删除会话调用 OpenCode 自己的session/delete;用户 OpenCode 配置里的其他 MCP 服务器保持启用(#590)。Pi 走 RPC 模式,会话 id 即 Pi 的 session id,会话文件放在会话文件夹里,恢复准确、删除时一并删掉;Pi 不会在执行工具前询问,所以关闭完整权限时只开放浏览器工具(“Browser only”),打开时保留全部工具;面板会话里关闭用户的其他 Pi MCP 服务器,Pi 扩展弹出的对话框会被取消而不是卡住。侧栏只列出已安装 CLI 能运行的 agent,旧版 CLI 仍是 Codex 和 Claude Code。扩展商店需等待 Google 审核。贡献者:@leeguooooo。 - v1.5.196(2026-10-13):扩展 0.5.43 让侧栏里的“这个页面”指你正在看的标签页:发送时附带面板所在窗口的当前网页,输入框上方显示,可点 × 去掉;agent 直接读取或操作这个标签页,不再列出所有标签页去猜。提示 agent 浏览器工具已经可用,不再先用 shell 读 skill、记忆和文档。工具行显示实际内容:命令和输出、MCP 参数和结果;模型思考过程和无类型条目不再当作工具调用显示。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.195(2026-10-13):扩展 0.5.42 把侧栏的模型输入框改成下拉菜单,自动读取 agent CLI 自己的模型列表,第一项是“默认模型”(CLI 配置里的模型);+ 菜单里可以填自定义模型 ID 覆盖。菜单和 Agents & models 共用一次 CLI 查询。Pi、Gemini CLI、OpenCode 等还没有对话适配器的 agent 显示“暂不支持在侧栏对话”,不再显示“状态不可用”。删除会话时如果无法确认浏览器标签页已关闭,提示 AI 窗口里可能留下一个标签页(根因见 #583)。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.194(2026-10-13):扩展 0.5.41 新增完整权限模式:侧栏会话可以不再逐次确认。Codex 以
approvalPolicy=never和完全访问沙箱启动,Claude Code 以bypassPermissions启动并开放全部工具;仍然到来的审批按“允许一次”自动回复,agent 提问仍交给用户。新会话默认开启并记住上次选择;已有会话可直接切换,审批卡片上的“本会话都允许”会放行正在等待的请求,下一轮用新参数重启 agent。输入框底部一行放 agent、权限开关和模型,参考 Codex 与 Claude 应用。扩展商店需等待 Google 审核。贡献者:@leeguooooo。 - v1.5.193(2026-10-13):扩展 0.5.40 侧栏可以删除会话。点标题栏的删除按钮并确认后,先停掉该会话的 agent 并等它退出,再删除面板历史、CLI 自己的会话记录和这个会话的浏览器标签页。CLI 记录按会话 id 精确匹配:Codex 的
sessions/与archived_sessions/下的 rollout 文件,Claude Code 的projects/*/<session>.jsonl及同名目录,遵循CODEX_HOME/CLAUDE_CONFIG_DIR。删除失败的项会在侧栏列出。Codex 0.162 另在自己的 SQLite 库里缓存会话索引和内容,这部分不改动;rollout 删除后 Codex 不再列出或打开该会话。扩展商店需等待 Google 审核。贡献者:@leeguooooo。 - v1.5.192(2026-10-13):侧栏启动的 agent 现在和终端用同一个 CLI。Chrome 给本地服务的 PATH 只有系统目录,版本管理器的转发脚本会因此启动旧版本(例如 Codex 0.145.0 而不是 0.162.1),旧版本把配置里的模型报成不支持;现在会话和 Agents & models 检查都使用发现阶段搜索的目录。“用默认模型重试”只在会话手动指定过模型时出现;模型来自 CLI 配置时改为“修改默认模型”,直接打开该 agent 的配置。贡献者:@leeguooooo。
- v1.5.191(2026-10-13):扩展 0.5.39 简化本机 agent 侧栏:顶部只剩会话选择和新建、刷新、设置按钮;连接正常时不显示状态行;agent 和模型收成输入框上方的小选项,停止按钮只在运行时出现;工具调用每个一行,点开看详情。agent 返回的原始错误 JSON 显示成一句话,原文放在“详情”里;指定模型失败时可一键用默认模型新建会话重试。Agents & models 页直接显示每个 agent 报告的版本、登录状态和模型数量(#576、#577)。扩展商店需等待 Google 审核。贡献者:@leeguooooo。
- v1.5.190(2026-10-12):扩展 0.5.38 让同一 profile 的 AI 会话共用一个后台窗口,各用独立标签组,人使用自己的窗口。新窗口直接使用第一个任务页,不留额外空白页;窗口记录丢失后复用已确认的 AI 窗口,全屏不再另开窗口。混入用户页或归属不明时拒绝继续新建。旧占位页清理失败时保留记录,报告已创建的标签。首次
tab list --all不启动 daemon、不开窗口或标签;已有会话继续读取自己的浏览器(#545)。扩展商店需等待 Google 审核。贡献者:@leeguooooo。 - v1.5.189(2026-10-12):扩展 0.5.37 新增本机 agent 侧栏,macOS/Linux 可使用 Codex 或 Claude Code 的已有登录,支持本地历史、流式回复、审批、队列编辑和确认停止后的直接发送。发现 14 类 agent,配置改动先预览、写入后校验,恢复时保留后续修改;模型目录来自 CLI 元数据,未验证实际调用能力。修复首次连接的加载时序和浏览器定时器调用,旧主机提示升级。Windows 面板只读,原有浏览器 CLI 不变;新会话使用独立浏览器 session,当前页面绑定尚未包含。扩展商店需等待 Google 审核。同时修复关闭 agent 标签页后的已保存分组、重复控件的 snapshot 上下文和 site info,并更新安装与录制说明。贡献者:@leeguooooo、@mpeter。
- v1.5.188(2026-10-12):macOS 上,AI 点击打开的新标签或弹窗不会再让 Chrome 一直挡在你正在用的程序前面。Chrome 在网页开新标签时会自己跳到前台,无法阻止;现在 chrome-use 会在点击前记下前台程序,Chrome 因这次点击打开新标签而跳到前台时,立刻把原来的程序切回去(只切窗口,不启动任何东西,没有权限弹窗),实测 Chrome 只在前台停留 41–72 毫秒。Chrome 本来就在前台、你切去了别的程序、或没有新标签时都不处理。结果里有
focusRestored等字段,AGENT_BROWSER_RESTORE_FOCUS=0关闭。Windows、Linux 不变(#536,修复 #468)。贡献者:@leeguooooo。 - v1.5.187(2026-10-11):走 OpenCLI 的站点命令每次都会在 stderr 提示它是 chrome-use 不维护的第三方代码,写操作会建议改用我们自己的适配器;
--json新增maintainedBy: "opencli"、readOnly、notice,退出码和行为不变(#534)。twitter/like、twitter/follow、bilibili/user-videos、bilibili/creator-stats已移植到 chrome-use-sites,不再走 OpenCLI;点赞、关注只作用于指定的推文或主页,不会取消已有的点赞或关注,需加--until-done;B 站两个命令改为返回单个对象(#535)。贡献者:@leeguooooo。 - v1.5.186(2026-10-11):需要扩展 ab-connect 0.5.35(已在 Chrome 应用商店发布,Chrome 会自动更新)。新增
diag pages:只读列出所有真实页面(网址、标题、窗口、是否当前、是否休眠、归属)以及过期 relay 记录、扩展是否落后、profile 与 relay 状态,默认不连接任何页面;--measure增加每页内存、DOM 节点、事件监听与 worker 内存,测量不属于 chrome-use 的标签页需--force(测量期间 Chrome 会显示调试提示条),测完即释放、不激活;--watch 秒数采样两次并判断泄漏类型。JSON 带版本号(schema: 1),退出码 0/2/3,另有 MCP 工具chrome_use_diag_pages(#533,修复 #521)。贡献者:@leeguooooo。 - v1.5.185(2026-10-11):配合扩展 ab-connect 0.5.34 可用;0.5.35(已提交 Chrome 应用商店,上架后 Chrome 自动更新)带来下面的更新与超大回复修复。
adopt找不到时会话不再落到你无关的标签页上,而是处于“没有当前标签页”并拒绝操作(重启后台也记得),tab new等照常可用(#527,修复 #507)。经 relay 上传大文件改为分块流式,200 MB 约 13 秒,31 MB 普通upload从两分多钟降到约 1 秒,同一浏览器一次传一个、排队时说明谁在占用(#528、#532,修复 #506)。扩展更新会在没有命令执行且安静 60 秒后自动装上,会话的标签页与 refs 保留,doctor显示更新状态(0.5.35,#526,修复 #524)。超过 64 MiB 的回复立即报reply_too_large(0.5.35,修复 #530)。douyin/delete、douyin/update、twitter/delete改由我们自己的 chrome-use-sites 维护,走页面与隐身处理,永不回落到 OpenCLI(#529)。贡献者:@leeguooooo。 - v1.5.184(2026-10-11):需要扩展 ab-connect 0.5.34(已在 Chrome 应用商店发布,Chrome 会自动更新)。
tab list --all列出所有窗口的标签页且不连接、不激活任何标签页,每行标明归属(本会话、某会话及是否在运行、或你自己),本会话的排在前面;--tab <编号> --force可在后台原地操作不属于本会话的标签页,tab close <编号> --force关闭并确认消失,不加--force会拒绝并说明归属(#520)。open不再对已打开的页面报超时:加载信号没到但页面明显可用时报成功并注明无法确认来自本次请求(commit: "unverified"),不可用才报不可重试的错误(#511,修复 #502)。没有东西可关时close不再在你的 Chrome 里闪开空白页(#518,修复 #517)。relay 不再列出已关闭的“幽灵”标签页(#522,修复 #519)。douyin/delete保留 19 位 ID 全部数字并按标题找作品卡片(#525,修复 #508)。贡献者:@leeguooooo。 - v1.5.183(2026-10-10):需要扩展 ab-connect 0.5.33(已在 Chrome 应用商店发布,Chrome 会自动更新)。
close关完会按确切标签页 id 核实真的关掉了才报告,没关掉或无法确认就报close incomplete并保留会话以便重试,绝不谎报closed: true;会话自己创建的唯一标签页可以直接tab close(#496)。Chrome 账户没有打开窗口时立即报profile_not_open,不再等 45 秒报 daemon 卡住,也不再留下空白标签页(#499,修复 #486)。hover改用真实鼠标并确认事件真的落到元素上才报成功,被遮挡或在变换过的 frame 里会事先拒绝,并支持--observe(#509、#510)。动作后观察失败时保留旧 refs 并在使用前核实身份(#497)。extract支持"@attr"简写(#512)。判稳提示会点名是哪些请求让页面不静止(#515)。小页面的--observe直接返回整页与可见文本变化(#498)。read --links列出页面链接的完整地址(#513)。贡献者:@leeguooooo。 - v1.5.182(2026-10-10):需要扩展 ab-connect 0.5.32(已在 Chrome 应用商店发布,Chrome 会自动更新)。relay 重启后
--browser会话等待自己 profile 的新地址,保留标签页编号和 refs,绝不连到别的 profile(#491);空闲时 relay 重启后的close会先重连再真正关闭,没关完就报close incomplete并保留会话以便重试,绝不报closed: true(#492)。超过 45 秒的命令靠心跳保活不再被杀,排队的第二条命令不再超时或拖垮 daemon,调用方已离开的排队命令不会迟到执行(#488、#494)。relay 上的输入超时从 8 秒放宽到 25 秒,不再留下半次点击(#489)。调试器超时后标签页能恢复,多个会话同时开标签页不再冲突,service worker 重启后不再多开一个 agent 窗口(#478、#493)。doctor和status报告 relay 健康、重复的扩展、扩展与 CLI 版本不一致和机器负载,不启动浏览器、不碰标签页(#490)。贡献者:@Sean529、@leeguooooo。 - v1.5.181(2026-10-09):
auth login --bwu不再把网站没收到的登录报成成功:在你自己 Chrome 的后台标签页上,提交表单的回车可能被 Chrome 接收却没到页面,什么都没提交,命令却报submitted: true,自动登录报ok: true,网站还是没登录。现在会检查回车到没到页面,没到就改点表单的登录按钮;并且只有登录表单从页面上消失后才报成功(signedIn: true和evidence),约 12 秒后表单还在或页面读不到就报the sign-in was not confirmed并说明页面现在的样子。回车时标签页断开按之后的页面判断,不再报action_outcome_unknown;alreadySignedIn要求页面已加载且没有登录表单。登录墙在结果未知或页面没给原因时再试一次(#487,修复 #482)。贡献者:@leeguooooo。 - v1.5.180(2026-10-09):登录墙不再靠配置开关:某个站点第一次遇到登录墙(跳到登录页,或
site适配器发现没登录)时会问:这次用密码库登录、以后这个站点都自动登录、还是不登录也不再问。终端里直接提问;agent 调用时 stderr 和loginWall.ask给出要原样转问用户的问题和每个选项对应的命令(auth login --bwu、auth autologin always <host>、auth autologin never <host>),core 指南要求 agent 转问、不能替用户选「永久」。决定按站点存在~/.chrome-use/autologin.json,auth autologin status查看,auth autologin off <host>(或--all)撤销;原来的"auth": {"autoLogin": "bwu"}和AGENT_BROWSER_AUTO_LOGIN=bwu照旧视同「永久」(#483,修复 #481)。自动登录在提交那一下标签页断开、结果未知时,回到登录页再试一次(断开的原因见 #482,尚未查明)。贡献者:@leeguooooo。 - v1.5.179(2026-10-09):站点适配器发现站点没登录时按登录墙处理:适配器返回
loginRequired: true(可带登录页loginUrl;error: "login_required"/"not_logged_in"同义),或运行失败且fetch拿到 HTTP 401、被重定向到登录页、标签页停在登录页时,命令报login wall:和loginWall,提示走auth login --bwu,不再叫你去 Chrome 里手动登录,也不再把没登录误报成写入失败;配了"auth": {"autoLogin": "bwu"}时自动打开登录页、用密码库登录并重跑一次(写操作只在适配器自己报了没登录时重跑)。auth login --bwu不带--item时,域名匹配到多个账号但只有一个名字正好是该主机名,就用它(#480,修复 #479)。relay 重启后会话仍认得自己开的标签页(#469,修复 #461);会话绑定到 Chrome profile 而不是 relay 地址,重启后--browser照常可用(#476,修复 #472)。relay 重启后 t1、t2 等标签页编号和 refs 保持在原标签页上,首条命令不再误报标签页没了;正在操作的标签页在断开期间跳转或关闭时丢弃其 refs 并要求先选标签页,记录原子写入,读不出时暂停而不重新编号(#475,修复 #473)。页面在点击后打开新标签页并把 Chrome 带到前台时会在openedTabWarning里说明;AGENT_BROWSER_BACKGROUND_LINKS=cross-site可让跨站target=_blank链接在后台打开(需扩展 ab-connect 0.5.31)(#474、#477,见 #468)。贡献者:@leeguooooo。 - v1.5.178(2026-10-08):需要扩展 ab-connect 0.5.30(已在 Chrome 应用商店发布,Chrome 会自动更新)。chrome-use 不再弹出浏览器、不再抢你的标签页:agent 标签页只放在一个后台的专用窗口里,不再落进你的窗口;单元测试和
doctor不再启动可见浏览器;截图、复制标签页、state save和密码管理器菜单恢复都不再碰你的前台和标签页(网页在 agent 点击后弹窗时仍可能把 Chrome 带到前台,见 #468)(#460)。relay 上由会话自己的标签页打开的新页面会按确切标签页 id 接管、报告、可跟随,并随会话关闭;无法确认归属的不碰(#457)。ChooseBrowser 规则必须遵守,指定的 profile 未连接或会话绑定了别的 profile 时会明确报错(#466)。find遇到多个同名目标时拒绝并列出候选(#459)。另修复 npm 安装脚本、去掉无效的设置项、修正 skill 文件格式和环境变量文档(#462–#467)。贡献者:@AmeerAliAnwar、@leeguooooo。 - v1.5.177(2026-10-08):
--observe的页面变化监听改为在操作前就装好,不再因错过页面立即重绘而白等 500 毫秒;判稳规则不变(100 毫秒无 DOM 变化、无动画、无在途请求、上限 1 秒)。三页筛选任务里每次click --observe从约 740 毫秒降到约 220 毫秒,整个任务从约 3.5 秒降到约 1.4 秒(与 1.5.176 交替各 6 轮的中位数,口径相同;表单和延迟加载任务持平)。--follow时对新标签页单独判稳。修复:pick --observe返回观察结果;batch步骤里的参数对该步生效,显式false能覆盖外层,步骤的--tab不覆盖命令自己指定的标签页;screenshot <路径> --selector支持任意顺序,未知选项会报错;fill元素句柄失效时先读回再决定,读不到就报未知、不写入;点击打开新标签页时重新报告openedTab(#455)。贡献者:@leeguooooo。 - v1.5.176(2026-10-07):页面已登录时
auth login --bwu约 3 秒内返回alreadySignedIn,不再等 25 秒后报"找不到登录框",也不会输入任何内容;登录页仍按原来的方式等待(#453)。旧 daemon 已因空闲退出后再升级时,第一条@ref命令也会说明是升级导致 refs 失效、标签页已保留,不再显示"这个会话还没有 snapshot"(#454)。贡献者:@leeguooooo。 - v1.5.175(2026-10-07):升级后不再丢掉正在运行的会话的标签页,refs 尽量接回并经过身份校验;从 1.5.174 及更早版本升级时标签页保留,第一条
@ref命令会提示重新snapshot -i(#450,修复 #448)。auth login/--bwu支持同站 iframe 里的登录表单(如 App Store Connect 的 Apple 登录),用可信输入填写,处理先账号后密码的表单,点登录按钮提交,遇到两步验证会报告而不猜(#452,修复 #449)。所有会碰到页面的命令都会先处理密码管理器的内联菜单;Chrome 整个窗口被隐藏时无法在不抢焦点的情况下关掉菜单,报错会说明需要把 Chrome 切到前台一次或在标签页里按 Esc(#452)。贡献者:@leeguooooo。 - v1.5.174(2026-10-07):修复普通 CLI 调用准备浏览器时清掉连续观察计数的问题;同一连接、目标和会话的成功复用保留计数,重绑定、失败或加载 storage state 仍清空。新增真实 CLI 回归,核验按钮实际执行、batch 后置条件、失败与嵌套脚本提示和清理;文档明确普通命令、batch、script 的 JSON 输出层级。贡献者:@leeguooooo。 (#447)
- v1.5.173(2026-10-07):操作报告成功但多次完整观察都没有任何变化时,
--observe会提示observed.noProgress,只作提醒,不改结果、不重放。嵌套脚本返回ok:false时,调用方随之失败,不再只看传输是否成功。timing区分 Chrome 请求累计耗时和实际占用的时间,快照的两次独立读取改为并发(#444)。静态页面补齐搜索元数据和双语使用指南(#442、#445)。贡献者:@leeguooooo。 - v1.5.172(2026-10-07):多 profile 好用了:
browsers列出所有 profile 的显示名、目录、账号和连接状态;--browser支持按名字或前缀选择;会话会说明正在用哪个 profile;browsers --who <域名>查看各 profile 是否登录了某网站;可按网址配置默认 profile;connect --browser <名字>在需要时一键连接某个 profile(#443)。检测到被重定向到登录页时提示用auth login --bwu,可配置自动登录(#438)。修复:在装了密码管理器的 profile 里fill之后后台标签页点击要 5 秒,现在约 0.2 秒(#439);report --submit没有gh时通过网页表单提交(#440);report --new改为--new-issue(#441)。贡献者:@leeguooooo。 - v1.5.171(2026-10-07):新增
chrome-use report,根据本地失败记录起草 GitHub issue(自动脱敏、按失败特征查重,重复的改为在原 issue 下补充),经用户同意后通过gh、已登录的 Chrome 或预填链接提交;同类失败反复出现时会提示一次(#436)。Bitwarden 等密码管理器的自动填充菜单不再挡住操作,chrome-use 会自动关掉菜单后继续,不改变你的前台标签页(#435)。daemon 断开连接时立即清理,不再重试 5 次(#421);adopt按所选 profile 连接 relay(#422);拒绝信息里不再提示--force(#433)。贡献者:@AmeerAliAnwar、@leeguooooo。 - v1.5.170(2026-10-07):
wait --text超时时,如果页面上有只差大小写或空格的文字,报错会直接给出页面上的实际写法和应使用的命令(例如页面写的是 "Grand total",而等待的是 "Grand Total"),不再只泛泛提醒区分大小写。核心 skill 里的extract示例改为可以直接运行的写法。(#432) 贡献者:@leeguooooo。 - v1.5.169(2026-10-07):
close --all在有其他会话运行时不再执行,而是列出这些会话,加--force才全部关闭(#429)。被别的会话关掉的会话,下一条命令会说明标签页是被谁关掉的,并提醒先确认之前的提交是否已成功,不再悄悄在空白页里运行导致重复提交;tab select --activate不会再把别的会话的标签页挤到后台(#431)。pick支持自动补全输入框:输入文字、等建议出现、点选最匹配的一项并核实(#430)。核心 skill 重新列出代替eval的命令(#428)。贡献者:@leeguooooo。 - v1.5.168(2026-10-06):
@ref指向的元素被替换后,不会再凭猜测去操作:重新找到的元素角色和名字都相同时照常执行,并在回复里说明(relocated);名字变了(如 "Delete" → "Delete all")就不点击,报错里给出新的引用try @e7 [button] "Delete all";按id/name/data-testid找回的文本框标签变了仍照常输入。Unknown ref会说明原来是什么并给出建议(借鉴 callstack/agent-device,#419)。新增scroll down --until <选择器|@ref|text=…>,一次调用滚到目标出现;画布页面的快照几乎为空时自动附截图(#420)。核心 skill 从 15.7 KB 精简到 6 KB(#416)。修复:未先拍快照时--observe会把未变的元素重新编号;--observe混入其他扩展的请求;本地页面误提示 OpenCLI 的桌面应用命令(#418)。扩展测试改用注入时钟,繁忙机器上不再偶发失败(#417)。贡献者:@leeguooooo。 - v1.5.167(2026-10-06):
chrome-use status不再把已经断开的 relay 报成正常。native host 异常退出后,relay 地址文件还留在磁盘上,以前status会据此报告连接正常,并把缓存的扩展和 profile 信息当作当前值;现在会真的等扩展回应(无回应时最多 10 秒),收不到就报告断开,缓存信息标为未知。(#411) 贡献者:@Sean529。 - v1.5.166(2026-10-06):
click遇到被其他元素盖住的目标时直接报错并说明被谁盖住,不再悄悄改用 DOM 点击;click --allow-dom可以照旧点击,check、下载、登录等内部点击保留原来的兜底。--json的回复带timing(总耗时、Chrome 调用耗时和最慢的调用),daemon 把每条命令的耗时记到~/.chrome-use/timing.jsonl(不记 URL 和页面内容,20 MB 滚动,AGENT_BROWSER_TIMING_LOG=0关闭)。截图默认上限从长边 2000 降到 1200 像素,整页截图只限制宽度,--full-res保留原尺寸。借鉴自 iphone-use。(#414) 贡献者:@leeguooooo。 - v1.5.165(2026-10-06):新增
eval --background <表达式>,在页面里启动耗时的表达式并轮询结果,不受 relay 单次 8 秒的限制(和site适配器同一套机制)。OpenCLI 里在页面中等待的命令(如jd/search)不再因 8 秒 relay 超时失败;不需要浏览器的 OpenCLI 命令(如pubmed/search)改为按 OpenCLI 自己的方式调用,不再报Cannot read properties of null。(#413) 贡献者:@leeguooooo。 - v1.5.164(2026-10-06):
solve-slider支持易盾旋转滑块,按当前题目核验结果;无法确认匹配或重试耗尽时返回失败,不再把旧组件的成功当作通过。跨域 iframe 的网络响应从所属帧读取,正文不可用时返回responseBodyError。内置指南说明普通验证码的尝试流程、有限重试和网站服务端验收。开发构建和测试可交给配置的 SSH 主机执行,源码和下载产物均校验,连接失败不回退本机编译。(#412) 贡献者:@leeguooooo。 - v1.5.163(2026-10-06):我们的适配器运行失败时,如果 OpenCLI 有同名的只读命令,会自动改用它,不再让坏掉的适配器挡住能用的命令。例如社区库的
hackernews/top请求的接口被页面安全策略拦截、一直失败,现在会通过 OpenCLI 返回数据。参数按名字带过去,常见别名会对应(count→limit、q→query);stderr 会说明,--json里有source: "opencli"和fallbackFrom。写操作不会重试。(#409) 贡献者:@leeguooooo。 - v1.5.162(2026-10-06):Windows 上也能装 OpenCLI 命令了(之前找的是
npm,Windows 上是npm.cmd,会被静默跳过)。OpenCLI 命令不会再无限运行:默认 300 秒,命令自带timeout参数时按它加 60 秒,AGENT_BROWSER_OPENCLI_TIMEOUT=<秒>可调整。(#408) 贡献者:@leeguooooo。 - v1.5.161(2026-10-06):OpenCLI 的命令可以当
site命令用。装了 Node.js 20+ 时,site update用npm install --ignore-scripts把固定版本的 OpenCLI(1.8.8,约 180 个站点、1300 多条命令)装到~/.chrome-use/opencli,不需要 token。我们两个库都没有的name/cmd用 OpenCLI 自己的运行时执行,浏览器操作全部走 chrome-use,用的是你当前的会话和登录态。site list里标(opencli),站点提示里排在我们的后面,同名用我们的;AGENT_BROWSER_SITES_NO_OPENCLI=1关闭。新增site analyze [url]:列出页面调用过的同站接口、嵌入的初始数据和反爬厂商,按“页面内调接口 → 嵌入数据 → DOM”推荐取数方式。新增site verify:--write-fixture记下正确结果的结构(只存类型),之后字段消失、类型变化或列表变空时以退出码 1 失败。(#407) 贡献者:@leeguooooo。 - v1.5.160(2026-10-06):切换到还在加载的标签页时,也会提示该站点的适配器。后台打开的标签页切过去时页面可能还是
about:blank,1.5.159 因此漏掉了siteAdapters提示;现在优先用命令返回的、来自 Chrome 标签信息的 url,站点仍未知时下一条命令再查。(#406) 贡献者:@leeguooooo。 - v1.5.159(2026-10-06):只要到了有站点适配器的站点就会提示,不再只在
open/snapshot时提示:tab new、切换或关闭标签页、back/forward/reload、引起跳转的点击或按键、read,以及在不是本会话打开的标签页上的第一条命令,换了站点都会带上siteAdapters,同一站点只提示一次。没有适配器却经常操作的站点(单次会话 30 个动作,或第三天使用)会在一次响应里带上siteAdapterSuggestion,让 AI 先问你要不要写一个;同一站点每次会话一次、两周内不再提,本机域名和 IP 不提示,AGENT_BROWSER_SITES_NO_SUGGEST=1关闭。官方适配器库优先于社区库:同名适配器用官方的,提示里官方和你自己的排在前面。(#405) 贡献者:@leeguooooo。 - v1.5.158(2026-10-04):Windows:守护进程启动后,调用方不再卡住。守护进程启动时继承了调用方的 stdout/stderr 管道,调用方启动的
chrome-use.exe已经正常退出,但按读到输出结束为止来等待的调用方(Rust 的Command::output()、Python 的subprocess.run)会一直等到守护进程退出,最长可达 10 分钟的闲置超时。闲置退出后、adopt或版本变化时都会启动新的守护进程,所以表现为“一开始正常,闲置后卡住”。现在启动守护进程前会把标准句柄设为不可继承。(#399,#392 的可能原因) 贡献者:@leeguooooo。 - v1.5.157(2026-10-04):
auth login --bwu在--launch浏览器中支持密码库 passkey(需 bitwarden-use 0.9.0+):临时 WebAuthn 验证器处理 passkey 或安全密钥两步验证,--passkey只用 passkey 登录,不读取密码、TOTP 或自定义字段。同步型 passkey 的计数器为 0,非零计数器需写回密码库,当前拒绝。只点击登录控件,尝试期间拦截普通的 passkey 注册调用,结束后移除验证器并恢复注册函数。预先保存的原始函数引用可绕过页面拦截;检测到意外注册或无法确认清理时,命令报错。网站拒绝时附上可见提示;扩展 relay 暂不支持 passkey:--passkey立即报错,普通登录继续走密码/TOTP。--no-submit不读取 TOTP 或 passkey,避免网站填满验证码后自动提交;不能与--passkey同用。帮助、双语 README 和登录文档同步补齐。(#398) 贡献者:@leeguooooo。 - v1.5.156(2026-10-03):补上 1.5.155 说明里写了、但实际没进代码的 Cookie 参数检查:
cookies get --url现在返回指定 URL 的 Cookie(之前返回的是当前页面的),cookies clear --name必须配--domain或--url,--domain与--url同时给或同一参数给两次都报错,cookies get遇到不认识的参数报错。1.5.155 的守护进程已经拒绝在全量清除时带--name,浏览器不会被清空。(#396) 贡献者:@leeguooooo。 - v1.5.155(2026-10-03):修复
cookies clear指定站点时清空整个浏览器的问题:它会忽略所有参数、清掉全部 Cookie,cookies clear --domain platform.openai.com在真实 Chrome 上会让 GitHub、claude.ai、x.com 等所有网站都退出登录。现在--domain(或--url,取它的主机名)只删这个域名及其子域名的 Cookie,不碰父域名;--name只删一个;结果写明删了几条、在哪些站点。清空整个浏览器必须加--all --yes,少了--yes一条不删,只说明会影响多少条、多少个站点;cookies clear/get/set遇到不认识的参数直接报错。(#395) 另外修复auth login --bwu在只要验证码的页面上先提交空表单的问题(GitHub 会显示“Two-factor authentication failed”);验证码现在只输入一次,不走 fill 的重写回退;网站拒绝验证码时直接报告,并带上页面的提示。(#394) 贡献者:@leeguooooo。 - v1.5.154(2026-10-03):文档:bitwarden-use 0.8.0 起可以用
require_touch_id false关掉 Touch ID 确认(用于无人值守),认证文档和auth login --bwu的提示不再说bwu run一定会弹 Touch ID:默认弹一次,reveal 文件夹里的条目不弹,用户关掉后不弹。(#393) 贡献者:@leeguooooo。 - v1.5.153(2026-10-03):新增
auth login --bwu,用 Bitwarden 密码库登录当前页面:向 bitwarden-use(0.7.0+)要这个网站的登录项(只看打码后的信息,最近用过的排前面),只有一个就用它,有多个就列出来,用--item指定。账号密码经bwu run传递:Touch ID 确认一次,chrome-use 以子进程重新运行,值只在那个进程的环境变量里,结果只列出填了哪些步骤,不含值。默认步骤是用户名、密码、回车;用户名和密码分两页的登录会等密码框出现;遇到验证码页(包括另外打开的、填满自动提交的)会填 TOTP。条目里加自定义字段_autotype(语法同 rofi-rbw,如username:enter:delay:password:enter)可以改步骤;--no-submit只填不提交。按 agent 的真实用法调整输出(统计了 215 个真实会话:74% 的调用会用tail/head截断输出,24% 丢掉 stderr):stderr 被丢弃时报错同时打到 stdout,报错最后一行是下一步该做什么;--launch的提示只在真正启动浏览器时出现;eval返回字符串时原样输出、不再带 JSON 引号(空串和像数字、true、null 的字符串仍带引号;--json不变)。“会话无响应”改成指定一个后继会话名并说明一直用它,不再让 agent 每次换名。agent 常猜的命令(js、requests、har、logs、links)直接指向正确命令;没有专属帮助页的<命令> --help只显示相关几行;新增help命令和addinitscript。core 说明加了“写 eval 之前”的对照表。测试不再写入本机的 friction 日志(建议运行一次chrome-use friction --clear)。(#390 #391) 贡献者:@leeguooooo。 - v1.5.152(2026-10-02):新增
fill <sel> --from-env <VAR>,配合bwu run --env PW='github.com#password' -- chrome-use fill @e3 --from-env PW把 Bitwarden 里的密码直接填进输入框,不经过命令行参数、输出和对话记录;结果、报错和--observe快照里一律显示<filled N chars>,字段不像密码框也一样,CLI 读完就删掉环境变量,后台进程拿不到。upload能接住按钮弹出的文件选择框:页面里没有<input type=file>、点按钮才临时创建时,chrome-use 拦截选择框直接填文件,不弹原生对话框;单选框不接受多个文件,误传链接或提交按钮的 ref 不会被点击。修复:Bitwarden 的内联菜单挡住登录页时,恢复流程会把焦点移出输入框并等浮层消失,被挡住的 fill 读回字段确认;点击后台标签页没有反应时会说明标签页在后台,--activate挡住其他会话的标签页时会提示;Google 的登录拒绝页报告为blocked_by_signin_rejection。(#373 #385 #386 #387) 贡献者:@leeguooooo。 - v1.5.151(2026-10-02):原生
<select>停在占位项(如禁用的“Select…”)时,快照显示为“未选择”,不再显示成选中了占位文字(#375 之前只对自定义下拉框有效)。扩展改为自动发布:新的extensions/ab-connect.zip合入 main 后,CI 用服务账号上传到 Chrome 应用商店并提交审核,失败会自动开 issue;ab-connect 0.5.29 已提交审核。新增 OpenAI 插件目录的打包脚本,以及说明 chrome-use 会发哪些请求、在本地存什么的PRIVACY.md(没有服务器,没有遥测)。(#383 #384 #388) 贡献者:@leeguooooo。 - v1.5.150(2026-10-02):安全:dashboard 拒绝 DNS rebinding 请求,每个请求的
Host必须是回环地址或列在AGENT_BROWSER_DASHBOARD_ALLOWED_HOSTS里;snapshot和get value把卡号、CVC、密码、验证码显示为<filled N chars>,--reveal-values才打印原值。新标签页继承会话设置(UA、语言、时区、地理位置、离线、请求头、HTTP 凭据、媒体模拟、init 脚本、请求拦截),addinitscript现在返回init-script-N句柄。auth login --no-navigate在当前页填表,源不一致时拒绝;填写前锁定真正可用的输入框,提交前再核对一遍。--observe列出动作加载的资源,并识别人机验证脚本,提示交给人处理。扩展 0.5.29 能跟上被 Chrome 丢弃(Memory Saver)后换了 id 的标签页,在后台重新加载,不切到前台。另外修了密码管理器内联菜单挡住输入框、格式化输入框的fill、占位选项、无效字段、select的 NBSP 与零宽字符、页面已加载时的wait --load、无法解析的 CDP 回复要等满 30 秒、--launch的 stderr 管道写满后卡死等问题;其中一批移植自上游 agent-browser。(#372–#378 #380 #381 #382) 贡献者:@leeguooooo。 - v1.5.149(2026-09-30):site 适配器不再受单条命令约 8 秒的限制。之前适配器是一次 eval,经扩展 relay 约 8 秒就被截断,上传、发布只能返回
status: "incomplete"让调用方重跑;现在它在页面后台运行并被轮询,--timeout <300|90s|10m>设定总时长(默认取适配器@meta.timeout,否则 120 秒),args.progress(...)报告的进度打印到 stderr 并随结果返回。--until-done在适配器返回incomplete/uploading或页面跳转中断运行时自动重跑,直到完成或超时(默认 600 秒)。适配器可以接收本地文件:参数声明为"type": "file"后直接给本地路径,适配器里await args.video.setOn()把它放进页面的文件输入框,不用再单独跑upload;页面只能指定选择器,不能指定路径。参数值可以从文件或 stdin 读:--key @path、--key @-、--key-file path;@name不是文件时保持原样,看起来是路径却不存在的会报错。MCP 的chrome_use_site增加untilDone和timeout。现有适配器无需修改。(#364 #365 #366) 贡献者:@leeguooooo。 - v1.5.148(2026-09-30):
skills get core在缓存目录写不了的环境里也能用。单文件安装第一次使用时要把内嵌的指南解压到缓存目录,agent 沙箱禁止往 home 下写时解压失败,报 “Skills directory not found”;现在会退到临时目录,那里已有的内容每次都重新解压,不复用。二进制上层属于别的工具的skills/目录(比如~/.local/skills、~/skills)不再被当成包目录,之前会报 “Skill not found: core”;现在要求其中有skills/chrome-use/SKILL.md。报错文案不再让单文件安装的用户重装 npm 包。(#367) 贡献者:@leeguooooo。 - v1.5.147(2026-09-30):
--launch重新能通过 Cloudflare managed challenge。之前开着隐身补丁时挑战一直转圈,关掉反而约 16 秒通过,原因有三:补丁伪造了桌面 Chrome 没有的 Android 专属 API(页面和 Worker 里的connection.downlinkMax、ContactsManager、ContentIndex),指纹成了“Mac UA 配 Android API”;补丁在 Cloudflare 挑战 iframe 的脚本运行时被注入进去;页面里的navigator.languages被强改成 en-US,Worker 和Accept-Language却还是系统语言。现在去掉了这些伪造 API,反爬挑战 frame(Cloudflare、hCaptcha、reCAPTCHA、DataDome、Arkose)里只保留原生覆盖,也不再用 JS 改语言,挑战约 8 秒通过。AGENT_BROWSER_LOCALE改为通过--accept-lang传给 Chrome,页面、Worker、请求头一致,临时 profile 和--profile都生效。cf-status不再把页面里嵌入的 Turnstile 控件误报成挑战页。文档里失效的 nowsecure.nl 换成 scrapingcourse.com 的真实挑战。(#361) 贡献者:@leeguooooo。 - v1.5.146(2026-09-30):
fill按用户的方式写入文本框:选中原值后用可信的Input.insertText替换(可信的 beforeinput / input,失焦时触发可信 change),只认真实输入的页面也能收到,之前的合成事件会让 LinkedIn 编辑简介弹窗显示新值却存不上;可信写入得不到目标值(maxlength、掩码)时退回原生 setter 并警告input-synthetic。所在表单或弹窗的保存 / 提交按钮填写前后都禁用时fill会警告并返回commitControl。click拒绝点击禁用的控件,aria-disabled时警告,响应里带dispatch: pointer | keyboard | dom,退回element.click()时给出原因。keyboard type回读焦点字段,没变化时报错,没有可编辑焦点时警告。type --clear改用全选加可信 Delete。文档说明toggles=checkbox(...)按钮是开关,可能有破坏性。(#358) 贡献者:@leeguooooo。 - v1.5.145(2026-09-29):
find不带动作时只定位(输出标签、role、名称、位置、可见性),不再隐式点击,依赖默认点击的调用需显式写click;find text取包含整段文字的最深元素,点击前换到最近的可点击祖先,匹配不可见时报错,点击后 800ms 页面无反应给警告。(#354)type输入后回读,字段为空或没变时报错并建议fill/keyboard type。(#355) React 重建节点后 ref 按稳定属性重新绑定,失败时报错给出可用的 CSS 选择器。(#356)adopt <url>只接管当前 URL 匹配的标签页,页面跳转后重连不再报no open tab matching;被外来扩展 iframe 挡住的标签页不再让整个 session 失效,报错引导在同一 session 用tab new继续。(#357)site缺参数时从当前页 URL 推断,site linkedin/profile在个人主页上可直接用。(#359) snapshot 标出内含勾选框或开关的按钮。(#358) 贡献者:@leeguooooo。 - v1.5.144(2026-09-28):
chrome-use upgrade --check/--json只报告当前版本、最新版本和已安装的 skill 副本,不做改动,检查失败退出码 2。upgrade已是最新时跳过重装,并刷新 Claude Code 插件、chrome-use git 检出和安装器目录里的 skill;AGENT_BROWSER_NO_SKILL=1时不动 skill。每天最多后台检查一次(2 秒超时,缓存在~/.cache/chrome-use/update-check.json),有新版时在 stderr 打一行提示,不影响 stdout 和--json;CHROME_USE_NO_UPDATE_CHECK=1、USE_NO_UPDATE_CHECK=1或CI可关闭。(#352) 贡献者:@leeguooooo。 - v1.5.143(2026-09-28):补充第三方扩展 iframe 导致调试权限拒绝的排障说明:保存工作,禁用该站点上的冲突扩展后重新加载,或使用独立 profile。新增隔离 Chrome 复现脚本,验证 auto-attach 开关两种情况下的主页面拒绝、重新附着失败及移除测试 iframe 后的恢复。本版不解除 Chrome 权限限制,也不把失败改为成功。关联:#341、#349。贡献者:@leeguooooo。
- v1.5.142(2026-09-27):
tab new/select/adopt --activate(别名--front)在渲染器初始化前激活标签页,默认仍在后台执行;直接 CDP 支持无导航接管已有标签页。新标签初始化失败后保留原目标,恢复时重试未完成的 stealth 设置,失败不再误报成功。超时提示保留结果不确定性,避免重复操作。贡献者:@Sean529、@leeguooooo。 (#346) - v1.5.141(2026-09-24):用
--launch启动的会话,在浏览器闲置 10 分钟被自动关闭、被结束或崩溃之后,后续命令不再卡在“Chrome relay dropped — reconnecting…”,也不会转去操作你真正的 Chrome;会话一直保持 launch 模式直到close,下一条命令约 1 秒内重新启动浏览器,并提示旧窗口已不在。想改用真 Chrome,加--auto-connect、--cdp、--browser或--provider。贡献者:@leeguooooo。 - v1.5.140(2026-09-24):
skill install改为直接安装并读回校验 CLI 内置的发现入口,不再依赖 Node、npx、Git 或网络。支持全局、项目安装和刷新;覆盖共享目录、Claude Code、Cursor,以及检测到配置的 Pi、OpenCode、Windsurf、CodeBuddy、Trae。Codex 使用共享目录,避免重复发现。Windows 安装脚本也能从旧版 CLI 提取技能,按 UTF-8 解码,兼容 PowerShell 5.1;更新失败保留原文件。技能、扩展安装或自检失败不再输出全部就绪,自检超时也会报错。Windows doctor 新增磁盘空间检查,环境变量提示改用 PowerShell,去掉 macOS 专属 ChooseBrowser 路径和不必要的加密密钥配置提示。贡献者:@leeguooooo。 - v1.5.139(2026-09-24):Windows 支持一行安装。在 PowerShell 里执行
irm https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.ps1 | iex:装到%LOCALAPPDATA%\Programs\chrome-use,不需要管理员权限,加入用户 PATH,然后和install.sh一样引导安装扩展、安装 skill、自检。sha256 校验是强制的,不一致就什么都不装——下载中断的包照样能解压出.exe,只会在启动时报访问违规。你原有的 PATH 条目原样保留,包括%USERPROFILE%这类变量写法;PowerShell 里常用的那个 API 会把它们永久展开成绝对路径。用$env:AGENT_BROWSER_VERSION锁定版本、$env:AGENT_BROWSER_BIN_DIR改位置,$env:AGENT_BROWSER_NO_PATH = 1不改 PATH。在 Windows 11(Windows PowerShell 5.1)上测过;ARM64 装的是 x64 版本走模拟,未测试。修复:chrome-use doctor在 Windows 上不再启动 Chrome。它原先用chrome.exe --version读版本号,而在 Windows 上这条命令不会打印版本,而是用你的真实配置启动浏览器,并且永远不返回——doctor --quick --offline会一直卡住,新安装器的自检也跟着卡住。现在改为读取chrome.exe旁边的版本号目录,不启动任何程序,几毫秒完成;macOS 和 Linux 不变。 - v1.5.138(2026-09-23):扩展中继少转发一些噪音(来自社区 PR #342,感谢 @AmeerAliAnwar):9 个 CLI 从不读取的高频 CDP 事件(如
Network.dataReceived、DOM.attributeModified)不再经过 native messaging 管道;有测试扫描 CLI 源码,一旦有人开始读其中任何一个就会失败——否则守护进程收不到任何报错。新建标签后立即 attach,不再先无条件等 100ms;复制标签的检查读取受事务截止时间约束,不会再把整个操作挂住。修复了 #342 本会带出去的回归(每一处都先核实再改):发往宿主消息的 1MB 上限——Chrome 的 1MB 限制针对宿主发出的消息,发往宿主可达 64 MiB,一张维基百科视口截图 base64 后约 1.2MB,这个上限会让经中继的普通截图变成错误,已移除;会话恢复的重试窗口被砍掉一半多,而两个窗口都来自真实复现(#23 跨进程结账跳转、#24 需要「好几秒才稳定」的登录跳转,约 6.3 秒),已恢复;复制标签在没有聚焦窗口或活动标签时不再降级、截止时间过后仍会启动新阶段,导致带副作用的步骤可能在事务结束后执行,两处都已恢复,并配有在 PR 原版上会失败的测试;会把blob:、view-source:拼成https://blob:...的 URL 补协议已移除(CLI 本来就会补)。移除一个无人调用、会往用户页面写属性、结果命名和 CLI 引用一样叫@e1的视口扫描接口,以及一份在测试文件里重写代码而不导入真代码的测试。ab-connect 升级到 0.5.28。 - v1.5.137(2026-09-23):
jev run终于能填完那张 16 题表单了。连续 6 次全部提交成功:12 个字段、4 个勾选框全部按要求设置(包括因为目标说「否」而留空的那一个),jev 报告done,耗时 18.4–23.0 秒(中位 19.8 秒)——判定依据是直接读表单本身,不是 jev 自己报的状态。原因在于决策模型「看不见」:请求里只带最近 10 个动作,而走到勾选框时已经执行了 13 个,于是「姓名」「公司」「职位」恰好在滚出视口的同时也掉出了这个列表。目标还在要求它们,模型收到的任何信息都说明不了它们已经完成,BLOCKED 概率在最后三次决策里从 0.07 升到 0.53。现在请求里带整次运行的全部动作,每条只有几十字节,运行步数有上限。文本模型调用失败时重试一次:之前一次不合法的回答就会终止整次运行(遇到过被截断的散文和上游 502);这个调用只生成文字、成功前不会输入任何东西,重试不会重复副作用,只重试一次,不循环。本次运行已经用同样文字填过的字段,现在是标记而不是删除:它仍以自己的名字和值留在元素列表里(这正是「已完成」的证据),只是不再提供输入操作;v1.5.136 直接删掉它,导致它只剩一个Open <label>点击来代表。更正:v1.5.136 对表单为什么停下的判断是错的。它说剩下那一步是「模型在完整输入上的判断,这次改动解决不了」——但输入并不完整。对照实验分离出了原因:只有勾选框的页面配只讲勾选框的目标,每次都能完成;同一页面配完整的 16 项目标,直接 BLOCKED(0.77);预填好的表单在没有历史时也会卡住——每次都卡在模型拿不到证据的目标项上。 - v1.5.136(2026-09-23):
jev run不再把「本次运行自己刚填过、且当前值一模一样」的字段作为可填候选。重填这种字段在定义上是空操作,而提供它是有代价的:TYPE_TEXT 的目标问题没有「都不合适」这个选项,操作层一旦选了 TYPE_TEXT,就必须挑一个字段。在一张 16 题表单上,滚动之后视口里剩下的文本框全都已经填好,运行就一直在重填它们——当时 TYPE_TEXT 0.48、CLICK 0.43,而旁边一组单选和四个勾选框明明还没设。把这些候选去掉后,连续五次运行改为去点两组单选(公司阶段、从何处得知),同样 13 个动作全部花在有效的事情上。只有和本次输入完全一致的值才会被去掉,所以被页面重置过的字段、或者不是我们写进去的内容,仍然会被提供;同一元素上的Open <label>点击也保留,那是重新触发自动补全的方式。表单仍然填不完:只剩勾选框和提交按钮时,Jev 在状态完全正确(每个框都显示未勾选、可点击)的情况下给出 BLOCKED 0.53、CLICK 0.40。那是模型在完整输入上的判断,这次改动解决不了。JEV_TRACE现在还会记录发出去的请求体:只看候选列表看不出模型被告知了什么,而这一带发现的两个缺陷都出在输入而不是选择上。它会记录目标文本、页面文字和字段值,请当作敏感数据。 - v1.5.135(2026-09-23):
press Meta+a在 macOS 上终于能全选了。之前它从来没生效过:macOS 上 Chrome 的 Cmd+A 走系统文本层,CDP 合成的按键到不了那里,按键送达了却什么都没选中,接下来的keyboard inserttext就接在原内容后面——一个写着hello的字段变成helloX而不是X。这让文档里推荐的「click <input>再press Meta+a」在 macOS 上对所有 agent 都失效。现在本平台的全选组合键(macOS 上 Cmd+A,其他平台 Ctrl+A,且不带其他修饰键)改走fill本来就在用的编辑器命令;macOS 上的 Ctrl+A 保持原意;复制、粘贴、剪切、撤销没有复现,未改动。jev run不再把复选框/单选的 value 属性当成它的状态:未勾选的条款框以前以「当前值on」呈现给模型,未选中的单选以它自己的选项名呈现,模型于是当它们已经设好而跳过;现在它们带空值和真实的checked状态。加上全选修复,重填字段会替换而不是追加,之前被跳过的单选现在会被选中。暴露这两个问题的 16 题表单仍然填不完:只剩单选、勾选框和提交按钮时,Jev 给 TYPE_TEXT 约 0.52、CLICK 约 0.30,又去重填一个已完成的字段——记为未解决,不算修复。新增JEV_TRACE=<文件>:每次jev run决策写一行 JSON,含模型看到的候选、它的选择和 Jev 的回答概率,默认关闭;它会记录字段标签和当前值(包括已填内容),请当作敏感数据。运行报告还把act_ms拆成act_read_ms、cmd_click_ms、cmd_press_ms、cmd_insert_ms。 - v1.5.134(2026-09-22):已安装的 skill 入口现在转接到二进制自带的指南。agent 实际读取的
skills/chrome-use/SKILL.md原本是一份独立的 244 行手册,从不加载core,所以 v1.5.132 缩短的core/SKILL.md根本没到达它;现在入口是 41 行,加载chrome-use skills get core,升级二进制就能更新 agent 遵循的指南。收益方面:在合成本地任务的小规模跨宿主对照里,DeepSeek V4.1 Flash 在成对的 basic 任务上用新指南是 7 次外层工具调用、旧指南 10 次,宿主报告的成本低约 35%;Claude Code 没有出现这个规律,原生 MCP 相对 CLI 也没有稳定减少模型回合。这是宿主负载不均下的少量观测,不构成普遍提速或成功率结论;评测框架和完整报告在bench/skill-eval/与bench/reports/。修复:wait超时不再被报成连接失效。Wait timed out after …以前会被改写成「浏览器连接无响应……用connect重连,或关闭会话重开」;有一次记录里 agent 在页面已经写着Delivery saved时等Saved,大小写不匹配耗尽 25 秒预算,被建议扔掉会话,而紧接着的get text是正常的。现在提示说明条件未被观察到、这次超时本身不能证明连接故障——也不反过来断言连接正常,因为轮询会把失败的探测一直重试到截止;并写明--text区分大小写、已经可见的回执不需要再等一遍。真正的 CDP/relay 超时保留原诊断,wait的匹配语义不变。 - v1.5.133(2026-09-22):更正 v1.5.132 的一处过度声称:那条说「agent skill 的入口体积减少 73.9%」,实测的缩减是真的,但它针对的是
core/SKILL.md(chrome-use skills get core提供的那份)。已安装的 agent 实际读取的入口是skills/chrome-use/SKILL.md,那是另一份 244 行手册、没有skills get core转接,本次改动没有碰它。所以那个数字推不出「已安装 agent 少加载了多少」,说明里现在写的是文件名而不是「入口」。由 codex-01a0c18c 审计真实加载链发现——我量的是另一个文件。修复jev run一个诊断字段的名字起错了,而且错得足以让人照着它读错运行数据。stale_fields报告里最后一项原先标成doc,看起来像文档身份,实际是表单控件状态(每个输入的value/checked/selectedIndex/disabled/readOnly);真正在文档被替换时改变的是timeOrigin。按正确的名字重读,timeOrigin和url在任何一次被丢弃的决策里都没有出现过——每一次都是同一文档、同一 URL 下,页面的文本、可操作集合或表单状态仍在变动。该字段现在叫formState。 - v1.5.132(2026-09-21):
core/SKILL.md体积减少 73.9%——从 9443 tokens 降到 2460(o200k_base 实测,不是按行数推算),204 行。默认行为规则前置,普通click/fill/select/pick改为自包含,常见操作不再需要加载任何 reference;细节下沉到core/references/(新增reading、connection、site-adapters),帧、闭合 shadow root、canvas、截图参数、auth handoff、idle 恢复都还在。这是静态路由预算:token 数是实测的,但对任务完成率或延迟的影响没有测量,也不声称。新增jev run的时间去向报告——jev_ms/act_ms/observe_ms/fresh_ms,外加决策、stale 与 eval 计数;公开站点上实测一次为模型往返 64%、真实页面加载 29%、CLI 自身命令 6%,另单独测得 daemon 到渲染器的 eval 约 15ms、点击约 34ms。这是一个地点、一个站点、一次任务,可外推的是比例而不是绝对值。新增jev run --terminal-shadow(默认关闭):在同一次请求里多问一句「这个动作是不是就完成了目标」,并把该断言与收尾决策的实际判断、以及决策被丢弃时页面哪些部分变了一并记录。它是测量工具而不是优化:不改变完成判定的控制流,而且六次运行中模型一次都没有声称过 terminal,所以它要评估的那个捷径本来就省不下任何东西;单靠一个便宜的本地检查也判定不了完成——结账被踢回/login时页面变化和成功时一模一样。修复 skill 快速上手里的三个缺陷:教人用npm i -g chrome-use(本项目明确不走这条分发路径,而是 GitHub Release 二进制加install.sh一行)、推荐close --all(会波及所有会话而不只是读者自己的)、以及一个未闭合的代码围栏把「Diagnosing install issues」整节连同后面的内容都吞掉了。 - v1.5.131(2026-09-21):修复大体积
Input.insertText在仍在正常工作时被判失败(#315、#309)。超时的插入无法取消——输掉Promise.race不会取消任何事,CDP 也没有召回已派发命令的原语——所以页面会继续啃几分钟,而下一条打到这个标签页的命令就会撞上一个我们已经放弃的渲染器。但这份伤害很大程度上是我们自己的超时造成的:扩展预算是 8s + 2ms/byte,注释写着「约为实测最坏值的 4 倍」,可 120s 的上限从 56KB 起就开始咬住,之上有效速率随即崩塌——150KB 时只有 0.8ms/byte,低于 chatgpt.com 实测的约 1.0ms/byte 最坏值。于是健康的渲染器恰恰在这个功能存在意义的尺寸上被判失败;#309 从外部量到的是同一个上限(「实际约 100KB,而不是预算暗示的 265KB」)。现在扩展上限改为 300s、daemon 改为 360s,在每个尺寸上都保持「客户端宽于 daemon 宽于扩展」,不变量测试也覆盖了两个上限的两侧。上限依然存在(防病态载荷),只是不再侵占普通大插入所依赖的每字节额度。修复:扩展自己的超时文案仍在建议「Insert less at once」,而这正是 #301 证明会在每个边界损坏文本的分块做法(调用在派发时返回,而非提交时);CLI 侧的提示早已修正,这一份被漏掉了。现在它会说明插入并未被取消、页面可能还在工作。ab-connect 升级到 0.5.27。 - v1.5.130(2026-09-21):修复 Windows 上全新
--session名字的第一条命令可能无输出地永久挂起(#327)。resolve_port在.port文件还没写出来时,会回退到一个由会话名哈希得出的端口,范围是 49152–65534 —— 正是 Windows 的临时端口范围,也就是系统分配给其他所有程序出站套接字的那段。忙一点的机器上,那个端口经常已经被无关进程占着;于是 TCP 连接对着陌生进程成功了:daemon_ready认为 daemon 健康所以根本不去启动,命令写了进去,而对方永远不会回。而「端点消失 → 清理陈旧状态 → 起一个新 daemon」这条恢复路径是按os error 2判定的,那是 Unix socket 才会报的错、TCP 永远不会,所以 Windows 上它根本触发不了。现在:daemon 写出的.port是连接时的唯一依据(没有文件就是「去启动一个」,而不是「连上占着那个端口的人」);派生端口移到 21000–31999,让 daemon 的首选绑定从构造上就不再撞车;Windows 的 connect 加了超时,并且它的「没有端点」错误能走到既有的恢复路径。已用x86_64-pc-windows-gnu交叉检查;没有 Windows 机器,未能复现,所以这是一个能产生该现象的确凿缺陷,而不是对报告者机器的确诊。另修复一个在高负载下会偶发失败的子进程回收测试(原本固定 sleep 200ms 就断言子进程已退出,现改为轮询到截止时间)。 - v1.5.129(2026-09-21):修复
open --prefer-spa只等 URL 变化、不等页面就绪:点到的链接不一定是客户端路由,同源普通链接会触发真正的导航,而location在 commit 时就变了、文档还没解析完,于是命令可能返回一个普通open --wait-until load还在等的页面。现在把readyState和 URL 一起轮询;SPA 路由不会停在loading,所以这条路径没有额外成本。修复cu.find未定义——script 指南一直把它列在cu.*助手里,prelude 里却从来没定义过,调用直接抛 "cu.find is not a function"。现在与 CLI 一致:传字符串是自然语言查找,传{ selector }则列出匹配的元素。 - v1.5.128(2026-09-21):修复
script具名上下文可能把会话卡死:一个上下文同一时刻只跑一个程序,所以脚本里用cu.*重入script --in <同一个名字>会把新任务排在正等着它的那个程序后面,线程取不到、桥接通道不会关闭,daemon 就永远等下去——表现出来只是「会话没响应」。现在重入调用会被直接拒绝并说明原因。该问题随 1.5.127 的新特性引入,在真正被用到之前发现。修复AGENT_BROWSER_DEBUG=1在 Windows 上不产生 daemon 日志(#327)——那段重定向整个包在#[cfg(unix)]里,Windows 上这个变量什么都不做,既没有<session>.log也没有任何 daemon stderr;而 #327 恰恰是个 Windows 独有的挂死,报告者主动提出可以开 verbose 跑一遍,却没有可开的东西。现在 Windows 写同一个文件(eprintln!走的是 CRT fd 2,所以重定向的是 fd 而不只是 Win32 stderr 句柄)。已用x86_64-pc-windows-gnu交叉检查编译;没有 Windows 机器,未做运行时验证。修复:session stop <名字> --force不再暗示这个名字已经清干净了(#309)——它原先报「dropped its record」,读起来像「这个名字又能用了」,而事实并非如此:--force丢掉的是 CLI 的记录,标签页还开着,而 relay 上一个会话的标签页是放在以会话名命名的标签分组里的,同名的新 daemon 会再次遇到它们;只要其中有一个渲染进程还在忙,这个名字的表现就和清理前一模一样。现在的提示直说这一点,并给出两条真正有效的做法:关掉那个标签页,或换一个--session名字。 - v1.5.127(2026-09-20):
script新增跨调用持久的具名 JS 上下文(#289):--keep <名字>在具名上下文里跑并按需创建,--in <名字>要求上下文已存在,--drop释放、--contexts列出。省的是往返而不是字节——一次调用本来就能多步,但 agent 往往要看过上一步结果才能决定下一步,以前那意味着每次重新取一遍句柄。具名上下文在顶层求值(声明必须活下来),所以顶层return和重复声明const会报错,两者都带说明怎么改的提示。新增open <url> --prefer-spa(#311):已在目标同源、且页面里有指向目标的链接时,点那个链接交给路由,而不是整页导航把应用冷启动一遍。issue 在 chatgpt.com 上实测整页open要 45 个 backend-api 请求,而应用自己的控件只要 1~9 个,而那个站是按请求数限流的;react.dev 上实测站内路由 19 个请求 vs 整页导航 47 个。跨源、找不到匹配链接、或路由没落地时都回退成普通导航,绝不会把你留在别的地址。默认关闭,因为站内路由可能留下重载才会清掉的陈旧状态。修复:cu.fill从来没工作过——它送的参数名是text,而fill要value,每次调用都报 "Missing 'value' parameter"。 - v1.5.126(2026-09-20):
tab switch不再多做一次目标发现(#338,@AmeerAliAnwar):原先无条件跑一次resync_targets,紧接着tab_switch又通过reattach_active_session发现一次;现在已知的 targetId 或t<N>先本地解析,只有引用不认识的标签页才回退到发现。修复:拒绝驱动未接管标签页时给出的提示写的是「用tab adopt t1或--adopt」,而这两条路都不通——tab adopt只按 targetId 或网址子串匹配,t1会直接报「没有匹配的标签页」,而--adopt这个参数在 CLI 里根本不存在;现在提示里给的是该标签页的 targetId,可以直接复制执行。修复:扩展版本号改为读「当前正在驱动的那个 profile」的(#319 剩余调用点)——按 profile 分文件这件事只做到了status和doctor,outdated_extension_note、tab select/tab adopt的探活告警、tab inspect的报错和反馈环境信息块仍在读通用文件,而它会被最后一个 hello 的 profile 覆盖,双 profile 下会描述成另一个,甚至劝一个已是最新的用户去升级。修复:标签页复制在粗粒度时钟下也能完成校验(#338,@AmeerAliAnwar)——15.6ms 的时钟粒度下事务 deadline 可能在completeBefore还等着一个卡住的 promise 时就到期,于是observeWithin拿到timeoutMs = 0,明明前台激活已经完成却跳过了校验;现在留一点观察预算,让已经达成的状态能被确认。 - v1.5.125(2026-09-20):新增
chrome-use jev run --goal <目标> [--url <网址>]:由 TypeSafe 的 Jev 在带编号的元素表里选每一步的操作和目标,只有需要填字时才调用一个小模型(默认 OpenRouter 上的inception/mercury-2.5)生成文字。策略改编自 browser-use/jev-ultrafast(MIT),浏览器层走本 CLI 自己的 daemon socket,每步不再起进程。在东京跑 Google Flights(苏黎世→伦敦)任务用时 11~13 秒,大头是 Jev 往返(日本每次约 460ms,洛杉矶约 150ms)。修复:--cdp连接时会不加检查地接管第一个已有标签页,若它的渲染进程卡死,第一条命令就要等满 30 秒的Page.enable并报标签页丢失;现在逐个以 2 秒探测,驱动第一个有响应的,全都卡死就另开新标签页、不碰卡死的。1GB Linux 机器上对着一个卡死的 Google Flights 标签页,open从 3/6(每次失败 30 秒)变为 6/6。另含多标签页并发隔离(#334,@AmeerAliAnwar,经 #335 合入):按标签页隔离状态、tab switch别名、chrome_use_tabs回到 MCP 扩展工具集、截图前把后台标签页切到前台以产出画面。 - v1.5.124(2026-09-19):每条命令都白等了约 150ms。CLI 在分发任何命令前都会先 sleep 150ms、再探测一次 daemon socket,即使 daemon 好好的也照样等。这段 sleep 占了热命令约 95% 的耗时:
eval中位数从 167ms 降到 11ms。在 Jev 驱动的 Google Flights 搜索上(约 60 次浏览器调用),5 轮交替实测、全部通过校验,整个任务中位数从 20.0s 降到 14.1s。原来的 sleep 是为了避开正在关闭的 daemon;现在close会在关闭延迟之前先删掉 socket,所以能连上就说明 daemon 还在服务。另修:async函数里声明了变量时eval返回{}(replMode 不会 await promise,而判断时漏了async;现在按整词匹配async/Promise);修复多标签页改动后 main 编译失败与三处测试。新功能:并发多标签页工作流、--new-tab与标签页定向(#330);relay 上的可信坐标点击。 - v1.5.123(2026-09-10):v1.5.122 对 #319 的修复不生效,这一版才是真的修法。
status会并排打印「driving A」和「profile: B」,两个 id 不同。v1.5.122 把扩展版本挪进了按 profile 的文件,却仍然拿错误的 id 去查它——同一个错误换了个位置,症状原样保留,升级后只跑一次status就露馅。真正的缺陷比原诊断大:代码里「在驱动哪个 profile」有两套互不相干的实现。真正决定绑定哪个浏览器的那套按窗口焦点选;而报告给用户看的那些地方(profile:行、drivingProfileId、browsers的 default 列、doctor,以及版本解析器)全都用另一套——「最后一个连上来的」。两个 profile 同时在时,这两套必然各说各话。现在统一成一个解析器:优先采用端点选择实际使用的焦点口径,只在焦点口径有意不给答案时(少于两个 profile、有 profile 的扩展太老报不出焦点、平局)才回退通用侧车——而那些恰恰是通用侧车正确的情况。诚实说明:本次修复未经验证。该症状只在两个 Chrome profile 同时连着时出现,而这个环境当时不可得。已确立的只有「两套口径在代码里已统一、测试通过」——而这正是 v1.5.122 给出过的同一套证据,那次被证明无效。因此 #319 保持开启而不是关闭。你若有两个 profile,跑一句chrome-use status,看driving和profile:两行的 id 是否一致。 - v1.5.122(2026-09-10):两个 Chrome profile 同时连着时,
status报的扩展版本可能是另一个 profile 的(#319)。它会并排打印「driving 27ade1bc-…」和「extension: live 0.5.21, expected 0.5.26」,而那个0.5.21属于另一个 profile——于是你被告知去更新一个本来就是最新的扩展。原因不是竞态,是缺一个维度:记录版本的侧车只有一份,由最后一个发 hello 的 worker 写入,而「在驱动谁」由焦点时间戳另行决定。#60 早就为端点做过同样的处理,注释原话是「regardless of who last clobbered the generic file」,版本号没跟上。现在版本也有了自己的按 profile 侧车,在hello里和端点一起写、断开时一起清;呈现版本的地方读的是当前驱动的那个 profile 的副本。太老而不上报 profile id 的扩展仍只写通用文件,对它们保持原有行为,不会退化成「unknown」。只改 CLI,不需要更新扩展。另外说明:有报告称在这个状态下open之后命令会立刻失败,那个问题的原因尚未查清,本次不声称修复了它。 - v1.5.121(2026-09-10):
keep现在会说清楚一个标签为什么被留下,而且可以撤销(#290)。keep是靠丢弃所有权来豁免自动关闭的,而那恰好抹掉了唯一的记录——之后这个标签和我们从没碰过的标签无法区分,tab list只能显示foreign,回答不了「它为什么还开着」。现在它接受原因:keep --as deliverable用于标签本身就是结果(编辑好的文档、要用户完成的结账页),keep --as handoff用于下回合从这里接着走(等登录、审批、验证码)。裸keep仍等于deliverable,现有调用方语义不变;tab list会标出[kept: deliverable]/[kept: handoff]。keep --release把标签收回、让它重新随会话关闭——它只对本会话创建过且被 keep 记录过的标签生效,因为那条记录就是「这个标签是我们开的」的凭据;没有记录还照做,就等于取得了一个我们从未打开过的标签的关闭权。撤销不会把标签放回会话标签组:取消分组今天是单向门,提示里直说这一点而不是让人误以为都恢复了。另外keep补上了它一直没有的专属--help。同时修正:插入超时提示里的每 KB 耗时改用实测值。原本写~0.45-0.53s/KB,那是早期小样本;实测 60KB 用 37 秒(0.62s/KB)、90KB 用 88 秒(0.98s/KB)。重点不是常数偏小,而是每 KB 的代价随尺寸上升,给一个固定区间会诱使人拿它外推——那个已被更正的「约 226KB」天花板正是这么算出来的。 - v1.5.120(2026-09-10):插入超时的提示不再推荐那个唯一会损坏文本的做法。
它原本让调用方「拆成多次
keyboard inserttext调用」——而这正是 #301 的成因: 调用在 Chrome 派发时就返回,不是在编辑器提交时返回,所以下一块会和还没提交的尾巴赛跑, 文本错乱但总长度不变,于是字数检查会过、坏掉的内容照样发出去。 仓库里commands.rs的注释早就写明了这件事,报错文案却说了反话。现在如果提到分块, 必须同时说清要比对字段的内容,绝不能只比长度。另外提示里现在会明说: 这次插入没有被取消——输掉超时竞速不取消任何东西,命令在竞速开始前就已派发, CDP 也没有撤回原语;实测渲染器在调用方收到报错之后还干了约 14 分钟、内存仍在增长, 所以失败后立刻发下一条命令会打在一个仍然忙碌的标签上。提示改为:先让标签安静下来、 重读字段,因为部分或全部文本可能已经落地(#315)。每字符耗时也从早期的单一数字 改为实测区间~0.45-0.53s/KB。 - v1.5.119(2026-09-10):大载荷插入不再在 ~55 秒死掉、还装成「会话已死」。同一条 CDP 命令被三层预算同时看着——扩展(8s + 2ms/byte,上限 120s)、daemon(30s + 4ms/byte,上限 180s)、客户端 socket 读。v1.5.117/118 把前两层按载荷放宽了,唯独读预算还是平铺 45 秒,于是最外层先切,里层那条更具体的「载荷需要更多时间」永远送不到调用方手里。那 45 秒加上 8 秒的
DAEMON_SHUTDOWN_GRACE,正是实际使用中报上来的那堵 ~55 秒的墙(实测 53.6s / 54.0s / 55.6s)。读预算现在按同一条规则放宽,并有测试把它和 CDP 客户端真正执行的预算钉在一起,防止两边悄悄漂开。没有载荷的命令仍是平铺 45 秒,所以真正卡死的会话失败得和以前一样快。真实天花板变成扩展那 120 秒上限。在 chatgpt.com 上实测落在 90–120KB 之间(60KB 用了 37 秒、90KB 用了 88 秒、120KB 撞上上限)。注意每 KB 的代价是随尺寸上升的——60KB 时 0.62s/KB,90KB 时 0.98s/KB——所以拿一个小样本外推会高估天花板,本条目早先的草稿正是这么错的。另外,「会话无响应」的提示不再猜原因:它原本断言页面还在跑一条长命令,但这个说法只符合其中一次复现、不符合另一次(60 秒 vs 一个多小时),机制从未被观察到。现在只陈述观察到的事实——这个名字被观察到会自己恢复、不是永久占用——并给出立刻可用的做法:换一个--session名,或用adopt把标签接进新会话。 - v1.5.118(2026-09-10):把 v1.5.117 漏发的那半补上。v1.5.117 的发布产物比修复合并早 36 秒切出,只带了扩展侧,结果正是该修复自己预言的失败形态:150KB 的
keyboard inserttext --file在 30.170 秒被 daemon 硬编码的预算掐断,而扩展侧本可以给到 308 秒。daemon 的预算现在同样按载荷放宽(30s + 4ms/byte,上限 180s),并有一条跨侧不变量测试钉住「daemon 恒宽于扩展」——否则 daemon 先掐断,relay 那条更具体的错误就传不回来。另外,大载荷插入超时不再谎报连接失效:CDP command timed out: Input.insertText原本会补一句「连接失效,可能是 stale relay/service-worker,请connect重连」,把人指去查根本不存在的问题;连接好得很,只是Input.insertText按字符计费(富文本编辑器里约 0.45s/KB)、这次载荷超出了预算。现在明说这是尺寸上限、明确不要重连、并给出可行做法;其他命令的超时保持原有诊断。 - v1.5.117(2026-09-10):来自 chatgpt-use 会话在真实 ChatGPT 编辑器上的重度使用反馈。
keyboard inserttext新增--file/--stdin:背靠背分块插入会在每个块边界处把文本搞乱、而总长度守恒(所以字符数校验通过、损坏文本被发出去),根因是Input.insertText在 Chrome 派发后即返回、不等编辑器(如 ProseMirror)提交,下一块撞上未落定的尾部;整段一次插入即彻底消除边界,调用方不再需要分块(#301)。site --help打印自己的帮助,不再落到 534 行通用帮助——agent 反射性跑<cmd> --help,看不到 site 就当成命令不存在,退回昂贵的 snapshot+click(#299)。site list过滤掉_前缀的加载器内部文件(如自动注入的_helper)与*.test.js,只列可运行的适配器(#302)。纯数字的click参数不再被静默当选择器发给 DOM、报出误导的「selector matched nothing」,改为明确指出它像坐标并给出click x y/--coords x,y。press帮助补上浮层陷阱:--selector会穿选择器聚焦从而关掉已打开的菜单,浮层内的控件要先按坐标点击再用裸press。 - v1.5.116(2026-09-10):ab-connect 0.5.25 带来一扇通用的门
ABExt.call:CLI 想调chrome.tabs / tabGroups / windows / downloads / webNavigation的白名单方法不再需要新的扩展版本;改动类调用只允许作用在 agent 自己建的标签上,adopted 标签只读,windows.create/remove不开,debugger / identity / storage / runtime / management永远不经这扇门。ABExt.state一次返回扩展持有、拥有与配置的全部状态。CLI 新增extension call <ns.method> [json]与extension state;老扩展上报「需要 0.5.25」而不是 Chrome 的 wasn't found。manifest 权限不变,升级不触发重新授权。文档站新增 ChooseBrowser 推广页(中/英),README 与文档里的权限数改为实际的 12 项。 - v1.5.115(2026-09-10):读完 Codex 自带 browser-use 插件的 26 份文档后落地的一批。核心循环改为一步一次往返:
click @e3 --observe+snapshot -i --diff;新增core/behaviour参考(没动先读why:、不退到坐标、不open当前页、查找一次直达、页面的权威信号即答案、keep只留交付物、空 tab list 不是断连);trust-boundaries加副作用三级确认(交回用户 / 每次确认 / 任务预批准即可)。--observe在一次点击换掉整页时返回新树而不是「旧树全删 + 新树全增」的 diff;snapshot --diff无变化时 stdout 打(no change since the last snapshot);console --level/--filter在--limit之前收窄,采集关闭时不再静默返回空。技能桩描述改以「Browser automation in the user's real, logged-in Chrome」开头,并写明 Codex 上要靠AGENTS.md一行指路。修复:嵌入的 skill 内容按指纹重新解压,同版本重建不再读到旧缓存。README 精简到约 290 行。 - v1.5.114(2026-09-09):macOS 产物现在带 Developer ID 签名并已公证:
spctl从 rejected 变为 accepted,浏览器下载(带 quarantine)的副本可以直接运行(#283)。快照里重名的控件补上能区分彼此的文字,三个一样的「进入」变成context="飞行棋"等;只在重名时补,且补了还一样就丢弃(#284)。--observe在 delta 为空时说清是哪种情况(禁用/无框/被遮挡/在视口外/一切正常),并明确「空 delta 不等于失败」(#277)。report自己说清包含与排除什么、截图是独立决定,并自动带上扩展与中继状态(#278)。tabs报出 relay 实际附着的标签,与会话钉的不一致时出声(需要 ab-connect 0.5.24,#279)。修复:无目标的type是用法错误而不是「选择器没匹配」(#282);fill在 onFocus 会重置的 React combobox 上不再丢值(#282);策略强装的扩展不再被指向一个不存在的 Update 按钮(#284)。 - v1.5.113(2026-09-09):扩展 0.5.23 自己催 Chrome 查更新、并在没有标签附着时就地应用(不需要新权限,#272);中继失败时如果装的扩展落后于商店会在错误里说出来(只在失败路径、且确实有可装的新版时,#271);
--observe输出带target(session / tabId / targetId / url,只有 id 没有账号),调用方能看出目标有没有被换过(#270);frame <序号>可用,之前传frames打印的编号会抛 querySelector 原文(#269)。修复:do对判不出成败的动作(showMenu/toggle/ 步进)不再打 ✓,改标·且confirmed: null(#266);显式--browser/--cdp重绑失败时保住原绑定、不再把会话丢在about:blank(#268);访问被拒的错误说出钉在哪个标签、URL 是什么(#267);socket 路径超限说清 103 字节花在哪,不再责怪用户没起过的会话名(#265)。 - v1.5.112(2026-09-09):
open --browser <profile> --remember请求 ChooseBrowser 把该站点长期指向该 profile——只提议,ChooseBrowser 弹窗确认后才保存;请求无效时在导航前拒绝并说明原因;需要 ChooseBrowser 0.2.1+(#257)。doctor报告 ChooseBrowser 规则读自哪条路径、几条、版本能否读、是否有另一份未被读、装的 app 是否接受规则请求(#253、#257)。session stop --force在标签不可达时丢弃归属记录、不关标签(#263)。修复:上传只触发一次change,不再在 React/Livewire 上多出一条卡在 0% 的记录(#261);read <url>遇到客户端渲染的壳不再返回空页,而是拒绝并给出open+text路径(#262);升级后session stop的提示不再要求重连已不存在的浏览器,chrome-extension://访问错误提示可能是别的 session daemon 占着标签(#263)。 - v1.5.111(2026-09-09):交互快照为局部控件保留价格等上下文,并去掉商品链接上的重复说明;状态回执直接出现在动作观察中,可点击的状态节点保留引用。修复其他 profile 的 relay 影响独立浏览器拖拽方式的问题(#246)。打开网站可使用现有 ChooseBrowser 规则选择已连接的 profile,显式
--browser优先,可用--no-choosebrowser关闭查询;规则目标不可用时退回正常选择,仍需核实账号(#247)。发布前先校验版本与说明(#249)。贡献者:@leeguooooo。 - v1.5.110(2026-09-09):自动选对 Chrome profile。读取 ChooseBrowser 的站点规则, 按目标站点挑选应该用哪个 Chrome 配置文件,而不是默认落到最后一个连上的那个(#244)。
- v1.5.109(2026-09-09):中继恢复不再自动重复结果未知的动作;观察捕获失败会明确标记完整、部分或不可用,保留动作结果,不再伪造页面清空。修复子框架错误、恢复后的标签引用与生命周期锁释放;受限扩展内容会返回明确的访问错误;导航会提前识别已确认的调试器访问拒绝,同时保留正常页面加载等待。请求摘要限制输出大小并报告省略数;新增
CHROME_USE_RELAY_DIR隔离中继发现。内置 ab-connect 0.5.22 在确认主机响应后才显示已连接,扩展商店发布单独进行(#242)。贡献者:@leeguooooo。 - v1.5.108(2026-09-09):不再把没验证过的结果报成成功。未经确认的标签切换、
浏览器替换、frame 未命中,之前都可能以
✓收场——agent 拿到假成功会一路错下去。 现在这三类一律如实失败。同时修正:跨 origin 跳转本来就是合法导航,不该被算成切换失败;skills返回一份 reference 是成功,也应该报成成功。 - v1.5.107(2026-09-08):标签组名字变成人能看懂的,文档不再一次压 70KB。
chrome-use session name "🔎 查快递单号"把标签组标签从路由用的会话 id 换成一句人话; 重命名不影响任何路由,身份仍是会话 id。另外skills get core从 70,691 字节降到 34,393—— 最重的四节拆成按需拉取的 reference,SKILL.md的索引改成按症状组织 (agent 手上有的是症状,不是分类)。 - v1.5.106(2026-09-08):观察前自适应等待,少读到半个过渡态的页面。
新增
select-text与paste --format;没有可访问名字的控件恢复了@ref重锚路径——以前这类控件按 role + name 匹配时人人都匹配,直接放弃,报错还写得像「元素没了」 (#215 #224 #226 #227 #228 #229 #231)。 - v1.5.105(2026-09-08):
actions/do——点击之外的动作。expand/collapse、showMenu、increment/decrement、toggle,全部从元素当前的可访问性属性推导。三条刻意的约束:动作集实时读取, 绝不沿用快照时的状态;不在集合里的动作直接拒绝并列出可用项;动作发出后重读一次, 控件没动就明说「dispatched 但它没动」,而不是报成功(#225)。 - v1.5.104(2026-09-08):
snapshot --diff——重读页面只花几个字节。 143KB 的 Hacker News 评论页:完整快照 143,490 字节,页面没变时--diff只回 1 字节, 折叠一条评论后回 31,370 字节。没有有效基线时返回完整树并说明原因, 因为「空 diff」和「页面没变」在输出上无法区分。同时tab select/tab adopt不再为没生效的切换报成功:原本的存活探针是evaluate("1"),任何页面都能满足, 包括切错的那个;现在改成读location.href比对 scheme+host(#223)。 - v1.5.103(2026-09-08):
--observe给出的@ref真的能用了。 它原本把 ref 铸进一张一次性的映射表,于是每个[ref=eN]拿去用都报Unknown ref—— 白花一趟往返,还得再发一次snapshot。另外基线快照用的是全新 ref 编号, 而begin_snapshot按 backend-node 保号,两套编号对不上,导致 diff 把整棵树报成「全删全增」 (改一行排序读出来是1 added, 29 removed)。navigate/reload/back/forward也支持--observe了,跨页面返回的是快照而不是 delta。 - v1.5.102(2026-09-07):内置无障碍审计
chrome-use a11y(axe-core), 浏览往返砍半、大页面的观察输出可控(#219 #220 #221)。修复:嵌套的跨域 iframe 现在能被 attach、 下钻和点击;relay 上导航到特权chrome://页面会被拒绝,而不是把标签搞死; Chrome 没在运行时直接按 profile 拉起,不再干等中继 98 秒后放弃。注意: 这版的--observe给出的 ref 不可用,请直接装 v1.5.103。 - v1.5.101(2026-09-04)— React dropzone 消费文件并清空或替换 input 后,
upload返回成功与校验提示,不再误报拒绝(#208)。原生select使用平台 setter,并触发 input/change 事件,使受控表单提交选择(#209)。daemon 空闲回收保留外部 Chrome 标签页、URL 与页内状态,显式 close/session stop 仍正常清理(#210)。内置 ab-connect 0.5.20 优先走浏览器级导航,并对同 URL 快速重载环给出恢复建议;App Store Connect 仍待真实登录态回归,扩展商店上架单独进行(#211)。新增浏览器与扩展回归测试。贡献者:@leeguooooo。 - v1.5.100(2026-09-02)— 一批交互可靠性修复(#202 到 #206)。relay 下 DOM 派发的点击现在会像真实点击一样移动键盘焦点,
click后接press不再落到上一个字段(#204)。type会读回字段值,页面改写或丢弃输入时打 ⚠ 警告并给出readBack;fill校验失败会同时引用写入值和读回值,并指出页面过滤了非拉丁字符(#203)。press对只依赖页面监听器才有效果的键(文本框上的方向键、Escape、表单外 input 上的 Enter)探测 keydown/keyup/keypress 监听器,没有就警告;裸 XPath(//…)自动识别,text()未命中时解释只匹配第一个文本节点;「Element not found」保留选择器和具体诊断(#202)。同一 agent 换目录后复用已有 session,「Unknown ref」会说明是哪个 session、有没有任何 ref(#205)。无障碍树为空时snapshot自动改走穿透 shadow root 的 DOM 遍历,snapshot --dom可强制(#206)。内置 ab-connect 升至 0.5.19:标签 30 秒无活动即释放调试器,横幅不再常驻,下一条命令自动重连(#201,等商店上架)。贡献者:@leeguooooo。 - v1.5.99(2026-08-31)—
screenshot --annotate不再清空当前 session 的 ref map;同一文档内未变化的节点会沿用快照刚给出的@ref。原问题的最小复现已用本版源码验证:快照里的@e82在标注截图中仍为@e82,随后点击成功;#197 等正式 v1.5.99 安装复测后关闭。扩展 relay 在Page.navigate被页面 renderer 卡住时改走浏览器级导航,不提高全局 8 秒预算;重连会清掉 Chrome 中已不存在的幽灵标签,tab inspect会优先解析仍存活的新 tabId(修复 #193、#196)。macOS 的 launched Chrome 默认禁用MacAppCodeSignClone,避免异常退出后留下会随 Chrome 更新膨胀的 APFS 克隆(修复 #195)。内置 ab-connect 升至 0.5.18。贡献者:@leeguooooo。 - v1.5.98(2026-08-27)— relay 的 8 秒命令超时补充诊断上下文:错误现在包含同时在飞的命令数、最老命令的等待时间和当前 MV3 service worker 的存活时间,并在扩展侧保留最近 20 条记录。数据可以区分单标签 renderer 卡死、relay 队头阻塞和 worker 生命周期问题;本版没有猜测性调高超时常量(#193)。贡献者:@leeguooooo。
- v1.5.97(2026-08-25)— 外部 Chrome 与扩展连接的 Chrome 标签现在明确区分
created、adopted、foreign三种所有权。session 可以驱动自己创建或明确 adopt 的标签,但只能关闭自己创建的标签;adopt 永远不授予删除权。创建过的 target ID 按 session 与浏览器 endpoint 持久化,daemon 重启后仍能清理遗留标签,同时不会把用户被 adopt 的标签误认成自己创建。只有Target.closeTarget调用成功且返回success: true后才移除删除权记录。选择已有 target 现在需要先执行tab adopt <targetId>,再执行tab select。贡献者:@forsakesoul、@leeguooooo。 - v1.5.96(2026-08-25)— 撤回 v1.5.95 的一处所有权判定:该版本在 daemon 重连时把 relay 作用域内的每个标签都认领为「本 session 创建」,据以在
session stop时关闭它们。依据不成立 —— 决定作用域的是 relay 自己的target_group,而Target.attachToTarget(正是adopt发出的调用)会把目标重新打进 adopter 的组,因此用户被 adopt 的标签也在该列表内,daemon 重启丢掉内存所有权后两者无法区分。后果是 adopt 用户标签 → 重启 →session stop可能关掉用户的页面。现已改为重连一律不认领,等所有权被持久化记录之后再恢复。v1.5.95 的用户请升级。 #192 的根因修复不受影响并保留:session stop的宽限期 1 秒→8 秒(relay 单命令预算是 8 秒,原先必然半路 SIGKILL),清理循环改为并发并共用 5 秒总预算(原先顺序 await,一个卡住的标签会吃掉其余标签的清理机会)。贡献者:@forsakesoul(发现)、@leeguooooo。 - v1.5.95(2026-08-24)— 命名 session 反复重启不再把标签遗留在用户的 Chrome 里,长跑采集任务不会再把内存吃到 20GB(修复 #192)。清理逻辑本来就有,坏在两处:
session stop发完 SIGTERM 只等 1 秒就 SIGKILL,而每个Target.closeTarget要走 relay、relay 的单命令预算是 8 秒,于是 daemon 必然在关标签的半路被硬杀(宽限期改为 8 秒;轮询一发现进程退出就返回,健康路径仍是零点几秒);清理循环原本顺序await,第一个卡住的标签会吃掉后面所有标签的清理机会,现在并发发出并共用一个 5 秒总预算。第三处是重启后 daemon 已经不认识自己上一世创建的标签——created_targets只活在进程内存里;现在按 Chrome 标签组认领,组标题即 session 名,而进组路径只有Target.createTarget带agentGroup与ABExt.duplicateTab两条(adopt既不入组也不标记所有权),因此组内标签必然由同名 session 创建;没有 relay 作用域时一律不认领,避免把用户的标签误判成自己的。extension status的版本落后提示按安装方式分流:策略强装的扩展没有单独的更新按钮、权限由 Chrome 自动授予,不再让这类用户去点一个在灰掉的行里根本不存在的控件(修复 #190)。贡献者:@leeguooooo。 - v1.5.94(2026-08-24)—
screenshot的纯色兜底检测:#184 的 URL 漂移守卫只拦得住「捕获会话自己承认漂移」的情形——下一次eval读回的 URL 是对的,像素却来自别处时守卫不响,agent 仍拿到一个 ✓ 加一张空白图。现在整张图只有一种颜色、而页面报告了真实布局高度和文字长度时,命令改打 ⚠ 并给出可执行的警告;[selector]与--clip的局部截图及--annotate豁免(后者不缩放,纯色扫描会去解码一张原始尺寸的整页图,代价不划算)(修复 #184)。接入文档不再只列 Claude Code / Cursor / Codex 三个名字——把判断标准(能跑 shell 就装 CLI+技能,不能跑 shell 就配 MCP server)写进 MCP 页,名单补上 CodeBuddy / Trae / Windsurf / Cline(修复 #172)。ab-connect 扩展发布 0.5.17 并上架 Chrome Web Store,随本版 bundled 版本追平,extension status不再对刚发布的版本打误报(#189)。贡献者:@leeguooooo。 - v1.5.93(2026-08-20)— macOS 静默装扩展的策略描述文件会让 Chrome 进入「由贵单位管理」状态,此前从未说明代价:Chrome 停用并锁死安全 DNS(DoH),扩展也被标成「由管理员安装」、没有手动更新/删除按钮。新增
extension install --no-profile完全不写策略描述文件、走商店安装;批准前把代价和退出命令打在选项下面;extension status/uninstall在策略生效时补上同样的因果说明(修复 #187)。本仓库源码里的扩展版本经常跑在 Web Store 已发布版本前面(一度 0.5.16 vs 已发布 0.5.12),导致status/doctor对所有商店用户误报 OUTDATED 并指向一个不存在的更新;现在按需问一次商店 updatecheck 接口,区分「确实落后」「已是最新发布版」「领先商店的中间开发版」「问不到商店」四种情况(修复 #186)。贡献者:@leeguooooo。 - v1.5.92(2026-08-19)— 在扩展 relay 上,页面注入的扩展框架会让
screenshot的 CDP session 落到扩展自己的about:blank渲染器,而 tabs/eval/get text 仍报告正确页面——结果是 ✓ 加一张空白图,agent 无从怀疑。截图前比对「会话正在驱动的标签页 URL」与「捕获 session 上真实的location.href」,不一致即判为漂移,报错退出并给出重新绑定标签页的指令,不再写出文件(修复 #184)。Windows 上 Chrome 的用户数据在LOCALAPPDATA而非config_dir()返回的 Roaming AppData,导致 relay 明明连着一个 profile,extension status却报「0 profiles found」;扩展版本落后时也不再打一个让人自己去 diff 版本号的 ✓,改为明确标 OUTDATED(修复 #183)。贡献者:@leeguooooo。 - v1.5.91(2026-08-13)—
test用字面量flags.session == "default"判断用户是否显式指定了会话,两头都错:--session default和不传完全无法区分,agent 自动派生的会话名又被当成显式指定,导致test suite.yaml --session default静默启一个全新的隔离浏览器,连接好的真实 Chrome 登录态一个都用不上。改为在Flags上记录 session 是否来自用户输入(--session/AGENT_BROWSER_SESSION/ 配置文件),test据此决定复用会话还是自建cu-test,并只关闭自己启动的浏览器;--browser/--as/--as-strict现在会转发给套件的每个 step(修复 #181)。贡献者:@leeguooooo。 - v1.5.90(2026-08-12)—
SessionLifecycleLock/RelayRecoveryLock在 Windows 上是不加锁的 stub,两个并发调用会各自起一个 daemon 抢占同一个 socket/端口文件;改用std::fs::File::lock(Unix flock / Windows LockFileEx)做真正的跨平台 advisory lock,等待锁时会先打印一行提示避免被误认成卡死(修复 #177)。MCP 的screenshot工具此前只回一个服务器本地路径,客户端根本打不开——改为把截图内联成 image block(magic-byte MIME 嗅探 + 2MB 上限,可用CHROME_USE_MCP_MAX_INLINE_IMAGE_BYTES覆盖或关闭)(修复 #178)。DOM 派发的点击不产生镜像Input.dispatchMouseEvent,页面上的光标此前完全不会动,点击看起来像什么都没发生;现在显式驱动光标坐标(复用已解析元素的getBoundingClientRect,不为纯装饰多做一次 resolve),并在截图前后隐藏光标,避免被烤进 agent 随后读取的图片(修复 #179)。两个 agent 共用一个终端 tab 时会共享WT_SESSION/TMUX_PANE,从而挤到同一个 daemon 上抢标签页;会话名现在按三级派生:显式 agent id →<PRODUCT>_SESSION_ID约定扫描 → 终端 ID,doctor会说明当前会话名来自哪个环境变量(修复 #180)。贡献者:@Ishannaik、@leeguooooo。 - v1.5.89(2026-08-10)—
download-url此前直接拒绝blob:scheme——blob URL 属于创建它的 document、扩展的chrome.downloadsAPI 够不到,页面上已经渲染出来的资源(比如 canvas 导出前的原始文件)一个字节都取不回来。现在在页面内 fetch 字节直接落盘,字节级一致(不像toDataURL那样重新编码、静默丢掉 C2PA 之类的元数据);顶层 frame fetch 不到时逐个子 frame 重试,并在结果里报告字节来自哪个 frame;32MB 上限(经 base64 塞进单条 CDP 消息,过大会挂会话而不是下载失败)(修复 #169)。每日版本检查的升级提示原本和真错误共用 stderr,包装 chrome-use 的工具"报告失败并附上 stderr"时会混进无关的家务事;现在只在人能看到的地方打印(TTY + 非--json+ 未设CHROME_USE_NO_UPDATE_NOTICE),后台检查和自动升级本身不受影响(修复 #170)。贡献者:@leeguooooo。 - v1.5.88(2026-08-10)—
fill结尾会el.blur()触发站点的 blur 校验,焦点因此掉回<body>;紧接着的press Enter派发到 document,表单永远不会提交,CLI 却仍打印✓ Done。fill现在把焦点还给原字段(仅当 blur 没有把焦点主动交给别的元素时才还,需要跨 shadow root 判断真正的 activeElement);press新增--selector(别名--on)先聚焦目标,结果带上target,Enter 落在<body>上会给出警告(方向键/Tab/Backspace 落空是正常行为,不告警);press <chord> --hold此前会丢失修饰符,按住的其实是光秃秃的按键却原样报回组合键,现已修复(修复 #167)。贡献者:@leeguooooo。 - v1.5.87(2026-08-05)— 修复
@ref会静默点到别的元素:身份校验探针超时、失败或节点不在无障碍树里时,以前都当成「校验通过」直接点缓存节点,而扩展 relay 的多跳传输让 1 秒预算几乎必然超时,于是click @e273打开了不相干的消息菜单却打印Done。现在探针预算按传输方式区分(直连 CDP 2 秒、relay 5 秒,可用AGENT_BROWSER_VERIFY_REF_TIMEOUT_MS调整),无法确认的 ref 会先按快照里的 role+name 重新锚定(同一节点仍匹配就继续用它)、再按指纹重定位,两者都不成立就明确报错——不再有「先点了再说」的分支。指纹重定位新增无障碍名称下限:role/祖先/兄弟等结构信号本身就值 0.60,两个同层<button>光靠形状就能压线 0.70,导致button "我的 agent"被重定位到消息溢出按钮上;名称差异过大的候选现在直接排除,轻微改名(Submit → Submit now)仍可自愈。跨快照复用@ref也要求 role+name 未变,节点被 React 交给另一个组件后会拿到新 ref(修复 #162)。技能 stub 去掉hidden: true:pi 等 harness 把它读作「永不加载」,导致 chrome-use 对 agent 完全隐身;CLI 内部改按目录判定,stub 描述长度也加了 1024 字符上限的回归测试(修复 #165、#164)。贡献者:@leeguooooo、@beilo。 - v1.5.86(2026-07-31)— 修复旧版 ab-connect 让
tab select的存活探针失败时被误报为 renderer 无响应:警告现在会显示当前扩展与 CLI 内置扩展版本,并明确说明探针失败本身不能证明页面已卡死;旧扩展调用tab inspect时不再泄露原始-32601CDP 错误,而是给出最低版本 0.5.16、当前版本、内置版本以及chrome://extensions更新或重载步骤(修复 #157)。贡献者:@leeguooooo。 - v1.5.85(2026-07-31)— 真实 Chrome 扩展会话的
record start直接录制当前会话自有标签,不再调用被禁止的Target.createBrowserContext(修复 #151);snapshot -i为非默认 cursor、id、data-testid、精简 class 与无名控件 fallback 名称补充定位线索,同一 DOM 节点的@ref在连续快照和模态框增删间保持稳定,导航或切换标签时才硬重置(修复 #154、#155);裸find "自然语言描述"返回带语义、上下文、selector 与 score 的候选列表,绝不自动操作(修复 #156);ab-connect 0.5.16 用浏览器级目标清单重新附加白屏/卡死标签,不再依赖无响应 renderer 回传身份,新增tab select、会话内无导航tab adopt与不执行页面 JavaScript 的tab inspect,并把 renderer timeout 与标签消失明确区分(修复 #157)。贡献者:@leeguooooo。 - v1.5.84(2026-07-29)— 修复会话 daemon 进程仍存活、但 Unix socket 已消失后永久报
No such file or directory (os error 2)的问题:同一会话的 relay 拆建与 daemon 启动现在由跨进程锁串行化,全局 native-host 恢复也只允许一个进程执行;下一条浏览器命令会等待并发启动窗口、回收不可达 worker,再为同一会话启动干净的新 daemon。若 socket 在命令执行途中消失,错误会给出准确 endpoint、停止孤儿进程、清理 sidecar,并提示重跑命令(修复 #152)。贡献者:@leeguooooo。 - v1.5.83(2026-07-28)— 修复多个 Codex 任务共用裸
defaultdaemon、互相覆盖活动标签的问题:未显式指定会话时,现在会识别CODEX_THREAD_ID,为每个任务派生独立标签组。relay 会话固定的标签消失时,chrome-use 会保留该 target 作为恢复锚点,只允许重新挂回同一 target 或明确失败,不再静默切到剩余的about:blankscratch 标签;并发混合执行eval与snapshot时可保住 SPA 的内存登录态(修复 #149)。贡献者:@leeguooooo。 - v1.5.82(2026-07-28)— 完成 v1.5.81 的审查收尾:
status现在同时验证 native-host launcher 是否指向可执行文件,并在 JSON 中提供extension.hostHealthy;自动重置卡住 daemon 后只给出一致的下一步提示;ab-connect 0.5.15 用稳定的RelayTimeoutError标识超时;confirm E2E 与命令帮助同步修正。贡献者:@leeguooooo。 - v1.5.81(2026-07-28)— 新增无需 daemon 的
chrome-use status,统一报告 CLI、扩展、中继、profile 与会话健康(修复 #145);click 触发原生confirm()/prompt()时立即返回待处理 dialog,同一会话可继续 accept 或 dismiss(修复 #144);ab-connect 0.5.14 为 Chrome debugger 调用增加 8 秒超时,旧扩展导致 socket 超时时 CLI 会自动重置卡住的 daemon,HTTP→HTTPS 跨进程恢复不再无限挂起(修复 #146);官方 chrome-use-sites 源新增 Twitter search/thread engagement schema,稳定返回 replies、bookmarks 与数字 views(修复 #124)。贡献者:@leeguooooo。 - v1.5.80(2026-07-26)— 修复
session stop [name]与session prune被会话所有权命令提前截获的问题;两条生命周期命令重新路由到守护进程处理器,session --help现在完整区分所有权与生命周期操作,命名停止还会先校验会话名再触碰守护进程状态(#142,修复 #140)。贡献者:@leeguooooo。 - v1.5.79(2026-07-26)— 新增 Nix flake,提供 package、开发 shell、NixOS module 与 home-manager module(#136)。原生「复制标签页」事务现在有明确生命周期边界,超时后的扩展回复不会继续存活或污染后续会话状态(#137)。
fill现在通过 Monaco 的全局或 AMD model API 定位编辑器,执行原子的setValue或可信剪贴板兜底,并在返回成功前校验权威 model 回读;Synology DSM 编辑器“显示成功但内容为空”的问题现在会安全失败(#139)。贡献者:@M4jor-Tom、@forsakesoul、@leeguooooo。 - v1.5.78(2026-07-24)— 新增原生下载能力:
download-url、download-start、downloads及对应 MCP 工具,动态链接下载不再误导航当前标签页;本地服务新增受 loopback / origin 保护的/api/v1,CLI、MCP、daemon 与 HTTP 错误统一提供稳定的code/retryable字段(#132)。network requests --type websocket可观察页面与跨域 iframe 的 WebSocket 连接元数据,不记录帧载荷(#131)。site update现在默认同步社区源epiral/bb-sites与官方源leeguooooo/chrome-use-sites,无需手动添加(#133)。 - v1.5.77(2026-07-21)— 站点适配器错误现在返回非零退出码;安装器兼容无
/dev/tty的非交互环境;保留全局参数名冲突时给出明确提示;大型页面的Page.navigate超时在确认已完成导航后降级为警告;新增可配置的组织私有适配器源与site sources/add/remove(#122、#123、#125、#126、#127)。 - v1.5.76(2026-07-16)— 新增
chrome-use tab duplicate [ref] [--label <name>]:用 Chrome 原生「复制标签页」(保留完整导航历史),并同步暴露到chrome_use_tabsMCP。仅在扩展连接的真实 Chrome 上可用——--launch/裸 CDP/Lightpanda/云 provider 与旧扩展一律明确报错,绝不用 URL 重建兜底(那会丢失 duplicate 语义);扩展通过hello声明nativeTabDuplicate能力协商。复制出的标签页成为 chrome-use 内部 active target,同时恢复用户原本聚焦的窗口与标签页,输出只给 tab/target id 不泄露 URL;attach/grouping/setup 任一步失败都会回滚孤儿标签页。 - v1.5.75(2026-07-10)— 修复扩展 relay 自动连接在新会话中重复创建两个
about:blank标签页。连接现在复用目标发现阶段创建的 session-owned scratch tab,仅在页面数为零时创建兜底页;纯读取、状态查询或导航前失败不再留下成对空白页。 - v1.5.74(2026-07-08)— 技能分发 v2:新增
chrome-use skill install统一入口,委托 skills.sh(npx skills add … -g)跨 20+ runner 装技能,自己绝不写 runner 目录;curl … | sh装完二进制顺带装技能,并以doctor自检 + 一条可直接粘贴给 agent 的首条 prompt 收尾;doctor新增只读探测「agent 技能是否已装」(warn 不 fail);stub 路由表从 5 个场景补齐到 11 个(canvas/network/react/real-chrome/sessions/test 等按症状路由)。另修:skills/chrome-use/SKILL.md的description是含:的非法 YAML,导致npx skills add误装成core/test等而非chrome-use——改为折叠块标量修复。 - v1.5.73(2026-07-07)— 四个 issue 修复:
extract --schema对普通重复列表不再静默返回[](自动探测重复容器 + 未命中给诊断 + 接受数组 schema,#96);site适配器运行前注入家族_helper(twitter/* 等不再ReferenceError,#99);console --limit N只看最近 N 条(#110);skill 真分层(<!-- full -->标记,默认精简、--full全量)+ 去重 +session handoff同步进 sessions skill(#100)。 - v1.5.72(2026-07-07)— 原生命令扛 shadow-DOM 重站:
select/fill现在能处理 react-select、模块作用域内的 Monaco、@ref 落在包裹元素的受控输入(#105);对 Element-Plus 弹窗更利落——snapshot -i给顶层 modal/drawer 内控件加modal标记、选择器未命中给最接近文本匹配提示、新增diagnose排查空白 SPA(#90)。curl … | sh一条命令装扩展并处理调试横幅(装机时征得同意 → 运行时自动静默)。skill 引导 agent 优先用read/click/fill等命令而非手搓eval。 - v1.5.71(2026-07-07)— 文档:新增「它怎么工作」(含 SVG 架构图)、「血统与上游」、「单次成型脚本」三章,并对整站文档做了一轮审计修订。无功能改动。
- v1.5.70(2026-07-07)—
chrome-use script单次成型脚本(#101):JSON op-list(值总线 + 循环 + 断言)与同步 JS(cu.*助手)两种写法,守护进程内 boa 引擎扛硬跳转,一次 tool call 跑完多步。另:connect 检测企业策略拦截扩展并引导逃生口;后台自动更新(CHROME_USE_AUTO_UPGRADE=1);一键 Web Store 安装。 - v1.5.69(2026-07-07)—
snapshot -i合并 presentation-role / AX-stripped 跨域 iframe(reCAPTCHA 这类,#92);snapshot/eval 先 resync 防漂到 about:blank(#93);未命名交互控件按 placeholder / 邻近 label 命名(#90.2);screenshot resync 抓活动标签(#91)。 - v1.5.68(2026-07-02)— 会话所有权 + 人工接管:
session handoff/resume/status/list(#89,从 ego-lite 搬);whoami每站身份 + 全局--as账号守卫。 - v1.5.67(2026-07-02)— 扩展多 profile 引导安装:枚举所有 profile、检测过期策略、深链设置页 + 等审批 + 自动重启;安装向导 zh/en 本地化;
connect <port>/--cdp换端点时重绑。 - ab-connect 0.5.10(2026-07-06)— 扩展 popup / options 页脚新增
Docs(chrome-use.leeguoo.com)与leeguoo.com链接;消除 native host 断开时打到错误页的Unchecked runtime.lastError: Native host has exited警告(断开本就预期,按需重连,纯观感清理)。 - ab-connect 0.5.9(2026-07-02)— 新增
identity/identity.email权限:hello 握手带上当前 Chrome profile 的登录邮箱,chrome-use browsers能标出每条连接属于哪个账号(多账号下区分"登出" vs "错账号")。邮箱仅走本地 native messaging,不外传。 - v1.5.66(2026-07-02)—
select找不到匹配的<option>时不再默默选不中,改为报错并列出所有可选项;默认操作超时从 30s 降到 25s。 - v1.5.65(2026-07-02)—
network route --set-json结构化编辑响应 JSON 字段;新增chrome-use report一键打包脱敏痛点日志为可粘贴 issue;MCP--tools all(24 工具)。 - v1.5.64(2026-07-01)—
chrome-use mcp:给 Claude Desktop 这类只讲 MCP、不能跑 shell 命令的宿主起一个 stdio MCP 服务器(12 工具核心 profile)。 - v1.5.63(2026-07-01)—
read [url]:把一个 URL(不传参数时是当前标签页)抓取成 agent 可读文本,支持--llms/--outline/--filter/--raw。 - v1.5.62(2026-07-01)— 修复
type --clear/--delay解析;find label现在也匹配aria-label/aria-labelledby。 - v1.5.61(2026-07-01)— React renderer 修复:挑选真正的 react-dom renderer,不再硬编码 id 1(此前在 Next.js 16.3 Turbopack RSC 应用上读到空树)。
- v1.5.60(2026-07-01)—
network route:响应阶段编辑真实响应(状态码/响应头/响应体子串替换)。 - v1.5.59(2026-07-01)—
network route:通过 CDP Fetch 域 mock 响应、改写请求——无需代理、无需证书、不注入 JS。 - v1.5.58(2026-07-01)—
chrome-use test:多账号 YAML 用例支持按 case 切换账号(account:)。 - v1.5.55(2026-06-29)— 摩擦点自动上报(friction auto-reporting)。
- v1.5.54(2026-06-29)— form fill 支持按可见文本选中 select 选项;修复 self-heal 在
--launch路径下失效的问题。 - v1.5.53(2026-06-29)—
form fill --map:批量映射填表。 - v1.5.52(2026-06-29)—
--observe:捕捉 action 前后的 a11y 树差异;补充 auto ref-heal 文档。 - v1.5.51(2026-06-29)— action 守卫
--if-present/--optional。 - v1.5.50(2026-06-29)—
extract --schema:按 schema 结构化抓取为 JSON。 - v1.5.49(2026-06-29)—
expect:断言 + 对应退出码。 - v1.5.48(2026-06-29)— ab-connect 0.5.7:休眠唤醒后通过
chrome.idle自动重连。 - v1.5.47(2026-06-29)— ab-connect 0.5.6:adopt 不再持久化,清除卡住的 debugger 提示条。
- v1.5.46(2026-06-29)— relay 自愈:relay 掉线自动恢复,无需挂起等待或手动重连。
- v1.5.45(2026-06-28)— 修复 adopt-tab 命令解析回归(#68 引入)。
- v1.5.44(2026-06-28)— adopt 改为按需 attach(ext 0.5.5):用户标签页不再出现 debugger 提示条。
- v1.5.43(2026-06-27)— #65
snapshot --filter+ eval 顶层 await 提示。 - v1.5.42(2026-06-27)— #60 浏览器/profile 选择:
browsers列表 +--browser。 - v1.5.41(2026-06-26)— #60 驱动中 profile 可观测性 + #53 canvas/closed-shadow 技能文档。
- v1.5.40(2026-06-26)— #58
eval --frame、reconnect 别名、更可操作的 stale-target 报错。 - v1.5.39(2026-06-26)—
snapshot -i现在能暴露内联表单校验错误。 - v1.5.38(2026-06-26)— #52 标签页路由限定到会话分组内 + CI 格式修复。
- v1.5.37(2026-06-25)— solve-slider 健壮性(等待切片加载)+ 可插拔检测器 hook。
- v1.5.34(2026-06-25)— solve-slider(网易易盾滑块验证码)+ drag 偏移模式。
- v1.5.32(2026-06-24)— sunny 扩展体验优化:更友好的图标、精修 popup、options 页、agent 光标。
- v1.5.31(2026-06-24)— relay tab-drift 时改为大声报错,不再误点错误的标签页。
- v1.5.30(2026-06-24)— relay 掉线提示 + canvas/closed-shadow 技能手册。
- v1.5.29(2026-06-24)— 静音
chrome.debugger提示条 + 修复残留的 about:blank scratch 标签页。 - v1.5.28(2026-06-22)— chrome-use 技能优先做真实联网检查。
- v1.5.27(2026-06-19)— 把 about:blank 清理逻辑限定在 relay 场景。
- v1.5.26(2026-06-18)—
session stop <name>+session prune+ 生命周期文档。 - v1.5.25(2026-06-18)— 默认空闲自动关闭 +
keep:不再留下 scratch 标签页/分组垃圾。 - v1.5.24(2026-06-18)— 修复构建:补上 browser.rs 的 clear_viewport/via_relay + cargo fmt。
- v1.5.23(2026-06-17)—
adopt:无需新开标签页即可驱动已存在的标签页。 - v1.5.22(2026-06-17)— relay 按分组限定
Target.getTargets:恢复弹窗跟随 + 隔离下的跨会话 adopt。 - v1.5.21(2026-06-17)— 富文本编辑器填充、box 中心点、截图降采样、disabled 处理 + 文档(#41-#45)。
- v1.5.20(2026-06-17)—
site:适配器自动同步 + 自动建议触发。 - v1.5.19(2026-06-17)—
site:bb-sites 适配器,把任意站点变成结构化数据 CLI。 - v1.5.18(2026-06-17)— 问题反馈指引 + relay 上
data:URL 的清晰报错。 - v1.5.17(2026-06-17)— 完善多 agent 隔离:点击不再误吞用户标签页/弹出页。
- v1.5.16(2026-06-17)— relay 上的严格多 agent 标签页隔离。
- v1.5.15(2026-06-17)— iframe 内按钮的可信激活。
- v1.5.14(2026-06-17)— 修复 eval await 回归(replMode)+ 默认滚动;CI 转绿(#36, #38)。
- v1.5.13(2026-06-17)— eval replMode(可重复声明 let/const)+ snapshot-first 技能规则(#37, #38)。
- v1.5.12(2026-06-17)— relay 安全的 hover/dblclick/drag、更深的 iframe snapshot、按键事件式输入。
- v1.5.11(2026-06-16)— 跨域 iframe 滚动/点击 +
open自动重新 attach(#35, #36)。 - v1.5.10(2026-06-16)— relay 在线时用 debug-port 启动会给出警告。
- v1.5.9(2026-06-16)— 去除标题里的零宽 unicode 字符 +
screenshot --clip/element。 - v1.5.8(2026-06-16)— 通过扩展 relay 实现文件上传。
- v1.5.7(2026-06-16)—
cf-status:Cloudflare 人机验证 clearance 预检。 - v1.5.6(2026-06-15)— 固定 adopt 的标签页,防止被短暂的 relay 快照误伤。
- v1.5.5(2026-06-15)— connect 模式下远程调试授权弹窗的诊断日志。
- v1.5.4(2026-06-15)—
get text --pierce:穿透 closed shadow DOM(#30)。 - v1.5.3(2026-06-15)—
get text默认跨 frame;#29(sessions/did-you-mean/标签页存活检测);CI changelog 修复。 - v1.5.1(2026-06-15)— 按 frame 提取文本(
get text --all-frames/--main、frames)+ #27,ab-connect 0.4.9 targetId 恢复。 - v1.5.0(2026-06-15)— 文本选择器点击、
get text默认到 body、tab --activate、click --follow/openedTab;fill触发 input/change/blur;close提示文案 +chrome-use current。
v1.4.x
- v1.4.1(2026-06-14)— hold-to-move(完整 keydown/keyup 描述符,#game);要求 ab-connect 0.4.8(#23 重连加固)。
- v1.4.0(2026-06-13)—
open不再抢占用户焦点;tab adopt-by-targetId;keydown/keyup 文档;canvas 提示;doctor检查各组件版本一致性。
v1.3.x
- v1.3.0(2026-06-13)— daemon restart/status(#20.2)+ 实时标签页重同步、adopt-by-targetId、
open --reuse-tab。
v1.0.x – v1.2.x
- v1.2.3(2026-06-13)—
bringToFront命令 +tab list --full显示完整 URL。 - v1.2.2(2026-06-12)— 非阻塞的“有更新”提示 + release changelog。
- v1.2.1(2026-06-12)— relay tab-drift 固定修复(#14/#18)+ 稳定的按标签页 relay session。
- v1.2.0(2026-06-12)—
chrome-use test:浏览器测试套件。 - v1.1.0(2026-06-12)— 跨 profile cookie 导出/迁移。
- v1.0.0(2026-06-12)— 品牌重塑:agent-browser-stealth → chrome-use,去 fork 化,版本号重置为 1.0.0。
v0.27.0-fork.x(重塑品牌前的 fork 阶段)
- v0.27.0-fork.51(2026-06-12)— rustfmt 修复 issue #7 回归测试(CI 格式检查)。
- v0.27.0-fork.50(2026-06-11)— 标签页标题截断 + 多 agent/eval/type 文档。
- v0.27.0-fork.49(2026-06-11)— 内嵌 stealth-status + 多 agent 技能指引。
- v0.27.0-fork.48(2026-06-11)— iframe-proxy 开关 + stealth status。
- v0.27.0-fork.47(2026-06-11)— tab-drift 固定、
snapshot -c保留可交互元素、stale-ref 处理指引。 - v0.27.0-fork.46(2026-06-11)— 限制
--annotate图例数量。 - v0.27.0-fork.45(2026-06-11)—
pickcombobox 原子操作。 - v0.27.0-fork.44(2026-06-11)— eval 来源标记、
type --focused、humanize 参数校验警告。 - v0.27.0-fork.43(2026-06-11)— 一批 issue/Hermes 反馈修复(静默点击、live 环境、
eval --file、tab-list、文档)。 - v0.27.0-fork.42(2026-06-11)— 退出时关闭本会话拥有的标签页,不再遗留标签页。
- v0.27.0-fork.41(2026-06-11)— relay 静默自愈,异常时无需用户操作。
- v0.27.0-fork.40(2026-06-11)— 已安装扩展时不再回退到 consent 弹窗。
- v0.27.0-fork.39(2026-06-11)—
cookies set --curl保留完整 cookie 属性。 - v0.27.0-fork.38(2026-06-11)— 静默运行,不再抢占用户前台标签页。
- v0.27.0-fork.37(2026-06-11)— 完善 humanize(bbox 抖动 + 滚轮/拖拽缓动)。
- v0.27.0-fork.36(2026-06-11)— 类人输入 stealth(humanize)。
- v0.27.0-fork.35(2026-06-11)— 技能内嵌 Store 安装、反馈渠道、过期二进制提示。
- v0.27.0-fork.34(2026-06-11)— Chrome Web Store 上线:面向商店的强制安装 + 技能商店安装指引。
- v0.27.0-fork.33(2026-06-10)— 修复两处 Hermes 反馈的边角问题(非法选择器措辞、空 URL glob)。
- v0.27.0-fork.32(2026-06-10)— 修复 Hermes 发现的 CLI bug(
wait --url、find role、非法选择器等)。 - v0.27.0-fork.31(2026-06-10)— Chrome Web Store 提审就绪 + 两条安装路径。
- v0.27.0-fork.30(2026-06-10)— stealth:navigator 覆写放到 prototype 上而非实例上。
- v0.27.0-fork.29(2026-06-10)— 修复插件 overflowTest、免弹窗自动连接、ab-connect 更名+图标、README。
- v0.27.0-fork.28(2026-06-10)— 技能文档:默认有头模式、标签页分组。
- v0.27.0-fork.27(2026-06-10)— 禁止无头模式(stealth 要求始终有头运行)。
- v0.27.0-fork.26(2026-06-10)— stealth:
navigator.platform修复为 MacIntel(反检测修复)。 - v0.27.0-fork.25(2026-06-10)— 修复 relay 活性检测(本地回答
Browser.getVersion),不再引发重连风暴导致漂移。 - v0.27.0-fork.24(2026-06-10)— 被动标签页发现不再抢占当前标签页(按会话隔离控制)。
- v0.27.0-fork.23(2026-06-10)— 容忍 relay 返回的最简 targetInfo(扩展 connect 的 getTargets)。
- v0.27.0-fork.22(2026-06-09)— 扩展 connect 改用 relay URL,修复
--session connect挂起问题。 - v0.27.0-fork.21(2026-06-09)— 多客户端 relay(支持并发 agent)。
- v0.27.0-fork.20(2026-06-09)— 按会话分组标签页(ab-connect 0.4.0)。
- v0.27.0-fork.19(2026-06-09)— 新扩展 ID(Web Store 签名密钥)+ 商店感知安装。
- v0.27.0-fork.18(2026-06-09)— 扩展 connect:零 token 原生消息控制真实 Chrome + 点击可靠性 + eval-first/find-url/site-notes。
- v0.27.0-fork.17(2026-06-05)— eval-first 技能 + find-url(本地书签搜索)+ site-notes 约定。
- v0.27.0-fork.16(2026-06-05)— 点击可靠性(滚动到可视区 + DOM 回退)+ 技能文档(console 手动开启、CLICK_MODE、表单/隐藏输入 eval)。
- v0.27.0-fork.15(2026-06-04)— stealth 加固(惰性
Runtime.enable、原生时区/WebRTC、可选 canvas 噪声)+ 自适应 @ref 重定位。 - v0.27.0-fork.14(2026-06-01)— 升级修复 + CI 切到 Node 24。
- v0.27.0-fork.13(2026-06-01)—
--profile auto。 - v0.27.0-fork.12(2026-06-01)— 内嵌技能文档。
- v0.27.0-fork.11(2026-06-01)— FullLaunch 路径下 stealth 完整生效(此前只在部分启动路径生效)。
- v0.27.0-fork.10(2026-06-01)— 一批体验优化 + stealth 覆盖率/webdriver 处理。
- v0.27.0-fork.9(2026-06-01)— 常规修复迭代。
- v0.27.0-fork.8(2026-05-09)— 内置重试机制,应对短暂的遮挡层。
- v0.27.0-fork.7(2026-05-09)— 误点前先捕捉短暂的遮挡层。
- v0.27.0-fork.6(2026-05-09)— 收紧防御性 CDP 超时上限,修复误导性的 chrome://inspect 提示。
- v0.27.0-fork.5(2026-05-09)— 修复误导性警告 + connect 活性探测 +
wait @ref。 - v0.27.0-fork.4(2026-05-09)— 修复 SPA 点击竞态 + @ref 身份校验 +
wait --gone。 - v0.27.0-fork.3(2026-05-09)— SPA 点击竞态修复 +
wait --gone原语。 - v0.27.0-fork.2(2026-05-09)— 更友好的 find 报错 + 版本不匹配重启后恢复 URL。
- v0.27.0-fork.1(2026-05-09)— 与上游 v0.27.0 同步,支持 skills.sh。
更早历史
chrome-use 会定期把上游 agent-browser 的版本合并进来(v0.27–v0.31,比如 v0.30.0 的 --wait glob 支持、v0.29.0 的 sandbox 包发布元数据修复);chrome-use 自己在这之上做了大量独立开发,两条版本号并不同步。
更早的 v0.x 版本(v0.6.0 – v0.26.0,2026 年 1–4 月)继承自上游 agent-browser 基线,逐条列出意义不大,这里不再展开。