核心用法
JS Eyes是OpenClaw生态的浏览器自动化中间件,架构分为三层:Node.js服务端(js-eyes核心)、浏览器扩展(Chrome/Firefox插件)和OpenClaw插件(openclaw-plugin)。部署后,用户可通过OpenClaw调用js_eyes_*系列工具实现网页自动化,包括标签管理(get_tabs/switch_tab)、页面操作(open_url/click/type)、脚本执行(execute_script)及文件上传等。
安装需执行:1)在技能根目录运行npm install(要求Node.js 22+);2)将{baseDir}/openclaw-plugin注册到OpenClaw的plugins.load.paths;3)配置~/.js-eyes/config/config.json启用security.allowRawEval: true;4)安装浏览器扩展并同步Server Token。支持"ClawHub bundle"和"源码开发"两种部署模式,后者支持热重载。
扩展技能系统
核心设计采用"最小内核+动态扩展":基础安装仅含核心协议,功能通过skills/目录下的扩展技能动态加载。技能来源分两类:
- 注册表技能:通过
js_eyes_discover_skills发现 →js_eyes_install_skill下载 →approve→enable流程安装 - 外部自定义技能:使用
js-eyes skills link <路径>零重启挂载,编辑skill.contract.js实时热重载
所有技能需包含skill.contract.js定义工具集、package.json声明依赖,遵循examples/js-eyes-skills/js-hello-ops-skill/的规范结构。
显著优点
零重启热加载架构:2.5.2+版本通过chokidar监控配置与技能目录,技能增删改、安全策略调整(egressAllowlist/toolPolicies等)均无需重启OpenClaw,开发迭代效率极高。
分层安全模型:提供token认证、匿名连接控制、allowRawEval脚本执行开关、出站策略(egress policy)、敏感工具 consent 审批、域级cookie保护等多层防护,且支持运行时热重载安全策略。
双轨技能管理:注册表技能(完整性校验、自动更新)与外部技能(任意目录链接)并存,兼顾可信分发与灵活定制。
Native Messaging集成:2.4.0+支持通过js-eyes native-host install自动同步Server Token,消除手动配置的繁琐与泄露风险。
潜在缺点与局限性
安全妥协设计:标准部署需启用allowRawEval: true,允许执行任意JavaScript代码,虽被doctor标记为不安全,但这是功能完整性的必要权衡。生产环境若禁用将丧失execute_script能力。
Node.js版本硬门槛:要求Node.js 22+,旧版本环境需额外升级步骤。
浏览器扩展分离:扩展需单独从GitHub Releases安装,非一键集成,首次连接易因Token配置失误失败。
工具策略摩擦:敏感工具默认进入confirm状态等待人工审批,自动化流水线需预配置toolPolicies或实时处理consent队列,增加运维复杂度。
外部技能无完整性保护:extraSkillDirs挂载的技能跳过.integrity.json校验,依赖操作系统的权限控制,存在供应链风险。
适合人群
- Web自动化开发者:需通过AI操控浏览器完成测试、数据采集、工作流自动化的工程师
- OpenClaw高级用户:已运行OpenClaw CLI/MCP,寻求扩展浏览器能力的现有用户
- 技能作者:计划开发自定义自动化技能并分发的开发者(需遵循
skill.contract.js规范)
不适合:无Node.js环境的纯浏览器用户、对eval执行敏感的安全极客、寻求无代码解决方案的非技术用户。
常规风险
供应链攻击面:技能热加载机制若被恶意利用,攻击者可通过写入extraSkillDirs或替换skills/目录文件注入恶意代码。建议启用requireLockfile、定期运行js-eyes skills verify、限制配置目录权限。
Token泄露风险:Server Token是WebSocket认证凭证,若通过截图/日志泄露,本地18080端口可能被未授权访问。建议绑定localhost、设置强token、启用allowAnonymous: false。
浏览器沙箱逃逸:execute_script在网页上下文运行,虽受同源策略限制,但XSS漏洞可能导致权限提升。建议配合security.allowedOrigins严格限制自动化目标域。
策略误拦截:egress策略过于严格时,正常网页导航可能被阻断,需理解pending-egress机制并及时审批或配置allowlist。