opencli 使用总结

1. 写在最前面

最近在折腾 AI 编程工具的时候,笔者越来越觉得一个问题很关键:AI 如果只能回答问题,其实价值是有限的;如果它能够稳定地调用工具、读取网页、拿到结构化数据,那它才更像一个能干活的助手。

以前让 AI 查一个网站内容,基本就是两条路:

  • 让它自己搜索,然后赌搜索结果是新的、准的。

  • 让它操作浏览器,然后赌它不会点错、看错、理解错。

这两条路都有点不稳定。刚好最近看到了 OpenCLI,它的定位很有意思:把网站、浏览器会话、Electron 应用和本地工具,都包装成确定性的 CLI 接口。

第一次看到这个项目的时候,笔者的反应其实是:这不就是一堆网站命令的集合吗?但实际跑了一圈以后,发现它真正想解决的问题不是"多几个命令",而是给人和 AI Agent 提供一个统一、可脚本化、可复用的工具入口。

注:本文基于 OpenCLI 官方仓库和笔者本机实测整理。本机版本为 opencli 1.7.20,Node 版本为 v24.4.1。项目更新较快,具体命令建议以 opencli list 和官方文档为准。

2. OpenCLI 是什么

2.1 一句话理解

OpenCLI 做的事情可以简单理解为:把原本需要打开网页、点击按钮、复制结果的操作,变成一条可以稳定执行的命令

比如以前想看 Hacker News 热门内容,需要打开网站、浏览页面、复制标题。使用 OpenCLI 后,可以直接:

bash 复制代码
opencli hackernews top --limit 5

如果想看 B 站热门,也可以直接:

bash 复制代码
opencli bilibili hot --limit 5

这个变化看起来不大,但对 AI Agent 来说很重要。因为浏览器页面是给人看的,结构不稳定;CLI 输出是给程序看的,结构更稳定,也更容易被 AI 后续处理。

2.2 它主要解决三类问题

从使用角度看,OpenCLI 主要有三类能力:

  • 网站适配器:把 Bilibili、Zhihu、Xiaohongshu、Reddit、Hacker News 等网站变成命令。

  • 浏览器自动化:通过浏览器桥接扩展,让 AI Agent 可以复用你已经登录的 Chrome 会话。

  • 本地工具统一入口 :把 ghdockerobsidiantgdiscord 等本地 CLI 统一挂到 opencli 下。

笔者觉得最有价值的是前两点。第一点适合人直接用,第二点适合 AI Agent 用。尤其是当一个网站没有公开 API,但你又想让 AI 去帮你查东西时,OpenCLI 的浏览器桥接就比较有想象空间了。

3. 安装和环境检查

3.1 安装 CLI

OpenCLI 要求 Node.js 版本不低于 21。笔者本机已经满足要求:

bash 复制代码
node --version
v24.4.1

安装命令如下:

bash 复制代码
npm install -g @jackwener/opencli

安装后可以查看版本:

bash 复制代码
opencli --version
1.7.20

3.2 安装浏览器桥接扩展

如果只使用公开数据类命令,比如 hackernewswttr,不一定需要浏览器扩展。但如果要操作 B 站、小红书、Twitter/X 这类依赖登录态的网站,就需要安装 Browser Bridge 扩展。

官方提供了两种方式:

  • 从 Chrome Web Store 安装 OpenCLI 扩展。

  • 从 GitHub Releases 下载扩展压缩包,然后在 chrome://extensions 中手动加载。

安装完以后,使用下面的命令检查:

bash 复制代码
opencli doctor

笔者本机的结果如下:

text 复制代码
opencli v1.7.20 doctor (node v24.4.1)

[OK] Daemon: running on port 19825 (v1.7.20)
[OK] Extension: connected (v1.0.12)
[OK] Connectivity: connected in 3.5s

Everything looks good!

注:如果这里提示 Extension 没有连接,大概率不是 OpenCLI 命令的问题,而是浏览器扩展没有装好、Chrome 没打开,或者当前 Profile 没连上。

3.3 多 Profile 支持

如果你有多个 Chrome Profile,比如工作账号、个人账号、测试账号,就可以给不同 Profile 起别名:

bash 复制代码
opencli profile list
opencli profile rename <contextId> work
opencli profile use work

后续可以显式指定:

bash 复制代码
opencli --profile work bilibili hot --limit 5

这点对 AI Agent 很重要。因为如果工具随便猜一个浏览器 Profile,就很容易出现"命令能跑,但是拿不到登录态"的问题。

4. 实测几个命令

4.1 查看可用命令

OpenCLI 的第一个入口应该是:

bash 复制代码
opencli list

它会列出当前可用的所有站点和命令。笔者本机输出非常长,截取一小段大概是这样的:

text 复制代码
opencli --- available commands

36kr
  hot [public] --- 36氪热榜
  news [public] --- Latest tech/startup news from 36kr

bilibili
  hot [cookie] --- B站热门视频
  search [cookie] --- Bilibili 搜索

hackernews
  top [public] --- Hacker News top stories

这个列表有两个信息值得注意:

  • [public] 通常表示不依赖浏览器登录态,直接就能跑。

  • [browser][cookie][intercept] 通常表示会依赖浏览器、登录态或网络请求拦截。

所以笔者现在会先看 opencli list,确认目标命令的模式,再决定是不是需要先检查浏览器扩展。

4.2 查 Hacker News 热门

先跑一个不依赖登录态的命令:

bash 复制代码
opencli hackernews top --limit 3 -f json

简化后的返回如下:

json 复制代码
[
  {
    "rank": 1,
    "title": "Mullvad exit IPs are surprisingly identifying",
    "score": 316,
    "author": "RGBCube",
    "comments": 163,
    "url": "https://tmctmt.com/posts/mullvad-exit-ips-as-a-fingerprinting-vector/"
  }
]

这个输出就很适合继续交给 AI 总结。因为它不是一整页 HTML,也不是截图,而是字段清晰的 JSON。

这也是 OpenCLI 和普通浏览器操作最大的区别:它把网页里的信息提前整理成了稳定字段

4.3 查天气

原来笔者以为会有一个 opencli weather beijing 之类的命令,但实际看适配器列表后发现,现在天气相关命令是挂在 wttr 下面:

bash 复制代码
opencli wttr current beijing -f json

笔者本机返回如下:

json 复制代码
[
  {
    "location": "Beijing",
    "country": "China",
    "tempC": 23,
    "description": "Overcast",
    "humidity": 69,
    "windKmph": 11
  }
]

这个例子也提醒了笔者一件事:OpenCLI 这种项目更新会比较快,写文章时不能只凭感觉猜命令,最好直接 opencli list 或查官方适配器列表。

注:不然文章里写得信誓旦旦,读者一复制发现命令不存在,那就有点尴尬了。

4.4 查 B 站热门

B 站热门命令在笔者本机也能跑通,前提是浏览器桥接正常:

bash 复制代码
opencli bilibili hot --limit 3 -f json

返回内容大概是:

json 复制代码
[
  {
    "rank": 1,
    "title": "热烈欢迎曲家瑞!10年以上的好物,她竟然带来了这------么多!!",
    "author": "papi酱",
    "play": 865923,
    "danmaku": 23359,
    "bvid": "BV1CX546QENE",
    "url": "https://www.bilibili.com/video/BV1CX546QENE"
  }
]

从体验上看,这类命令适合做两件事:

  • 快速看热门内容,不用打开网页。

  • 给 AI 一个结构化输入,让它继续做摘要、分类或筛选。

比如可以先用 OpenCLI 拉取 B 站热门,再让 AI 按"技术、生活、娱乐、新闻"分类。这样比让 AI 自己去网页上看,要稳定得多。

4.5 浏览器自动化命令

OpenCLI 也提供底层浏览器命令,不过官方文档里说得很明确:这部分主要是给 AI Agent 用的,不是给人手敲的。

现在的浏览器命令需要带一个 session 名称,比如:

bash 复制代码
opencli browser work state
opencli browser work open https://example.com
opencli browser work tab list
opencli browser work close

笔者本机执行:

bash 复制代码
opencli browser work state

返回结果大概是:

text 复制代码
url: about:blank
viewport: 1920x936
interactive: 0 | iframes: 0

这个能力单独看并不惊艳,因为人手敲浏览器命令其实挺累的。但如果交给 AI Agent,就变成了另一回事:AI 可以打开网页、读取 DOM、点击按钮、填写表单、提取内容,最后再把这些动作固化成一个适配器。

也就是说,OpenCLI 的浏览器命令更像是一套"网页自动化原语",人不一定直接用,但 AI Agent 很适合用。

5. OpenCLI 的真正价值

5.1 对人来说:少打开一些网页

如果只是把 OpenCLI 当成人用的命令行工具,它的价值也很直接:

  • 查公开数据更快,比如 Hacker News、天气、包信息、论文信息。

  • 查平台热门更方便,比如 B 站、小红书、知乎、Reddit。

  • 输出格式统一,可以直接转成 jsoncsvyamlmd

OpenCLI 支持的输出格式比较完整:

bash 复制代码
opencli bilibili hot -f json
opencli bilibili hot -f csv
opencli bilibili hot -f yaml
opencli bilibili hot -f md

这点对笔者来说挺实用。因为很多时候不是想"看网页",而是想"拿到数据以后继续处理"。

5.2 对 AI 来说:少一点玄学操作

对 AI Agent 来说,OpenCLI 的价值更大。

普通浏览器自动化有几个问题:

  • 页面结构复杂,AI 容易读错。

  • 按钮位置变化,AI 容易点错。

  • 输出是自然语言描述,后续处理不稳定。

OpenCLI 做的事情,是把这些不稳定因素尽量提前封装掉。AI 不需要每次都重新理解网页,只需要调用已经适配好的命令。

比如:

bash 复制代码
opencli bilibili hot --limit 10 -f json

返回的就是一组结构化字段。AI 后面要做摘要、排序、筛选,就会简单很多。

5.3 对长期使用来说:可以沉淀成适配器

OpenCLI 不只是内置了一批命令,还支持扩展:

  • 临时私有适配器可以放在 ~/.opencli/clis/

  • 长期维护的个人命令可以做成本地 plugin。

  • 第三方插件可以通过 opencli plugin install github:user/repo 安装。

比如官方插件文档里的 GitHub Trending 插件,是这样安装和使用的:

bash 复制代码
opencli plugin install github:ByteYue/opencli-plugin-github-trending
opencli github-trending repos --limit 10

这和笔者之前理解的 opencli github trending 不一样。这里再次说明:OpenCLI 的命令面比较灵活,有些能力是内置适配器,有些能力来自插件,不能想当然地拼命令。

6. 适合和不适合的场景

6.1 适合的场景

笔者觉得 OpenCLI 适合这些情况:

  • 需要频繁从网站拿结构化数据:比如热门榜单、搜索结果、文章列表。

  • 想让 AI Agent 操作网站:尤其是需要复用浏览器登录态的场景。

  • 希望把重复网页操作沉淀成命令:一次适配,多次复用。

  • 想统一本地 CLI 工具入口 :比如 ghdockerobsidian 都通过 opencli 暴露给 AI。

  • 需要脚本化处理网页结果:比如定时拉取、过滤、汇总、生成 Markdown。

6.2 不太适合的场景

但它也不是万能的。

  • 如果只是偶尔打开一个网页看一眼,直接浏览器更快。

  • 如果目标网站已经有成熟官方 API,直接调 API 可能更稳。

  • 如果网站强依赖复杂交互,适配器维护成本可能不低。

  • 如果只是人手动使用底层 opencli browser 命令,体验并不轻松。

所以笔者对它的定位是:它不是替代浏览器,而是把高频、重复、可结构化的网站操作,从浏览器里抽出来。

7. 碎碎念

啦啦啦,终于把 OpenCLI 这篇重新捋了一遍。相比第一次整理时把功能全都堆上来,笔者现在更愿意把它理解成一个"给 AI Agent 准备的工具入口"。

如果只是站在人的角度看,它就是一个挺方便的 CLI 工具;但如果站在 AI Agent 的角度看,它的意义会更明显:网页是给人看的,命令是给程序用的,结构化输出才是 AI 后续稳定干活的基础。

当然,OpenCLI 这种工具也有一个现实问题:网站会变,适配器也会坏。所以它真正适合的不是"写一次永远不管",而是把常用场景沉淀下来,然后持续维护。

注:工具的价值不在于看起来多厉害,而在于它能不能在你真的需要偷懒的时候,稳定地帮你偷懒。

  • 搞清楚工具解决什么问题,比背一堆命令更重要。

  • 能自动化的事情就不要反复手动做,人的耐心应该留给更重要的判断。

  • 如果 AI 终究要替我们干活,那我们现在要学的,可能就是如何把活拆成它能稳定执行的样子。

8. 参考资料

相关推荐
青云计划1 小时前
Feed流
java·后端·spring
☞遠航☜1 小时前
搭建基础的springcloud alibaba项目练习
后端·spring·spring cloud
IT_陈寒2 小时前
React性能优化踩的坑,这个错你可能也会犯
前端·人工智能·后端
zhangxingchao2 小时前
AI应用开发三:RAG技术与应用
前端·人工智能·后端
多敲代码防脱发2 小时前
Spring进阶(容器实现)
java·开发语言·后端·spring
可视之道3 小时前
工业物联网前端技术栈选型与性能优化实战
后端
星辰_mya3 小时前
彩云之上——[特殊字符]的架构师
java·后端·微服务·面试·架构
LucianaiB3 小时前
参加高德 AI 发布会的一点感受:地图,正在变成 AI 的行动入口
后端
属于自己的天空3 小时前
一个文件让 Claude Code 理解你的项目:CLAUDE.md 从入门到精通
后端