培训演示

Agent CLI 概览与工作流程

2026-05-13
·
阅读时间 11 分钟
·
技术团队

本文档介绍 Agent CLI 的核心概念、设计哲学与完整工作流程。---...

Agent CLI 概览与工作流程


一、概述

1.1 什么是 Agent CLI

Agent CLI 是智能体(AI Agent)与计算机系统交互的核心范式。在智能体语境下,CLI(Command Line Interface,命令行界面) 是 AI 操控环境最原始、最强大的手段——AI 通过生成文本命令直接与操作系统、文件系统、外部工具进行交互。

核心定义: Agent CLI = 自然语言输入 → LLM 推理 → 结构化命令生成 → 安全执行 → 结果解析 → 自然语言回答

架构定位: 在整个 Agent 工具调用体系中,CLI 处于执行层——它不负责”理解意图”(那是 Function Call 的事),不负责”协议通信”(那是 MCP 的事),也不负责”流程引导”(那是 Skill 的事),CLI 只负责一件事:把任务可靠地执行出来

┌──────────────────────────────────────────────────┐
│                Skill(认知与流程层)               │
│   告诉 Agent:什么时候、按什么顺序、用什么标准做    │
├──────────────────────────────────────────────────┤
│              MCP(协议与通信层)                    │
│   标准化 Agent 与外部系统的连接方式                 │
├──────────────────────────────────────────────────┤
│           Function Call(意图与参数层)             │
│   将自然语言翻译为结构化的函数调用指令              │
├──────────────────────────────────────────────────┤
│              CLI(执行与行动层)  ← 本文焦点        │
│   可靠地、可复现地执行每一个具体任务                │
└──────────────────────────────────────────────────┘

1.2 为什么 AI 选择 CLI

LLM 本质上是文本生成模型——输入文本、输出文本。而 CLI 恰恰是计算机世界中最纯粹的文本交互范式:命令是文本,参数是文本,输出也是文本。这种天生的”语法同构”决定了 CLI 是 AI 与操作系统交互的最短路径:

交互方式优势劣势
GUI(图形界面)人类直观需模拟鼠标点击、像素识别,脆弱且难以泛化
API 调用结构精准需为每个工具单独编写适配代码
CLI(命令行)文本天然适配 AI,50年Unix生态沉淀需安全沙箱保障

相比其他方式,CLI 提供了一条统一且强大的中间路径:Unix 50 年积淀的管道(|)、重定向(>)、脚本组合能力,让 AI 通过简单的文本命令即可编排任意复杂的操作链。


二、核心架构:CLI-First 模式

2.1 设计哲学

构建确定性的 CLI 工具,再用 AI 提示词包装它。 Deterministic code execution > ad-hoc prompting

Requirements(需求) → CLI Tool(实现) → Prompting Layer(编排)
     要做什么              怎么做              智能调度

反模式(Prompt-Driven):

用户请求 → AI 临时生成代码/操作 → 结果不可复现、难以调试

正确模式(CLI-First):

用户请求 → AI 使用确定性 CLI → 结果一致、可复现、可测试

2.2 CLI-First 三步法

第一步:理解需求 —— 梳理系统需要支持的操作、数据实体、查询需求、输出格式、边界情况。

第二步:构建确定性 CLI —— 为每个操作用明确的命令实现:

# 命令结构:tool <command> <subcommand> [options]

# 创建操作
evals use-case create --name newsletter-summary --description "..."
evals test-case add --use-case newsletter-summary --file test.json

# 执行操作
evals run --use-case newsletter-summary --model claude-3-5-sonnet

# 查询操作
evals query runs --use-case newsletter-summary --limit 10
evals query runs --model gpt-4o --score-min 0.8

# 对比操作
evals compare models --use-case newsletter-summary --prompt v1.0.0

CLI 设计关键特征:

  • 显式:每个操作都有具名的命令
  • 一致:遵循标准 CLI 约定(标志、选项、子命令)
  • 确定性:相同命令始终产生相同结果
  • 可组合:命令可串联或脚本化
  • 可发现tool --help 展示所有命令

第三步:用提示词包装 —— AI 将用户意图映射为 CLI 命令序列:

用户:"运行 newsletter-summary 的评估,比较 Claude 和 GPT-4"

AI 执行:
  1. evals run --use-case newsletter-summary --model claude-3-5-sonnet
  2. evals run --use-case newsletter-summary --model gpt-4o
  3. evals compare models --use-case newsletter-summary
  4. 向用户呈现结构化的对比结果

2.3 提示词层的职责边界

提示词层负责提示词层不负责
理解用户意图用临时代码复制 CLI 功能
将意图映射为 CLI 命令绕过 CLI 直接生成方案
按正确顺序执行命令执行本应由 CLI 完成的操作
处理错误和重试逻辑”简单操作”就跳过 CLI
向用户总结结果

三、完整工作流程

3.1 ReAct 循环范式

Agent CLI 的执行遵循 ReAct(Reasoning + Acting) 范式,核心循环为:

思考(Reasoning) → 行动(Action) → 观察(Observation) → 思考(Reasoning) → ...

单次任务的完整六步流程:

┌────────────────────────────────────────────────────────────┐
│  ① 输入解析                                                │
│  用户通过自然语言提出需求,Agent 接收并开始处理                │
├────────────────────────────────────────────────────────────┤
│  ② 推理决策                                                │
│  LLM 分析任务,判断需要调用哪些 CLI 工具或命令组合            │
├────────────────────────────────────────────────────────────┤
│  ③ 命令生成                                                │
│  Agent 根据推理结果生成具体的 Shell 命令                     │
├────────────────────────────────────────────────────────────┤
│  ④ 安全执行                                                │
│  命令在沙箱环境或受控 shell 中执行,经过白名单和权限校验      │
├────────────────────────────────────────────────────────────┤
│  ⑤ 结果解析                                                │
│  Agent 捕获输出,进行结构化解析,提取关键信息                 │
├────────────────────────────────────────────────────────────┤
│  ⑥ 反馈回答                                                │
│  将执行结果转化为自然语言,向用户呈现最终答案                 │
└────────────────────────────────────────────────────────────┘

3.2 实际交互示例

# 用户提问(自然语言)
"我的电脑磁盘空间不够了,帮我看看是什么占用了空间?"

# Agent 内部推理
→ LLM 判断需要先查看磁盘使用情况

# 执行命令 1:查看磁盘整体使用率
$ df -h /
输出: /dev/sda1  100G  85G  15G  85% /

# 执行命令 2:找出最大的前10个文件/目录
$ du -sh /home/* 2>/dev/null | sort -rh | head -10
输出: 32G  /home/user/Downloads

# Agent 最终回答
"检测到您的根目录使用率已达 85%,主要占用空间的是
 /home/user/Downloads 文件夹(32G)。建议清理 Downloads
 文件夹中的无用大文件。"

3.3 多步骤编排流程

复杂任务中,Agent 会将多个 CLI 命令编排为工具链:

用户:"运行所有评估用例,找出不及格的"

# 步骤1:获取所有用例列表
evals list use-cases --json

# 步骤2:对每个用例运行评估
for each use_case:
  evals run --use-case <id>

# 步骤3:查询不及格结果
evals query runs --status failed --json

# 步骤4:向用户呈现结构化报告

四、工作原理

4.1 核心机制:文本→命令→执行→反馈

                       ┌─────────────┐
  自然语言输入 ──────▶ │   LLM 推理   │
                       └──────┬──────┘

                       ┌──────▼──────┐
                       │  工具选择与   │
                       │  参数生成     │
                       └──────┬──────┘

              ┌───────────────┼───────────────┐
              │               │               │
       ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
       │  Shell 命令  │ │  文件操作   │ │  API 调用   │
       │  (bash)     │ │  (Read/Edit/│ │  (HTTP/     │
       │             │ │   Write)    │ │   RPC)      │
       └──────┬──────┘ └──────┬──────┘ └──────┬──────┘
              │               │               │
              └───────────────┼───────────────┘

                       ┌──────▼──────┐
                       │  输出捕获与   │
                       │  结构化解析   │
                       └──────┬──────┘

                       ┌──────▼──────┐
                       │  自然语言     │
                       │  回答生成     │
                       └─────────────┘

4.2 安全机制

CLI 执行环境必须经过严格的安全控制:

安全层机制说明
沙箱隔离在受控环境中执行,限制文件系统和网络访问防止误操作影响宿主机
命令白名单预定义允许执行的命令集合阻止危险命令(rm -rf / 等)
权限校验执行前检查操作权限防止越权访问
输出过滤对执行结果进行安全过滤防止敏感信息泄露
超时控制设置命令执行时间上限防止死循环占用资源

4.3 命令配置标志设计

CLI 工具应通过标志暴露执行行为控制,使工作流能无需代码更改即可适应不同场景:

# 执行模式标志
tool run --fast           # 快速模式(省时,轻量)
tool run --thorough       # 全面模式(耗时,深度)
tool run --dry-run        # 预览模式(只展示不执行)

# 输出控制标志
tool run --format json    # 机器可读
tool run --format markdown # 人类可读
tool run --quiet          # 最小输出
tool run --verbose        # 详细日志

# 资源配置标志
tool run --model haiku    # 快速/低成本模型
tool run --model sonnet   # 平衡型模型
tool run --model opus     # 强大/高成本模型

# 后处理标志
tool generate --thumbnail  # 生成缩略图版本
tool process --no-cache    # 绕过缓存,强制重新执行

标志设计原则:

  1. 合理默认值:不带标志时工具也能正常工作
  2. 显式覆盖:标志修改默认行为
  3. 布尔标志--flag 启用,不出现则禁用
  4. 值标志--flag <value> 用于选择(模型、格式等)
  5. 可组合:标志之间应逻辑兼容

4.4 工具间协作机制

当一个任务需要多个工具配合时,Agent 采用以下协作模式:

模式说明适用场景
管道组合`cmd1cmd2
顺序编排依次执行多个命令有依赖关系的步骤
并行分派同时启动多个子Agent独立问题域并发处理
条件分支根据执行结果选择下一步需要动态决策的场景

4.5 多 Agent 并行模式

面对多个独立任务时,Agent CLI 支持并行 Agent 分派:

用户:"修复这3个不同模块的测试失败"

Agent 1 → 修复 auth 模块测试(独立问题域)
Agent 2 → 修复 batch 模块测试(独立问题域)  同时执行
Agent 3 → 修复 abort 模块测试(独立问题域)

并行分派原则:

  • 一个 Agent 一个独立问题域 —— 不共享状态,不相互依赖
  • 任务规格化 —— 每个 Agent 获得明确的范围、目标和约束
  • 结果集成 —— Agent 返回后统一审查,运行全量测试验证

五、在整个 Agent 体系中的定位

5.1 四种核心范式对比

Agent 工具调用体系中存在四种核心范式,CLI 是其中最基础也是最强大的执行手段:

维度CLIFunction CallMCPSkill
控制力极高(系统级)中高(API级)中(资源级)中(流程级)
稳定性低(自然语言生成)高(Schema校验)极高(协议化)高(模版化)
安全性极具挑战较好(权限内)良好(标准鉴权)极高(受控闭环)
建设成本高(早期)极低
核心价值直接、通用执行结构化参数提取标准化集成领域知识固化
类比AI 的”四肢”AI 的”手”AI 的”USB-C”AI 的”肌肉记忆”

5.2 协同工作模式

在实际 Agent 系统中,四种范式协同工作:

用户请求


Skill 匹配 ← "这是一个代码审查任务,加载 code-reviewer Skill"


Function Call ← "需要调用 read_file(git diff) 获取变更内容"


MCP 连接 ← "通过 git-server 获取仓库差异"


CLI 执行 ← 实际执行 bash 命令、读写文件、运行 linter


结果返回 ← Skill 格式化为结构化的审查报告

六、最佳实践

6.1 CLI 设计准则

  1. 分层命令结构tool command subcommand --flag value
  2. 多输出格式:人类可读默认 + --json 机器可读
  3. 幂等性:相同命令多次执行结果一致,--force 强制覆盖
  4. 验证机制--dry-run 预览、--explain 说明
  5. 清晰错误信息:指出具体错误 + 建议修复方案
  6. 退出码规范:0 = 成功,1 = 用户错误,2 = 系统错误

6.2 提示词层最佳实践

// 正确:始终使用 CLI
await bash('evals run --use-case newsletter-summary');

// 错误:用临时代码复制 CLI 功能
const config = await readYaml('...');
for (const test of tests) {
  // ... 手动实现
}

6.3 何时使用 CLI-First 模式

应该使用 CLI-First:

  • 需要多次重复执行的操作
  • 相同输入必须产生相同输出的场景
  • 涉及文件、数据库、配置等状态管理
  • 需要查询、过滤、聚合数据
  • 需要独立于 AI 进行测试
  • 用户可能需要脚本化或自动化

不需要 CLI-First:

  • 仅执行一次的操作
  • 简单的单个文件读写
  • 纯计算(无状态管理或副作用)
  • 临时数据分析

七、关键结论

构建能脱离 AI 完美运行的工具,然后再用 AI 让它们更易用。 Build tools that work perfectly without AI, then add AI to make them easier to use.

Agent CLI 的本质是:AI 作为编排者,确定性代码作为执行者。AI 负责理解意图、选择工具、编排流程;CLI 工具负责可靠地、可复现地执行每个具体任务。这种分工使得 Agent 系统同时具备了 AI 的灵活性和传统软件的可靠性。


本文档基于 PAI 系统架构、CLI-First 设计模式、智能体工具调用体系等源文件合成。 最后更新:2026年5月