跳到主要内容
opencli-rs · prolist
返回项目库查看仓库原始简介 AutoCLI is a Blazing fast, memory-safe command-line tool — Fetch information from any website with a single command. Covers Twitter/X, Reddit, YouTube, HackerNews, Bilibili, Zhihu, Xiaohongshu, and 55+ sites, with support for controlling Electron desktop apps, integrating local CLI tools (gh, docker, kubectl), now powered by AutoCLI.ai .
来自项目 README 项目解读 README
项目解读由 AI 根据历史资料整理,尚未经人工复核。仓库资料更新于 2026-09-08,与历史解读分开保留。
项目概览 opencli-rs 是一款用纯 Rust 编写的命令行工具,旨在通过一条命令从 55+ 个网站获取结构化信息,覆盖 Twitter/X、Reddit、YouTube、HackerNews、Bilibili、知乎、小红书等主流平台,同时支持控制 Electron 桌面应用和集成本地 CLI 工具。它是基于 TypeScript 实现的 OpenCLI 的完整 Rust 重写版本,编译为 4.7MB 的单一静态二进制,零运行时依赖。其核心设计包括声明式 YAML Pipeline、编译时嵌入适配器、AI 原生适配器生成以及浏览器会话复用。工具内置 333+ 命令,支持 table/json/yaml/csv/markdown 等多种输出格式,并专为 AI Agent 设计了工具发现机制。项目采用 Apache-2.0 许可证,截至 2026 年 4 月开源不到两周,生态和文档仍在完善中。
解决什么问题 在没有 opencli-rs 这类工具之前,从多个网站获取信息通常面临工具碎片化、认证管理复杂、AI Agent 信息获取困难等问题。每个网站需要不同的工具或脚本,接口不统一,维护成本高。大多数网站的 API 需要认证,传统做法涉及手动配置 Cookie、Header 或 OAuth,token 过期后需要重复操作。对于 AI Agent 而言,大语言模型的推理能力已不是瓶颈,真正限制其效果的是信息获取层,Agent 无法直接浏览网页、刷热榜、查行情。此外,原版 OpenCLI 基于 TypeScript,需要 Node.js 20+ 运行环境和 npm install 安装 node_modules(约 50MB),启动时还需解析 JSON manifest,对只想用一条命令的用户门槛较高。Electron 桌面应用(如 Cursor、Notion、Discord)的功能也无法通过命令行调用,难以融入自动化工作流。
工作方式 opencli-rs 的核心工作流为:命令输入 → 参数校验 → 策略路由 → Pipeline 执行 → 浏览器桥接(如需)→ 数据转换 → 格式化输出。CLI 层基于 Rust 的 clap 框架实现动态子命令注册,编译时通过 discovery 模块自动发现所有适配器。执行引擎接收命令后进行参数校验,根据适配器的 strategy 字段路由到不同执行路径,并管理超时控制(默认 60 秒)。Pipeline 引擎使用声明式 YAML 描述数据抓取流程,支持 14 种步骤类型(fetch、evaluate、navigate、click、type、wait、select、map、filter、sort、limit、intercept、tap、download),基于 pest PEG parser 的表达式引擎支持 ${{ expr | filter }} 模板语法,内置 16 个过滤器。浏览器桥接通过 IPage trait 抽象了 DaemonPage(HTTP 连接本地 daemon)和 CdpPage(直连 WebSocket)两种实现,Daemon 监听在 19825 端口,Chrome 扩展通过 chrome.debugger API 连接 daemon 执行 CDP 指令。AI 能力模块包括 explore(分析网站 API 端点、前端框架)、generate(AI 分析页面结构生成适配器 YAML)、cascade(自动探测认证策略),集成 AutoCLI.ai 云端 API。适配器在编译时通过 build.rs 扫描嵌入二进制,运行时零文件 I/O。
核心能力
覆盖 55+ 网站,内置 333+ 命令
单一 4.7MB 静态二进制,零运行时依赖
相比原版最快 12x 加速,内存节省最高 10x
声明式 YAML Pipeline,14 种步骤类型
pest PEG parser 表达式引擎,类型安全,无注入风险
浏览器会话复用,用户只需正常登录网站
AI 原生:自动发现网站结构并生成适配器
支持控制 Electron 桌面应用(Cursor、Notion 等)
集成本地 CLI 工具(gh、docker、kubectl)
多格式输出:table/json/yaml/csv/markdown
专为 AI Agent 设计的工具发现机制
支持用户自定义适配器
使用前需要了解
AI 整理 · 本地测试,未经人工复核;依据历史报告节选,不代表当前产品状态。
根据报告,opencli-rs 的适用场景包括 AI Agent 获取网页实时信息、终端用户快速查询信息、自动化桌面应用操作。不适用场景包括大规模数据采集(单次批量有限,不如 Scrapy)、需要翻页或深度爬取(有限支持)。报告明确指出其局限:不支持 JavaScript 渲染的 SPA,依赖 CDP 拦截 API 请求,对于纯前端渲染且无 API 的页面支持有限;浏览器命令受 Chrome debugger API 限制,无法高并发;认证策略固定,只支持 5 种预设策略,复杂的认证流程(如短信验证码、滑块验证)无法自动处理;项目较新,截至 2026 年 4 月仅开源不到两周,生态和文档还在完善中。测试通过率为 84%(122 个命令中有 19 个尚未完全通过测试)。Browser 模式需要 Chrome + 扩展 + daemon 运行。Windows 支持较弱,主要面向 macOS/Linux。网站改版后 YAML 适配器可能需要更新。AI 生成适配器依赖 LLM 能力,复杂网站可能生成不完美的适配器。
简体中文 · 官方 原文
AutoCLI
原名 opencli-rs ,自 v0.2.4 起更名为 AutoCLI 。
English | 中文 | 日本語
https://autocli.ai — AI 驱动的配置市场 & 云端 API
更新说明
v0.3.2
Chrome 扩展选择器工具 — 只需选择你需要的核心数据,可视化精准选取页面元素,构建精确的 CSS 选择器定位目标内容
基于 AutoCLI.ai 的 AI 生成 — 基于你选择的数据,AI 自动扩展并发现关联字段,生成完整的数据抓取规则
本地 + 云端无缝同步 — 生成的适配器自动保存到本地并同步至 AutoCLI.ai,即刻可用
极速、安全的命令行工具 —— 一行命令快速获取任意网站信息 。覆盖 Bilibili、知乎、小红书、Twitter/X、Reddit、YouTube、HackerNews 等 55+ 站点 ,同时支持控制 Electron 桌面应用、集成本地 CLI 工具(gh、docker、kubectl),通过浏览器会话复用和 AI 原生发现能力驱动。
基于 OpenCLI (TypeScript)用 纯 Rust 完整重写 。功能对等,最高快 12 倍 ,内存省 10 倍 ,单文件 4.7MB ,零运行时依赖。
OpenClaw/Agent 的最佳搭档 —— 赋予你的 AI Agent 触达全网信息的能力,一行命令获取 55+ 站点的实时数据。
为 AI Agent 而生: 在 AGENT.md 或 .cursorrules 中配置 autocli list,AI 即可自动发现所有可用工具。注册你的本地 CLI(autocli register mycli),AI 就能完美调用你的所有工具。
🚀 性能对比
💾 内存占用 (Browser 命令) 9 MB 95 MB 10.6x
📏 二进制大小 4.7 MB ~50 MB (node_modules) 10x
✅ 测试通过率 103/122 (84%) 104/122 (85%) 接近对等
基于 122 个命令的自动化测试(55 个站点),macOS Apple Silicon 环境。
特性
55 个站点、333 个命令 —— 覆盖 Bilibili、Twitter、Reddit、知乎、小红书、YouTube、Hacker News 等
浏览器会话复用 —— 通过 Chrome 扩展复用已登录状态,无需管理 token
声明式 YAML Pipeline —— 用 YAML 描述数据抓取流程,零代码新增适配器
AI 原生发现 —— explore 分析网站 API、generate 一键生成适配器、cascade 探测认证策略
AI 智能生成 —— generate --ai 使用大模型分析任意网站,自动生成适配器,通过 autocli.ai 云端共享
下载媒体和文章 —— 视频下载(yt-dlp)、文章导出为 Markdown 并本地化配图
外部 CLI 透传 —— 集成 GitHub CLI、Docker、Kubernetes 等工具
多格式输出 —— table、JSON、YAML、CSV、Markdown
单一二进制 —— 编译为 4MB 静态二进制,零运行时依赖
安装
只有一个文件,下载即可使用。 无需 Node.js、Python 或任何运行时,放到 PATH 里就能跑。
一键安装脚本(macOS / Linux) curl -fsSL https://raw.githubusercontent.com/nashsu/autocli/main/scripts/install.sh | sh
自动检测系统和架构,下载对应二进制,安装到 /usr/local/bin/。
Windows (PowerShell) Invoke-WebRequest -Uri "https://github.com/nashsu/autocli/releases/latest/download/autocli-x86_64-pc-windows-msvc.zip" -OutFile autocli.zip
Expand-Archive autocli.zip -DestinationPath .
Move-Item autocli.exe "$env:LOCALAPPDATA\Microsoft\WindowsApps\"
手动下载(最简单) 解压后将 autocli(Windows 为 autocli.exe)放到系统 PATH 中即可。
从源码编译 git clone https://github.com/nashsu/autocli.git
cd autocli
cargo build --release
cp target/release/autocli /usr/local/bin/ # macOS / Linux
更新
Chrome 扩展安装(浏览器命令需要)
从 GitHub Releases 下载 autocli-chrome-extension.zip
解压到任意目录
打开 Chrome,访问 chrome://extensions
开启右上角「开发者模式」
点击「加载已解压的扩展程序」,选择解压后的文件夹
扩展安装后会自动连接 autocli daemon
Public 模式命令(hackernews、devto、lobsters 等)无需安装扩展即可使用。
Skill 安装 一键为你的 AI Agent 安装 autocli skill:
npx skills add https://github.com/nashsu/autocli-skill
快速开始 # 查看所有可用命令
autocli --help
# 查看某个站点的命令
autocli hackernews --help
# 获取 Hacker News 热门文章(公开 API,无需浏览器)
autocli hackernews top --limit 10
# JSON 格式输出
autocli hackernews top --limit 5 --format json
# 获取 Bilibili 热门视频(需要浏览器 + Cookie)
autocli bilibili hot --limit 20
# 搜索 Twitter(需要浏览器 + 登录)
autocli twitter search "rust lang" --limit 10
# 运行诊断
autocli doctor
# 生成 Shell 补全
autocli completion bash >> ~/.bashrc
autocli completion zsh >> ~/.zshrc
autocli completion fish > ~/.config/fish/completions/autocli.fish
AI 命令
由 autocli.ai 提供支持 —— 获取 API Token,与社区共享适配器,让 AI 为任意网站生成适配器。
第一步:认证
第二步:通过 Chrome 浏览器插件,精准选择特定网站上你需要的数据,点击生成按钮后,AI 会自动分析并生成页面,扩展相关数据并生成适配器: 生成完成后,就可以使用 autocli 使用新生成的指令检索需要的数据了。
第三步:搜索已有适配器 # 通过 URL 搜索
autocli search https://www.example.com
# 直接输入域名也可以(自动补全 https://)
autocli search example.com
从 autocli.ai 搜索社区共享的适配器。从交互式列表中选择后,自动下载并保存到本地,即可使用。
环境变量
内置命令 运行 autocli --help 查看所有可用命令。
模式说明: Public = 无需浏览器,直接调 API;Browser = 需要 Chrome + 扩展;Desktop = 需要桌面应用运行
AI 发现能力 # 🤖 AI 驱动(推荐):大模型分析页面并生成适配器
autocli generate https://www.example.com --goal hot --ai
# 优先从 autocli.ai 搜索已有适配器,未找到则使用 AI 生成
# 🔧 规则驱动:无需 AI 的启发式分析
autocli generate https://www.example.com --goal hot
# 探索网站 API(端点、框架、Store)
autocli explore https://www.example.com --site mysite
# 交互式模糊测试(点击按钮触发隐藏 API)
autocli explore https://www.example.com --auto --click "评论,字幕"
# 自动探测认证策略(PUBLIC → COOKIE → HEADER)
autocli cascade https://api.example.com/hot
.json 后缀探测(Reddit 风格 REST 发现)
__INITIAL_STATE__ 提取(Bilibili、小红书等 SSR 站点)
Pinia/Vuex Store 发现和 Action 映射
--goal search 自动发现搜索端点
框架检测(Vue/React/Next.js/Nuxt)
下载 # 下载 B 站视频(需要 yt-dlp)
autocli bilibili download BV1xxx --output ./videos --quality 1080p
# 下载知乎文章为 Markdown(含配图)
autocli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./articles
# 下载微信公众号文章为 Markdown(含配图)
autocli weixin download "https://mp.weixin.qq.com/s/xxx" --output ./articles
# 下载 Twitter/X 媒体(图片 + 视频)
autocli twitter download nash_su --limit 10 --output ./twitter
autocli twitter download --tweet-url "https://x.com/user/status/123" --output ./twitter
视频通过 yt-dlp 下载(自动从浏览器提取 cookies,无需系统授权)
文章导出为 Markdown + YAML 头信息(标题、作者、日期、来源)
配图自动下载并本地化(远程 URL 替换为本地 images/img_001.jpg)
输出结构:output/文章标题/标题.md + output/文章标题/images/
外部 CLI 集成 # 透传到 GitHub CLI
autocli gh repo list
# 透传到 kubectl
autocli kubectl get pods
输出格式 autocli hackernews top --format table # ASCII 表格(默认)
autocli hackernews top --format json # JSON
autocli hackernews top --format yaml # YAML
autocli hackernews top --format csv # CSV
autocli hackernews top --format md # Markdown 表格
认证策略
自定义适配器 在 ~/.autocli/adapters/ 下创建 YAML 文件即可添加自定义适配器:
# ~/.autocli/adapters/mysite/hot.yaml
site: mysite
name: hot
description: My site hot posts
strategy: public
browser: false
args:
limit:
type: int
default: 20
description: Number of items
columns: [rank, title, score]
pipeline:
- fetch: https://api.mysite.com/hot
- select: data.posts
- map:
rank: "${{ index + 1 }}"
title: "${{ item.title }}"
score: "${{ item.score }}"
- limit: "${{ args.limit }}"
Pipeline 步骤
模板表达式 Pipeline 中使用 ${{ expression }} 语法:
# 变量访问
"${{ args.limit }}"
"${{ item.title }}"
"${{ index + 1 }}"
# 比较和逻辑
"${{ item.score > 10 }}"
"${{ item.title && !item.deleted }}"
# 三元表达式
"${{ item.active ? 'yes' : 'no' }}"
# 管道过滤器
"${{ item.title | truncate(30) }}"
"${{ item.tags | join(', ') }}"
"${{ item.name | lower | trim }}"
# 字符串插值
"https://api.com/${{ item.id }}.json"
# Fallback
"${{ item.subtitle || 'N/A' }}"
# 数学函数
"${{ Math.min(args.limit, 50) }}"
内置过滤器(16 个): default, join, upper, lower, trim, truncate, replace, keys, length, first, last, json, slugify, sanitize, ext, basename
配置
环境变量
文件路径
架构 ┌─────────────────────────────────────────────────────────────────┐
│ 用户 / AI Agent │
│ autocli <site> <command> │
└─────────────────────┬───────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ CLI 层 (clap) │
│ main.rs → discovery → clap 动态子命令 → execution.rs │
│ ┌───────────┐ ┌───────────────┐ ┌──────────────────┐ │
│ │ 内置命令 │ │ 站点适配器命令 │ │ 外部 CLI 透传 │ │
│ │ explore │ │ bilibili hot │ │ gh, docker, k8s │ │
│ │ doctor │ │ twitter feed │ │ │ │
│ └───────────┘ └───────┬───────┘ └──────────────────┘ │
└─────────────────────────┼───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 执行引擎 (execution.rs) │
│ 参数校验 → 能力路由 → 超时控制 │
│ ┌─────────┼─────────┐ │
│ ▼ ▼ ▼ │
│ YAML Pipeline Rust Func External CLI │
└────────────────┬────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ Pipeline 引擎 浏览器桥接 │
│ ┌────────────┐ ┌─────────────────────┐ │
│ │ fetch │ │ BrowserBridge │ │
│ │ evaluate │ ──── IPage ────▶ │ DaemonClient (HTTP) │ │
│ │ navigate │ │ CdpPage (WebSocket) │ │
│ │ map/filter │ └──────────┬──────────┘ │
│ │ sort/limit │ │ │
│ │ intercept │ Daemon (axum:19825) │
│ │ tap │ HTTP + WebSocket │
│ └────────────┘ │ │
│ ▼ │
│ 表达式引擎 (pest) Chrome 扩展 (CDP) │
│ ${{ expr | filter }} chrome.debugger API │
└──────────────────────────────────────────────────────────────────┘
Workspace 结构 autocli/
├── crates/
│ ├── autocli-core/ # 核心数据模型:Strategy, CliCommand, Registry, IPage trait, Error
│ ├── autocli-pipeline/ # Pipeline 引擎:pest 表达式, 执行器, 14 种步骤
│ ├── autocli-browser/ # 浏览器桥接:Daemon, DaemonPage, CdpPage, DOM helpers
│ ├── autocli-output/ # 输出渲染:table, json, yaml, csv, markdown
│ ├── autocli-discovery/ # 适配器发现:YAML 解析, build.rs 编译时嵌入
│ ├── autocli-external/ # 外部 CLI:加载, 检测, 透传执行
│ ├── autocli-ai/ # AI 能力:explore, synthesize, cascade, generate
│ └── autocli-cli/ # CLI 入口:clap, 执行编排, doctor, completion
├── adapters/ # 333 个 YAML 适配器定义
│ ├── hackernews/
│ ├── bilibili/
│ ├── twitter/
│ └── ...(55 个站点)
└── resources/
└── external-clis.yaml # 外部 CLI 注册表
相比 TypeScript 原版的改进
开发 # 构建
cargo build
# 测试(166 个测试)
cargo test --workspace
# Release 构建(启用 LTO,约 4MB)
cargo build --release
# 添加新适配器
# 1. 在 adapters/<site>/ 下创建 YAML 文件
# 2. 重新编译(build.rs 自动嵌入)
cargo build
支持的站点
Star History
致谢
许可证 09.08