引言

前端时间小马编写了一篇《AI时代下的CLI优势与MCP对比》,最近传统CLI爆火。飞书开源 CLI 算是一个挺有代表性的例子——在 Agent 的场景下,CLI 似乎比 GUI 更贴合实际需要。传统的 CLI 对普通用户来说确实不太利于人机交互,但到了 AI 时代,人机交互的重心变成了人与 Agent 之间的交互。这时候,CLI 对 Agent 的友好程度反而比 GUI 更高,因为 Agent 更容易调用和解析 CLI 的输入输出。于是,有了 CLI 之后,未来人只需要用自然语言跟 Agent 说清楚想做什么,剩下的事情交给 Agent 配合 CLI 去完成就好了。

在这里插入图片描述

一、什么是CLI

CLICommand-Line Interface(命令行界面)的缩写。它是一种用户与计算机交互的方式:用户通过键盘输入文本命令,操作系统或应用程序接收并执行这些命令,然后以文本形式输出结果。

🤖 主要特点

  • 纯文本交互:没有图形界面(如窗口、按钮、图标),全靠输入指令。
  • 高效直接:熟练用户常用组合命令或脚本,能快速完成批量、复杂的任务。
  • 资源占用少:相比图形界面,CLI 消耗的系统资源更少。
  • 可脚本化:可以将一系列命令写入文件(脚本),实现自动化操作。
  • 远程管理常用:通过 SSH 等协议连接远程服务器时,CLI 是最常见的操作方式。

⚙️ 常见例子

  • Windows:CMD(命令提示符)、PowerShell
  • macOS / Linux:Terminal(终端)、Bash、Zsh
  • 数据库:MySQL 命令行客户端、psql(PostgreSQL)
  • 开发工具:Git 命令行、Node.js 的 npm、Python 解释器

🔌 与 GUI(图形用户界面)对比

特性 CLI GUI
操作方式 输入命令 点击图标/菜单
学习曲线 较陡(需记忆命令) 平缓(直观)
任务效率 批量、重复任务更高效 单次、探索性任务方便
出错反馈 通常返回错误码和文本信息 弹出提示框

总之,CLI 是开发者、系统管理员和高级用户常用的强大工具。即使日常使用 GUI,了解基本 CLI 命令也能极大提升工作效率。

二、飞书开源CLI与Agent CLI

老规矩,先上资源。

飞书CLI安装与使用指南 - 让AI Agent真正接入飞书:https://www.feishu.cn/content/article/7623291503305083853

开源GitHub:https://github.com/larksuite/cli?tab=readme-ov-file

在这里插入图片描述

飞书开源CLI事件,是理解“Agent下的CLI”(或称AI智能体命令行)一个极佳的切入点。这件事的核心,是飞书把自己变成了一个AI可以直接通过命令行操作的工具箱,它标志着AI从“聊天机器人”进化到了能“动手干活”的阶段。

要理解这个变化,可以从下面几个层面来看:

🤖 1. Agent CLI 到底是什么?

在传统认知里,CLI(命令行界面)是给专业人士用的,通过输入精确指令来操作计算机。而“Agent下的CLI”则有两个全新的维度:

  • AI调用工具的接口:它将软件功能(如发消息、建文档)封装成结构化的命令,让AI Agent可以直接调用执行。
  • AI与人类协作的界面:人类可以用自然语言向Agent描述需求,Agent在后台将其拆解为一条条CLI命令并执行。

飞书、钉钉等平台开源CLI,本质上就是把它们各自复杂的平台能力,封装成了一套AI能轻易理解和执行的标准化指令集。

🆚 2. Agent CLI 与过去有什么不同?

CLI之所以能在AI时代“翻红”,是因为它比过去两种让AI操作软件的方式都更高效、更可靠:

方式 核心原理 对AI的挑战
截图模拟 AI通过识别屏幕截图,模拟鼠标点击GUI界面 操作不稳定,界面变化就出错,就像蒙着眼指挥别人点按钮
API调用 AI直接调用软件官方提供的API 每个API的参数格式都不同,AI需要提前学习大量文档,非常笨重
Agent CLI AI通过执行标准化的命令行指令 指令自带 --help,报错也是文本,大模型最擅长处理这些,交互几乎无摩擦

⚙️ 3. 飞书 CLI 是 Agent CLI 落地的范本

飞书开源的工具 lark-cli 就是Agent CLI理念的一个范本,其核心在于将飞书庞大的能力系统性地“CLI化”。

  • 能力覆盖全面lark-cli覆盖了飞书的11个核心业务域,提供超过200条具体命令,并内置了19个AI Agent技能包
  • 三层架构设计:飞书为满足人和AI的不同需求,设计了巧妙的三层架构
    • Shortcuts(快捷命令):通过 + 前缀调用,参数少,对人和AI都友好。
    • API Commands(平台命令):与官方API一一对应,用于精确控制。
    • Raw API(原始接口):可调用所有开放平台的接口,能力无死角。

🔌 4. Agent CLI 在执行层扮演什么角色?

要让AI从“理解”走向“执行”,需要一套完整的技术栈。其中,Agent CLI扮演着至关重要的“动手执行”角色,它与另外两个核心概念 SkillMCP 有明确的协同分工:

概念 解决的问题 一句话理解
Skill (技能) AI“懂什么” 给AI装上大脑,让它知道有什么知识和能力可用
MCP (模型上下文协议) AI“怎么接” 给AI装上标准化的USB接口,让它能接入外部系统
CLI (命令行接口) AI“怎么做” 给AI装上能执行具体动作的双手,让它去完成任务

举例来说:AI的 Skill 是“懂得如何发送一封飞书消息”;它通过 MCP 协议与飞书系统建立连接;最终,它调用 lark-cli send --user=xxx --content="..." 这条 CLI 命令,将消息实际发送出去。

🌐 5. Agent CLI 的浪潮与未来

飞书并非孤例,钉钉、企业微信等也纷纷开源了CLI工具,这背后反映的是“开放执行层”的共识。在这个浪潮中,不同玩家也走出了不同路径:

  • 飞书:选择MIT协议直接开源 lark-cli,以最低门槛抢占开发者生态。
  • 钉钉:虽然开源,但采用“灰度共创”模式,以安全和管控为先,更符合其企业客户的诉求。
  • 全球趋势lark-cli 这类工具让AI Agent有了“原生能力”,而像Claude Code、Gemini CLI等智能体工具则是AI Agent本身的“原生形态”,它们直接运行在终端,改变着我们的工作方式。

💎 总结

总的来说,“Agent下的CLI”并非简单的技术复古,而是AI演进到“执行阶段”的关键一步。正如飞书CLI所展现的,它将复杂的软件能力模块化、标准化,为AI进入业务流程铺平了道路。这标志着人机协作正从“人类操作”转向“人指挥、AI执行”的智能新时代。

三、什么是 coding agent

简单来说,Coding Agent(编程智能体) 是一个能够自主理解、规划并执行复杂编程任务的AI系统。

它不仅仅是帮你“写几行代码”的自动补全工具,而是像一个有自主性的初级程序员伙伴。它通常具备以下核心能力:

  • 自主规划:能理解一个完整的功能需求(例如:“用Python写一个爬虫,抓取某网站新闻并保存为CSV”),并将其拆解成多个子任务(如:请求网页、解析数据、处理异常、保存文件)。
  • 工具使用:可以主动调用各种工具来完成任务,比如:
    • 读写文件:创建、修改、删除代码文件。
    • 执行命令:运行脚本、安装依赖包(如 pip install)、启动服务。
    • 检索信息:搜索网络文档、查询代码库。
  • 迭代与调试:尝试运行代码,如果遇到错误,能读取错误日志,分析原因,自主修改代码并再次运行,直到成功。
  • 上下文感知:理解整个项目的结构、不同文件之间的关系,而不仅仅是当前打开的单个文件。

它与普通AI编程助手的区别是什么?

特性 普通AI助手 (如基础版ChatGPT) Coding Agent (如Devin, AutoCoder)
交互模式 一问一答,用户需要复制粘贴代码并手动运行 设定目标后,自主工作,可多轮修正
任务范围 解决离散的、独立的小问题(如写一个排序函数) 执行包含多步骤、有依赖关系的复杂任务
行动能力 只能输出文本建议,无法操作你的文件或终端 可以直接操作你的文件系统、运行命令、查看结果
错误处理 用户把错误信息告诉它,它再给出修正建议 自动捕获错误,尝试自行修复,直至任务完成或需要帮助

常见的应用场景:

  1. 根据需求生成整个项目:你说“我要一个React的待办事项应用”,它能生成所有组件、样式、状态管理代码,甚至帮你 npm install 并启动预览。
  2. 端到端的功能开发:为一个现有代码库增加新功能,比如“在用户登录后,自动发送一封欢迎邮件”。
  3. 自动化代码重构与迁移:例如“把这个项目的所有回调函数改成async/await语法”。
  4. 自动化调试:给它一个错误报告或失败的单测,它能追踪代码、定位问题、提出并验证修复方案。
  5. 生成测试与文档:为整个模块自动编写单元测试,或生成API文档。

当前的一些代表例子:

  • Devin:由Cognition Labs开发,是功能非常全面的代表性产品,宣称能独立完成整个软件开发流程。
  • GitHub Copilot Workspace:GitHub官方的“智能体”版本,集成在开发环境中。
  • AutoCoderOpenDevin:开源社区的项目,让开发者能尝试和构建自己的Coding Agent。
  • 传统的AI助手 + 插件:比如将Claude或GPT-4与 Continue、Cline 等VSCode插件结合,也能实现部分Coding Agent的能力。

需要留意的局限性:

  • 复杂项目理解不足:在超大型、架构复杂或很古老的代码库中,容易迷失方向或产生错误决策。
  • 可能制造混乱:它的尝试性修改,有时可能会引入新的Bug,甚至破坏原有功能,尤其是在没有完善测试覆盖的项目中。
  • 安全与合规风险:自主执行命令和修改代码存在风险,比如意外删除文件、执行恶意操作或违反代码规范。
  • 成本较高:运行一个完整的Coding Agent需要大量的计算资源和Token消耗。

总的来说,Coding Agent代表了AI编程工具从“被动助手”向“主动协作者”演进的下一步。目前,它更适合作为经验丰富的程序员的超级助手,来分担重复性、探索性或边界清晰的子任务,而不是完全替代人类开发者。但它的能力正在以惊人的速度增长。

四、如何在 Agent 下开发自己系统的 CLI

针对“在 Agent 下开发自己系统的 CLI”,这里的 Agent 有两种常见理解:

  1. AI 编程助手(如 GitHub Copilot、ChatGPT、Cline 等)—— 你希望借助 AI Agent 来辅助开发 CLI 工具。
  2. 多智能体系统中的 Agent —— 你需要为自己的 Agent 设计一个命令行交互接口。

下面分别给出建议,并重点展开第一种(更常见)。


1、借助 AI Agent(编程助手)开发 CLI

1. 明确 CLI 的需求

先理清你的系统需要暴露哪些功能给命令行,例如:

  • 启动/停止服务
  • 执行特定任务(数据处理、模型推理、配置管理)
  • 查看状态、导出日志等

2. 选择 CLI 开发框架(可让 AI 帮你选型)

不同语言的主流 CLI 库:

语言 推荐库 特点
Python click, typer, argparse typer 基于类型提示,最现代
Go cobra 功能强大,支持子命令
Node.js commander, yargs 生态成熟
Rust clap 高性能,类型安全

3. 让 AI 生成脚手架代码

例如对 Python + typer,你可以这样提示 AI:

“用 typer 创建一个 CLI,包含三个子命令:start(启动服务)、stop(停止服务)、status(查看状态)。服务配置从 config.yaml 读取。”

AI 会生成类似下面的代码:

import typer
import yaml

app = typer.Typer()

def load_config():
    with open("config.yaml") as f:
        return yaml.safe_load(f)

@app.command()
def start():
    config = load_config()
    typer.echo(f"Starting service with {config}")
    # 实际启动逻辑

@app.command()
def stop():
    typer.echo("Stopping service")

@app.command()
def status():
    typer.echo("Service is running")

if __name__ == "__main__":
    app()

4. 利用 Agent 迭代开发

  • 添加参数--verbose--config 等,直接让 AI 补充。
  • 集成业务逻辑:把系统核心模块导入 CLI,AI 可以帮助生成调用代码。
  • 生成帮助文档:让 AI 根据函数签名自动生成 README.md 中的 CLI 使用说明。
  • 编写测试:使用 pytest + click.testingtyper.testing,AI 可生成测试用例。

5. 打包与分发

  • Python:setup.pypyproject.toml 中定义 console_scripts 入口点,AI 可生成模板。
  • Go:go build 直接生成二进制。
  • Node.js:配置 bin 字段在 package.json

2、为 Agent(智能体)设计 CLI 接口

如果你的“Agent”是指一个自主决策的 AI Agent(例如 LangChain Agent、强化学习 Agent),你想通过命令行与之交互:

1. 设计交互协议

  • 输入:用户通过 CLI 输入自然语言指令或结构化命令。
  • 输出:Agent 执行后输出文本、表格、文件等。

2. 实现一个简单的 REPL(Read-Eval-Print Loop)

import cmd

class AgentCLI(cmd.Cmd):
    intro = "Welcome to Agent CLI. Type help or ? to list commands."
    prompt = "(agent) "

    def do_run(self, arg):
        """执行任务:run <task description>"""
        result = agent.execute(arg)
        print(result)

    def do_status(self, arg):
        print("Agent status: idle")

    def do_exit(self, arg):
        return True

if __name__ == "__main__":
    AgentCLI().cmdloop()

3. 集成 Agent 核心

  • 如果 Agent 是 LangChain 类型,CLI 可以接收用户输入,调用 agent.run(user_input)
  • 如果 Agent 是环境交互型(如游戏 AI),CLI 可发送动作、接收奖励。

4. 扩展功能

  • 支持批处理模式:agent-cli --file commands.txt
  • 支持输出为 JSON(便于其他程序调用)
  • 支持历史命令、自动补全(可借助 prompt_toolkit

3、通用开发流程(无论是否使用 AI)

步骤 动作
1 定义命令与参数结构(命令行接口规范)
2 选择 CLI 框架并初始化项目
3 实现每个命令对应的回调函数(调用系统内部 API)
4 添加错误处理、日志、配置文件支持
5 编写单元测试与集成测试
6 打包、发布到包管理器或直接分发二进制

4、用 AI Agent 加速 CLI 开发的示例提示词

  • 生成基础骨架
    “用 Go 的 cobra 创建一个 CLI 工具,根命令为 mysys,子命令有 config setconfig getrun。”

  • 添加参数校验
    “为 Python typer 的 run 命令添加一个 --threads 参数,类型为 int,默认值为 4,值必须在 1~16 之间。”

  • 生成 Bash 补全
    “为上述 CLI 生成 bash 自动补全脚本。”

  • 编写 README
    “根据以下 CLI 代码生成用户手册,包含安装方法和所有命令示例。”


总结

  • 如果你是开发者:直接使用 AI 编程助手(如 Copilot、Cursor、通义灵码)与对话式 AI(ChatGPT/Claude)结对编程,能极大提升 CLI 开发效率。
  • 如果你在开发 Agent 系统:实现一个 REPL 或基于 cmd 的简单 CLI 即可与 Agent 交互。
  • 核心要点:无论哪种情况,先明确命令树,再让 AI 生成样板,最后集成你的业务逻辑。

五、CLI编写指引

1、参考 飞书CLI的开源源码模仿实现;

地址:https://github.com/larksuite/cli/blob/main/README.zh.md
在这里插入图片描述
在这里插入图片描述

2、编写基于CLI的skills

对于 Agent 你只需要用自然语言告诉它你想干什么,它会自动调用skills cli处理任务。

这是lark-cli中的doc skills包,,其中展示了基于CLI的skills编写。

在这里插入图片描述

我们再来回顾之前下 基于脚本或者API的SKILL编写。我们从clawhub上找到一个包https://clawhub.ai/steipete/weather,查看通过curl http请求API的方式。

在这里插入图片描述

当然,如果这里只想先调用脚本(如PY)再由脚本发起HTTP请求API也是同样的道理。SKILL包的编写就像语文写作文一样,没有什么标准答案。

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐