AI 概念大扒皮:从 LLM 到 Agent,一次说清楚

🤖 AI 概念大扒皮:从 LLM 到 Agent,一次说清楚

这些词你认识几个?不管认识多少,今天都给你扒个底朝天。所谓智能体,其实是由所有"不需要智能"的部分拼凑而成的;那些花里胡哨的新概念,大多不过是新瓶装旧酒。

涉及关键词:LLMPromptContextMemoryAgentRAGFunction CallingMCPSkillSub-Agent


💡 先清空大脑

忘掉你已知的一切,跟着故事线走——你会发现这些概念都是从同一个起点,一步步生长出来的。


🧠 第一步:语言模型长大了

一切混乱的起点,是这个古老的东西——语言模型。早期的小模型基本上是个智障,只会简单的文字接龙。但随着参数规模不断膨胀,在某个临界点,它突然"涌现"出了真正的智能。

为了和之前的小模型做区分,我们在前面加了个"大"字:

🆕 词汇① 大语言模型(LLM)

LLM 本质上只做一件事:根据上文,预测下一个字。如果只是这么用,它看起来仍然是个智障。

小模型\n(智障阶段)

参数不断增大

🌟 大语言模型 LLM\n(涌现出智能)

把 LLM 想象成你的员工

把自己想象成一个老板,LLM 是你的员工,就叫他「小 L」。小 L 服务你的方式很特别:只能一问一答,问完就结束,不能追问。这个特点非常关键,后面还会用到。

你们每次的对话,你给它起了个洋气的名字:

🆕 词汇② Prompt(提示词)

仔细观察每次对话,你发现里面的内容可以细分:有的是背景信息,有的是最终指令。于是背景信息那部分,你单独起名叫:

🆕 词汇③ Context(上下文)

🔁 第二步:让小 L 记住你

问题来了:小 L 只能一问一答,如何追问?

你想了个聪明的办法——把历史对话塞进 Context,每次提问前带上之前的所有交流记录,伪装成连续对话。

🆕 词汇④ Memory(记忆)

随着对话越来越长,Memory 会越来越大,占用大量上下文空间。于是你又让 LLM 对历史记录进行压缩总结,减少长度,提高效率。

追加到

你的第 N 次问题(Prompt)

📦 拼装后发给 LLM

历史对话记录(Memory / Context)

小 L 回答

小结: 到目前为止,你已经发明了 4 个新词:LLMPromptContextMemory。一个原本只会词语接龙的小 L,现在已经可以进行有记忆的连续对话了。

🤖 第三步:给小 L 配上工具

你很快发现小 L 有个致命缺陷:它不会上网查资料,给的信息要么过时,要么是瞎编的。

最简单的解法是:你帮它查,查完再告诉它。但这样一来,到底谁是牛马?

于是你把"上网搜索"这个动作写成了一段程序,让程序替你跑腿,自动完成搜索然后把结果喂给小 L。

🆕 词汇⑤ Agent(智能体)
⚠️ 别被这个名字唬住。早期很多所谓"智能体",实现逻辑不过是多加了一段 Prompt 而已——换个名字就敢叫智能体,说是诈骗也不为过。

RAG:让 Agent 搜索本地文档

既然 Agent 能联网搜索,那搜索本地文档、数据库是不是也可以?当然,只不过要用向量数据库做语义匹配,把语义相近的内容片段找出来,再塞进 Context 里。

这套方法叫做:

🆕 词汇⑥ RAG(检索增强生成,Retrieval-Augmented Generation)

联网搜索只是 RAG 的一个变种,本质都是「获取模型参数之外的信息」。

👤 用户(你)

🤖 Agent 程序(传话筒)

🧠 LLM 小 L\n(只会说话的智者)

🔍 联网搜索

📄 本地文档 RAG

🛠 其他工具...


🔌 第四步:约定暗语,接入工具

Function Calling:Agent 和 LLM 的约定

Agent 和 LLM 之间通过自然语言沟通,有个问题:程序读不懂 LLM 随意输出的文字。于是双方需要约定一个格式(比如 JSON),让 LLM 按指定格式回复,这样 Agent 才能直接解析。

🆕 词汇⑦ Function Calling(函数调用协议)

就像前后端开发约定接口格式一样,没有任何神秘之处。

MCP:Agent 和工具服务的约定

如果把各种工具写成独立的服务,Agent 就需要一套标准来「发现」和「调用」这些服务——比如约定 tools/list 返回工具列表、tools/call 执行具体工具。

🆕 词汇⑧ MCP(模型上下文协议,Model Context Protocol)
Function CallingMCP
连接对象Agent ↔ LLMAgent ↔ 工具服务
解决问题让 LLM 按固定格式输出标准化工具的发现与调用
类比前后端接口约定微服务调用规范
⚠️ 常见混淆: 有人问「MCP 能取代 Function Calling 吗?」这是无稽之谈——两者根本不在同一层,解决的也不是同一个问题。

自然语言

Function Calling\nJSON 格式约定

MCP\n工具调用协议

👤 用户

🤖 Agent

🧠 LLM

🛠 工具服务\n搜索 / 文件 / 数据库…


⚙️ 第五步:流程固化,各显神通

假设你有个稳定任务:英文 PDF → 翻译 → 保存为 Markdown。每次都让 Agent 自由发挥?不但结果不稳定,还白白浪费 Token。更好的做法是把流程固化

四种方式,从刚性到柔性

📝 LangChain\n纯编程 / 硬编码\n最稳定

🖱 Workflow\n低代码拖拽\n门槛低一点

🎯 Skill\n脚本+说明文档\n半自动

🌀 纯 Agent\n完全自主\n最灵活但最难控

方式特点适合谁
LangChain硬编码,极其稳定,几乎无容错程序员
Workflow低代码拖拽,改起来方便一点半技术用户
Skill说明文档 + 可调用脚本,兼顾稳定与弹性普通用户
纯 Agent完全自主,随机应变,费 Token 难预测对结果要求宽松时

Skill 是什么?

Skill 的核心就一个文件:SKILL.md,里面写清楚流程说明,并指向可调用的脚本目录。Agent 被要求在执行任务前先读这份说明,再按需调用脚本。

🆕 词汇⑨ Skill(智能体技能)

本质上,Skill 就是一个「把 Prompt 换个地方存」的加载器

⚠️ 有人问「Skill 和 MCP 有什么区别?」答:完全不是一个维度的东西。Skill 是 Prompt 加载器,MCP 是工具调用协议,两者不存在谁取代谁的问题。

🪆 第六步:套娃——Sub-Agent

当任务足够复杂,单个 Agent 的上下文会变得极其庞大。于是你把相对独立的子任务拆出去,交给专门的子 Agent 处理。

🆕 词汇⑩ Sub-Agent(子智能体)

子 Agent 产生的上下文不会污染主 Agent,本质上就是上下文隔离,如此而已。

结果

结果

结果

🤖 主 Agent

Sub-Agent A\n子任务 1

Sub-Agent B\n子任务 2

Sub-Agent C\n子任务 3


📦 你一共发明了多少新词?

#中文英文一句话概括
大语言模型LLM参数足够大后涌现出智能的语言模型
提示词Prompt你和 LLM 每次对话的完整输入
上下文ContextPrompt 中的背景信息部分
记忆Memory塞进 Context 的历史对话记录
智能体Agent代替你跑腿、调用工具的中间程序
检索增强生成RAG把外部检索到的信息塞进 Context
函数调用协议Function CallingAgent 和 LLM 之间的格式约定
模型上下文协议MCPAgent 和工具服务之间的调用规范
智能体技能SkillPrompt 加载器,兼顾灵活与可控
子智能体Sub-Agent隔离上下文的独立子任务处理器

🔭 通杀所有新概念的方法论

回到最本质的问题:为什么说「Agent 是由所有不需要智能的部分构成的」?

一个流程中,所有能用固定程序解决、不需要问 LLM 的地方,就是 Agent 发挥作用的地方。模糊的分流逻辑交给 LLM,确定的执行逻辑交给程序。

所有这些技术——Search、RAG、Skill……本质上都在做同一件事:

自动往 Prompt 里塞上下文,或者通过代理减少你和 LLM 直接沟通的次数。

看透这一点,任何新概念出来,你只需要问两个问题:

  1. 它是在帮 LLM 获取更多信息?(→ 属于 RAG / Search 这条线)
  2. 它是在替代某段固定的程序逻辑?(→ 属于 Agent / Workflow 这条线)

未来会怎样?

方便性永远胜出。 Token 会越来越便宜,配置门槛会越来越低。未来一定会有开箱即用的超级 Agent,把 MCP、Skill、Workflow 统统内置好,普通人啥都不用配置就能上手。

谁让用户觉得「它就是个会干活的 AI」,而不是「一堆需要折腾的配置」,谁就赢了。


下次再看到新名词,别慌,顺着这条故事线找它的位置,瞬间秒懂。

Read more

Flutter 组件 vnlunar 适配鸿蒙 HarmonyOS 实战:高精度农历算法,构建民俗文化日期与节气治理架构

Flutter 组件 vnlunar 适配鸿蒙 HarmonyOS 实战:高精度农历算法,构建民俗文化日期与节气治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 vnlunar 适配鸿蒙 HarmonyOS 实战:高精度农历算法,构建民俗文化日期与节气治理架构 前言 在鸿蒙(OpenHarmony)生态迈向全球化部署、涉及多语言本地化(L10n)及深层文化特性适配的背景下,如何实现准确的阴阳历(农历)转换、二十四节气计算及民俗节日提醒,已成为提升应用“人文温度”与本地化竞争力的核心要素。在鸿蒙设备这类强调分布式时间同步与低功耗常驻显示(AOD)的环境下,如果应用依然依赖简单的查表法或通过网络接口获取农历信息,由于由于闰月计算的复杂性或离线环境限制,极易由于由于计算偏移导致传统节日提醒的误报。 我们需要一种能够实现天文级算法推演、支持高精度节气定位且具备纯 Dart 离线运作能力的历法治理方案。 vnlunar 为 Flutter 开发者引入了标准化的阴阳历转换协议。它不仅支持对天干地支、生肖及闰月的精确解构,更针对东南亚等地区的历法细微差异提供了专项适配。在适配到鸿蒙 HarmonyOS 流程

By Ne0inhk
Flutter 三方库 libsignal 的鸿蒙化适配指南 - 实现 Signal 协议加密通信、双大鼠(Double Ratchet)算法与前向安全性保障

Flutter 三方库 libsignal 的鸿蒙化适配指南 - 实现 Signal 协议加密通信、双大鼠(Double Ratchet)算法与前向安全性保障

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 libsignal 的鸿蒙化适配指南 - 实现 Signal 协议加密通信、双大鼠(Double Ratchet)算法与前向安全性保障 前言 在 Flutter for OpenHarmony 的高度安全通信领域,Signal 协议是目前全球公认的即时通讯加密标准。libsignal 是 Signal 协议的核心 Dart 实现。它能够为鸿蒙应用提供从身份认证到会话加密的全套解决方案,确保每一个字节的通信都具备前向安全性(Forward Secrecy)。本文将深入解析如何在鸿蒙端利用该库构建极致安全的加密通信能力。 一、原理解析 / 概念介绍 1.1 基础原理 Signal 协议的核心在于“双大鼠(Double Ratchet)”算法。它结合了 Diffie-Hellman

By Ne0inhk
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU

【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU

系列文章目录 文章目录 * 系列文章目录 * 一、LRU缓存算法 * 1.哈希表 + 双向链表 * 二、LFU缓存算法 * 1、哈希表 + 平衡二叉树 * 2、双哈希表 * 三、总结 一、LRU缓存算法 1.哈希表 + 双向链表 1.题目链接:LRU缓存 2.题目描述: 3.算法思路: 1.双向链表 + 哈希表 组合: 双向链表(带哑头 / 哑尾节点):维护缓存节点的访问顺序,最近使用的节点放在链表头部,最少使用的节点放在链表尾部(淘汰时直接删尾部); 哈希表(cache):实现 key 到节点的 O (1) 快速查找,解决链表遍历查找慢的问题; 2.

By Ne0inhk
【动态规划】01背包与完全背包问题详解,LeetCode零钱兑换II秒解,轻松解力扣

【动态规划】01背包与完全背包问题详解,LeetCode零钱兑换II秒解,轻松解力扣

👨‍💻程序员三明治:个人主页 🔥 个人专栏: 《设计模式精解》《重学数据结构》 🤞先做到 再看见! 目录 * 01背包题目分析 * 01背包解决方法 * 完全背包题目分析 * 完全背包解决方法 * LeetCode 518.零钱兑换II * 思路 * 代码实现 01背包题目分析 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 每一件物品其实只有两个状态,取或者不取,所以可以使用回溯法搜索出所有的情况,那么时间复杂度就是O(2^n),这里的n表示物品数量。 所以暴力的解法是指数级别的时间复杂度。进而才需要动态规划的解法来进行优化! 在下面的讲解,我举一个例子: 物品为: 重量价值物品0115物品1320物品2430 01背包解决方法 递归五部曲: 1. 确定dp数组以及下标的含义:dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,

By Ne0inhk