CLI 是什么?为什么大厂突然集体卷命令行?
一次性把 CLI 给你讲明白,建议收藏~
什么是 CLI?
CLI 全称 Line ,翻译过来就是命令行界面。
说白了,就是你在一个小黑框里敲文字命令来操作电脑。

与之相对应的, 是我们每日都在使用的GUI(User), 即图形界面了。你平常于手机之上见到的那些图标, 在电脑之上看到的那些窗口以及按钮, 这些通通都是GUI。
比如, 假定你打算将电脑桌面上的一幅图片移至另一个文件夹。要是使用 GUI, 那你会去打开文件管理器, 寻找到那张图片, 借助鼠标把它拖过去并放置到目标文件夹里。
使用 CLI 的话,你打开终端,敲一行命令就搞定了:
mv ~/yupidog.png ~/Downloads

比如说, 切割视频, 批量改换文件名, 追查服务器日志, 这些借助 GUI 需要点好多步骤才能完成的操作, CLI 常常一行命令便能够搞定。
很明显, CLI 的特性是, 简洁且直接, 一条指令仅仅做一件事情, 干脆又爽快。
然而, 要是打算将 CLI 运用得恰到好处, 所要达成的条件是你把数目众多的命令以及参数牢记于心, 这对于普通的使用者来讲,其限制度过高了。
去设想一下, 我那仅仅只是会借助电脑去玩斗地主以及捕鱼的父母亲, 令他们去开启终端并敲击命令? 开什么玩笑呢?

事实上, CLI乃是计算机最为初始的交互形式, 在往昔的岁月中, 电脑根本不存在图形界面, 全部操作皆是依靠命令行来达成, 后来GUI出现了, 平平常常的用户才总算告别了小黑框, 自那之后, GUI一路迅猛发展, 成为了绝对的主流, 厂商们费尽心思把界面做得更加美观、以便于使用, 按钮愈发变大, 交互愈发臻于顺滑, 所有这些皆是为了使人类使用起来越发舒适。
然而, CLI 始终未曾消逝不见, 众多身为程序员的朋友们, 都正运用着命令行来实施服务器的管理操作, 以及开展项目的相关部署工作。并且, 存在一些学习编程的朋友, 他们所写出的第一行代码 Hello World, 极有可能恰恰就是于命令行之中实际运行起来的。
长久持续以来, CLI始终一直都是程序员所独有的专门技能, 甚至于对命令行熟悉与否是用以区分老手与新手的标志要点之一。
然而, 如今AI时代已然降临, 技术渐趋愈发大众化起来, CLI现在正再度跻身站至充满注视瞩目目光的光与影之交汇最明亮区域当下, 在此备受关注。
上手试试 CLI
使用 CLI 最简单的方式,就是打开你电脑自带的终端。
于Mac用户而言, 需在应用程序之中寻得“终端”, 之后, 用户去搜索“”抑或是“命令提示符”, 当打开之后, 你便会见到一个处于等待输入状态的光标。
试着敲一行:
date
电脑会直接返回当前的日期和时间。
这儿便是最为简单的 CLI 交互, 你键入一条命令是这件事, 电脑给出一个结果是那件事, 不存在花里胡哨的界面。

不过, 这仅仅是最为基础之用法罢了, 而现代 CLI 其所能够达成之事, 远远不止于这些方面。
比如近期才开源的飞书的 Lark CLI, 此工具能够使你于终端之中直接去操作飞书的消息功能, 操作飞书的日历功能, 操作飞书的文档功能等。

首先输入一行命令安装:
npm install -g @larksuite/cli

装好之后,先配置一下应用信息:
lark-cli config init --new

打开链接配置飞书 CLI 应用:

成功创建应用之后, 要进行登录授权, 按照需求挑选你准许借助 CLI 操作的业务:
lark-cli auth login

跟着 CLI 的引导一步步操作就好:

授权过程中,记得要在飞书管理后台审核应用:

应用审核通过之后, 能够再次去执行登录命令, 一直到你看见「授权成功」这种情况:

之后,你就可以用命令行来操作飞书了。
比如查看今天的日程安排:
lark-cli calendar +agenda

查看我的待办任务:
lark-cli task +get-my-tasks

甚至直接创建一篇文档:
lark-cli docs +create --title "周报" --markdown "# 本周进展"

从前,针对这些操作, 你得把飞书 App 打开,然后要点动好多下, 才可以将其完竣, 如今, 仅需一行命令, 便能够把它搞定标点符号。
当 CLI 存在诸多命令以及参数之时, 于使用进程当中, 要是忘却了某一个命令该如何去使用, 那该如何是好呢?
只需要记住一个万能口诀:不会就加 --help。
比如:
lark-cli --help lark-cli calendar --help
跟随时去翻看说明书的效果差不多, CLI所做的事情呢, 是会将全部那些可用的命令都罗列出来, 还会把相应的参数一同列出来呈现给你去看。

倘若你认为传统的终端运用起来不太便利, 那么可以尝试下 Warp这般的现代终端工具, 它不但内置了AI辅助, 还具备命令自动补全功能, 对讲新手而言更友好许多 , 对了。

为什么大厂都在卷 CLI?
之前, 咱们感受了借助 CLI 去操作飞书, 对于程序员来讲, 要是习惯使用了, 真的是蛮便利的。
你可曾思索过这样一个问题, 那些大厂耗费巨大精力将产品制作为CLI, 难道仅仅是妄图让我们减少几下鼠标的点击次数吗? 为何大厂们都热衷于在CLI方面展开激烈竞争呢?
答案就 2 个字:AI。
大厂们不是在给人类做 CLI,而是在给 AI 做 CLI。
自 AI 大模型问世之日起, 便持续学习海量代码, 进行命令行操作及其终端输出。 CLI堪为 AI 的母语, 使其读取一行命令而后执行一项操作之举, 如饮水般顺畅自然。
反过来,你让 AI 去操作一个图形界面那可就难了。
仍旧以飞书作为例子, 假定你期望让人工智能帮助你查找一回最近同事所提及到的与“周报”有关联的消息。
假如运用飞书的网页版本, AI 得先开启浏览器, 待页面加载完毕, 寻觅到搜索框, 键入 “周报”, 等结果呈现出来, 再逐一翻阅消息内容。其间要处置诸多网页元素, 致使上下文信息既冗长又繁杂, 存在诸多与内容不相关的干扰资讯。并且倘若网页进行了改版, AI 先前学到的操作方式或许就全都失效了。
但是, 在飞书提供了 CLI 之后, AI 仅需执行一行命令, 便能够完成任务:
lark-cli im +messages-search --query "周报"

有人员进行过测试, 将让AI借助浏览器去完成真实存在的任务, 此时成功率仅仅为35.8%, 把它换成CLI来完成相同的任务后, 成功率却近乎100%!
所以, 你会见到一种颇为有趣的情形, 往昔大厂打造产品时刻意想尽办法将 UI 做得既美观又实用, 以供人类去运用, 如今却回归质朴纯真, 朝着 AI 来做产品,是供 AI 使用的, 越简便直接便越好, 谁率先把自身的产品 CLI 化了, 谁就能率先被 AI Agent 接入, 而谁能率先被 AI Agent 接入, 谁便能够于 AI 时代持续维持竞争力。
外国科技博主 Shawn, 居然撰写了一篇名为《CLI is the new API》的文章, 这着实引发了较为强烈的反响, 其表述之含义乃是, 往昔产品相互之间实现互通凭借的是 API, 而于当下这个 AI 时代, 产品与 AI 之间达成互通所借助的却是 CLI。
提到 API 时, 你也许会存有一个疑问, API 接口它其实也是供程序去调用的, 那为何还需 CLI ?

答案是挺简单的, API 虽说同样是程序接口, 然而调用这个 API 得去编写相关代码。CLI 呢, 则仅仅只是一行命令的事儿, AI 大模型于训练进程当中学习了数量众多的命令行语料, 对于它来说理解以及生成这些命令简直是轻而易举, 再加之能借由 AI 编程工具便利地去执行终端命令, 所以 CLI 对于 AI 来讲几乎不存在难度。
并且, CLI其自身便带有 --help 说明书, AI在运用某个命令之际, 去查一下该命令的用法, 并非需你预先就把那整本API文档, 都塞给它一摊, 如此一来能够节省Token的消耗。
你大概又会发问: 先前特别火的 MCP, 不也是那种连接 AI 与工具的协议? 为何还非得需要 CLI ?
MCP协议规定, 要将所有工具的名称以及参数格式, 统统注入到AI的上下文当中,工具数量一旦变多, Token消耗就会变得极为夸张。进行过一组基准测试, 针对同样的任务, MCP的Token消耗, 有可能是CLI的几十倍!

并且, 对于人类而言, MCP 的运行进程宛如一个黑匣子, 一旦出现问题, 极难进行排查;与之不同的是 CLI, 要是出现错误, 只需将命令原封不动地复制至终端当中运行一回, 报错信息便会清晰明了, 一览无余。
那位知名的 AI 搜索引擎的 CTO, 公开宣告放弃 MCP, 转而朝向 CLI, 由此能够看出, 这个趋势已然是十分明显的了。
当然这并非意味着MCP已然过时, 在存在统一权限管控需求的企业场景当中, MCP的标准化鉴权规范依旧颇具价值, 而且就在近期上线了能够按需加载MCP的功能, 并非不加区分地将所有工具定义一股脑地塞入上下文, 而是当AI有某一工具使用需求之际才去加载。
CLI 开源项目
倘若 CLI这般热门, 那其中必定不会缺少跟 CLI有关联的开源项目。
当下的飞书, 以及钉钉、企业微信等大厂的 CLI, 现阶段基本都已涵盖了消息、日历、文档、通讯录等核心业务, 并且都内置了 AI Agent, 它能直接被 Code 等 AI 工具所调用。

除了大厂官方出品,社区里也涌现了很多有意思的项目。
比如, 能够将任意的网站, 以及应用, 甚至本地工具, 全部都变成命令行接口。
开源指路:

倘若你期望借助AI去查询B站热门以及知乎热榜, 那么装上之后输入一行命令便能够达成。它内部设置了几十个适配器, 这些适配器涵盖了B站、知乎等诸多的平台, 恰似给AI配备了一个万能遥控器。

存在 CLI-, 它能够自动剖析一个开源软件的源码, 寻觅出每个功能背后的 API 逻辑, 接着自动生成相应的 CLI 命令。
开源指路:

怎么自己做一个 CLI?
要是自身拥有属于自己的产品或者工具, 实际上能够去制作一个命令行界面, 从而使得用户借助人工智能能够更加便利地加以使用。
有关开发 CLI 的技术方案存在着诸多, 在之前于编程导航带领大家开展代码生成器项目之际, 运用过 Java 的框架去开发命令行交互方面, 并且还创作过极客范浏览器主页的 Web 端 CLI, 在网页里直接自主地达成了命令行界面, 对于这些方案怀有兴趣的同学能够去观望我之前的教程。

但下面我要重点介绍一个最近发现的宝藏技术,叫 Ink。
这可得多谢前些日子, Code的源码出人意料地泄露。我进行了一番查找, 发觉它是借助于一个名为Ink的库来予以开发的句号。
一般来讲, 平常我们借助React去编写网页, React能将组件转变为浏览器之中的页面。可是React Ink所施行的行为是把相同的React组件转化成终端界面。此库于上已有几万颗星, CLI、CLI等知名项目均在使用, 极为成熟。
开源指路:
比如说, 咱们来举个例子, 就像去编写下面这一段代码, 如此这般便能够渲染出一个简易的终端, 这个终端会去显示出一个每秒自动进行加 1 操作的计数器。

认识了React Ink之后, 我们借助它去试着做一个CLI。
以我的编程导航作为示例, 这是一个供程序员学习交流的社区。在做成 CLI工具以后, 用户能够直接于终端里搜索编程教程, 还能查看热门内容, 并且这也便于AI Agent进行调用。

我率先去针对这个 CLI 开展 2 种核心功能的开发, 一种是将编程导航的内容予以搜索, 另一种则包含对热榜进行查看。
整个开发进程实际上跟编写网页没什么两样了,简易的命令行界面工具索性直接让人工智能一股脑地完成就可以了。
在此让我说就着AI着手开发这个CLI, 首先去编写针对AI的提示词噢啊哈。
帮我用 React Ink 开发一个名为 codefather-cli 的命令行工具,实现以下功能: 1)codefather search <关键词> 获取编程导航搜索结果 https://www.codefather.cn/search/all?searchText=<关键词> 在终端中展示搜索结果列表,包括标题、作者、点赞数 2)codefather hot 获取编程导航热榜 https://www.codefather.cn/hot/all_hot 在终端中展示热榜 TOP20,包括排名、标题、作者、热度 要求:支持 --help 查看帮助信息
把这段指引性词语抛给, Codes或者, 等等人工智能编程辅助器具, 人工智能便能够助力你打造出完备的项目代码。

最终运行效果大概长这样,还不错吧~

不妨尝试着让人工智能运用该工具, 人工智能借助 --help 便能够迅速知晓此工具如何使用, 确切地作出了回应, 速度极快!

身为一个好用的效率工具, 供人类运用, 这便是魅力所在;而它更为有趣之处: 对AI来讲, 它堪称天成的操作接口。
最后哔哔
CLI 的回归, 并非是技术朝着倒退的方向发展, 而恰恰是在表明, 产品那种设计的思路正处于进化的状态。
以前制作一个产品, 仅需思索人类用户会如何去使用, 如今还要去琢磨 AI 会怎样去运用。
产品在未来也许会存在两个前端, 其中一个是供人类观看使用的GUI, 另一个是供AI使用的CLI, 最终二者会实现相同的结果, 达成统一。
给那些正在运用AI工具的朋友们提个建议, 要多多留意CLI的生态情况。不管是利用CLI工具去提高自身效率, 还是为自己的产品打造一个CLI以便让AI能够调用, 这都是颇具价值的。
我身为鱼皮, 始终不断分享AI编程方面的干货, 这篇文章同样会被收纳进我义务开源的那本《AI编程零基础入门教程》, 其 Star数已然突破一万, 凭借从零起步带着你去学会运用AI来开发并上线属于自己的产品。
开源仓库:

更多推荐

所有评论(0)