OpenCLI 深度调研报告
OpenCLI 深度调研报告
一、项目概述
1.1 基本信息
| 属性 | 内容 |
|---|---|
| 项目名称 | OpenCLI |
| 全称 | AI-Native CLI Runtime |
| 作者 | jackwener |
| GitHub | https://github.com/jackwener/opencli |
| NPM | @jackwener/opencli |
| License | MIT |
| 主要语言 | TypeScript |
| Stars | 1,800+ |
| 创建时间 | 2024年 |
1.2 项目定位
OpenCLI 是一个 AI 原生的 CLI 运行时框架,核心理念是:
让 AI Agent 以 CLI 的方式操控浏览器
核心特点: - AI-Native:专为 AI Agent 设计的 CLI 接口 - 轻量级架构:Daemon + Chrome Extension 替代笨重的 Playwright - 零凭证存储:复用 Chrome 登录状态,无需存储账号密码 - 44+ 平台支持:Bilibili、知乎、小红书、Twitter、YouTube 等
解决的问题: - 传统浏览器自动化(Playwright/Puppeteer)内存占用大、启动慢 - AI Agent 难以直接操作 Web 应用 - 跨平台登录状态管理复杂
二、核心架构
2.1 架构设计
┌─────────────────────────────────────────────────────────────────┐
│ OpenCLI Architecture │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────────┐ ┌───────────┐ │
│ │ AI Agent │ ──── │ OpenCLI CLI │ ──── │ MCP │ │
│ │ (Claude) │ │ (Terminal) │ │ Server │ │
│ └─────────────┘ └────────┬────────┘ └───────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Micro-Daemon │ │
│ │ (Local Server) │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Chrome Extension │ │
│ │ (Native Bridge) │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Chrome Browser │ │
│ │ (CDP Protocol) │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
2.2 核心组件
| 组件 | 职责 |
|---|---|
| CLI Terminal | 用户/AI 交互入口,执行命令 |
| Micro-Daemon | 本地 HTTP 服务,桥接 CLI 和浏览器 |
| Chrome Extension | 注入 Chrome,执行 CDP 指令 |
| MCP Server | Model Context Protocol 集成,供 AI 调用 |
2.3 技术栈
| 技术 | 用途 |
|---|---|
| CDP | Chrome DevTools Protocol,浏览器自动化 |
| MCP | Model Context Protocol,AI 集成 |
| TypeScript | 核心语言 |
| YAML | 声明式适配器配置 |
| Node.js | 运行时环境 |
三、核心特性
3.1 双引擎驱动
OpenCLI 采用 YAML 声明式 + TypeScript 注入 的双引擎模式:
YAML 声明式引擎: - 适合简单的页面抓取和操作 - 零代码配置 - 快速适配新平台
TypeScript 注入引擎: - 适合复杂的交互逻辑 - 完整的编程能力 - 可扩展性强
3.2 Chrome 登录状态复用
┌─────────────────────────────────────────────────────────────┐
│ 传统方案 vs OpenCLI │
├─────────────────────────────────────────────────────────────┤
│ │
│ 传统方案 (Playwright): │
│ ┌─────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 脚本 │ ──> │ 存储密码 │ ──> │ 自动登录 │ │
│ └─────────┘ │ (安全风险) │ │ (可能失败) │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ OpenCLI: │
│ ┌─────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 脚本 │ ──> │ 复用Chrome │ ──> │ 即时可用 │ │
│ └─────────┘ │ 登录状态 │ │ (零风险) │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
优势: - 零凭证存储,消除安全风险 - 绕过验证码、二次验证 - 无需维护登录逻辑
3.3 MCP 集成
OpenCLI 提供 Model Context Protocol 集成,让 AI Agent 可以直接调用:
{
"mcpServers": {
"opencli": {
"command": "opencli",
"args": ["mcp"]
}
}
}
AI Agent 可以: - 直接执行浏览器命令 - 获取网页数据 - 自动化 Web 操作
3.4 Electron 应用支持
OpenCLI 不仅能操作浏览器,还能 CLI 化 Electron 桌面应用:
- VS Code
- Discord
- Slack
- 其他 Electron 应用
原理:Electron 应用同样支持 CDP 协议。
四、支持的平台
4.1 平台列表(44+)
| 类别 | 平台 |
|---|---|
| 视频 | Bilibili、YouTube、抖音、快手 |
| 社交 | Twitter/X、Reddit、微博、知乎 |
| 电商 | 淘宝、京东、拼多多、亚马逊 |
| 内容 | 小红书、公众号、掘金、Medium |
| 开发 | GitHub、GitLab、Stack Overflow |
| 其他 | 豆瓣、知乎日报、ProductHunt |
4.2 平台适配器结构
opencli/
├── src/
│ └── adapters/
│ ├── bilibili/
│ │ ├── adapter.yaml # 声明式配置
│ │ └── scripts.ts # TypeScript 注入
│ ├── twitter/
│ ├── youtube/
│ └── ...
五、安装与使用
5.1 安装
# NPM 全局安装
npm install -g @jackwener/opencli
# 或使用 pnpm
pnpm add -g @jackwener/opencli
5.2 安装 Chrome 扩展
- 下载 OpenCLI Chrome Extension
- 打开
chrome://extensions/ - 开启「开发者模式」
- 加载已解压的扩展程序
5.3 基础命令
# 查看所有可用命令
opencli list
# YAML 格式输出
opencli list -f yaml
# 执行平台命令
opencli bilibili hot --limit 5
opencli twitter trending
opencli zhihu daily
# 诊断连接状态
opencli doctor
# 启动 MCP 服务器
opencli mcp
5.4 环境变量
# 配置 Daemon 端口(可选)
export OPENCLI_DAEMON_PORT=9527
# 配置日志级别
export OPENCLI_LOG_LEVEL=debug
六、与替代方案对比
6.1 vs Playwright
| 维度 | OpenCLI | Playwright |
|---|---|---|
| 架构 | 轻量 Extension | 完整浏览器实例 |
| 内存占用 | ~10MB | ~200MB+ |
| 启动速度 | 毫秒级 | 秒级 |
| 登录状态 | 复用 Chrome | 需要重新登录 |
| AI 集成 | 原生 MCP | 需自行集成 |
| 适用场景 | AI Agent、轻量自动化 | 完整 E2E 测试 |
6.2 vs Puppeteer
| 维度 | OpenCLI | Puppeteer |
|---|---|---|
| 设计理念 | AI-Native | 通用自动化 |
| MCP 支持 | 原生 | 无 |
| 状态复用 | Chrome 登录状态 | 独立 Session |
| 学习曲线 | 低 | 中等 |
6.3 vs Browserbase/Browser Use
| 维度 | OpenCLI | Browserbase |
|---|---|---|
| 部署方式 | 本地 | 云端 SaaS |
| 成本 | 免费 | 付费 |
| 隐私 | 数据本地 | 数据上云 |
| 适用场景 | 个人/小团队 | 企业级 |
七、典型使用场景
7.1 AI Agent 自动化
# Claude Code 集成
# 在 Claude Code 的 MCP 配置中添加:
{
"mcpServers": {
"opencli": {
"command": "opencli",
"args": ["mcp"]
}
}
}
AI 可以直接: - "帮我查看 B 站热门视频" - "获取我的知乎私信" - "搜索 Twitter 上的 AI 新闻"
7.2 数据采集
# 获取 B 站热门
opencli bilibili hot --limit 10
# 获取知乎日报
opencli zhihu daily
# 获取小红书推荐
opencli xiaohongshu feed
7.3 自动化操作
# 自动发微博
opencli weibo post "今天天气真好"
# 自动点赞
opencli bilibili like BV1xx411c7mD
7.4 跨平台监控
# 监控多个平台的热度
opencli bilibili hot --limit 5
opencli zhihu hot --limit 5
opencli weibo trending --limit 5
八、创建自定义适配器
8.1 YAML 声明式适配器
# adapters/mysite/adapter.yaml
name: mysite
description: My custom site adapter
version: 1.0.0
commands:
- name: hot
description: Get hot posts
url: https://mysite.com/hot
selectors:
title: ".post-title"
link: ".post-link"
score: ".post-score"
8.2 TypeScript 注入适配器
// adapters/mysite/scripts.ts
import { Adapter, Command } from '@jackwener/opencli';
export class MySiteAdapter extends Adapter {
@Command({ name: 'search', description: 'Search posts' })
async search(query: string, options: { limit?: number }) {
const page = await this.getPage();
await page.goto(`https://mysite.com/search?q=${query}`);
return await page.evaluate(() => {
return Array.from(document.querySelectorAll('.result'))
.slice(0, options.limit || 10)
.map(el => ({
title: el.querySelector('.title')?.textContent,
url: el.querySelector('a')?.href,
}));
});
}
}
九、架构优势分析
9.1 为什么选择 Chrome Extension?
传统方案的问题: - Playwright 启动完整浏览器,内存占用大 - 每次启动都是新 Session,登录状态丢失 - 难以绕过反爬检测
Extension 方案的优势: - 复用已打开的 Chrome,零额外内存 - 登录状态、Cookie、LocalStorage 全部保留 - 与正常用户行为一致,难以检测
9.2 Micro-Daemon 设计
┌────────────────────────────────────────────────────────────┐
│ Micro-Daemon │
├────────────────────────────────────────────────────────────┤
│ │
│ 特点: │
│ • 极轻量(< 5MB 内存) │
│ • 仅在需要时运行 │
│ • 本地 HTTP 服务,无需远程连接 │
│ • 自动管理生命周期 │
│ │
│ 工作流程: │
│ 1. CLI 发送请求到 Daemon │
│ 2. Daemon 转发到 Chrome Extension │
│ 3. Extension 执行 CDP 操作 │
│ 4. 结果原路返回 │
│ │
└────────────────────────────────────────────────────────────┘
十、最佳实践
10.1 性能优化
- 使用
--limit参数限制返回数量 - 缓存频繁访问的数据
- 批量操作减少请求次数
10.2 错误处理
# 检查连接状态
opencli doctor
# 启用详细日志
OPENCLI_LOG_LEVEL=debug opencli bilibili hot
10.3 安全建议
- 不要在公共电脑上使用
- 定期检查 Extension 权限
- 敏感操作添加二次确认
十一、总结
11.1 优势
- AI-Native 设计:专为 AI Agent 优化的 CLI 接口
- 轻量高效:Extension 架构,内存占用极低
- 零凭证风险:复用 Chrome 登录状态
- 44+ 平台支持:覆盖主流中文和海外平台
- MCP 集成:与 Claude 等 AI 工具无缝集成
- 双引擎:YAML + TypeScript 灵活配置
11.2 局限
- 依赖 Chrome:必须安装 Chrome 浏览器
- Extension 安装:需要手动安装扩展
- 平台维护:适配器需要随网站更新
- Windows 支持:部分功能在 Windows 上可能有限制
11.3 适用场景
- AI Agent 浏览器自动化
- 个人数据采集
- 跨平台内容监控
- 自动化测试辅助
- Electron 应用 CLI 化
11.4 不适用场景
- 大规模爬虫系统
- 需要高并发的场景
- 无界面服务器环境
参考资源
- GitHub 仓库:https://github.com/jackwener/opencli
- NPM 包:https://www.npmjs.com/package/@jackwener/opencli
- Chrome Extension:GitHub Releases 下载
报告生成时间:2026-03-21