从 MCP 到 Harness:AI Agent 工程化的核心技术栈解析

3 阅读8分钟

当 AI 从"玩具"走向"生产工具",我们需要什么样的工程化体系?

一、引言:AI 开发的工程化困境

过去两年,AI 编程工具经历了爆发式增长。从 GitHub Copilot 到 Claude Code,从 Cursor 到 JetBrains AIR,每一个新工具都在试图回答同一个问题:如何让 AI 真正融入开发 workflow?

但生产环境的现实是残酷的:

  • AI 写的代码"看起来对,跑起来错"
  • 长任务执行中模型会"跑偏"
  • 工具调用缺乏标准化,每个平台都有自己的协议
  • 安全边界模糊,一个配置失误就可能泄露核心代码

这些问题不是模型能力问题,而是工程化问题

本文将从今天阅读的技术文章出发,解析 AI Agent 工程化的核心技术栈:MCP 协议、Harness 架构、以及新兴的 AI 原生 IDE 范式。

二、MCP:AI 工具调用的标准化之路

2.1 什么是 MCP?

MCP (Model Context Protocol) 是一种标准化的「工具调用协议」,由 Anthropic 提出,正在被越来越多的 AI 工具和平台采纳。

简单来说,MCP 想解决的核心问题是:如何让 AI 安全、标准化地调用外部工具?

在没有 MCP 之前,每个 AI 应用都要为每个工具写特定的适配代码:

  • 调用数据库?写一套数据库适配器
  • 调用 API?写一套 HTTP 客户端
  • 读取文件?写一套文件系统接口

MCP 的出现,让这些工具调用有了统一的标准。

2.2 MCP 的工作原理

┌─────────────┐      SSE长连接      ┌─────────────┐
│   Claude    │ ◄─────────────────► │  MCP Server │
│   (Client)  │    (实时通信)       │  (日志平台)  │
└─────────────┘                     └─────────────┘
       │                                   │
       │  1. 发送工具调用请求               │
       │ ─────────────────────────────────►│
       │                                   │
       │  2. 返回执行结果                   │
       │ ◄─────────────────────────────────│

核心技术点:

  • SSE (Server-Sent Events):长连接实时通信
  • 标准化接口:统一的工具定义和调用方式
  • 鉴权机制:accessToken 管理,支持自动刷新

2.3 得物技术的实践案例

得物技术团队基于 MCP + Claude Code Skill 开发了日志诊断工具,核心流程:

用户输入 traceId
    ↓
Claude 加载 Skill 配置
    ↓
检查 accessToken → 过期自动刷新
    ↓
调用日志平台 MCP 分页拉取(最多20页)
    ↓
切换到代码分支,结合日志检索代码
    ↓
综合分析 → 生成诊断报告

关键设计:

  • Token 自动管理:1小时有效期,过期自动刷新
  • 分页全量拉取:禁止只查第一页就下结论
  • 跨服务分析:自动识别上下游服务日志
  • 代码联动:日志中的类名/方法名精确定位代码

2.4 MCP 的生态意义

MCP 的价值不仅在于技术层面,更在于生态层面

维度传统方式MCP 方式
工具集成每个工具单独适配一次适配,处处可用
开发成本高(N个工具×M个平台)低(标准化接口)
可移植性
安全性参差不齐统一鉴权机制

趋势判断: MCP 正在成为 AI 工具集成的"USB 接口",未来会有越来越多的工具支持 MCP。

三、Harness:AI Agent 的系统化架构

3.1 什么是 Harness?

Harness 是 AI Agent 的"操作系统"或者说调度框架——核心作用是把大模型、各类工具、记忆模块、权限管理、任务流程整合在一起,让 AI 不再只是能聊天的工具,而是能真正自主完成任务的"助手"。

但 Harness 之所以容易越讲越糊,不是因为它空,而是因为它本来就是一个上位系统问题

3.2 Harness 的三层架构

基于 OpenAI 和 Anthropic 的技术文章,我们可以把 Harness 拆成三层:

┌─────────────────────────────────────────┐
│  第一层:知识层 (Knowledge Layer)        │
│  - 仓库作为唯一知识源                    │
│  - AGENTS.md 当地图而非百科              │
│  - 架构边界靠 linter 机械执行            │
├─────────────────────────────────────────┤
│  第二层:约束与流程层                     │
│  (Constraint & Flow Layer)              │
│  - Planner / Generator / Evaluator 分离  │
│  - 职责分离,避免单点失效                │
├─────────────────────────────────────────┤
│  第三层:反馈与运行时层                   │
│  (Feedback & Runtime Layer)             │
│  - context reset 对抗长任务失真          │
│  - 外部评估替代自评                      │
│  - 权限、回放、运行时控制                │
└─────────────────────────────────────────┘

3.3 震撼的数据对比

Anthropic 在实验中给出了一个令人震惊的对比:

方案时间成本结果
单 Agent20分钟$9界面有了,功能不能用
完整 Harness6小时$200真正可用的应用

核心洞察: 差距不在模型,在系统。

同样的模型、同样的 Prompt,不同的 Harness,结果天差地别。

3.4 各层详解

第一层:知识层

OpenAI 在《工程技术:在智能体优先的世界中利用 Codex》中强调:

  • 仓库作为唯一知识源:不要把知识分散在文档、Wiki、脑子里
  • AGENTS.md 当地图:告诉 AI 代码库的结构,而不是详细的 API 文档
  • 架构边界靠 linter:机械执行,而不是靠人记忆

第二层:约束与流程层

Anthropic 在《Harness design for long-running application development》中提出:

  • Planner:负责制定计划
  • Generator:负责生成代码
  • Evaluator:负责评估结果

三者分离,避免单点失效。

第三层:反馈与运行时层

长任务的最大问题是"跑偏":

  • context reset:定期重置上下文,对抗长任务失真
  • 外部评估:用外部工具验证,而不是模型自评
  • 权限控制:明确 AI 能做什么、不能做什么

3.5 Harness 的工程化启示

  1. 系统 > 模型:不要迷信更大的模型,好的 Harness 比模型更重要
  2. 分层设计:知识层、约束层、反馈层,每层都有明确的职责
  3. 可观测性:任务执行过程要可追踪、可回放、可调试
  4. 渐进式交付:不是一次性完成,而是迭代式逼近目标

四、AI 原生 IDE:开发工具的范式转移

4.1 从"AI 辅助"到"AI 原生"

JetBrains 最新发布的 AIR(AI IDE)代表了一种新的范式:

"不是把 AI 塞进 IDE,而是用 AI 重构 IDE 本身"

传统 IDE + AI:

  • AI 是插件,是可选功能
  • 人主导,AI 辅助
  • 代码是核心,AI 是增强

AI 原生 IDE:

  • AI 是底层架构
  • 人机协作,AI 是平等参与者
  • 任务定义和审查是核心,代码生成是过程

4.2 AIR 的核心设计

核心理念:

  • AI 即默认工作流:AI 不是可选增强,而是默认模式
  • 确定性与可解释性:避免"黑箱魔法"
  • 开发者主导权:开发者始终掌握代码控制权

核心流程:

定义任务(结合上下文与逐步引导)
    ↓
配置执行环境与权限(平衡效率与安全)
    ↓
审查并提交变更(确保代码质量可控)

权限模式设计:

模式适用场景
询问权限敏感操作,需要确认
自动编辑常规重构,提高效率
规划模式复杂任务,先规划再执行
完全访问可信环境,完全自动化

4.3 AI 原生开发的关键特征

  1. 任务驱动:不再是"写代码",而是"定义任务"
  2. 上下文优先:AI 需要充分的上下文才能做好工作
  3. 审查即开发:Code Review 成为开发的核心环节
  4. 多任务并行:一个任务写测试,另一个修 Bug
  5. 工具生态:通过 MCP 连接各种外部工具

五、技术栈整合:未来的 AI 开发环境

把 MCP、Harness、AI 原生 IDE 放在一起看,我们可以勾勒出未来的 AI 开发环境:

┌─────────────────────────────────────────┐
│           AI 原生 IDE (AIR)              │
│  - 任务定义与审查界面                     │
│  - 多任务并行管理                         │
│  - 可视化 Harness 编排                    │
├─────────────────────────────────────────┤
│              Harness 层                  │
│  - 知识层:仓库、文档、上下文             │
│  - 约束层:Planner/Generator/Evaluator   │
│  - 反馈层:运行时监控、评估、重置         │
├─────────────────────────────────────────┤
│               MCP 层                     │
│  - 标准化工具调用协议                     │
│  - 数据库、API、文件系统、日志平台...     │
├─────────────────────────────────────────┤
│              底层模型                     │
│  - ClaudeGPTGemini...                │
└─────────────────────────────────────────┘

六、给开发者的建议

6.1 短期(现在就能做)

  1. 学习 MCP:关注 MCP 协议的发展,评估是否可以在项目中应用
  2. 实践 Harness 思维:即使不用复杂的 Harness 框架,也要有分层设计的意识
  3. 尝试 AI 原生 IDE:体验 AIR、Cursor 等工具,理解新的开发范式

6.2 中期(未来6个月)

  1. 构建自己的工具链:基于 MCP 连接常用的开发工具
  2. 设计项目的 Harness:为团队设计适合的知识层、约束层、反馈层
  3. 建立评估体系:不要只看 AI 生成了多少代码,要看生成了多少可用的代码

6.3 长期(未来1-2年)

  1. 参与生态建设:为开源的 MCP Server、Harness 框架贡献代码
  2. 沉淀最佳实践:把团队的 AI 开发经验整理成可复用的模式
  3. 关注安全与伦理:AI 开发不仅是技术问题,更是责任问题

七、结语

AI 开发工具正在经历从"玩具"到"工具"再到"基础设施"的演进。

MCP 解决了工具集成的标准化问题,Harness 解决了系统架构的工程化问题,AI 原生 IDE 解决了人机协作的交互问题。

这三者合在一起,构成了 AI Agent 工程化的核心技术栈。

智能是上限,工程化是下限。 只有当工程化基础打牢了,AI 的真正潜力才能被释放出来。

这个时代,才刚刚开始。


参考来源:

  • 日志诊断 Skill:用 AI + MCP 一键解决BUG|得物技术
  • 大家都在讲 Harness,但它到底该怎么理解
  • 重磅!JetBrains 正式发布全新的 AI 开发工具,定名 AI IDE AIR
  • OpenAI《工程技术:在智能体优先的世界中利用 Codex》
  • Anthropic《Harness design for long-running application development》