1. 概念定义

概念定义作用与特点
Agent智能代理,基于大语言模型构建的自主系统,能够感知环境、进行推理、规划并执行任务核心主体,具备目标导向的行为能力,可以调用工具、记忆上下文、进行多步推理
Skills技能,Agent 具备的特定能力或功能模块,通常是预定义的函数或方法集合封装了 Agent 可以执行的具体操作,如代码生成、数据分析、文本处理等
Plugins插件,扩展 Agent 功能的外部组件,提供额外的工具和服务接口增强 Agent 的能力边界,允许接入第三方服务、API 或自定义功能模块
MCP (Model Context Protocol)模型上下文协议,标准化的协议规范,用于连接 AI 应用与数据源/工具提供统一的接口标准,使 Agent 能够安全、标准化地访问外部资源和工具
Hooks钩子,在 Agent 执行流程中的特定节点触发的回调机制允许在关键生命周期节点(如任务开始前、完成后、出错时)插入自定义逻辑
CLI (Command Line Interface)工具调用入口, 直接执行本地命令agent的 调用外部能力, 像在本地执行一个命令

关系说明

  • Agent 是核心主体,通过组合 SkillsPlugins 来扩展能力
  • MCP 为 Agent 提供标准化的工具和资源访问协议
  • Hooks 允许在 Agent 运行过程中注入自定义行为
  • CLI 是一个工具调用入口,允许 Agent 调用外部能力,如本地命令 调用等

2. 架构关系图

整体架构图

graph TB
    subgraph External_Access_Layer[外部访问层]
        CLI[CLI 命令行工具]
        MCP[MCP 协议]
    end

    subgraph Core[核心层]
        Agent[Agent 智能代理]
    end

    subgraph Capability_Layer[能力层]
        Skills[Skills 技能模块]
        Plugins[Plugins 插件系统]
    end

    subgraph Lifecycle[生命周期]
        Hooks[Hooks 钩子]
    end

    Agent -->|内置能力| Skills
    Agent -->|扩展能力| Plugins
    Agent -->|调用外部命令| CLI
    Agent -->|标准化访问| MCP
    Agent -->|触发回调| Hooks

    CLI -->|执行命令| System[系统/外部工具]
    MCP -->|访问资源| Resources[数据源/工具服务]

    Skills -->|返回结果| Agent
    Plugins -->|提供服务| Agent
    System -->|执行结果| Agent
    Resources -->|返回数据| Agent
    Hooks -->|注入逻辑| Agent

    style Agent fill:#e1f5ff,stroke:#0066cc,stroke-width:3px
    style Skills fill:#e8f5e9,stroke:#4caf50
    style Plugins fill:#f3e5f5,stroke:#9c27b0
    style CLI fill:#fff4e6,stroke:#ff9900
    style MCP fill:#fce4ec,stroke:#e91e63
    style Hooks fill:#fff9c4,stroke:#fbc02d

数据流向

用户 → CLI → Agent → [Skills/Plugins/MCP] → 执行任务 → 返回结果
                 Hooks (在各阶段触发)

各职能职责说明

  1. Agent 为中心
  • Agent 是整个系统的核心,负责协调和调度所有组件

  • 接收来自 用户指令,进行任务规划和执行

  1. 能力扩展层
  • Skills: Agent 内置的核心能力,直接由 Agent 调用

  • Plugins: 外部扩展组件,为 Agent 提供额外的功能和服务

  • 两者共同构成 Agent 的能力边界

  1. 标准化接口层
  • MCP: 提供标准化的协议,使 Agent 能够统一访问各种数据源和工具

  • 解耦了 Agent 与具体资源的实现细节

  1. 生命周期管理
  • Hooks: 在 Agent 执行的关键节点插入自定义逻辑

  • 支持前置处理、后置处理、错误处理等场景

  1. cli(命令行工具调用)
  • agent调用外部能力的方式之一, 直接执行本地命令

  • 优势: 直接执行 shell 命令、脚本或程序

  • 适用: 单机/本地环境, 成熟稳定的工具

  • 示例: git status,ffmpeg

MCP和CLI的对比

核心差异对比表

对比维度CLI (命令行接口)MCP (模型上下文协议)
本质系统命令执行接口标准化资源访问协议
通信方式调用系统 shell/终端命令通过 JSON-RPC 等标准协议通信
安全性较低,直接执行命令,存在注入风险较高,有权限控制和沙箱机制
标准化程度低,依赖具体系统和命令高,统一的协议规范
跨平台性差,命令因操作系统而异好,协议无关底层系统
使用场景系统管理、脚本执行、本地工具调用数据源访问、API 集成、服务调用
典型示例git status, ls -la, npm install文件系统 MCP、数据库 MCP、GitHub MCP
返回值格式文本输出,需解析结构化数据(JSON)
错误处理通过退出码和 stderr标准化的错误响应
配置复杂度简单,直接写命令需要配置 MCP Server
扩展性依赖系统可用命令可自定义 MCP Server
隔离性无,直接访问系统资源有,可通过沙箱限制访问范围
状态管理无状态,每次独立执行可支持会话和上下文保持
适用对象任何可执行程序和脚本实现了 MCP 协议的服务

协同使用

在实际应用中,CLI 和 MCP 可以互补使用:

graph LR
    Agent[Agent] -->|系统级操作| CLI[CLI]
    Agent -->|资源访问| MCP[MCP]

    CLI -->|执行| Commands[系统命令]
    MCP -->|访问| Services[标准化服务]

    Commands -->|结果| Agent
    Services -->|数据| Agent

    style Agent fill:#e1f5ff,stroke:#0066cc,stroke-width:2px
    style CLI fill:#fff4e6,stroke:#ff9900
    style MCP fill:#fce4ec,stroke:#e91e63

https://smithery.ai/ 网站提供的mcp, 就是很好的cli和mcp协作的案例, 它把各个厂商提供的mcp包装一层,并提供cli命令对外使用. 例如: smithery tool call my-github-server list_branches '{"owner": "octocat", "repo": "Hello-World"}' 含义: 查询"hello-world"仓库的分支列表"