必须要有CLI

Vibecoding 的崛起

什么是 Vibecoding

Vibecoding 并不是一种新的编程语言,它是一种新的编程范式。

在传统编程中,程序员必须精通语法、算法和库调用,。而在 Vibecoding 时代,程序员通过自然语言描述你的意图(Vibe),AI 负责将这些意图转化为可执行的代码。从此,代码不再是目的,而是 AI 达成目标的中间产物。

Vibecoding 演进的三个阶段

我浅草地将 Vibecoding 的演进分为三个阶段,分别是 AI 辅助、AI 结对编程和 AI 代理。

AI 辅助(GitHub Copilot、通义灵码),此时 AI 只是一个“高级自动补全”。它帮你写函数、补注释,但你依然在掌控每一行代码。这时实质上还是人类在写代码,AI 是帮助人写代码的辅助,这些AI辅助器一般作为插件嵌入 vs code 等 GUI 编辑器。

AI 结对编程(Cursor),这是目前 Vibecoding 的主流。AI 理解整个项目上下文,能帮你重构、修复 Bug、生成新功能,同时人类也可以用自然语言指挥 AI 让其操作项目文件。但高度依赖 GUI。人类通过点击、拖拽、查看 AI 生成的 Diff 界面来确认代码。这虽然高效,但依然需要人类在 GUI 界面上进行“监工”。这实质上还是Model性能不够优异导致人类堆 AI 工具还不足有充足信任,待未来发展集大成后,会有改变。

AI 代理(Claude Code),这是 Vibecoding 的终极形态。待 Model 足够聪明,它不需要人类监工,也不需要 GUI 界面。它直接通过 CLI 与系统交互,执行任务。现在的Claude Code 有这个趋势,但是还没有真正达到理想的不需要人类监工的高度。

Vibecoding 的火爆,本质上是开发者在用脚投票。当开发者习惯了通过自然语言指挥 AI 自动安装依赖、运行测试、部署服务时,他们就再也回不去那个“手动点击 GUI 按钮、手动配置环境“的时代了。

为什么 AI 是 CLI 的“原住民”?

LLM 的核心能力是处理文本,换句话说,文本是 LLM 的母语。而 CLI 本质上是文本的接口,是软件官方提供一个把信息装进文本的方式。LLM 调用 CLI 实质上就是文本输入 -> 文本输出。

CLI 的最大优势是其命令是高度确定性的。ls 永远是列出文件,grep 永远是搜索文本。这种确定性让 AI 可以构建极其复杂的逻辑链条。AI 知道执行 A 命令后,一定会得到 B 格式的输出,从而精准地规划下一步。当命令执行失败时,CLI 会返回明确的错误信息,AI 可以直接读取这些错误信息,理解“为什么失败”,然后根据这些信息自动修改代码或调整命令,进行下一次尝试。

在 Vibecoding 时代, AI可以通过逻辑组合,把一个大任务拆解成一系列 CLI 命令,实现自动化编程。

但是 GUI 界面实质上是图像,你需要了解按钮在哪里,按了后会显示什么图像,再把图像转换成文本,这些是 Vibecoding 不擅长的。

当下 CLI 的复兴

最近飞书、Google、微信、ElevenLabs、钉钉都在做同一件事:发布 CLI 工具。Karpathy 说:“你的服务应该有一个 CLI 工具。不要让开发者去访问、查看或点击。直接指示和赋能他们的AI”。现在更新的 CLI 工具,从这几只出就假设调用者可能是AI,所有操作都通过参数一次性传入,不弹菜单。输出 JSON 格式,AI 直接解析。

Authropic推出了 MCP 协议,旨在解决“AI 如何连接各种工具”的问题,它的核心实现方式就是通过 CLI 或标准输入输出(Stdio)进行通信。

很多老牌工具(gcloud、aws)最近也对他们原有的 CLI 功能更新,强制支持 --output json 或 --output yaml,向 AI 工具示好。

这些事实无不说明 CLI 在二十一世纪的夏天唤醒自己的第二春。

如果不支持 CLI,未来会怎样?

假设你是一个团队主管,你要求你的 AI 代理完成一个任务:“从项目管理软件中导出本周所有已完成的任务,分析进度,并自动生成一份 Markdown 格式的周报”。如果你的软件只支持 GUI,AI 代理必须启动一个沉重的浏览器实例,模拟人类登录、通过视觉模型去“看”屏幕、待页面加载,处理复杂的 JavaScript 渲染、在弹出的各种模态框中寻找数据下载链接。这个过程冗长且容易出错,而你的竞争对手通过 CLI 接口,让 AI 代理能够在一秒钟内完成原本需要人类半小时的操作时,你的 GUI-only 软件即便界面再精美、功能再强大,也会因为“无法被自动化”而显得笨重、昂贵且过时。

在 Vibecoding 的未来,不支持 CLI 的软件,本质上是在拒绝成为 AI 生产力网络的一部分。开发者,拥抱CLI,或者被淘汰!