一场从头到尾的实战排查带你彻底搞懂agent-browser在 Windows 上的启动问题agent-browser——2026最火最屌的浏览器自动化工具关于openclaw-skills的介绍这篇讲得不错推荐OpenClaw最强Agent Skills推荐从“会聊“到“会干“你的AI只差一个插件附完整安装教程_openclaw skill 推荐-CSDN博客https://blog.csdn.net/weixin_42125125/article/details/159096422报错如下agent-browser是一个优秀的浏览器自动化 CLI 工具但在 Windows 环境下经常会碰到这个经典错误✗ Chrome exited early (exit code: 0) without writing DevToolsActivePort (also tried parsing stderr) Chrome exited before providing DevTools URL (no stderr output from Chrome) Hint: try passing --args --no-sandbox if Chrome crashes silently in your environment本文记录了一次完整的排查过程从现象到原因再到多种解决方案彻底解决这个问题本人一步步排雷没有在网站找到完整记录本篇一次性码全一、问题现象cmd执行命令agent-browser open https://baidu.com任务管理器中可以看到多个chrome.exe进程一闪而过或停留浏览器窗口可能短暂弹出但立即关闭终端输出上述DevToolsActivePort错误即使加上--args --no-sandbox依然失败二、初步分析与常用手段2.1 运行 doctor 诊断agent-browser doctor如果 doctor 能成功启动 Chrome说明 Chrome 本身可用问题出在open命令的守护进程模式上。2.2 关闭残留守护进程agent-browser close --all2.3 强制清理 Chrome 进程taskkill /f /im chrome.exe taskkill /f /im chromedriver.exe2.4 使用 --no-sandbox 参数agent-browser open https://baidu.com --headed --args --no-sandbox很多情况下这一步就能解决但本人试过很多次依然失败。三、深度排查找出真正的“元凶”3.1 检查端口占用agent-browser默认使用9222端口与 Chrome DevTools 通信。检查端口是否被占用netstat -ano | findstr :9222如果看到类似输出TCP 127.0.0.1:9222 0.0.0.0:0 LISTENING 36404说明端口被其他进程PID 36404占用了导致agent-browser无法绑定。解决结束占用进程taskkill /f /pid 364043.2 路径与权限问题如果在C:\Windows\System32目录下执行命令Chrome 可能因权限不足无法写入DevToolsActivePort临时文件。解决方案切换到普通用户目录-- 本人实踩cd %USERPROFILE%3.3 验证 Chrome 独立运行能力手动启动 Chrome 并开启调试端口D:\chrome-win64\chrome.exe --remote-debugging-port9222 --user-data-dir%TEMP%\chrome-test-profile --no-sandbox --disable-gpu然后在另一个终端访问http://localhost:9222/json/version如果能返回 JSON 信息说明 Chrome 调试模式正常。四、终极解决方案手动连接模式✅️⭐⭐建议在此之间试一下不要用管理员模式启动试一下普通启动命令行执行一下open看看行不行当自动启动模式屡屡失败时可以采用“手动启动 Chrome agent-browser 连接”的方式绕过 agent-browser 自身的启动逻辑。步骤 1手动启动带调试端口的 ChromeD:\chrome-win64\chrome.exe --remote-debugging-port9222 --user-data-dir%TEMP%\chrome-profile --no-sandbox --disable-gpu保持该终端窗口不关闭会弹出一个空白的 Chrome 窗口步骤 2获取 WebSocket URL在另一个终端中执行或浏览器访问curl http://localhost:9222/json/version返回的 JSON 中包含webSocketDebuggerUrl字段复制其完整值例如ws://localhost:9222/devtools/browser/8e6b8b9a-xxxx-xxxx-xxxx-xxxxxxxxxxxx步骤 3设置环境变量并运行 agent-browserset AGENT_BROWSER_WS_URLws://localhost:9222/devtools/browser/8e6b8b9a-... agent-browser open https://baidu.com --headed此时agent-browser不会再尝试启动 Chrome而是直接连接到已有浏览器实例成功打开目标页面为什么这个方案有效绕过了agent-browser的自动启动逻辑避开了沙箱、权限、端口冲突等问题手动启动的 Chrome 已经稳定运行agent-browser只是“挂载”上去连接方式不依赖DevToolsActivePort文件自然不再报错五、后续使用建议⭐⭐⭐⭐⭐5.1 半自动脚本化推荐创建一个start-chrome.bat脚本echo off start /b D:\chrome-win64\chrome.exe --remote-debugging-port9222 --user-data-dir%TEMP%\chrome-profile --no-sandbox --disable-gpu timeout /t 2 for /f tokens2 delims: %%a in (curl -s http://localhost:9222/json/version ^| findstr webSocketDebuggerUrl) do set WS_URL%%a set WS_URL%WS_URL:% set WS_URL%WS_URL:wsws% set AGENT_BROWSER_WS_URL%WS_URL% echo Connected to %AGENT_BROWSER_WS_URL%每次运行该脚本后Chrome 启动且环境变量自动设置之后在当前终端直接使用agent-browser即可。六、总结问题现象可能原因解决方案Chrome 启动后立即退出报 DevToolsActivePort 错误沙箱权限不足、端口冲突、残留进程使用--no-sandbox关闭残留进程切换用户目录doctor 正常但 open 失败守护进程模式与自动启动不兼容使用agent-browser close --all后重试手动连接成功自动启动始终失败Windows 系统权限限制或安全软件拦截采用手动连接模式并脚本化每次手动连接需要重新获取 WebSocket URLchrome 每次启动生成不同的 session ID编写脚本自动提取见上文核心启示当工具自身的自动启动机制失效时手动启动浏览器 工具连接是一条通用的救命稻草不仅适用于 agent-browser也适用于 Puppeteer、Playwright 等类似场景。常用命令方便直接复制使用taskkill /f /im chrome.exe taskkill /f /im chromedriver.exe taskkill /f /im node.exe agent-browser close --all set AGENT_BROWSER_CHROME_PATHD:\chrome-win64\chrome.exe echo %AGENT_BROWSER_CHROME_PATH% agent-browser close agent-browser open https://baidu.com --headed --args --no-sandbox --disable-gpu --remote-allow-origins* agent-browser open https://blog.csdn.net/ --headed C:\Windows\System32set AGENT_BROWSER_WS_URLws://localhost:9222/devtools/browser C:\Windows\System32agent-browser open https://baidu.com --headed ✗ Chrome exited early (exit code: 0) without writing DevToolsActivePort (also tried parsing stderr) Chrome exited before providing DevTools URL (no stderr output from Chrome) Hint: try passing --args --no-sandbox if Chrome crashes silently in your environment