AI 使用分享
从「猜下一个字」开始,解析 AI 内部原理,了解 Agent 对话过程
> predicting next token: ▍
产品 · 技术 · 设计 内部分享 / 30 MIN
目录
/ CONTENTSQ: 今天杭州天气怎么样? → A: tool_call × 1 · 六步 · 杭州今日晴,18–26℃
大模型
在做什么
它其实只做一件事:猜下一个字
给它一段开头,它在整本词表上算一遍概率,
挑概率最高的那个字接上去——然后重复。
仅此而已,没有别的魔法。
VOCAB · 词表上的概率分布(示意)— 挑 argmax
给同一个开头,每个候选字都有一个概率 → 取最高的接上去
第一回合:给它「JAVA 是世界上最」
取概率最高的 → 接上「流行」
第二回合:接上「流行」继续猜
取概率最高的 → 接上「的」
第三回合:再接上「的」,继续猜
取概率最高的 → 接上「语言」
三回合接龙,一句话就出来了
JAVA 是世界上最流行的语言
每个新字都以前面所有字为条件。
每个字,在模型眼里是一串数字,代表语义
真实模型里每个 token 是 768–4096 维的向量。它不查字典,它算「离谁最近」。
猜一个字,其实要过几十层
Transformer 内部不是一步算完的,而是 L01 → L24 一层一层往上算,每一层都在加工上一层的结果。
这些历史字的层间计算结果已经存进 KV 缓存——不用重算。
新字「流行」来了,只算自己这一步:光带逐层点亮,站在缓存的肩膀上。
每多接一个字,整叠层都要为它跑一遍——但前面的字不用重算。
KV 缓存:把算过的记下来,别重算
从头再算一遍
每生成一个新字,前面所有字的所有层都从头再算一遍。字越多越慢,越写越卡。
O(n²)算过的记下来
把前面字已经算出的中间结果(K、V)存起来,新字只需算自己这一步。
O(n)字越多越慢,越写越卡 → 每个新字成本恒定。
一次 Agent 对话,
中间跑了七步
请求预处理:把话说清楚
这一步不做意图判断、也不决定用不用工具——它只负责「把话说清楚」,让模型更容易读懂。判断交给下一步的模型。
组装提示词:五段文本拼起来
调用大模型:它决定用工具
模型读完五段提示词,决定不直接回答,而是返回:
args: { url: "https://www.weather.com.cn/hangzhou" }
模型自己不会联网——它只能「请求」外面的世界帮它查。这个请求就是 tool_call。
执行工具:客户端去查天气
客户端执行 curl,请求中国天气网:
{ "city": "杭州", "weather": "晴",
"temp": "18-26℃", "wind": "西北风2级" }
user → assistant(tool_call) → tool(结果) = history 3 条 · 下次对话直接带上
执行完立刻回填:结果作为一条 tool 消息追加进 history。这一步仍然完全发生在模型之外。
再次调用:够了吗?够了就出答案
输出并落库
存下来的消息就是以后的聊天记录——下次对话直接在这些消息后面接着追加。
✓ 4 条消息全部存入历史记录回顾聊天过程
以上五步 = 一次完整对话。为了让这五步能干更多事,工程上把它拆成了五件装备:
五件装备
逐个看
MCP 是什么:工具的统一接口
MCP(Model Context Protocol):把「能调用的工具」按统一协议暴露给模型。
接一次,所有支持该协议的客户端都能用——模型看到的只是一份工具清单。
客户端 / 应用
IDE、Agent、聊天客户端……按协议列出可用工具。
MCP Server
把能力包装成标准化的 tools / resources / prompts 三类接口。
真实能力
数据库、浏览器、GitHub、本地文件……模型不需要知道细节。
模型看到的只是一份工具清单。
MCP 解决什么:N×M 变 N+M
重复劳动,格式还不统一 → 各写一次,即插即用。
Skill 是什么:领域操作手册
Skill:一份写给模型看的「操作手册」,教它某个领域怎么做。
MCP 告诉模型「有哪些工具」,Skill 告诉模型「怎么用好这些工具」——清单和说明书的关系。
「你有一把锤子」
静态的工具清单,随提示词一起发给模型,模型自己决定用不用。
「钉钉子要先扶正再敲」
按需加载的经验和方法论,命中场景才展开,不占常驻上下文。
命中场景才展开,不占常驻上下文。
Skill 的四要素
对应左边 SKILL.md 片段:frontmatter / 正文 / 参考,第四要素是配套脚本。
记忆:就是一个能读写的文件
所谓「记忆」,没有魔法:就是一块模型可以读写的外部文件(通常是 markdown)。真实案例如 openclaw——整个「人格 + 记忆」就是 workspace 里几个 markdown 文件。
📁 ~/openclaw/workspace/ —— 角色定义就是几个 markdown 文件
↑ 每轮对话开场,自动读一遍塞进提示词——它就「记得」你了
跨会话持久;而 history[] 只在当前对话内有效——这是两者的本质区别。
RAG:先检索,再回答
为什么不用传统数据库检索?
只能「精确匹配」
WHERE city = '杭州'、关键词倒排——都是字面上的相等或包含。问「便宜的笔记本」,它找不到「高性价比 laptop」,因为字面完全不同。
字面匹配 ≠ 语义匹配按「意思」找最近邻
问题和文档在同一个语义空间里。意思接近 → 向量夹角小 → 相似度高。换个说法也能命中,这正是 RAG 需要的。
语义检索 = 意思相近就命中换个说法也能命中,这正是 RAG 需要的。
钩子:挂在流程之间的检查点
钩子(Hooks):在固定环节前后自动触发的拦截器,可以拦下、改写或放行。业务流程不动,把控制逻辑挂在旁边——和 AOP 切面、前端中间件同一思想。
LIVE · 一次真实执行:危险命令被拦下审批,工具跑完自动记 wiki
五件装备,各司其职
MCP / Skill / 记忆 / RAG 最终都变成文本进入提示词;钩子则在外围控制文本怎么来。
记住这一点,新概念出现时就不会迷路。
工具怎么选
主流 AI 编程工具对比
| 工具 | 形态 | 核心优势 | 适合谁 |
|---|---|---|---|
| Claude Code | 终端 Agent | MCP / Skill / 钩子生态最完整 | 工程 · 重度 Agent 流 |
| Cursor | IDE | 编辑器内补全 + 对话改码,上手最快 | 产品 / 设计 · 日常开发 |
| GitHub Copilot | IDE 插件 | 与 GitHub / VS Code 深度绑定 | 已有 Copilot 订阅的团队 |
| DeepSeek Harness | Agent 运行时 | 国产开源模型,性价比高(deepseek.com/harness) | 预算敏感 · 自托管需求 |
| ZCODE | IDE / Agent | GLM 系,中文场景与国内合规更顺(zcode.z.ai) | 国内合规要求高的团队 |
| WorkBuddy | 国产 · 设计办公 | 主打设计与办公场景,自带 PPT 画布,边生成边看,改起来直观 | 做方案 / 汇报 / 内部分享——比如这场分享会就是它做的 |
没有最好的工具,只有最合适的场景。
按岗位选:我们团队怎么用
工具会一直换,原理不会——掌握「提示词 → 工具 → 回填」这条链,换任何工具都只是换壳。
原理不变,工具在变。
把「猜下一个字」和「提示词循环」记住,
新工具出现时你只需要一张说明书的时间。