✦ 本文目录

  1. 先搞清楚几个基本概念
  2. 模型本质:不是查答案,是预测下一个 Token
  3. 记忆与上下文
  4. 接入外部信息:知识库与工具
  5. 标准化通信:模型、工具与智能体之间怎么对话
  6. 构建 AI 应用的工程框架
  7. Harness:模型的「驾驶舱」

先搞清楚几个基本概念

在深入之前,先把高频出现的术语过一遍。这些概念之间的关系比定义本身更重要。

基础术语
🧩

大模型(LLM)

Large Language Model。基于 Transformer 架构、用海量文本训练出的语言模型。核心能力是「理解语言 + 生成语言」,不是存储知识然后查表。

🤖

Agent(智能体)

以大模型为「大脑」,能自主感知环境、制定计划、调用工具、执行动作的系统。模型只负责「想」,Agent 负责「想 + 做」。

🔌

MCP

Model Context Protocol,Anthropic 提出的开放协议。标准化了「模型 ↔ 外部工具/数据源」的连接方式,类似 AI 应用的 USB-C 接口。

🪝

Harness

模型的「驱动框架」。管理上下文、调度工具、控制执行流程的那层工程代码。模型是引擎,Harness 是整车控制系统。

📝

Prompt(提示词)

你给模型的输入文本。包括指令、上下文、问题等。Prompt 工程就是研究怎么把话说清楚,让模型给出更好的回答。

🔢

Token

模型处理文本的最小单位。一个 Token 大致对应 0.75 个英文单词或 1-2 个汉字。模型按 Token 计费,也按 Token 计算上下文长度。

🎯

RAG

Retrieval-Augmented Generation,检索增强生成。先从知识库检索相关文档,再把文档塞进 Prompt 让模型基于它回答。解决模型「不知道私有数据」的问题。

🛠

Function Calling / Tool Use

让模型能调用外部工具(搜索、计算、数据库查询等)。模型输出结构化的调用请求,由外部代码执行后把结果返回给模型。

🧰

Tool(工具)

Tool 是模型可调用的具体能力单元——一个 API、一个函数、一段脚本。每个 Tool 有明确的输入输出约定。模型通过 Function Calling 机制来选择和调用 Tool。

🎭

Skill(技能)

Skill 是 Tool 的更高层封装——一个 Skill 可以包含多个 Tool、预设的 Prompt 模板、领域知识和固定工作流。比如「发邮件」是一个 Skill,内部调用了地址解析、内容生成、发送 API 等多个 Tool。

⌨️

CLI(命令行界面)

Command Line Interface。让开发者在终端里和 AI 交互的方式——敲命令、AI 执行、结果输出到终端。代表:Claude Code CLI、Codex CLI、GitHub Copilot CLI。比 Chat 界面更贴近开发工作流。

🔀

Workflow(工作流)

把多个步骤串联成一个确定性的执行流程——先做 A,再做 B,最后做 C,中间可能分支或循环。与 Agent 不同,Workflow 的路径是预先定义的;Agent 是自主决策路径。

📊

Embedding(嵌入向量)

把文本、图片等非结构化数据映射成高维空间中的向量。语义相近的内容向量距离近,语义无关的内容距离远。RAG 检索、语义搜索、聚类分析的基础技术。

🌡️

Temperature(温度)

控制模型输出「创造力」的参数,范围 0~2。Temperature 越低回答越确定、稳定(适合事实问答),越高越有创意、随机(适合写作、头脑风暴)。设成 0 意味着每次都选概率最高的 Token。

🎓

Fine-tuning(微调)

在预训练模型基础上,用特定领域的数据再训练几轮。让模型学会特定风格、格式或领域知识。比从头训练便宜,但比 Prompt 工程成本高。适合需要稳定输出格式的场景。

一句话串起来:大模型是引擎,Tool 是单个能力零件,Skill 是把多个 Tool + Prompt + 领域知识打包成的能力模块。模型通过 MCP 协议连接这些 Tool,Agent 在此基础上自主决策和行动,Harness 是整个系统的调度框架。Workflow 按预设路径执行,Agent 自主规划路径。CLI 是开发者与这套系统的交互界面。RAGEmbedding 负责知识检索,Temperature 调节创造力,Fine-tuning 让模型学会特定领域能力。

模型本质:不是查答案,是预测下一个 Token

这是理解一切 AI 应用的基石。大模型不是数据库,不存储标准答案——它是一个超级强大的「续写机器」。

核心原理

大模型的本质极其简单:给定前面的文本,预测下一个 Token 是什么。就这一件事,反复重复。每一次「预测下一个 Token」就是一次推理,把几百亿个这样的预测串起来,就形成了看起来像「思考」的回答。

常见的误解

❌ 误解:模型在查数据库

  • 模型训练时把知识「背」进了参数里
  • 问问题时,它在参数中「查找」最匹配的答案
  • 所以模型知道的就是它训练数据里有的
  • 就像一个超级百科全书

✅ 实际:模型在做概率续写

  • 模型学到的是「语言的统计规律」
  • 问问题时,它根据上下文预测最可能出现的下一个词
  • 一个词接一个词地生成,形成完整回答
  • 像一个超级强大的输入法联想
💡 关键推论:因为模型是「生成」而非「查找」,所以它会:
• 产生看似合理但实际不存在的「幻觉」(Hallucination)
• 对同一个问题可能给出不同的回答(每次生成的概率路径不同)
• 被好的 Prompt 引导出更好的回答(因为上下文影响生成方向)
• 在训练数据截止后的事情上「不知道」(但可以靠 RAG 补充)

从 Token 到回答的完整流程

用户输入
"什么是 Agent?"
Tokenizer
切分成 Token
模型推理
预测下一个 Token
循环生成
一个一个吐 Token
完整回答
遇到结束符停止

每一次「预测下一个 Token」都要跑一遍完整的神经网络前向传播(几百亿参数的矩阵运算)。所以生成长回答比短回答贵——Token 越多,计算量越大,费用越高。

记忆与上下文

模型本身没有记忆——每次调用都是全新的。所谓的「记忆」,全靠工程手段在 Prompt 里实现。

上下文工程

大模型是无状态的——它不会记得上一轮对话说了什么。你在 ChatGPT 里感觉它能「记住」之前的对话,是因为应用层每次都把历史对话拼接进 Prompt 一起发给模型。上下文窗口就是模型一次能「看到」的文本长度上限。

三种「记忆」的实现方式

方式 原理 优点 缺点
上下文窗口 把历史对话直接塞进 Prompt 最简单,模型能完整看到 有长度上限(4K~200K Token),超了就放不下
摘要压缩 定期把旧对话总结成摘要 节省 Token,能聊更久 摘要会丢失细节,可能漏掉关键信息
外部存储 + 检索 对话存入向量数据库,每轮检索相关片段 理论上无限记忆 工程复杂,检索质量影响效果
⚠️ 核心矛盾:上下文窗口越大 → 能记住的越多 → 但每次调用成本越高(因为每个 Token 都要计算),而且模型在超长上下文中容易出现「中间遗忘」(Lost in the Middle)——对开头和结尾的内容记得清楚,中间的反而模糊。
💡 实践建议:不要把所有信息都往上下文里塞。好的做法是:
• 系统指令放最前面(模型最关注开头)
• 当前任务放最后面(模型对结尾也很敏感)
• 中间放检索到的相关上下文
• 定期摘要旧对话,压缩成精炼信息

接入外部信息:知识库与工具

模型只知道训练数据里的东西。要让它处理私有数据、实时信息、精确计算,就得给它「外挂」。

RAG & Tool Use

路线一:RAG(检索增强生成)——给模型「参考资料」

用户提问
向量检索
从知识库找相关文档
拼进 Prompt
"根据以下资料回答…"
模型生成
基于参考资料回答

RAG 的本质就是考试时开卷——模型本身不变,但回答时多了参考资料。适合场景:企业知识库问答、文档搜索、客服系统。

路线二:Function Calling(函数调用)——让模型「用工具」

用户提问
"今天北京天气?"
模型决定
需要调用天气 API
应用层执行
调用真实 API
结果返回模型
生成自然语言回答

Function Calling 的本质是让模型学会「我不会的,我知道去问谁」。模型不直接执行代码,而是输出一个结构化的调用请求(函数名 + 参数),由应用层执行后把结果喂回模型。适合场景:实时数据查询、精确计算、操作外部系统。

两条路线的对比

对比项 RAG(知识库) Function Calling(工具)
本质 给模型塞参考资料 让模型调用外部能力
信息类型 静态文本知识 动态数据、计算、操作
模型角色 阅读理解 + 总结 决策 + 调度
典型场景 "公司报销政策是什么?" "帮我查下今天的股价"
实际应用 两者经常组合使用 Agent 的核心能力

标准化通信:模型、工具与智能体之间怎么对话

模型是 Claude、工具是数据库、智能体是 LangChain——它们之间怎么通信?这就需要标准协议。

协议层

在 MCP 出现之前,每接一个新工具都要写一套定制代码——接 10 个工具写 10 套适配。MCP 的出现就像给 AI 应用定义了一个「USB-C 接口」:工具只要实现 MCP 协议,任何支持 MCP 的模型/Agent 都能直接用

MCP 之前 vs 之后

之前:M×N 问题

  • 3 个模型 × 5 个工具 = 15 套适配代码
  • 每加一个工具,所有模型都要写新适配
  • 工具和模型紧耦合,换一个就得重写
  • 开发成本高,复用性差

之后:M+N 问题

  • 3 个模型 + 5 个工具 = 8 套实现(各实现一次 MCP)
  • 加新工具只需实现 MCP 协议,所有模型通用
  • 工具和模型解耦,各写各的
  • 开发成本低,生态可复用

MCP 的三种通信原语

原语 方向 用途 类比
Tools 模型 → 工具 模型主动调用工具执行操作 函数调用
Resources 工具 → 模型 工具暴露数据供模型读取 GET 请求
Prompts 工具 → 模型 工具提供预设的 Prompt 模板 模板引擎
💡 除了 MCP,还有哪些通信标准?
OpenAI Function Calling:最早的工具调用格式,事实上的行业标准,但绑定了 OpenAI 的格式
MCP:Anthropic 提出,更通用,面向「模型 ↔ 工具」标准化
A2A(Agent-to-Agent):Google 提出,面向「Agent ↔ Agent」之间通信,还在早期阶段
LangGraph / CrewAI:不是协议,是框架内部的通信约定

构建 AI 应用的工程框架

从「调 API」到「做产品」之间,隔着好几层工程。搞清楚每一层干什么,才能理解 AI 应用的全貌。

工程全景
1

模型层 Model

最底层——大模型本身。GPT-4、Claude、Llama 等。提供「理解 + 生成」的原始能力。这层由模型厂商负责(OpenAI、Anthropic、Meta),开发者只需调 API。

2

推理层 Inference

管理模型推理过程——Prompt 模板、上下文管理、流式输出、Token 计数、重试逻辑。代表:OpenAI SDK、Anthropic SDK、LiteLLM。这层让开发者不用手搓 HTTP 请求。

3

编排层 Orchestration

把模型、工具、知识库组合起来——工作流编排、多步推理、工具调用循环、错误处理。代表:LangChain、LangGraph、LlamaIndex。这层是 Agent 的核心骨架,决定了「模型怎么一步步干活」。

4

Agent 层 Agent

在编排层之上加「自主决策」——目标拆解、计划制定、自我反思、多 Agent 协作。代表:AutoGPT、CrewAI、MetaGPT。这层让系统从「按流程执行」变成「自主完成目标」。

5

应用层 Application

面向用户的产品——UI 交互、用户管理、数据存储、权限控制、计费。代表:ChatGPT 网页端、Cursor 编辑器、各种 AI SaaS。这层是用户直接接触的部分,决定了产品体验。

从下往上:模型层是「发动机」,推理层是「供油系统」,编排层是「变速箱」,Agent 层是「自动驾驶系统」,应用层是「整辆车 + 车内体验」。做 AI 产品不需要从发动机造起,但要知道每一层在干什么,才能在正确的层解决正确的问题。

Harness:模型的「驾驶舱」

Harness 是 AI 工程中常被忽略但极其关键的概念——它是模型和用户之间的那层「控制软件」。

关键概念

Harness 直译是「马具/挽具」——套在马身上控制它拉车方向的装备。在 AI 语境下,Harness 就是套在大模型外面的那层工程框架,负责把模型的原始能力转化成可控、可用、可靠的功能。

模型 vs Harness 的关系

对比项 模型(Model) Harness(驱动框架)
角色 引擎——提供原始推理能力 驾驶舱——控制引擎怎么跑
做什么 预测下一个 Token 管理上下文、调度工具、处理错误
有没有状态 无状态——每次调用独立 有状态——维护会话历史、执行状态
谁负责 模型厂商(OpenAI、Anthropic) 应用开发者(你)
换个模型 引擎换了,能力变了 驾驶舱不变,适配新引擎即可

Harness 具体干什么

📋

上下文管理

决定哪些历史信息放进 Prompt、哪些该截断、哪些要摘要。控制上下文窗口的使用效率。

🔄

工具调度

模型说「我要调天气 API」→ Harness 执行调用 → 拿到结果 → 拼回 Prompt → 让模型继续。整个循环由 Harness 控制。

🛡

错误处理

模型输出格式不对?API 超时?工具返回错误?Harness 负责重试、降级、给用户友好提示。

🚦

流程控制

什么时候让模型自由发挥,什么时候走固定流程。多步推理的循环逻辑、提前终止条件等。

🔐

安全与权限

模型想执行 rm -rf?Harness 拦截。模型想访问其他用户数据?Harness 校验权限。

📊

可观测性

记录每一步的输入输出、Token 消耗、延迟、工具调用链。调试和优化全靠这些数据。

同一个模型,不同的 Harness 会产生完全不同的体验。这就是为什么同样是 GPT-4,ChatGPT 网页版和 API 直接调用的效果差很多——ChatGPT 背后有一整套精密的 Harness 在工作:管理对话历史、注入系统提示、处理工具调用、格式化输出。模型决定了能力上限,Harness 决定了能发挥出多少

💡 现实中的 Harness 例子:
Cursor / Windsurf:代码编辑器的 Harness——管理文件上下文、调度代码搜索工具、控制 diff 应用
Claude Code / Codex CLI:终端 Agent 的 Harness——管理项目上下文、调度文件读写和命令执行
LangChain / LangGraph:通用 Harness 框架——提供了上下文管理和工具调用的积木
你的 AI 应用:你自己写的那层 Prompt 管理 + 工具调度代码,就是你的 Harness
⚠️ 为什么这个概念重要?因为很多人做 AI 产品时只关注「用什么模型」,忽略了 Harness 的质量。结果模型能力很强,但产品体验很差——上下文管理混乱、工具调用不稳定、错误处理缺失。好的 Harness 能让弱模型发挥出强效果,差的 Harness 能让强模型表现得很蠢

全文总结

用一张图串起全文:

大模型 — 预测下一个 Token 的引擎(不是数据库)
记忆 / 上下文 — 用 Prompt 管理历史信息,无状态变有状态
RAG + Function Calling — 接入外部知识和工具能力
MCP 协议 — 标准化模型与工具之间的通信
Harness — 驾驶舱:上下文管理 + 工具调度 + 错误处理 + 流程控制
Agent — 自主决策 + 多步推理 + 目标拆解
AI 应用 — 面向用户的产品(ChatGPT、Cursor、你的产品)
🎯 一句话:大模型是引擎,上下文是燃料,RAG 和工具是外挂,MCP 是接口标准,Harness 是控制系统,Agent 是驾驶员,应用是车。理解了这条链路,就理解了 AI 应用的全貌。