和 AI 打交道会撞见的一整串词:从大模型到 Agent、RAG、MCP、Skill,一次串清

0 阅读12分钟

组装 AI 助手:从零件到会干活

开会也好,刷技术群也好,总有人甩出一串词:Agent、RAG、MCP、Skill、Embedding、幻觉……点头的人不少,真能分清谁管啥的却不多。听着像同一件事,拆开其实各管一段。

它们多半不是「又换了一个更聪明的 AI」,而是给同一个会说话的模型加配件:有的帮它查材料,有的借它一双手,有的教它按你们的规矩多走几步。

这篇就当一张装配图。全程只跟一件具体的事:

你对助手说:「按公司最新登录规章,改仓库里的接口说明,改完自测再给我看。」

后面每个词都回答同一句——这一步,AI 缺啥,它补啥。


一、先立一张图:AI 助手的能力一层层

把助手想成一台能组装的机器,芯是大模型,外面一圈圈配件:

AI 助手的能力一层层

从里到外(读图时可以从下往上):

  1. 大模型 — 会说话的芯
  2. Prompt / 上下文 / Token — 你怎么说、它一次能看多少
  3. Embedding + 向量库 — 把文字变成可检索的「意思指纹」
  4. RAG — 先开卷再答
  5. 工具调用 + MCP — 借手、统一插头
  6. Agent + Skill — 自己排工序 + 墙上的作业卡

后面词条按这个顺序拆;看到最后会整条串回去。


二、大模型 / LLM:AI 的嘴和脑

AI 缺什么: 一个能根据已喂进去的文字,继续往下写「像人话」的引擎。
它补什么: 语言能力本身——解释、起草、改写、总结。
比喻: 厨子很会炒菜,但冰箱里没有你们公司今天刚改的登录规章。
不是什么: 不是自动联网的百科全书,也不等于「装进聊天框」就变成会改仓库的程序员。
接到故事: 没有它,后面一切免谈;有了它,也只是「会说」,还不会自动按规章改文档。

一句话:大模型负责把话写圆;对不对、新不新,另说。


三、Prompt、上下文、Token:你怎么跟 AI 说话

Prompt(提示词)

AI 缺什么: 它不知道你这一次到底要干什么。
它补什么: 你的说明书 + 问题 + 约束(语气、格式、禁止事项)。
比喻: 点菜时说清楚「少辣、不要香菜」,厨子才不会自由发挥。
不是什么: 不是神秘咒语;写清楚比堆形容词有用。

上下文窗口(Context)

AI 缺什么: 一次对话里能同时「看见」的篇幅有限。
它补什么: 当前轮次里放得下的系统说明、历史消息、检索片段、工具结果。
比喻: 餐桌上的转盘——菜太多,早上来的那盘会被转下去。
不是什么: 不是永久记忆;窗口外的内容,它这轮等于没看见。

Token

AI 缺什么: 需要一把尺子量「吃进去 / 吐出来」有多长。
它补什么: 计费和长度限制的单位(大致是碎开的字词块,中英文切法不同)。
比喻: 不是按「字」买菜,是按「切好的块」计价。
不是什么: 不是智商点数;Token 多只表示这段文字更长或更碎。

接到故事: 你那句需求本身就是 Prompt;规章全文如果太长,塞不进窗口,就得靠后面的检索,而不是整本粘贴。


四、幻觉:话说圆了,不等于事发生了

AI 缺什么: 它优化的是「接下来哪个词更像」,不是「哪个事实已核实」。
幻觉补的认知: 让你知道——流畅 ≠ 正确。
比喻: 有人口才极好,能把没发生的事讲得像亲历。
不是什么: 不是「模型坏了才幻觉」;没外挂依据时,圆场是常态风险。
接到故事: 你若只问「我们登录锁定规则是啥」,它可能自信答「错 3 次锁 24 小时」——听着专业,和你们规章无关。

所以才需要后面的 RAG、人工审核,而不是神话「模型绝对诚实」。


五、Embedding 与向量库:给句子打「意思指纹」

Embedding(嵌入 / 向量)

AI 缺什么: 纯关键词搜索经常「用词不一样就找不到」。
它补什么: 把一段文字变成一串数字(向量),意思近的点得近。
比喻: 给每段规章按「气味」做指纹——「密码错误锁定」和「输错几次会封多久」气味相近。
不是什么: 不是另一种聊天模型;它是检索用的表示。

向量库

AI 缺什么: 指纹造出来还得存、得快查。
它补什么: 专存向量、按相似度召回的柜子(也可和关键词混合检索)。
比喻: 图书馆里按「味道相近」也能摸到书架,而不只靠书名四个字完全一致。
不是什么: 不是自动写文档的 Agent。

教学里用关键词也能演示「先找再答」;生产里 Embedding + 向量库更抗换说法。本地 Demo 故意用关键词,是为了零依赖、一眼看懂。


六、RAG:给 AI 临时开卷

RAG = Retrieval-Augmented Generation,检索增强生成。

AI 缺什么: 训练数据里没有你们今天的规章;硬背也容易幻觉。
它补什么: 先检索相关材料 → 塞进上下文 → 再让模型答。
比喻: 开卷考试——允许翻书,但书是你刚塞进去的那几页。
不是什么: 不是「自动干活的 Agent」;RAG 解决的是答得有据,不是自己去改仓库。

接到故事:助手应先捞出「登录失败锁定」「密码存储」相关条文,再谈怎么改接口说明。

最小直觉长这样(伪代码):

// 教学示意:检索 → 拼进 prompt → 再调用模型
function answerWithRag(question, docs) {
  const hits = retrieve(question, docs); // 关键词或向量检索
  const context = hits.map((d) => d.body).join("\n---\n");
  const prompt = `
你只能根据下列公司规章回答;规章没有的内容请说「未知」,不要编造。

【规章】
${context}

【问题】
${question}
`;
  return callLLM(prompt);
}

文末 Demo 会让你亲手点一次:不检索的瞎编 vs 检索后的摘录。


七、工具调用 / Function Calling:给 AI 借一双手

AI 缺什么: 纯文本模型改不了你磁盘上的文件,也跑不了测试。
它补什么: 模型可以提出「请执行某某动作」(读文件、写文件、跑命令);真正动手的是你的程序。
比喻: 厨子说「去冰箱拿鸡蛋」——嘴是模型的,手是服务员的。
不是什么: 不是模型自己长出了手;也不是「一说就魔法完成」。

示意:模型返回一个结构化调用,运行时去执行。

// 模型可能返回这样的「提议」(示意)
const toolCall = {
  name: "read_repo_file",
  arguments: { path: "docs/login-api.md" },
};

// 你的运行时执行,再把结果喂回对话
const fileText = await readRepoFile(toolCall.arguments.path);

接到故事:改接口说明、跑自测,都得靠工具,不能只靠「生成一段看起来像 Diff 的文字」。


八、Agent:从「答一句」到「为了目标多走几步」

AI 缺什么: 单轮问答不会自己看结果、再决定下一步。
它补什么: 一个循环——想一步 → 调用工具/检索 → 观察结果 → 再想,直到目标完成、失败或被你打断。
比喻: 不是只报菜名的点餐员,而是会自己排工序的助理:先翻规章、再开文件、再改、再测。
不是什么: 套了个 ChatGPT 皮肤 ≠ Agent;Agent 的关键是多步决策循环,不是聊天气泡样式。

极简骨架:

async function runAgent(goal, { tools, maxSteps = 8 }) {
  let messages = [{ role: "user", content: goal }];
  for (let i = 0; i < maxSteps; i++) {
    const decision = await callLLM(messages); // 可能含 tool_calls
    if (!decision.tool_calls?.length) {
      return decision.content; // 认为做完了,给你看
    }
    for (const call of decision.tool_calls) {
      const result = await tools[call.name](call.arguments);
      messages.push({ role: "tool", name: call.name, content: result });
    }
  }
  return "达到步数上限,请人接手。";
}

接到故事:你的那句话是 goal;中间「查规章 → 读文档 → 改 → 测」由 Agent 串,而不是你手动复制粘贴十几轮。


九、MCP:接外部世界的标准插头

MCP = Model Context Protocol,由 Anthropic 提出的开放协议,用来把数据源和工具以标准方式接到 AI 应用上。

AI 缺什么: 每个客户端、每个工具都私有对接,换一家助手就重写一遍「读邮件 / 读仓库 / 开浏览器」。
它补什么: 统一的插口约定——服务端暴露能力,客户端按协议发现并调用。
比喻: USB:U 盘、键盘、读卡器,插头形状谈拢了,才不用每台电脑焊专用线。
不是什么: 不是一种更聪明的大模型,也不是某家聊天产品的昵称;它是连接协议。

接到故事:读仓库文件、列目录,可以通过 MCP 服务暴露成标准工具;Agent 调的是「插上的能力」,而不是写死在某一家 SDK 里的私有函数名(当然,落地时你仍要鉴权、审计、最小权限)。


十、Skill:墙上的店规作业卡

Skill(技能) 在不同产品里名字略有出入,这里取共同意思:一份可复用的「这件事按咱们规矩怎么干」——步骤、约束、常用工具、输出格式。

AI 缺什么: 每次从零猜流程,容易漏「必须先对规章编号」「禁止直接 push」。
它补什么: 把流程写成卡片,助手少发挥、多按谱。
比喻: 奶茶店墙上的标准作业卡:先洗杯再打冰,不是让新人现场发明。
不是什么: 不是微调模型参数;也不是把权重重新训练一遍。Skill 改的是作业说明,改的是行为剧本。

接到故事:可以有一张 Skill 写明——先 RAG 取登录规章 → 再读 docs/login-api.md → 只改文档不改业务代码 → 跑文档链接检查 → 最后交给人审。


十一、多 Agent:多个专科助手(点到为止)

AI 缺什么: 单个循环里塞进「检索专家 + 写作专家 + 测试专家」,上下文又挤、职责又糊。
它补什么: 拆成多个角色协作(有的产品叫多 Agent、Crew)。
比喻: 前厅点单、后厨做菜、传菜核对,而不是一个人同时干三摊还假装很稳。
不是什么: 人越多越强的神话;编排、交接、扯皮成本会转回来找你。

接到故事:可以「规章检索 Agent」和「文档修改 Agent」分工,但个人项目里一个 Agent + 好 Skill 往往更够用。


十二、微调 & 工作流:防混淆的两块告示牌

概念它在干什么别和谁混
微调(Fine-tune)用你们的数据改模型脾性/口吻/领域格式不是 RAG;也不等于上了 Agent
工作流编排人写死的流水线:A 完必做 B和 Agent「自己决定下一步」是两种脾气

微调贵、慢、要数据与评估;规章常变时,优先 RAG + Skill,而不是动不动微调。工作流适合合规固定的步骤;探索性任务才更像 Agent。


十三、完整串场:从一句话到改好文档

从一句话到改好文档

回放总任务:

  1. Skill 定规矩:必须引用规章编号;只动文档;改完自测;最后人审。
  2. Agent 拆步:查规章 → 读文件 → 改 → 测 → 汇总。
  3. Embedding / 向量库 + RAG 取出登录相关条文(开卷材料)。
  4. MCP / 工具 读仓库里的接口说明。
  5. 工具 写出修改、跑检查。
  6. 你 拍板——AI 再能干,上线责任还是人的。

全程主角仍是「你在跟 AI 协作」;配件各司其职。


十四、对照表:这些词给 AI 补了啥

这些词给 AI 补了啥

概念给 AI 补了啥没有它时怎样常见误会
大模型会说话、会写没有「嘴和脑」以为自动懂公司新政
Prompt / 上下文 / Token说明任务、限制视野与长度答非所问或中途失忆当成玄学咒语
幻觉(认知)提醒流畅≠正确被圆场骗到以为只有劣质模型才幻
Embedding / 向量库按意思检索换个说法就搜不到当成聊天模型
RAG临时开卷、有据可依瞎编规章当成 Agent
工具调用借手执行动作只能吐文字以为模型自己长了手
Agent多步决策循环你得手搓十几轮聊天气泡=Agent
MCP外部能力统一插头家家私有对接当成一种模型
Skill可复用作业卡每次从零猜流程当成微调
多 Agent专科分工单角色又挤又糊人多必强

十五、动手:迷你 Demo(有检索 vs 没检索)

目录里有一份零依赖小页面(假 3 段登录规章):

  • demo/index.html
  • demo/app.js
  • demo/README.md

本地这样跑:

cd demo
python3 -m http.server 8765
# 浏览器打开 http://127.0.0.1:8765

点两个按钮:

  1. 不检索,直接「瞎答」 — 会看到「错 3 次锁 24 小时 / 用 MD5」这种听着专业、和规章无关的圆场。
  2. 先检索再答 — 会先列出命中的 R-01 / R-02 片段,再摘录「错 5 次锁 15 分钟 / Argon2id」。

核心检索逻辑就这么短(和生产向量检索不是一个量级,但关系同构):

function retrieve(question, docs, topK = 2) {
  const qTokens = tokenize(question);
  return docs
    .map((doc) => {
      const hay = (doc.title + " " + doc.body).toLowerCase();
      let score = 0;
      for (const t of qTokens) if (hay.includes(t)) score += 1;
      return { doc, score };
    })
    .filter((x) => x.score > 0)
    .sort((a, b) => b.score - a.score)
    .slice(0, topK);
}

你若把 Demo 里的「假回答」换成真正的 callLLM(prompt),就是最小可用的 RAG 雏形——提示词里最好写死:规章没有的说未知,禁止编造。


十六、收束

和 AI 打交道,先分清两样东西就够用很久:

  • 模型:会写字的芯;
  • 配件:RAG 管依据,工具管动手,Agent 管多步,MCP 管怎么插,Skill 管按店规。

下次再听到新词,不妨先问一句:它是在给 AI 补眼睛、补手、补工序,还是只是换了个马甲?

分得清,就不容易被名词吓住,也不容易把聊天框当成万能工具箱。