简体中文
← 返回首页

MCP / Agent / Skill / Harness

一份关于代理应用相关概念的编辑图谱

MCP、Agent、Skill 与 Harness 分别描述代理应用中的上下文交换、任务执行、可复用指令和宿主运行时。这个四分框架是 Aphrodite 的编辑模型,并非行业通用架构,也不表示每个产品都实现了四者。

最近审查:当前 MCP 架构(2026-07-28)

MCP 架构图
  1. Claude Code
    1. Harness
      1. Skill
      2. Agent
      3. Tool
      1. MCP
        1. 外部工具/数据源
🔗

MCP - Model Context Protocol

连接层协议

MCP 是 AI 应用与外部系统交换上下文的开放客户端—服务器协议。宿主协调一个或多个客户端,服务器提供经过授权的工具、资源与提示等能力。MCP 不定义模型训练、推理或 Agent 的内部推理循环。

MCP 是什么?

MCP 是一个通信协议,规定了 AI 如何:

  • 请求执行某个操作
  • 获取外部数据
  • 与本地应用程序交互

工作原理

  1. MCP 客户端连接本地进程或远程服务
  2. 客户端与服务器通过 JSON-RPC 交换请求、响应和通知
  3. 服务器访问获准的工具、资源或提示
  4. 客户端将规范化结果提供给模型或宿主界面

配置示例

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/Projects"]
    },
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "/Users/you/Projects/example"]
    }
  }
}

Windows 可能需要通过 cmd /c 调用 npx。Claude Desktop、Claude Code、Codex 与 Cursor 的配置路径不同。已于 2026-07-29 对照 MCP 官方仓库核验。

官方参考服务器

指导委员会参考服务器官方仓库):

  • Everything
  • Fetch
  • Filesystem
  • Git
  • Memory
  • Sequential Thinking
  • Time

这些项目用于教学和参考,并不代表可直接用于生产环境。可在 MCP Registry 中查找第三方服务器;采用前应评估发布者身份、权限、安全性和维护状态。归档服务器以及厂商或社区服务器属于不同类别。

🤖

Agent - AI 代理

任务执行层

Agent 是能够自主规划和执行复杂任务的 AI 系统。与简单的问答不同,Agent 可以:理解目标 → 制定计划 → 执行行动 → 评估结果 → 调整策略。

核心能力

  • 理解复杂指令
  • 分解大任务为小步骤
  • 自主决策下一步做什么
  • 使用工具完成具体操作
  • 从执行结果中学习

使用示例

与 Claude Agent 对话示例

用户:帮我重构这个项目的错误处理

Claude Agent:

我会帮你重构错误处理。让我先分析现有的代码结构……

  1. 扫描项目中的错误处理代码
  2. 识别重复模式
  3. 设计统一的错误处理方案
  4. 逐个模块实施重构
  5. 运行测试确保没有破坏现有功能

[Agent 自主执行上述所有步骤]

对比 GitHub Copilot

Claude Code 与 GitHub Copilot 都提供终端或 IDE 中的代理式编程和代码审查能力,但支持范围、权限确认、沙箱、模型选择、云端异步任务及 MCP 接入会随产品、客户端和版本而变化。比较时应区分本地审查与拉取请求审查,并以当前产品文档为准。

最近审查:。来源:Claude Code 文档 · GitHub Copilot 功能文档

🛠️

Skill - 技能扩展

能力增强层

Skill 是一组按需加载的指令、脚本与资源,供智能体完成某一类专门任务。SKILL.md 格式是公开的,并不依附于某一个产品,Claude Code 只是加载它的宿主之一。通过 Skill,你可以:定义常用命令、封装复杂工作流、添加领域知识。

Skill 类型

  • 个人 Skill:存放在 ~/.claude/skills/,供个人项目复用
  • 项目 Skill:存放在 .claude/skills/,随仓库共享
  • 插件 Skill:由已安装插件提供
  • 内置能力:随版本变化,请用 /help 查看当前命令

定义示例

---
name: component-docs
description: Generate documentation for Vue components. Use when the user asks to document a component or component library.
---

Component documentation

  1. Inspect component props, emits, slots, and dependencies.
  2. Generate a usage example.
  3. Document accessibility and edge cases.
  4. Link to related components.

Path: ~/.claude/skills/component-docs/SKILL.md

使用方法

  1. ~/.claude/skills/<name>/.claude/skills/<name>/ 下创建包含完整 SKILL.md 的文件夹
  2. 写入上例所示的 YAML namedescription 字段
  3. 描述任务或直接提及 Skill 名称;不要假设存在未记录的内置命令
  4. 运行 /help,并查阅当前文档确认特定版本的命令

内置命令

Claude Code 的内置能力名称可能随版本变化。请运行 /help,或查阅当前命令参考。个人、项目和插件 Skill 也可能提供 /skill-name 命令。

🧩

Harness - 代理脚手架

运行时承载层

本页用 Harness 指模型或 Agent 周围的宿主运行时。它可以组合系统指令、工具循环、会话状态、记忆、权限与集成,但不同产品对此边界的划分不同,也不要求具备本页展示的全部组件。

核心能力

  • 装配 system prompt 与工具循环
  • 维护会话上下文与长期记忆
  • 加载并调度 Skill 与 MCP 服务器
  • 提供权限控制、沙箱与日志
  • 跨形态托管(CLI、IDE 插件、守护进程、Serverless)

Harness 结构解剖

一个最小 Harness 的结构(以 Claude Code 为例)

  1. system prompt → CLAUDE.md / 仓库说明
  2. tool loop → Read/Edit/Bash/Grep(内置工具集)
  3. MCP clients → 通过 mcpServers 配置连接外部服务器
  4. skills → ~/.claude/skills/*.md(按需加载)
  5. runtime → 终端 REPL / VS Code 插件 / 网关守护进程

其他 Harness 实现:

  • Codex CLI (openai/codex) — Rust 写的终端 Harness
  • OpenClaw — 跨平台多渠道网关 Harness
  • Hermes Agent — 自带学习循环的 Harness
  • Cursor Agent — 嵌入 IDE 的 Harness

四者的关系

MCP + Agent

MCP + Agent:Agent 通过 MCP 协议调用外部工具。例如:当 Agent 需要读写文件时,通过 MCP 文件系统服务器完成。

Agent + Skill

Agent + Skill:Skill 是 Agent 的技能包。当用户调用特定 Skill 时,Agent 会使用相应的提示模板和工作流。

Skill + MCP

Skill + MCP:Skill 可以封装复杂的 MCP 调用。例如:一个 部署 Skill 可能调用 MCP 的 Git + Docker + CLI 工具。

Harness + 三者

Harness + 三者:Harness 是宿主,把 MCP/Agent/Skill 装配起来。改 Harness 配置文件(如 claudedesktopconfig.json)相当于重新接线;写一个新 Skill 相当于给宿主装新工具。Claude Code、Codex CLI、Cursor Agent 都是这种宿主 + 三件套的实例。

MCP 是底层协议,让 Agent 能与外部世界通信

Agent 是执行主体,根据用户需求规划并执行任务

Skill 是能力扩展,让特定任务更高效专业

Harness 是运行时承载层,把三者粘合成一个真正能跑起来的代理

这些概念经常协同工作,但并非必须同时存在的技术栈,也不是严格的依赖层级;不同产品的边界与实现会有所不同。