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 扩展

  1. 下载 OpenCLI Chrome Extension
  2. 打开 chrome://extensions/
  3. 开启「开发者模式」
  4. 加载已解压的扩展程序

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 优势

  1. AI-Native 设计:专为 AI Agent 优化的 CLI 接口
  2. 轻量高效:Extension 架构,内存占用极低
  3. 零凭证风险:复用 Chrome 登录状态
  4. 44+ 平台支持:覆盖主流中文和海外平台
  5. MCP 集成:与 Claude 等 AI 工具无缝集成
  6. 双引擎:YAML + TypeScript 灵活配置

11.2 局限

  1. 依赖 Chrome:必须安装 Chrome 浏览器
  2. Extension 安装:需要手动安装扩展
  3. 平台维护:适配器需要随网站更新
  4. 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