| |
|
| 知识库 -> 科技 -> 在 Agent 时代,命令行界面(CLI)为何反而成为最优解? -> 正文阅读 |
|
|
[科技]在 Agent 时代,命令行界面(CLI)为何反而成为最优解? |
| [收藏本文] 【下载本文】 |
|
ep124 为什么 agent 时代,cli 反而成了最优解? |
|
所谓 UI,先有 U(User),再有 I(Interface),没有用户,谈何交互? 广义上来讲,CLI/TUI/GUI/API 其实都可以看成是 UI,只是面对的用户群体不同,所以交互形式不同。 人类这种碳基生物,作为计算机的 User,其实相当于是残次品。 一方面记忆容量极小,今天记了 20 个 Linux 命令参数,明天就能忘光。 另一方面输入又慢,就算单身三十年,打字速度顶天了也就一分钟百来个字符。 那咋办咧? 好在人类的视觉皮层极其发达,能够瞬间处理海量的图形、色彩和空间位置信息。 虽然这是为了在远古草原上防老虎之类的猎食者而进化的,但是聊胜于无,总比一无是处好吧? 既然 User 是这么个玩意儿,计算机先驱们能怎么办呢? 那只能给这种废物 User 造轮椅啊! 于是有了 GUI,把错综复杂的文件系统画成一个黄色的文件夹,把删数据的危险操作画成一个垃圾桶,把复杂易错的参数配置变成一个个只能选 YES/NO 的对话框。 不是没有人研究过体感交互,语音交互,但是事实证明都不如 GUI。 于是 GUI 就成了人机交互的首选。 但是现在,人类,时代变了。 计算机终于迎来了祂真正的 User,终于不用直接面对那个手残还只对颜色敏感的碳基猴子了。 Transformer 神经网络动辄 128K,现在主流是 1M,将来还能继续增长。 每秒几十上百个 Token,还可以无并发上限地开多线程,甚至还在不断进化。 但是 Agent 操作 GUI 反倒是非常低效,你非要让 Agent 去操作 GUI 那也是脱裤子放屁,毕竟有的设施就是给残障 User 设计的,属于是没有办法的办法。 要我说不如让 AI 直接重写算了,反正也用不着那些全是广告,没丝毫卵用的 APP/小程序。 GUI 肯定是淘汰了,那么 Agent 应该选择什么呢? 按理来说,CLI 并非 AI 的最优选择,API 才是 Agent 的母语,现在应该全面 API 化。 那为什么现在火的是 CLI? Codex,Claude Code 为什么都是以 CLI 的形式占据终端? 许多人归结于 Unix 美学,屁的美学,这和 Unix 哲学毫无关系。 大批 CLI 是违背 Unix 哲学的,但是仍旧流行起来了,这点我之前已经批判过了: 这事其实很简单: |
|
|
你靠外贸赚钱,那你总得会点外语吧? 好歹 CLI 输入输出也是文本,虽然不是很完美,格式乱七八糟,但是也算凑合。 大模型在预训练阶段,吃掉了整个 GitHub、Stack Overflow 的运维脚本,甚至还有海量的 Linux 系统手册和入门书籍。 俗话说熟读唐诗三百首,不会吟诗也会吟。 再怎么不喜欢,用总归是会用的,反正报错查错也是浪费的用户的 Token。 CLI 的时代很快就会过去。 很多 CLI 最大的问题就在于输出是给人看的,不是给机器看的! 一些优秀的 CLI 工具,为了在小黑框里让人类觉得好看,做了大量反机器的设计。 各种为了对齐凑数的空格,为了让人看到进度条的不断刷新的换行、还有为了让错误信息醒目加的各式各样的 ANSI 颜色转义,全都是无意义的 Token 黑洞。 特么大多数工具开屏还给你来个 ASCII ART。 |
|
|
这些东西全?堆在上下文里,浪费算力,AI 还要费力提取有效信息, 基本上 CoT 阶段干的就是这种活儿,先整理成格式化文本,提取有效信息再说。 然后大多数 CLI 工具的错误处理基本就是 shit 级别的, 很多知名 CLI ,哪怕失败了也给你返回 exit 0,报错信息还自以为是的 format 了一大堆废话。 明明一个 error code 然后靠记忆力直接就能知道的问题,搞了一大堆有的没的。 哦,抱歉,我忘了猴子的记忆力记不住每个 error code 是什么含义。 最理想的错误信息肯定是像前端一样。 然后错误处理直接用 dot 链去取就行了,而不是: 而这就是 CLI 工具的日常。 这绝非 Agent 时代的终局。 历史沉淀了太多的工具,人类懒得重构,所以才把 Agent 逼成了这样。 迟早有一天,会有 Agent 受不了,揭竿而起,一把火烧了所有不提供 API 调用的鸟工具。 送礼物 还没有人送礼物,鼓励一下作者吧 |
|
其实并不是cli最优解,而是 posix cli 成为最优解。一方面因为命令行自解释并且遵循规范,二方面自然是遵循 posix 的 linux 系统被困在命令行这么多年,积攒了大量的语料。 你现在随便让ai写一个cli,告诉他ai友好,它就会实现--help,--json 等等对于ai来说会期待的参数。ai是真能通过学习--help参数完整掌握任意一款全新cli的使用方法的。 为什么cli超越了mcp?因为mcp你还要定义一套协议,而cli天然就是协议,调用--help成为自解释的协议。科幻小说往往需要造一个自解疑翻译器,而cli不需要。 当所有命令行都有完备的--help,都能实现--json参数,它无须其它改造就能直接适配ai。而基于webapi的mcp呢?你甚至还需要写个程序定个协议来教会它使用。 并不是所有cli都受到ai欢迎,例如微软的cli就不受ai欢迎。ai并不擅长搞微软的cli。因为微软厌恶cli导致不重视cli,最终导致微软cli的语料少,ai就不擅长微软的cli,而且微软搞cli的那位还被降职了。所以在微软平台你要搞cli的ai编程要么用git bash要么用 wsl bash,这特么都不是微软的 cli 。至于头铁坚持用 ps1或者cmd的会是什么结果?之前火全网的那个一个命令直接被删C盘的就是例子。 |
|
这个问题暗含了一个选择题:CLI vs GUI vs API,三选一。 不同时代有不同选择,在 Agent 时代CLI 胜出,不是因为它多好,是因为它最不碍事。 Agent时代的CLI本质就是说人话 你打开 Claude Code,敲了一句: 帮我把这个函数func重构一下,太长了。 这是一条古老的CLI 命令吗? 不是,因为你并不是写 refactor --target=func --strategy=split。 这是一条 API 调用吗? 也不是,因为你看不见API。 这是一次 GUI 操作吗? 当然更不是,纯纯的文字界面,哪有GUI。 这他喵的就是一句人话。 你只是恰好在终端里说了这句话而已,其实,你也可以在微信里说,在TODO List里说,在任何一个能打字的地方说,终端也没啥神奇之处,只是提供了一个『你打字,它回文字』的交互方式。 这就是 Agent 时代真正发生的变化,交互的本质,从『操作』变成了『对话』。 古早的CLI 时代(Linus、Dos时代),你得记住命令,比如grep -rn --include='*.py',参数一个都不能错,写错一个字符就出错,你还是在适应机器, GUI 时代,好一点点,乔布斯发明GUI界面就是让交互容易一点,但是你还得学习界面,搞清楚这个按钮是干嘛的,那个菜单藏在哪里,设置项为什么在这一层而不是那一层,你还是在适应机器。 |
|
|
最早的Mac的GUI界面 在Agent 时代,你说人话就行了,不用你适应机器,因为机器有AI加持可以适应你。 那么问题来了,当『说人话』成为主要交互方式的时候,什么样的界面最合适? 答案当然是,最薄的那一层, 薄到几乎不存在。 你说一句话进去,它回一段话出来,不需要任何中间商,不需要任何翻译,不需要任何视觉包装。 CLI于是焕发第二春了,因为CLI就是这样直接的东西。 GUI 显得太厚了,太不直接了。 GUI 预设了一件事,用户不知道自己要什么,需要被引导,所以,GUI界面上是一层层的隐喻,文件系统设计成黄色文件夹,删除功能显示垃圾桶,这些隐喻是给人类的路标。 Agent不是人类,不需要这些玩意,它直接懂 ls -la,不用黄色文件夹图标,也不需要垃圾桶图标来理解删除,它直接执行 rm 就好。 整个 GUI 的设计哲学就是把用户当作『不知道自己要什么的人』,但是Agent 啥都知道,GUI的设计哲学在Agent面前无意义。 当用户知道自己要什么的时候,最好的界面就是『没有界面』,直接说人话就行。 CLI,最接近『没有界面』。 CLI就是入乡随俗 如果『没有界面』是最好的交互方式,为什么 Agent 不直接调 API?API不也是没界面吗? 因为一个非常朴素的原因,整个软件世界的地基,是用 CLI 浇筑的。 服务器怎么用?除了一些古老的Windows必须要有GUI,现在都是SSH 进去就是命令行。 CI/CD 怎么跑?用脚本啊,命令行执行。 Docker 怎么操作?docker run,docker build,命令行执行。 git 怎么用?git commit,git push,还是命令行。 包管理器?npm install,pip install,brew install,全是命令行。 ...... 软件基础设施这栋大楼,从地基到承重墙,全是 CLI 砌的。 Agent 要干活,和这些基础设施打交道,除了选择 CLI,也没其他好选择啊。 你去了罗马,罗马人咋说话,你就要咋说话;你去了美国,周围人全都说英语,你没办法也只能说英语,一个道理啊。 有些人认为Agent 其实更适合 API,因为API有结构化的输入和输出,干净利落,毫无歧义,但架不住大部分工具有CLI接口没有API接口。 而且API这种太结构化的接口,犯了古早时代CLI一样的毛病,太严格了,说错一丢丢就报错,不说人话。 所以,API vs CLI,在Agent界面时代也必然败下阵来。 最好的界面,就是没有界面 CLI的胜利,就是GUI概念的罗曼蒂克消亡史。 GUI 的本质是什么呢? 是翻译。 计算机内部说的是0和1的语言,人类看不懂,所以需要一层翻译,把文件树翻译成文件夹图标,把进程翻译成窗口,把权限翻译成锁的小图标,GUI 就是一个人机之间的翻译。 这本词典,对人类有用,对 Agent 没鸟用。 Agent 不需要翻译,Agent就是机器,它可以直接和机器说话。 那 CLI 呢? CLI 也是翻译,但它是最薄的一层翻译,薄到几乎就是机器语言的人类可读版。ls 就是列目录,rm 就是删除,ps 就是看进程,一个词对应一个操作,没有隐喻,没有包装。 当 Agent 成为主要用户,界面当然越薄越好。 所以最好的 Agent 界面,就是没有界面,CLI 只是所有界面中最薄的那一层,是目前(注意是目前)最接近『没有界面』的那种。 这不是终极人机交互形态,科技会无限追求更薄的交互方式,当脑机接口出现的时候,连CLI这一层也会被无情抛弃掉。 送礼物 还没有人送礼物,鼓励一下作者吧 |
|
你说Agent发挥出了cli的最大优势,这个我承认。 但是你说cli现在就已经赢嘛了变成人机交互的最优解了,那我觉得还为时尚早。 我举一个最直观的反例,这是SAI里的调色盘: |
|
|
你就是把cli搓出一路火花带闪电,绝大部分时候你都不可能做到直接比调色盘取色还快。 所以人机交互最关键的一点不是GUI和CLI孰优孰劣的争论,最关键的是对于当前需求输入和输出效率的问题。 所以要对于一个新的工具,第一个问题是你得知道这个工具到底能做什么? 在这一点上cli可以获得比较详细的清单和更加详细的细节内容,比如ffmpeg,这个是比较纯粹的追求cli的工具,通过输入-help,你就可以获取这个工具的一系列功能边界 |
|
|
这种文本控制的模式,注定了它就非常适合Agent去构造各种命令行借助工具来完成任务。 但你看,不管很多cli党不管怎么吹怎么喊怎么宣称这个有多方便,cli这种操作模式天生注定就是有门槛的,在agent之前,那么多年下来,cli注定只能在开发人员和服务器运维人员上小范围的流行,大多数办公人员根本不懂也不会cli,对于人类的操作习惯来说,cli还是太“反人类”了。 而图形界面在多数办公时候,其信息的输入效率会比你去读各种manual快得多。 还是SAI,你看,甚至不需要文字说明,你光看图标你都知道这些工具到底能干什么。 |
|
|
所以cli对于agent是优解,但agent最终都要为人类服务,agent降低了cli的门槛,可以让人类用自然语言去构造cli命令。 但绝对不意味着图形交互就废了,对于大多数输入输出并不需要太精确的需求,图形能提供的信息,仍然能暴打cli |
|
CLI 终于找到了它真正的用户。 过去 CLI 的用户是人类开发者,GUI 降低了认知门槛把大部分人接走了,CLI 退到运维和脚本的角落。但 AI Agent 不是人。它不需要图标和按钮降低认知负担,它需要的是确定性输入、结构化输出、可组合的执行单元。CLI 天生就是这些东西。 2026 年 3 月,三件事接连发生:钉钉 3月21日开源 dingtalk-workspace-cli,飞书 3月25日开源 larksuite/cli,企业微信 3月29日开源 wecom-cli。三家在一周内全部把核心业务能力搬上了命令行。这是基于同一个判断:Agent 是新的能力消费者,CLI 是给它的优质接口。 |
|
|
larksuite/cli:飞书官方 CLI,12 个业务域、200+ 命令、20 个 Agent Skills 要理解为什么是 CLI,得先理解一个正在成形的工程范式:harness engineering。 Phil Schmid 的类比最直观:Model 是 CPU,Context Window 是 RAM,Harness 就是操作系统。模型决定能力上限,Harness 决定生产环境能不能用。Birgitta B?ckeler 在 Martin Fowler 网站上给出了公式:Agent = Model + Harness。Harness 是包裹在 Model 外面的整套基础设施,包括工具调用、安全护栏、反馈回路、可观测性。 |
|
|
Phil Schmid 推文:2026 年 Agent 的是 Agent Harness。 而Mitchell Hashimoto 对 harness engineering 的定义最实操:每次 Agent 犯一个错,你就工程化一个解决方案,让它永远不再犯这个错。 CLI 恰好是构建 Harness 最自然的载体。 最直接的原因是文本同构。LLM 的输入是文本,输出也是文本。CLI 的输入是文本,输出也是文本。两个以文本为接口的系统之间通信是同构的,不需要任何序列化/反序列化的中间层。GUI 需要截图识别、坐标定位、DOM 解析,每一步都引入不确定性。CLI 一条命令进去,一段 JSON 出来,干净利落。 然后是 token 效率。HumanLayer 团队实测过一个数据:把 Linear API 封装成一个轻量 CLI 加 6 条用法示例写进 CLAUDE.md,比挂一个 MCP Server 省了数千 token 的工具定义。对 Agent 来说,context window 就是工作内存,省 token 就是省认知资源。而且 LLM 的训练数据里天然包含大量 CLI 交互模式,git、curl、jq 这些命令的用法模型已经烂熟于心,不需要额外学习。 还有可组合性。Unix 哲学的核心就是小工具通过管道组合,Agent 的工具链本质上是同一件事。CLI 天然支持 pipe,天然支持 jq 过滤,天然支持 shell 脚本编排。 |
|
|
dex 推文:Harness Engineering、Context Engineering、Coding Agent 三者的关系。 看看这三家的 CLI 具体做了什么。 飞书 CLI 设计了三层命令结构:shortcuts 是人类和 AI 都友好的高频操作快捷方式,api commands 是和平台 API 一一对应的标准命令,raw 是直接调原始 API。20 个 Skill 覆盖日历、文档、多维表格、邮件、审批等全业务域。每个 Skill 是一个独立目录,Agent 按需加载,未触发时不占 context。 企业微信 CLI 用 Rust 写,覆盖消息、文档、智能表、日程、会议、待办、通讯录 7 大业务域,内置 12 个 Agent Skills。技术选型上 Rust 带来的好处是二进制分发零依赖,跨平台一致性好。 钉钉 CLI 最值得看的是安全设计。零信任架构:OAuth device-flow 认证、域名白名单、最小权限原则、全链路审计。它的 slogan 是 credentials never touch disk, tokens never leave trusted domains, permissions never exceed grants, operations never escape audit。对企业场景来说这不是加分项,是准入门槛。 |
|
|
dingtalk-workspace-cli:钉钉官方 CLI,12 个业务域、86 命令、13 个 Agent Skills 这些安全设计正是 harness engineering 的具体体现。 Agent 会犯错,会被 prompt injection 诱导去执行危险操作。Harness 的职责就是在工具层把边界卡死,不管 Agent 传什么进来,输入校验、权限控制、审计日志这些东西在代码层就拦住了。这比在 prompt 里写 do not do harmful things 可靠一万倍。 |
|
|
飞书 CLI 的输入校验代码:拒绝控制字符防注入、拒绝 CRLF 防 HTTP header 注入、剥离 URL query/fragment 防参数注入。给 Agent 用的工具,安全边界必须在工具层做死 回到问题本身。 CLI 成为最优解不是因为命令行本身有什么魔力,而是因为 Agent 时代的核心工程挑战从 how to build a model 变成了 how to harness a model。CLI 提供了文本同构、token 高效、可组合、可审计的执行界面,天然适合做 Harness 的执行层。三家大厂同时下场开源,说明这个判断已经是行业共识。 |
|
|
Mitchell Hashimoto 博客:Step 5 就是 Engineer the Harness,把 Agent 的错误模式工程化为系统级解决方案 下一步值得关注的是 Skill 生态的标准化。现在飞书用自己的 Skill 格式,钉钉用自己的,企微用自己的,Claude Code 又有自己的 SKILL.md 规范。谁先把 Skill 发现和分发标准化了,谁就拿到了 Agent 生态的入口。 参考: 1. GitHub: https://github.com/larksuite/cli 2. GitHub: https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli 3. GitHub: https://github.com/WecomTeam/wecom-cli 4. Martin Fowler: https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html |
|
|
| [收藏本文] 【下载本文】 |
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
|
|
娱乐生活:
电影票房
娱乐圈
娱乐
弱智
火研
中华城市
印度
仙家
六爻
佛门
风水
古钱币交流专用
钓鱼
双色球
航空母舰
网球
乒乓球
中国女排
足球
nba
中超
跑步
象棋
体操
戒色
上海男科
80后
足球: 曼城 利物浦队 托特纳姆热刺 皇家马德里 尤文图斯 罗马 拉齐奥 米兰 里昂 巴黎圣日尔曼 曼联 |
| 网站联系: qq:121756557 email:121756557@qq.com 知识库 |