为什么巨头都在做CLI(命令行界面)?CLI-Anything+ OpenCLI , 让AI操作一切

0 阅读9分钟

视频版:www.bilibili.com/video/BV1G2…

CLI,这个计算机世界里面最古老的交互方式,正在迎来一次新的爆发。飞书、钉钉、企微、谷歌、Stripe,在最近两周内,都不约而同的开源了自己的CLI产品。越来越多的软件开始转向CLI化。

CLI全称是Command Line Interface,其实就是命令行界面。CLI跟我们平时熟悉的图形界面(GUI),代表了两种不同的交互逻辑。 如果我想把这个视频的前5秒切分出来,使用GUI的方式是先导入剪辑软件,找到对应的时间点切分,最后再把视频导出出来。使用CLI的方式则是打开命令行窗口,执行这一个命令就搞定了。

ffmpeg -i input.mp4 -t 00:00:5 -c copy part1.mp4

GUI专门为人类设计,因为人类不擅长记忆命令,而更擅长使用图形工具;而AI则正好相反,大模型在诞生的时候就学习过大量代码、命令行等语料数据,因此CLI天生就是AI的母语。CLI天然具备文本输入、结构化输出、报错清晰、易于组合、方便自动化等一系列的优势。越来越多的公司、开源社区开始放弃MCP,转而拥抱CLI。

后半段我们会探讨MCP跟CLI各自都有哪些优势,他们各自适应的场景是什么。在这股CLI热度下面,最近GitHub上面出现了两个非常火热的开源项目。第一个是CLI anything,只需要一行命令,就能把任意开源软件以CLI的形式接入Agent框架。 短短两周,GitHub上面已经有了2.5万的Star。

还有一个是OpenCLI,它能把任何的网站或者Electron的桌面应用,转换成能让AI调用的命令行工具。

本期视频我们就来深度实测下这两个项目,把各种软件跟网站都转换成CLI,并且让AI Agent能够自动调用这些CLI工具,自动化为我们完成工作。

CLI anything

CLI anything,它的愿景是让所有的软件都能被Agent驱动,一行命令就能把任意的开源软件CLI化,并且轻松接入各种Agent框架。我们来看一下它的工作原理:当我们执行这个命令的时候,会启动一个7个步骤的自动化流程。 首先它分析软件源代码,分析出每个UI操作背后的API逻辑,然后规划CLI命令分组,设计输入输出,接下来进行编码实现,编写测试用例,更新文档并且发布。 我们看到开发者已经对以下11款软件进行了测试,都取得了不错的效果。 本期视频我们以开源软件draw.io为例进行演示。这是一个画板工具,可以通过拖拽图形的方式来绘制流程图、架构图。 众所周知,Agent非常不擅长在UI上用拖拽的方式来工作。我们可以借助CLI Anything,把draw.io进行CLI化,让AI更轻松地进行图形绘制。

使用CLI Anything的前提是需要先在电脑上安装Python,我们可以来到Python的官网,在download这里下载安装最新版本的Python。 然后我们选择一个自己喜欢的AI编程工具,这里我以Claude Code为例。 我们先复制这两个命令,执行一下:

/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything

我们重启一下Claude Code。接下来我让Claude Code把draw.io项目源代码克隆到这个目录下面。 接下来我们就可以执行这个最关键的命令了:

/cli-anything:cli-anything ./drawio

后面是我们要CLI化的开源项目的源代码路径。 接下来Claude Code会为我们执行这个7个步骤的复杂流程,我们要做的就是耐心等待。这里时间过去了46分钟,AI完成了所有代码的编写,成功的把这个项目进行了CLI化。

我们来看一下CLI Anything交付的文件。首先是一个说明文件README.md,里面写明了生成的命令行工具是怎么使用的。 drawio_SOP.md,HARNESS.md, TEST.md 三个文件是编写代码时的规范和约束,帮助AI更好的来编写代码。

核心功能在cli_anything这个文件夹里面,里面存放的是AI编写的Python代码。

项目原理很简单,当我们运行命令的时候,其实就是运行了这些Python代码。Python代码可以按照draw.io的文件标准,来读写draw.io的工程文件,这样同一份文件可以被draw.io软件和CLI两种方式进行读写。

这里我们根据README里面列出的使用范例来测试一下。 首先第一步把AI编写的Python包来安装一下,这里我们在项目目录里面执行一下安装命令。

pip install -e .

安装好以后我们就可以使用下面这些命令行了。 比如第一个命令是创建一个draw.io的项目,这里项目文件就被创建出来了。 接下来我们可以创建图形,使用这个命令创建一个基础的矩形,里面的文字是hello。 使用这个命令可以列出画布里面的元素。 这个命令可以把画布导出成SVG,我们在项目目录就可以看到导出后的SVG文件。 这样整个流程就跑通了。

这样我们就把一个需要复杂UI操作的软件,变成了一个AI可以轻易使用的命令行工具。接下来我们就可以让AI借助这些工具来绘制出更加复杂的图形。这里我以Codex为例进行演示,我让AI借助CLI命令画一个快速排序算法的流程图。 Codex先是执行了--help命令,学会了如何使用这些命令行。 这里体现了CLI的一大优势,也就是自解释性。关于CLI的知识,Agent并不需要一次性的学会,Agent可以随时调用--help去学习每个命令的用法。这个做法跟Skills里面渐进式披露提示词的做法是一致的,可以大幅减少Token消耗,同时保证调用准确率。 学会了如何使用命令行以后,AI开始调用这些CLI为我们绘制图形。Codex为我们生成了一个drawio格式的源文件,还有一个可以预览的SVG格式图片。 我们可以直接在draw.io里面打开这个源文件进行编辑跟查看,我们看到效果还是不错的,稍微改动一下就可以直接使用了。 把一个需要在UI上操作的软件,变成了对AI更友好的命令行工具,AI Agent就可以借助这些命令行帮我们进行全自动的画图,非常的方便。除了可以使用命令把开源软件从0开始进行CLI化,CLI Anything这个项目里面也提供了一些作者已经写好了的CLI工具,我们只需要找到对应的目录,比如OBS这个,这个OBS.md介绍了这个CLI是怎么使用的,直接把这个文件夹下载下来,AI就可以使用命令行来操作OBS了。

OpenCLI

我们来看下一个开源软件OpenCLI,它可以把任意的网站或者Electron应用变成命令行工具。我们看到作者已经把它接入了非常多的网站还有应用,我们直接拿过来用就行了。 这里我们把他安装并且试用一下。第一步首先需要先在电脑上安装nodejs,没有的话可以来到nodejs的官网下载并且安装。 第二步我们需要先安装一个插件,点击这个链接,在项目的releases里面我们可以找到这个插件。 然后我们打开Chrome浏览器,在右上角的设置里面找到管理扩展程序,

打开开发者模式,

我们把刚才下载的插件直接拖拽进来。 插件安装好以后,我们使用npm命令来安装OpenCLI。这里打开一个命令行窗口,把OpenCLI的安装命令粘贴过来,回车这样就安装完成了。

npm install -g @jackwener/opencli

我们来测试一下,比如我们可以执行 opencli hackernews top --limit 5 查询hacker news上面前5个热门话题,这里给出了结果就运行成功了。 我们也可以输入这个命令 opencli grok ask,询问它一个问题。我们看到OpenCLI会自动操作我的Chrome浏览器,打开Grok的官网,然后来询问它这个问题,拿到结果以后,它可以把结果展示到控制台里面。 我们再看一个例子,可以使用OpenCLI去boss上面搜索职位。我们先使用opencli boss search --help看一下它支持哪些参数,这里有城市、经验、学历等等。 比如我搜索一个青岛的软件开发岗位,我们看到它在后台自动调用了Chrome浏览器,为我们找到了软件开发的相关岗位。 在后面追加 -f json,让它把数据以json的格式返回回来。 OpenCLI支持下面几十种网站还有工具,这里我就不一一介绍了。除了可以使用这些作者已经编写好的命令行工具,也可以基于这个项目进行二次开发,把自己需要的工具加入进来。

接下来我们使用AI编程工具对这个项目进行一个二次开发。第一步我们先把项目的源代码克隆下来。

https://github.com/jackwener/opencli.git
cd ./opencli
codex 

这里来到项目目录,打开我们的AI编程工具,这里我使用的还是Codex。 我让AI创建一个全新的命令,把这个网站上面所有的博客列表输出出来。 Codex通读了整个项目结构,学会到了如何创建新的命令。Codex为我们完成了开发,我们按照它的提示把它安装一下。 执行以下三个命令

npm install 
npm run build
npm link

这样我们就可以直接使用新创建的命令行了。我输入 opencli node blog 就获取到了nodejs这个网站上面所有的博客信息。 这样我们在AI的帮助下面,开发了一个全新的OpenCLI命令。如果我们想要全新的命令来自动化操作网站,就可以使用这个方法让AI帮我们开发。

官方CLI工具

除了使用CLI Anything和OpenCLI把一些开源软件CLI化,很多大型软件都提供了自己的官方CLI服务。我们就以GitHub的官方CLI为例。我们先来到它的官网,点击DOWNLOAD按钮,把GitHub官方CLI安装一下。 安装完成以后,打开命令行窗口,输入gh也就是GitHub的缩写,然后--help,查看一下有哪些命令可以使用。 一般我们使用CLI工具,第一步就是先登录,这里我们输入命令gh auth login 这里会提供给我们一个校验码,我们来到这个网址,填上校验码就登录完成了。 然后我们可以使用这个命令,查看一下Openclaw上面的issue列表。 或者使用这个命令给我自己创建一个新的仓库。我们看到这里仓库就创建出来了。 更多命令的使用方法可以参考GitHub官方CLI的文档。后续我们的视频里面还会介绍更多好用的官方CLI工具。

MCP与CLI的对比

MCP全称是模型上下文协议,简单来说MCP就是AI大模型的标准化工具箱,大模型可以利用这些工具与外界互动,获取信息并且完成具体任务。不过由于MCP协议设计之初存在的一些问题,越来越多的公司、开源社区开始放弃MCP,转而拥抱CLI。比如AI搜索巨头Perplexity,在2026年3月宣布放弃MCP,全面转向CLI化。还有现象级的开源产品OpenClaw,从一开始就拒绝支持MCP。在26年3月,开发者社区掀起了一个讨论热潮,主题就是“MCP已死,CLI永生”。 我认为MCP对比CLI主要有以下几个劣势。

首先MCP上下文占用较高。MCP需要将所有的工具名字、参数格式还有调用示例全部注入上下文,每新增一个MCP工具都要占用大量的Token开销。而CLI则可以让AI自己学习用法,使用渐进式披露的方式来减少Token消耗。ScaleKit做过一组测试,使用GitHub的官方MCP与官方CLI进行对比,在所有任务上面,CLI的Token消耗都成倍的小于MCP。

第二点,MCP更像是一个Agent的专用协议,而CLI是一个同时对Agent跟人类友好的工具。 我们还是来看刚才那个GitHub的例子,比如我让Agent用GitHub CLI创建一个分支,如果报错了。在这个场景下面,我只需要把命令复制一下,开一个命令行窗口运行一下,就能立即复现出错误原因,而且我还可以协助AI进行修复。 而MCP对人类来说更像是一个黑盒,整个运行过程都是在Agent内部的,如果运行出错,很难在本地复现问题,调试的难度大大增加。

第三点是CLI天生支持管道符操作,可以将多个命令组装成流水线,轻松实现复杂任务,这种组合能力是MCP不具备的。 我们来看一个例子,我们先使用GitHub CLI获取OpenClaw的issue列表,这个竖线是管道符,意思是把上个命令的输出结果作为下个命令的输入,可以像拼接管道一样把命令组合起来,形成一条流水线。通过管道符,我们可以先把数据转换成一个Powershell对象,在每条数据里面筛选出包含bug这个字符串的,再根据时间进行排序,最后导出成一个CSV文件。这样我们就通过管道符串联了流水线,一条命令就能轻松实现复杂需求。

如果我们使用MCP处理这种任务,就需要非常多步骤的反复调用工具,大大增加了Token消耗跟时间开销。

当然MCP也有自己的独特优势,比如在多租户还有严格权限控制的场景下面,MCP就好于CLI。比如国内有的AI Agent云平台,允许用户上传自定义的Python或者node格式的MCP包,在云端使用。MCP有标准化的安装包,有统一的鉴权规范,是实现这个功能的前提。而CLI没有标准化的安装包,也没有统一的鉴权标准,所以想实现类似的功能就非常的困难。 我觉得目前说CLI可以完全取代MCP还为时尚早,而且两者之间也在互相学习进化。比如Claude Code和Codex最近都上线了tool search功能,不再给AI全量注入MCP的schema,而是按需加载MCP,把Skills跟CLI渐进式披露提示词的思路引入了MCP。 第二个例子是龙虾之父开发的开源软件MCPorter,它可以把任意的MCP转换成CLI的格式,提供给agent调用。 相信以后技术发展的趋势是,每个技术框架可以互相学习优点,它们之间的功能都会互相的融合。这就是本期视频的全部内容,感谢大家点赞支持,我们下期再见。