给第一次接触 AI 的人写的入门读物。不写代码也能读完——每个概念都配一个现实类比, 读完你会知道:模型为什么"只能说话",Agent 为什么"能干活",以及那句常被搞混的 "模型能不能上网 / 有没有记忆 / 会不会执行代码"。
自下而上看:越往下越"基础且通用",越往上越"具体且贴近业务"。
把它想成一家公司:大模型是一个极其博学但只能"动嘴"的专家顾问;Harness 是给他配的办公室、电话、秘书和规章制度;Agent 是这位顾问被授权后真正开始"接活、派人、交付"; Tool 是工具间,Skill 是岗位技能手册,Rule 是员工守则,Memory 是档案柜,RAG 是公司图书馆。
Large Language Model · 也叫基础模型、基座模型
它是什么:一个用海量文本训练出来的超大神经网络(主流架构叫 Transformer)。它的工作只有一个,但做了几万亿次: 给定前面的文字,预测下一个最可能出现的词片段。
它怎么学会的:给一个初始几乎全随机的网络,喂进去"半句话 → 真实的下半句", 算出它答错了多少(损失),再反过来微调内部那几十亿到上万亿个数字(参数 / 权重)。重复无数次,它就"学会"了语法、常识、推理套路和代码。
总结、改写、翻译、写代码、按格式输出、把模糊需求讲清楚、从长文里找信息、模仿风格。
主动做事、记住你、上网查、访问数据库、执行代码、保证数字算对、知道自己不知道。
训练 vs 推理:训练 = 长时间、极贵、一次性把知识"压进"参数;推理 = 你每次提问的那几秒,只做前向计算,参数不变。 在这两者之间的"后训练"(微调、RLHF 人类反馈对齐)决定它的脾气是否听话、是否有害。
看新闻、看文档、算成本绕不开的几个词
模型眼里的最小文字单位。中文大约 1 个汉字 ≈ 1~2 个 token,英文 1 个词 ≈ 1.3 个 token。计费和长度限制都按它算。
一次对话里它能同时"看见"的 token 上限(常见 8K / 128K / 200K)。超了就要截断或压缩——这就是为什么长对话会"忘掉"开头。
模型内部的数字总量,常以"7B / 70B / 600B"表示(B = 十亿)。越大通常越强,也越慢越贵。
控制随机性的旋钮。低(0~0.3)稳、适合写代码;高(0.8~1.2)发散、适合创意。本质是在概率分布上做缩放再采样。
其中 z 是模型给每个候选词的原始打分,T 是温度:T → 0 时结果趋于确定,T 变大则低分候选也有机会被选中。
幻觉 Hallucination:模型把"看起来合理"当成"事实"说出来——编造参考文献、虚构 API、算错账。 原因很直白:它的目标是"输出像人写的话",而不是"输出真相"。应对手段:给它资料(RAG)、让它调用工具算、要求它引用来源、人工复核。
Prompt · System Prompt · 提示工程
Prompt(提示词)就是你输入的全部内容——问题、背景、格式要求、示例都算。
System Prompt(系统提示)是应用开发者在用户看不到的地方预先设定的"身份与规矩",例如 "你是一名严谨的振动分析工程师,回答必须先给结论,不确定时明确说不确定"。
| 层次 | 谁写的 | 作用 |
|---|---|---|
| System Prompt | 开发者 / 产品方 | 设定角色、语气、底线、输出格式,优先级最高 |
| Developer / 中间层指令 | 应用配置、技能包 | 注入技能说明、工具用法、检索到的资料 |
| User Prompt | 用户 | 当前这次具体想干什么 |
| 历史对话 | 系统自动回填 | 让模型"看起来"记得前文(其实是每次重发一遍) |
System Prompt 是"岗位说明书",User Prompt 是"今天这一单的具体要求"。同一个员工,岗位说明书不同,干出来的活完全不同。
Agent = 模型 + 工具 + 循环 + 反馈
定义:一个能感知环境、自主做决定、调用工具去行动、并根据真实结果继续调整,直到达成目标的系统。 它和普通聊天机器人最大的差别不是"更聪明",而是多了行动与反馈这一环。
这个循环常被称为 ReAct(Reason + Act)。伪代码长这样:
目标 = "分析这段振动信号里的异常频率"
while not 完成:
思考 = 模型(目标, 历史观察)
if 思考 是最终答案: break
行动 = 思考.工具名, 思考.参数 # 例如 run_python(...)
观察 = 执行(行动) # ← 真实执行,不是模型想象
历史观察.追加(观察)
return 最终答案
| 对比项 | 聊天机器人 | Agent |
|---|---|---|
| 交互次数 | 一问一答 | 自主多步,可能几十轮 |
| 能否影响外部世界 | 不能,只输出文字 | 能:读写文件、调 API、操作数据库 |
| 是否依据真实结果 | 不依据 | 依赖每次工具返回 |
| 出错方式 | 说得不准确 | 可能真的做了错事(所以需要 Rule 和权限) |
| 给用户的感觉 | 很强的搜索/写作助手 | 像一个能替你跑腿的实习生 |
自主性分级(越高越省心,也越危险):
运行外壳 / 脚手架 / 编排框架 · 也常被叫 agent framework、scaffolding
它是什么:包在模型外面的一整套工程代码——模型自己完全不负责这些事,全靠 Harness 干:
决定每一轮往模型里塞什么、丢掉什么、超长时怎么压缩摘要。
把模型输出的"我想调用某函数"翻译成真实调用,再把结果塞回去。
什么时候继续、什么时候停、最大步数、超时、防止原地打转。
报错重试、格式纠正、参数校验、模型跑偏时拉回来。
限制能碰哪些文件、能连哪些网、能不能删东西、要不要人工确认。
日志、每一步的输入输出、花费与延迟统计、方便调试和审计。
模型是发动机,Harness 是底盘、变速箱、方向盘和刹车。 同一台发动机装进不同的车,一台能上赛道、一台只能原地轰油门。 这也解释了为什么"换了个壳"有时比"换了个模型"提升还大。
| 你熟悉的产品 | 它其实是一个 Harness |
|---|---|
| Claude Code、Codex CLI 之类的命令行智能体 | 把模型接到终端、文件系统和 Git 上 |
| IDE 里的 AI 编程插件 | 把模型接到编辑器、索引和 diff 上 |
| 企业内部知识助手 | 把模型接到检索库、权限体系和工单系统上 |
| 某云厂商的"智能体平台" | 可拖拽配置的通用 Harness |
Tool · Function Calling · 工具调用
最常见的误解:"模型会执行代码"。不会。
模型唯一能做的事是输出文字。所谓的函数调用,是它输出一段结构化的文字说
"我建议调用 run_python,参数是这些",然后由 Harness 里的代码真正去执行。
模型输出(本质仍是文本):
{
"tool": "run_python",
"args": { "code": "print(welch_peak(signal))" }
}
Harness 收到后:
1. 校验参数是否合法、是否越权
2. 在沙箱里真的运行
3. 把结果 "峰值 1400 Hz" 作为新消息塞回模型
4. 模型基于这个真实结果继续
由此可以理解安全工作为什么必须做在 Harness 层:权限、白名单、沙箱、人工确认,都是拦在"执行"之前的闸门——因为模型那一边是拦不住的。
常见工具类型:代码执行(Python/Bash)、文件读写、网页搜索、数据库查询、HTTP 请求、发邮件、操作系统/机器人控制、图像生成。
Skill / Capability Pack · 也有人叫技能包、插件、能力
它是什么:把某类任务的做法打包成一个可复用的单元——通常包含 一段说明(什么时候用、怎么用) + 配套脚本或模板 + 校验规则。 模型需要时才加载,用完即走。
Tool 是单个工具(一把扳手);Skill 是岗位技能手册 ("怎么换刹车片"的整段流程,会用到扳手、千斤顶、扭力扳手三种工具,还写了安全步骤和验收标准)。
| 维度 | Tool | Skill |
|---|---|---|
| 粒度 | 原子能力,一个函数 | 一套流程,可能调用多个工具 |
| 内容是 | 接口定义 + 执行代码 | 知识 + 步骤 + 模板 + 脚本 |
| 谁决定使用 | 模型逐次选择 | 由主流程按任务类型加载 |
| 典型例子 | 读文件、发请求、跑 Python | "生成周报""做信号频谱诊断""审阅合同" |
Rules · Guardrails · 护栏 · 策略 Policy
它是什么:规定"必须怎么做、绝对不能怎么做"。初学者最容易忽略的一点是: 规则分软硬两种,可靠性完全不同。
| 类型 | 实现方式 | 可靠性 | 例子 |
|---|---|---|---|
| 软规则 | 写进系统提示或技能说明,靠模型自觉遵守 | 高但非 100%,可能被绕过 | 先给结论再解释;不确定要声明;用简体中文回答 |
| 硬规则 | 代码层拦截:正则校验、权限校验、白名单、拦截器 | 确定生效 | 禁止删除生产库;金额超限需人工审批;输出必须能通过 JSON 校验 |
常见规则示例:
模型本身两样都没有,都是外部补上的
就是当前上下文窗口里的对话。会话结束即消失,本质是"临时便签"。
存到数据库或文件里,跨会话可取回。关键是要主动写入,并且要能判断什么值得记、旧信息要能更新删除。
先把你的文档切片、向量化入库;提问时先检索最相关的几段塞进上下文,再让模型回答。缓解幻觉与知识过期的首选方案。
用你的数据继续训练模型本身,把知识或风格"焊进"参数。适合稳定的风格与能力,不适合频繁变动的知识。
| 想要什么 | 更合适的做法 |
|---|---|
| 让模型知道最新/私有资料 | RAG 检索 |
| 让模型记住用户的偏好 | 长期记忆存储 |
| 让模型固定某种风格或稳定输出格式 | 提示词 + 少量示例,必要时微调 |
| 让模型能做某件具体的事 | 给工具(Tool)/ 给技能(Skill) |
Model Context Protocol · 模型上下文协议
解决的问题:以前每接一个新工具,都要为每个模型、每个产品各写一套适配代码,组合爆炸。 MCP 定义了一套通用协议,让"工具/数据源"按标准暴露自己,任何支持 MCP 的 Harness 都能即插即用。
在 USB-C 出现之前,每台设备都有自己的充电口。MCP 就是 AI 工具世界的 USB-C: 工具方只需实现一次,所有客户端都能连。它管的是"怎么把外部能力接进来",不负责替你思考。
MCP Server:把某数据库、某文件目录、某 SaaS 的能力按协议暴露出来。
MCP Client:Harness 里的一段代码,发现并调用这些能力,交给模型使用。
本地进程或远程 HTTP 均可,权限和凭据由客户端统一管理。
把前面所有概念串起来看一遍
run_python,先做权限与参数校验(Rule),再在沙箱里真的执行。点开看答案
默认没有。每次调用都是"从零开始",它看到的只有这次被塞进来的文字。所谓"记得你",是 Harness 把历史对话或长期记忆存下来、每次重新发一遍。
默认不能。它只能靠训练时"压进"参数里的旧知识。要联网必须给它搜索或抓取工具,要查库必须给它数据库工具。
不会。它只会输出"建议调用某个函数"的文本。真正执行的是 Harness,这也是安全闸门唯一能生效的地方。
不是。差别在结构:Agent 有工具、循环、真实反馈。一个中等模型配好 Harness,往往比顶级模型只做聊天更能完成任务。
不是。无关内容会稀释注意力、增加成本与延迟,长上下文中间部分还容易被忽略。更好的做法是精准检索 + 定期摘要压缩。
语言流畅不等于算术正确。凡是数字、计算、时序推导,都应该交给工具算,并保留可复算的过程。
因为 Harness 不同:上下文怎么组织、工具给多少、规则怎么设、错误怎么兜。这些都发生在模型之外。
概念上区分很有用:Tool 是原子动作,Skill 是可复用的做事流程(含知识与验收标准)。工程上常见做法是把 Skill 当成"按需加载的一段说明 + 若干脚本",脚本再调用底层 Tool。
中英对照,方便看英文文档
| 英文 | 中文 | 一句话 |
|---|---|---|
| LLM / Foundation Model | 大模型 / 基础模型 | 预测下一个 token 的超大神经网络 |
| Token | 词元 | 文本的最小切分单位,计费按它算 |
| Context Window | 上下文窗口 | 一次能同时看到的内容上限 |
| Prompt | 提示词 | 你输入的全部内容 |
| System Prompt | 系统提示 | 开发者预设的身份与规矩 |
| Hallucination | 幻觉 | 自信地编造看似合理的内容 |
| Agent | 智能体 | 模型 + 工具 + 循环 + 反馈,能自主完成任务 |
| Harness / Scaffolding | 运行外壳 / 脚手架 | 包在模型外的工程框架,负责执行与约束 |
| Tool / Function Calling | 工具 / 函数调用 | 模型输出调用意图,由外部真正执行 |
| Skill / Capability | 技能 / 能力包 | 打包好的做事流程与知识 |
| Rule / Guardrail | 规则 / 护栏 | 约束与边界,分软硬两类 |
| Memory | 记忆 | 跨会话保留信息的外部存储 |
| RAG | 检索增强生成 | 先查资料再回答 |
| Fine-tuning | 微调 | 用你的数据继续训练模型本身 |
| RLHF | 人类反馈强化学习 | 让模型更听话、更有用的对齐手段 |
| MCP | 模型上下文协议 | 工具接入的统一标准接口 |
| Orchestration | 编排 | 决定多步任务怎么走、谁先谁后 |
| Sandbox | 沙箱 | 隔离执行环境,防止误伤真实系统 |