1. 项目定位与用途
OpenCLI 定位为"通用 CLI 中心与 AI 原生运行时",核心用途是将任何数字化服务(网站、Electron 应用、本地二进制工具)转化为标准化、确定性的命令行接口。它不仅是人类用户的高效自动化工具,更是 AI 代理与外部世界交互的统一入口。通过提供一致的命令语法、输出结构和发现机制,OpenCLI 消除了图形界面与脚本环境之间的鸿沟,使得复杂工作流可被简洁表达、复用和集成到更大自动化系统中。项目强调"确定性"——相同命令始终产生相同结构的输出,这使其天然适合管道操作、脚本编写和 CI/CD 环境。
2. 解决的问题
OpenCLI 系统解决三类问题:一是接口不统一,不同网站和应用各有独特交互方式,难以用统一脚本控制;二是状态维护困难,自动化需保持登录状态但直接处理凭证不安全;三是反自动化机制,许多网站检测并阻止机器人行为。此外,AI 代理缺乏与图形界面交互的标准能力。OpenCLI 通过适配器抽象层统一接口,复用用户已登录浏览器实例保证账户安全,内置全面反检测策略(修补 navigator.webdriver、伪造插件列表等),并为 AI 提供探索、学习和执行工具的标准路径(AGENT.md 集成),从而系统性地解决这些挑战。
3. 适用场景
适用场景包括:个人效率工具,如快速获取社交媒体热门内容、下载文章或媒体;AI 代理工作流,让 LLM 代理通过 opencli 技能直接操作浏览器或调用网站功能;开发与运维,将 gh、docker 等 CLI 工具注册到 OpenCLI 实现统一发现和管理;桌面应用自动化,通过 CDP 协议控制 Electron 应用(Cursor、Notion);研究与数据收集,利用确定性输出进行可重复的网络数据采集;CI/CD 集成,在流水线中运行可靠的自动化任务。项目特别适合需要频繁与多个网络服务交互、且要求稳定性和可维护性的自动化场景。
4. 安装方式
安装分为两步:首先通过 npm 全局安装 OpenCLI 核心:`npm install -g @jackwener/opencli`,要求 Node.js 20+ 环境。其次需安装浏览器桥接扩展,这是 OpenCLI 与 Chrome/Chromium 通信的桥梁:从 GitHub Releases 下载最新 `opencli-extension.zip`,解压后进入 `chrome://extensions`,启用开发者模式,点击"加载已解压的扩展程序"并选择解压目录。安装完成后运行 `opencli doctor` 自动诊断并启动所需服务(本地守护进程、扩展连接等)。项目还提供 Bun 运行时支持,可通过 `bun src/main.ts` 直接运行开发版本。
5. 使用方式
基础使用:`opencli list` 查看所有可用命令;`opencli <site> <command>` 执行适配器,如 `opencli bilibili hot --limit 5`;`opencli doctor` 诊断连接问题。高级用法:`opencli browser` 启动实时浏览器控制模式,支持点击、输入、截图等交互;`opencli register <cli>` 将本地二进制工具注册为 OpenCLI 命令;`opencli record` 开始录制浏览器操作并生成适配器。AI 代理集成:通过 `skills/opencli-explorer/SKILL.md` 和 `skills/opencli-browser/SKILL.md` 两个技能点,代理可自动发现网站 API、生成适配器或直接操作浏览器。适配器开发:将 `.ts` 文件放入 `clis/` 文件夹即可自动注册,项目提供动态加载机制。
6. 补充说明与实现特点
OpenCLI 采用模块化架构,核心模块包括 browser(浏览器桥接与 CDP 控制)、download(文章与媒体下载)、pipeline(数据处理管道)和 clis(适配器动态加载系统)。技术上,它使用 Chrome DevTools Protocol 与浏览器通信,通过 JavaScript 注入实现 DOM 快照、表单状态提取和反检测脚本。适配器系统支持热加载,开发者只需放置 TypeScript 文件即可注册新命令。项目包含完整的测试套件(Vitest)和评估框架(autoresearch 目录),用于衡量适配器质量和浏览器操作可靠性。值得注意的是,OpenCLI 设计为"零 LLM 成本"——所有适配器执行不消耗 token,仅在生成阶段可能涉及 AI。输出始终为结构化 JSON,确保可管道化和脚本友好性。