
在信创环境里给 OpenClaw 配一个能用的 Chromium听起来就是装个浏览器的小事但真上手做一遍从 CPU 架构、软件源、依赖库到启动参数每一步都可能把人卡住半天。这篇文章是我在银河麒麟、统信 UOS 这类国产系统上给 OpenClaw 接入 Chromium 的完整实操记录包含安装方式选型、启动参数解释、依赖和字体处理、踩坑排查还有 OpenClaw 侧如何顺利驱动浏览器的细节。适合自己机器上跑 OpenClaw、或者公司内部想用信创机器做个人 AI 助理和网页自动化任务的人参考照着做基本能一次跑通。1. OpenClaw 要浏览器做什么为什么偏选 Chromium1.1 OpenClaw 的浏览器需求到底从哪来OpenClaw 这类本地部署的 AI 助理智能体平台核心工作机制是你给它一个目标它自己拆解任务、调用工具、执行命令然后把结果整理给你。它的配置目录一般在~/.openclaw下面里面会有 workspace工作目录、skills技能包、exec-approvals.json命令执行授权文件这些内容。你可以把它理解成一个住在你电脑里的数字员工而浏览器就是这个员工的手和眼睛。浏览器在 OpenClaw 里的用途一般分几类第一类是网页内容抓取比如让它去读某个页面的信息、总结文章第二类是表单操作和页面交互例如登录后台、点按钮、抓取接口数据第三类是 Computer Use 模式也就是让 AI 像人一样看屏幕、点鼠标、敲键盘来操作软件。前两类大多通过 Playwright 或 Puppeteer 这类自动化框架驱动浏览器完成第三类则往往需要浏览器以远程调试模式CDPChrome DevTools Protocol暴露出来供上层指令调用。所以 OpenClaw 需要的不是一个能打开网页给人看的浏览器而是一个能被程序稳定控制的浏览器这一点决定了后面很多配置思路。1.2 信创环境里Chromium 是比 Chrome 更靠谱的选项有些朋友会问为什么不直接用 Chrome在信创环境里这个问题会自己消失。Chrome 是闭源软件官方只提供 x86 和 ARM 的有限版本龙芯 LoongArch 架构上根本没有官方 Chrome 可用。更麻烦的是很多信创机器处在内网环境Chrome 的安装包和更新源都不方便获取。Chromium 则没有这些限制它是开源项目各架构都有对应构建产物源码也能自己编译离线部署灵活得多。再从技术匹配度看Playwright 和 Puppeteer 的内核就是 Chromium驱动起来最顺滑CDP 协议支持完整、无头模式成熟、截图和网络拦截都好使。Firefox 虽然也能做自动化但很多 AI 助理生态里的 browser skill 默认就是按 Chromium 写的用 Firefox 往往要多改配置甚至某些功能根本不支持。所以不管从架构覆盖范围还是从和 OpenClaw 生态的兼容性来看Chromium 都是信创环境下的最优解这一点基本不用纠结。2. 动手前先摸底确认系统架构和软件源避免装错包2.1 三行命令搞清 CPU 架构和发行版版本信创环境最大的特点是碎片化CPU 可能是兆芯、海光x86 指令集、飞腾、鲲鹏ARM 指令集、龙芯LoongArch 指令集系统可能是银河麒麟、中标麒麟、统信 UOS、openKylin甚至还有各种改造版 CentOS。不同组合下软件包的获取方式和兼容性差别很大所以动手前一定先搞清楚自己手里是什么机器。上机器先跑这三条命令uname -m cat /etc/os-release lscpu | grep 架构uname -m输出的是内核架构x86_64表示标准 x86 64 位aarch64表示 ARM 64 位loongarch64表示龙芯架构。cat /etc/os-release能看出具体是哪个发行版、什么版本号。常见的搭配大概是这样CPU 平台架构常见系统兆芯、海光、Intel、AMDx86_64银河麒麟、UOS、CentOS 兼容版飞腾、鲲鹏、瑞芯微aarch64银河麒麟 ARM 版、UOS ARM 版龙芯三号系列loongarch64麒麟 LoongArch 版、UOS LoongArch 版我就犯过一个低级错误拿了一台 x86 机器上编译好的 Chromium 压缩包拷到飞腾 ARM 机器上一执行直接报cannot execute binary file。这不是 Chromium 的问题是架构不匹配。所以装机前先花两分钟确认uname -m能省下后面一堆排查时间。2.2 软件源策略在线和离线两条路都要心里有数确认完架构下一步解决从哪拿软件包。信创环境分成两类典型场景一类是能联网的一类是完全内网的。能联网的情况最简单直接配好系统自带的软件源就行。麒麟和 UOS 默认源里通常就有 Chromium 相关的包如果默认源速度慢可以换成配置文档里指定的国内镜像源。改源的时候注意备份原来的sources.list不同系统源格式有差异麒麟的源和 Ubuntu 不完全一样别直接拿 Ubuntu 的源硬套。内网环境就麻烦一点通常的做法是找一台同架构、同系统的摆渡机在上面下载好 deb 包或离线仓库再用 U 盘或内网文件服务拷贝进去。这一步最核心的原则就是必须保证架构一致、系统版本相近否则在摆渡机上能装上目标机上一样跑不起来。后面第 3 节我会给出具体的离线安装命令。3. 安装 Chromium 的三种方式按你的场景选3.1 发行版仓库安装最快但版本可能偏旧在能联网的信创机器上第一选择永远是用系统仓库安装命令非常简单apt update apt install -y chromium chromium-browser有些 UOS 或麒麟系统上包名可能只有一个装完用chromium --version或chromium-browser --version验证一下。发行版仓库里的 Chromium 版本一般不会太新但胜在稳定和系统自带库的依赖匹配度高不会出现装完缺这个库缺那个库的情况。对于 OpenClaw 跑普通网页任务来说版本旧一点完全够用没必要追求最新。有个细节部分麒麟系统默认的软件源里没有 Chromium需要去麒麟软件商店或者厂商提供的扩展源里找。如果你配置完源之后apt search chromium搜不到先检查一下源列表里是不是有对应的软件源行没有就按厂商文档加上不要硬从第三方源拉包否则依赖关系很容易乱。3.2 Playwright 内置 Chromium和 OpenClaw 匹配度最高如果你打算用 OpenClaw 做网页自动化我强烈建议走 Playwright 这一条路。因为 Playwright 内置的 Chromium 版本是经过配套测试的自动化接口最稳。安装方式是pip3 install playwright playwright install chromium --with-deps第一条命令装 Playwright 的 Python 库第二条命令会把配套的 Chromium 浏览器下载到~/.cache/ms-playwright目录下--with-deps参数会自动检测系统缺哪些运行库并尝试补齐。装完之后可以这样验证python3 -c from playwright.sync_api import sync_playwright with sync_playwright() as p: b p.chromium.launch(args[--no-sandbox]) print(b.version) b.close()如果能看到输出版本号说明 Playwright 已经能驱动浏览器了后面 OpenClaw 调用起来就很顺。不过在信创系统上--with-deps经常不灵因为 Playwright 的依赖检测脚本主要适配 CentOS、Ubuntu 这些主流发行版遇到麒麟、UOS 这种半 Ubuntu 半自主的系统它可能识别不出来或者找不到包名。这种情况不用慌手动把依赖装上就行具体缺哪些库、怎么装我在第 4.2 节详细讲。3.3 离线 deb 包与 AppImage断网环境的两张底牌完全内网的信创机器靠摆渡是常态。我最推荐的离线方案是用 deb 包。在另一台能联网且架构一致的机器上执行apt download chromium拿到chromium_xxx_amd64.deb或arm64、loongarch64后拷到目标机执行dpkg -i chromium_*.deb apt -f install -ydpkg -i装完如果报依赖缺失第二句apt -f install -y会自动把缺的依赖补齐前提是系统源里能解析到这些依赖包。如果连依赖包都无法在线安装那就得把依赖一并apt depends chromium查出来逐个apt download做成一个离线依赖目录一起拷过去。另一张底牌是 AppImage 免安装包。AppImage 的好处是不解压不安装chmod x之后就能跑非常适合拷过去就能用的离线场景。缺点是它依赖系统的 FUSE 组件先要apt install -y libfuse2或者fuse然后在有图形界面的系统上执行chmod x Chromium_xxx.AppImage ./Chromium_xxx.AppImage --no-sandboxAppImage 里往往自带了不少运行库所以对系统依赖要求低但启动速度和内存占用会略差一些。如果只是应急用可以长期给 OpenClaw 当驱动浏览器还是正规 deb 或 Playwright 装的版本更稳。4. 配置 Chromium让 OpenClaw 能稳定驱动它4.1 启动参数怎么给no-sandbox、远程调试端口、headlessChromium 装好只是第一步真正决定 OpenClaw 能不能顺利驱动它的是启动参数。我在信创服务器上最常用的一套启动命令是这样的chromium --headlessnew \ --no-sandbox \ --disable-dev-shm-usage \ --disable-gpu \ --remote-debugging-port9222 \ --user-data-dir/opt/openclaw/chromium-profile \ --no-first-run \ --no-default-browser-check每个参数都有它存在的理由不是随手加上去的--no-sandbox是因为信创环境里我们经常直接用 root 用户跑服务Chromium 的 sandbox 机制在 root 下会直接拒绝启动报Running as root without --no-sandbox is not supported。加了这个参数能跑起来但要注意这是有安全代价的后面第 6.2 节我会专门讲怎么权衡。--headlessnew表示无头模式适合没有显示器的服务器。如果你的信创机器插了显示器、想亲眼看看页面渲染效果可以去掉这个参数改成有头模式Chromium 会弹出一个真实窗口排障时特别直观。--remote-debugging-port9222是给 CDP 用的。OpenClaw 或者其他上层工具可以通过访问http://127.0.0.1:9222来连接、控制这个浏览器。启动之后用curl http://127.0.0.1:9222/json/version验证如果返回一长串包含Browser和webSocketDebuggerUrl的 JSON说明调试端口已经通了。--disable-dev-shm-usage解决的是容器或小内存机器上/dev/shm空间太小导致页面崩溃的问题。很多信创机器默认/dev/shm只有 64MBChromium 一开多标签就容易崩加上这个参数让浏览器把临时文件写到磁盘稳很多。--user-data-dir指定用户数据目录相当于给这个浏览器单独一个家。好处是隔离了和桌面浏览器之间的配置冲突也方便以后直接删目录清缓存我习惯放在/opt/openclaw/下面统一管理。4.2 依赖、字体和缺库问题最容易翻车的地方信创系统上装完 Chromium 双击没反应或者命令行启动直接报error while loading shared libraries十有八九是缺运行库。我遇到过的缺库组合包括libnss3、libgbm1、libasound2、libatk-bridge2.0-0、libgtk-3-0、libx11-xcb1这些。最省事的做法是把常见依赖一把梭全装上apt install -y libnss3 libgbm1 libasound2 libatk-bridge2.0-0 \ libgtk-3-0 libx11-xcb1 libxcomposite1 libxdamage1 \ libxrandr2 libxkbcommon0 libpango-1.0-0 libcups2 libdrm2装完再启动一次如果还有缺库的报错它会明确告诉你缺哪个.so文件用apt search找到对应的包名装进去就行。千万不要图省事去网上随便下载.so文件手动扔进系统目录那样会把系统的库依赖关系搞乱后来的问题更难查。另一个特别容易被忽略的是中文字体。信创机器默认字体经常不全Chromium 打开中文网页直接显示成一个个方块。这不是浏览器坏了是系统里没有 CJK 字体。装一下字体包apt install -y fonts-noto-cjk fonts-wqy-zenhei fc-list :langzh第二条命令能列出系统里可用的中文字体看到 Noto Sans CJK 或文泉驿就说明 OK 了。这个坑在 OpenClaw 抓取中文网页截图时尤其致命页面内容读起来全是乱码AI 理解出来的内容自然也全错。4.3 让 OpenClaw 找到浏览器环境变量与配置文件浏览器本身能跑起来之后接下来要让 OpenClaw 找到它。不同版本的 OpenClaw 配置方式略有差异但最通用、最不容易踩坑的方式是通过环境变量。在 OpenClaw 的启动脚本或 systemd 服务里加上export CHROME_PATH/usr/bin/chromium export PLAYWRIGHT_BROWSERS_PATH/root/.cache/ms-playwrightCHROME_PATH告诉上层工具用哪个 Chromium 可执行文件PLAYWRIGHT_BROWSERS_PATH告诉 Playwright 去哪个目录找它内置的浏览器。如果你用第 3.2 节的方式装的 Playwright第二个变量通常不需要手动设默认路径就是对的但如果你把 Chromium 装到了非标准路径或者想强制 OpenClaw 使用系统仓库里那个 ChromiumCHROME_PATH就非常关键。改完环境变量一定要重启 OpenClaw 的进程光跑一遍export是不生效的。另外要注意 OpenClaw 的命令执行需要授权它的~/.openclaw/exec-approvals.json文件里会记录哪些命令共被批准执行。如果 OpenClaw 需要直接调用chromium命令或者跑 Playwright 脚本第一次会停下来等你确认界面上会提示存在 exec approvals 相关文件并询问是否放行。你可以在配置里提前把相关命令路径加入白名单或者直接在任务里同意否则任务会一直卡在等待授权这一步。具体格式以你用的 OpenClaw 版本文档为准但思路是浏览器要能被找到命令要能被放行这两点同时满足OpenClaw 才真正用得上这个浏览器。5. 完整验证流程与高频问题排查5.1 从启动浏览器到 OpenClaw 下发任务完整链路怎么测配置完不能直接说好了必须走一遍完整链路验证。我的标准流程分四步第一步确认 Chromium 能启动并监听调试端口。命令行执行第 4.1 节那串命令然后另开一个终端跑curl -s http://127.0.0.1:9222/json/version能返回 JSON 就说明浏览器进程正常、CDP 端口可用。第二步验证 Playwright 能驱动它。写一个最简单的最小脚本import asyncio from playwright.async_api import async_playwright async def main(): async with async_playwright() as p: browser await p.chromium.launch( executable_path/usr/bin/chromium, headlessTrue, args[--no-sandbox, --disable-dev-shm-usage] ) page await browser.new_page() await page.goto(https://example.com, timeout30000) print(页面标题:, await page.title()) await page.screenshot(path/tmp/openclaw-test.png) await browser.close() asyncio.run(main())如果能看到页面标题同时在/tmp/下生成了截图说明 Playwright 通路是通的。这一步的意义是把 OpenClaw 从验证链路里暂时摘出去单独确认浏览器本身没问题。如果这一步都不过后面 OpenClaw 报什么错都先别信问题大概率在浏览器侧。第三步在 OpenClaw 里下发一个最简单任务比如打开 example.com 并告诉我页面标题。观察它是能直接完成还是会卡在授权或找不到浏览器。如果卡住优先去看~/.openclaw下的日志和执行审批配置。第四步做一次真实业务任务比如抓取某个内部系统的列表页并总结。只有这一步通过才算真正OpenClaw 可用。5.2 高频问题速查表直接对着排查我自己在信创环境里折腾 ChromiumOpenClaw 时把遇到过的典型问题整理成了下面这个表你遇到类似现象可以直接对着查现象原因处理方法启动报 Running as root without --no-sandboxroot 用户没加 sandbox 豁免参数启动参数加--no-sandbox报 error while loading shared libraries缺运行库按 4.2 节把依赖库装齐页面白屏或中文全变方块缺中文字体安装 fonts-noto-cjk、文泉驿开多个标签后页面崩溃/dev/shm空间不足加--disable-dev-shm-usage9222 端口被占用之前的浏览器进程没退干净ps auxOpenClaw 任务一直卡在等待授权exec-approvals 没有放行相关命令在 OpenClaw 配置中批准 chromium/playwright 命令CDP 连接失败但浏览器在跑浏览器和调用方不在同一网络命名空间确认端口绑定的是 127.0.0.1 且在同一台机器/容器控制台大量 GPU 报错无 GPU 或驱动不兼容加--disable-gpu忽略即可5.3 Rockchip 硬件解码与 GPU 相关的一个特殊话题信创的 ARM 机器里瑞芯微 Rockchip 平台的出货量很大网上也经常看到linux 下 chromium rockchip 硬件解码这类讨论。原理上这类 ARM 平台可以通过 V4L2/VA-API 让 Chromium 调用 GPU 的硬件解码能力来看视频相关参数通常是启用 VaapiVideoDecoder 特性并设置LIBVA_DRIVER_NAMEv4l2之类的环境变量。如果你是在信创桌面上用 Chromium 看视频这套东西值得折腾一下效果很明显。但如果你和我一样是给 OpenClaw 当自动化浏览器用我诚恳建议别碰硬件解码直接--disable-gpu就行。原因很简单AI 助理的网页任务以抓取、填表、点击为主根本不需要视频解码开了硬件加速反而多引入一层驱动兼容风险。信创平台的 GPU 驱动参差不齐一个内核版本升级可能就让之前的 VA-API 配置失效。稳定压倒一切自动化场景下关掉 GPU 加速是性价比最高的选择。6. 我在信创OpenClaw 这条路上踩过的坑6.1 坑一ARM 上 Playwright 浏览器版本别乱升级这是我最想提醒你的一点。在飞腾或鲲鹏机器上Playwright 默认下载的 Chromium 版本是经过对应系统版本测试的一旦你手动升级了 Playwright 或者重新安装了一个更新版本的 Chromium很可能会发现浏览器起不来。原因是新版 Chromium 对 glibc 版本有硬性要求而信创系统的 glibc 往往停留在比较旧的版本两者不匹配启动即崩溃。我后来学乖了在信创环境里锁定 Playwright 和浏览器的版本号不随意升级。如果必须升级先看一眼系统的 glibc 版本ldd --version再决定。这个问题在内网环境更隐蔽因为有时候你以为升级成功了实际上下载失败用了缓存旧包结果行为变得不可复现。我的习惯是每次操作前把版本信息记录到笔记里出了问题好回退。6.2 坑二root 环境下的 sandbox 问题不能只靠加参数信创服务器上很多人图省事直接 root 跑服务Chromium 在 root 下必须加--no-sandbox才能启动。但我必须说得直白一点--no-sandbox意味着 Chromium 失去了进程隔离保护如果它访问的网页里有恶意脚本攻击面会大很多。虽然 AI 助理任务访问的大多是受信任页面但风险控制不能偷懒。我的建议是双管齐下优先给 OpenClaw 和 Chromium 单独建一个普通用户用sudo -u openclaw或者 systemd 的User指令来跑这样大部分情况下不需要加--no-sandbox安全性好很多。如果受限于环境必须 root那就在网络上做隔离比如 Chromium 只通过内网代理访问必要的地址不要裸奔公网。安全不是加分项是底线。6.3 坑三给 OpenClaw 预留一个可视化调试环境无头模式跑自动化任务很省资源但真出问题的时候看不见画面会让排查难度直线上升。我的做法是准备一个带显示器的调试环境或者用 Xvfb 虚拟出一个显示服务apt install -y xvfb Xvfb :99 -screen 0 1280x1024x24 export DISPLAY:99 chromium --remote-debugging-port9222 --user-data-dir/opt/openclaw/chromium-profile这样 Chromium 就走有头模式只是把屏幕画到虚拟显示上。需要看页面时通过 Chrome 的 DevTools 远程调试在本地浏览器里打开http://信创机器IP:9222就能看到页面实时状态。这个技巧在排查为什么页面元素定位不到为什么截图是空白这类问题时特别管用。生产上还是用 headless但排障时一定要有可视化的眼睛。6.4 坑四日常维护要懂得给 Chromium 减负Chromium 跑久了会产生大量缓存、Cookie、Service Worker 数据如果你给它指定了独立的--user-data-dir这个目录会越来越大。我见过一台信创机器上/opt/openclaw/chromium-profile撑到好几个 GB 的情况磁盘小一点的机器直接被拖垮。我的维护建议是写个简单的定时任务每周清理一次这个目录或者干脆在 OpenClaw 任务量小的时候删掉重建反正自动化浏览器又不需要保留登录状态重建成本很低。另外不要在同一台机器上同时跑多个 Chromium 实例用同一个user-data-dir会报锁冲突给自动化任务带来莫名其妙的失败。多任务就用多端口、多目录把它们隔离开。OpenClaw 相关的 skill 升级之后也要顺手验证一遍浏览器通路因为 skill 里可能引用了新的浏览器参数或启动方式不验证就会在正式任务里突然翻车。说到底信创环境里给 OpenClaw 装 Chromium真正的难点从来不是下载安装这一步而是装完之后你能不能说清楚它在什么架构上跑、依赖了哪些库、用什么参数启动、OpenClaw 怎么找到它。把这几个问题理清楚后面所有的自动化任务都建立在一个稳固的地基上。我个人现在每部署一台新机器都会把这些信息写成一个简短的部署记录下次再遇到同类问题直接翻笔记而不是重新踩一遍坑。希望这篇文章能帮你少走我走过的这些弯路。