jackwener/opencli

GitHub: jackwener/opencli

一个将网站、Electron 应用和本地命令行工具统一转化为标准化 CLI 的 AI 原生运行时,让 AI Agent 能够无缝发现、学习和执行各类工具。

Stars: 12438 | Forks: 1087

# OpenCLI [![中文文档](https://img.shields.io/badge/docs-%E4%B8%AD%E6%96%87-0F766E?style=flat-square)](./README.zh-CN.md) [![npm](https://img.shields.io/npm/v/@jackwener/opencli?style=flat-square)](https://www.npmjs.com/package/@jackwener/opencli) [![Node.js Version](https://img.shields.io/node/v/@jackwener/opencli?style=flat-square)](https://nodejs.org) [![License](https://img.shields.io/npm/l/@jackwener/opencli?style=flat-square)](./LICENSE) 一款 CLI 工具,可将**任意网站**、**Electron 应用**或**本地 CLI 工具**转化为命令行接口 —— Bilibili、知乎、小红书、Twitter/X、Reddit、YouTube、Antigravity、`gh`、`docker` 以及[更多](#built-in-commands) —— 由浏览器会话复用和 AI 原生发现驱动。 **为 AI Agent 而生** — 加载 [`opencli-operate` skill](./skills/opencli-operate/SKILL.md),即可赋予任何 AI agent(Claude Code、Cursor)直接的浏览器控制能力。操作任意网站,然后将这些交互固化为可复用的 CLI 命令。在 `AGENT.md` 或 `.cursorrules` 中配置 `opencli list`,让 AI 自动发现所有可用工具。 **CLI Hub** — 注册任何本地 CLI(`opencli register mycli`),让 AI agent 能够像调用内置命令一样发现并调用它们。通过包管理器自动安装缺失的工具(例如,如果未安装 `gh`,`opencli gh ...` 会先运行 `brew install gh`,然后无缝重新执行)。 **Electron 应用的 CLI** — 将任何 Electron 应用转化为 CLI 工具。在终端中重组、编写脚本并扩展如 Antigravity Ultra 等应用。AI agent 现在可以原生控制其他 AI 应用。 ## 亮点 - **CLI 控制 Electron** — CLI 化应用,如 Antigravity Ultra!现在 AI 可以原生控制自己。 - **浏览器自动化** — `operate` 赋予 AI agent 直接的浏览器控制能力:点击、输入、提取、截图 —— 任何交互,完全可脚本化。 - **网站 → CLI** — 将任何网站转化为确定性的 CLI:70+ 预构建适配器,或使用 `opencli record` 固化你自己的操作。 - **账号安全** — 复用 Chrome/Chromium 的登录状态;你的凭据永远不会离开浏览器。 - **内置反检测** — 修补 `navigator.webdriver`,存根 `window.chrome`,伪造插件列表,清理 ChromeDriver/Playwright 全局变量,并从 Error 堆栈跟踪中剥离 CDP 帧。每一层都 baked 了广泛的反指纹和风控规避措施。 - **AI Agent 就绪** — `explore` 发现 API,`synthesize` 生成适配器,`cascade` 寻找认证策略,`operate` 直接控制浏览器。 - **外部 CLI Hub** — 发现、自动安装并将命令传递给任何外部 CLI(gh、obsidian、docker 等)。零配置。 - **自愈式设置** — `opencli doctor` 诊断并自动启动守护进程、扩展和实时浏览器连接。 - **动态加载器** — 只需将 `.ts` 或 `.yaml` 适配器放入 `clis/` 文件夹即可自动注册。 - **零 LLM 成本** — 运行时不消耗 Token。运行 10,000 次也不用付费。 - **确定性** — 相同的命令,相同的输出模式,每次都是。可管道化、可脚本化、CI 友好。 - **广泛覆盖** — 跨全球和中国平台的 73+ 个站点(Bilibili、知乎、小红书、Reddit、HackerNews 等),以及通过 CDP 控制的桌面 Electron 应用。 ## 快速开始 ### 1. 安装 Browser Bridge 扩展 1. 前往 GitHub [Releases 页面](https://github.com/jackwener/opencli/releases)下载最新的 `opencli-extension.zip`。 2. 解压文件并打开 `chrome://extensions`,启用右上角的 **开发者模式 (Developer mode)**。 3. 点击 **加载已解压的扩展程序** 并选择解压后的文件夹。 ### 2. 安装 OpenCLI **通过 npm 安装(推荐)** ``` npm install -g @jackwener/opencli ``` ### 3. 验证与尝试 ``` opencli doctor # Check extension + daemon connectivity opencli daemon status # Check daemon state (PID, uptime, memory) ``` **试用:** ``` opencli list # See all commands opencli hackernews top --limit 5 # Public API, no browser needed opencli bilibili hot --limit 5 # Browser command (requires Extension) ``` ### 4. 浏览器自动化 — 让网站对 AI Agent 可访问 将你的 AI agent(Claude Code、Cursor)指向 [`skills/opencli-operate/SKILL.md`](./skills/opencli-operate/SKILL.md)。它包含所需的一切 —— 完整的命令参考、示例和工作流程。 可用命令:`open`、`state`、`click`、`type`、`select`、`keys`、`wait`、`get`、`screenshot`、`scroll`、`back`、`eval`、`network`、`init`、`verify`、`close`。 ### 更新 ``` npm install -g @jackwener/opencli@latest ``` ### 安装 AI Skills OpenCLI 为 AI agent(Claude Code 等)提供了[技能包](./skills/): ``` # 安装所有 OpenCLI skills npx skills add jackwener/opencli # 或安装特定 skills npx skills add jackwener/opencli --skill opencli-usage # Command reference npx skills add jackwener/opencli --skill opencli-operate # Browser automation for AI agents npx skills add jackwener/opencli --skill opencli-explorer # Adapter development guide npx skills add jackwener/opencli --skill opencli-oneshot # Quick command reference ``` ### 面向开发者 **从源码安装** ``` git clone git@github.com:jackwener/opencli.git && cd opencli && npm install && npm run build && npm link ``` **加载源码 Browser Bridge 扩展** 1. 打开 `chrome://extensions` 并启用右上角的 **开发者模式 (Developer mode)**。 2. 点击 **加载已解压的扩展程序** 并选择本仓库中的 `extension/` 目录。 ## 前置条件 - **Node.js**: >= 20.0.0 (或 **Bun** >= 1.0) - **Chrome 或 Chromium** 正在运行,**且已登录目标站点**(例如 bilibili.com, zhihu.com, xiaohongshu.com, goofish.com)。 ## 内置命令 | 站点 | 命令 | |------|----------| | **xiaohongshu** | `search` `note` `comments` `feed` `user` `download` `publish` `notifications` `creator-notes` `creator-notes-summary` `creator-note-detail` `creator-profile` `creator-stats` | | **bilibili** | `hot` `search` `history` `feed` `ranking` `download` `comments` `dynamic` `favorite` `following` `me` `subtitle` `user-videos` | | **tieba** | `hot` `posts` `search` `read` | | **twitter** | `trending` `search` `timeline` `bookmarks` `post` `download` `profile` `article` `like` `likes` `notifications` `reply` `reply-dm` `thread` `follow` `unfollow` `followers` `following` `block` `unblock` `bookmark` `unbookmark` `delete` `hide-reply` `accept` | | **reddit** | `hot` `frontpage` `popular` `search` `subreddit` `user` `user-posts` `user-comments` `read` `save` `saved` `subscribe` `upvote` `upvoted` `comment` | | **amazon** | `bestsellers` `search` `product` `offer` `discussion` | | **gemini** | `new` `ask` `image` | | **yuanbao** | `new` `ask` | | **notebooklm** | `status` `list` `open` `select` `current` `get` `metadata` `source-list` `source-get` `source-fulltext` `source-guide` `history` `note-list` `notes-list` `notes-get` `summary` | | **spotify** | `auth` `status` `play` `pause` `next` `prev` `volume` `search` `queue` `shuffle` `repeat` | | **xianyu** | `search` `item` `chat` | 共 73+ 个适配器 — **[→ 查看所有支持的站点和命令](./docs/adapters/index.md)** ## CLI Hub OpenCLI 充当你现有命令行工具的通用枢纽 —— 统一发现、纯透传执行以及自动安装(如果未安装工具,OpenCLI 会在重新运行命令前自动运行 `brew install `)。 | 外部 CLI | 描述 | 示例 | |--------------|-------------|---------| | **gh** | GitHub CLI | `opencli gh pr list --limit 5` | | **obsidian** | Obsidian vault 管理 | `opencli obsidian search query="AI"` | | **docker** | Docker | `opencli docker ps` | | **lark-cli** | Lark/飞书 —— 消息、文档、日历、任务,200+ 命令 | `opencli lark-cli calendar +agenda` | | **dingtalk** | 钉钉 —— 跨平台 CLI,涵盖钉钉全套件,为人类和 AI agent 设计 | `opencli dingtalk msg send --to user "hello"` | | **wecom** | WeCom/企业微信 —— 企业微信开放平台 CLI,为人类和 AI agent 设计 | `opencli wecom msg send --to user "hello"` | | **vercel** | Vercel —— 部署项目、管理域名、环境变量、日志 | `opencli vercel deploy --prod` | **注册你自己的** —— 添加任何本地 CLI,以便 AI agent 可以通过 `opencli list` 发现它: ``` opencli register mycli ``` ### 桌面应用适配器 直接从终端控制 Electron 桌面应用。每个适配器都有详细文档: | 应用 | 描述 | 文档 | |-----|-------------|-----| | **Cursor** | 控制 Cursor IDE —— Composer、聊天、代码提取 | [文档](./docs/adapters/desktop/cursor.md) | | **Codex** | 无头驱动 OpenAI Codex CLI agent | [文档](./docs/adapters/desktop/codex.md) | | **Antigravity** | 从终端控制 Antigravity Ultra | [文档](./docs/adapters/desktop/antigravity.md) | | **ChatGPT** | 自动化 ChatGPT macOS 桌面应用 | [文档](./docs/adapters/desktop/chatgpt.md) | | **ChatWise** | 多 LLM 客户端 (GPT-4, Claude, Gemini) | [文档](./docs/adapters/desktop/chatwise.md) | | **Notion** | 搜索、读取、写入 Notion 页面 | [文档](./docs/adapters/desktop/notion.md) | | **Discord** | Discord 桌面版 —— 消息、频道、服务器 | [文档](./docs/adapters/desktop/discord.md) | | **Doubao** | 通过 CDP 控制 Doubao AI 桌面应用 | [文档](./docs/adapters/desktop/doubao-app.md) | 要添加新的 Electron 应用,请从 [docs/guide/electron-app-cli.md](./docs/guide/electron-app-cli.md) 开始。 ## 下载支持 OpenCLI 支持从受支持的平台下载图片、视频和文章。 | 平台 | 内容类型 | 备注 | |----------|---------------|-------| | **xiaohongshu** | 图片、视频 | 下载笔记中的所有媒体 | | **bilibili** | 视频 | 需要安装 `yt-dlp` | | **twitter** | 图片、视频 | 来自用户媒体标签页或单条推文 | | **douban** | 图片 | 海报 / 剧照列表 | | **pixiv** | 图片 | 原画质插图,多页 | | **zhihu** | 文章 | 导出时可选下载图片 | | **weixin** | 文章 | 微信公众号文章 | 对于视频下载,请先安装 `yt-dlp`:`brew install yt-dlp` ``` opencli xiaohongshu download abc123 --output ./xhs opencli bilibili download BV1xxx --output ./bilibili opencli twitter download elonmusk --limit 20 --output ./twitter ``` ## 输出格式 所有内置命令支持 `--format` / `-f`,可选 `table`(默认)、`json`、`yaml`、`md` 和 `csv`。 ``` opencli bilibili hot -f json # Pipe to jq or LLMs opencli bilibili hot -f csv # Spreadsheet-friendly opencli bilibili hot -v # Verbose: show pipeline debug steps ``` ## 退出码 opencli 遵循 Unix `sysexits.h` 约定,因此可以自然地与 Shell 管道和 CI 脚本集成: | 代码 | 含义 | 场景 | |------|---------|------| | `0` | 成功 | 命令正常完成 | | `1` | 通用错误 | 意外 / 未分类的失败 | | `2` | 用法错误 | 参数错误或未知命令 | | `66` | 结果为空 | 无数据返回 (`EX_NOINPUT`) | | `69` | 服务不可用 | Browser Bridge 未连接 (`EX_UNAVAILABLE`) | | `75` | 临时失败 | 命令超时 —— 重试 (`EX_TEMPFAIL`) | | `77` | 需要认证 | 未登录目标站点 (`EX_NOPERM`) | | `78` | 配置错误 | 缺少凭据或配置错误 (`EX_CONFIG`) | | `130` | 被中断 | Ctrl-C / SIGINT | ``` opencli spotify status || echo "exit $?" # 69 if browser not running opencli github issues 2>/dev/null [ $? -eq 77 ] && opencli github auth # auto-auth if not logged in ``` ## 插件 使用社区贡献的适配器扩展 OpenCLI: ``` opencli plugin install github:user/opencli-plugin-my-tool opencli plugin list opencli plugin update --all opencli plugin uninstall my-tool ``` | 插件 | 类型 | 描述 | |--------|------|-------------| | [opencli-plugin-github-trending](https://github.com/ByteYue/opencli-plugin-github-trending) | YAML | GitHub Trending 仓库 | | [opencli-plugin-hot-digest](https://github.com/ByteYue/opencli-plugin-hot-digest) | TS | 多平台热门聚合器 | | [opencli-plugin-juejin](https://github.com/Astro-Han/opencli-plugin-juejin) | YAML | 稀土掘金 热门文章 | | [opencli-plugin-vk](https://github.com/flobo3/opencli-plugin-vk) | TS VK (VKontakte) wall、feed 和搜索 | 参阅[插件指南](./docs/guide/plugins.md)创建你自己的插件。 ## 面向 AI Agent(开发者指南) ``` opencli explore https://example.com --site mysite # Discover APIs + capabilities opencli synthesize mysite # Generate YAML adapters opencli generate https://example.com --goal "hot" # One-shot: explore → synthesize → register opencli cascade https://api.example.com/data # Auto-probe: PUBLIC → COOKIE → HEADER ``` ## 测试 关于如何运行和编写测试,请参阅 **[TESTING.md](./TESTING.md)**。 ## 故障排除 - **"Extension not connected"** — 确保 Browser Bridge 扩展已安装并在 Chrome 或 Chromium 的 `chrome://extensions` 中**启用**。 - **"attach failed: Cannot access a chrome-extension:// URL"** — 可能是其他扩展干扰。尝试暂时禁用其他扩展。 - **数据为空或 'Unauthorized' 错误** — 你的 Chrome/Chromium 登录会话可能已过期。请导航至目标站点并重新登录。 - **Node API 错误** — 确保 Node.js >= 20。某些依赖项需要现代 Node API。 - **守护进程问题** — 检查状态:`curl localhost:19825/status` · 查看日志:`curl localhost:19825/logs` ## Star 历史 [![Star History Chart](https://api.star-history.com/svg?repos=jackwener/opencli&type=Date)](https://star-history.com/#jackwener/opencli&Date) ## 许可证 [Apache-2.0](./LICENSE)
标签:Agent工具, AI Native, Electron应用控制, GNU通用公共许可证, IP 地址批量处理, MITM代理, Node.js, PE 加载器, RPA, 云资产清单, 人工智能代理, 命令行接口, 工具发现, 数字取证, 无头浏览器, 流量操控, 浏览器会话复用, 浏览器自动化, 系统集成, 统一命令行, 网站封装, 自动化攻击, 自动化脚本, 逆向工程