AI项目Leader必修课-万字长文给你构建认知
第一部分
AI基础认知:建立正确框架
第1章:AI究竟是什么?从规则到智能
• 传统软件与AI的根本区别• 机器学习、深度学习、大语言模型(LLM)的层级关系
• token、涌现能力、幻觉等核心概念
• LLM的能力边界与局限性
1.1 传统软件 vs AI:两种截然不同的思路
在理解AI之前,我们先回头看看传统软件是怎么运作的。
传统软件的核心是规则:程序员把所有逻辑写清楚,计算机严格按规则执行。比如一个垃圾邮件过滤器,开发者可能会写:
if “免费领取” in email.subject:
mark_as_spam()
if “点击链接” in email.body and sender not in whitelist:
mark_as_spam()
这种方式直观、可解释、可预测,但有一个致命弱点:规则是人写的,覆盖不了所有情况。垃圾邮件发送者只需要把”免费领取”改成”免费领 取”(加个空格),规则就失效了。
【核心概念】
机器学习(Machine Learning):不是人来写规则,而是让计算机从大量数据中自己找规律。
给它10万封邮件(标注好哪些是垃圾),让它自己学习”垃圾邮件长什么样”。
【类比】
教小孩认”猫”——你不会给他背一本规则手册(”四条腿+尖耳朵+胡须+会叫”),而是给他看1000张猫的照片。
看多了,他自然就会认。
机器学习的本质就是这样:大量例子 → 自动归纳规律。
1.2 层级关系:机器学习 ⊃ 深度学习 ⊃ 大语言模型
这三个词经常被混用,实际上是包含关系:
|
层级 |
是什么 |
代表技术 |
|
机器学习 |
用数据训练模型的方法论总称 |
线性回归、随机森林、SVM |
|
深度学习 |
机器学习的一个子类,使用多层神经网络 |
CNN(图像识别)、RNN(序列数据) |
|
大语言模型(LLM) |
深度学习的一种,专门在文本数据上训练,参数量极大 |
GPT-4、Claude、Gemini、DeepSeek |
【核心概念】
神经网络(Neural Network):受人脑启发的计算结构。
由大量”神经元”(数学函数)连接而成,信息从输入层逐层传递,每一层提取更高层次的特征。
“深度”指的是层数多(几十到几百层)。
1.3 大语言模型(LLM)的工作原理
LLM做的事情,说起来非常简单:预测下一个词(token)。
【核心概念】
Token:LLM处理文字的基本单位,不完全等于”字”或”词”。
英文中一个token大约是3/4个单词;
中文中一个token大约是1-2个汉字。
“ChatGPT is great” 大约是4个token。
LLM的训练过程:拿来海量文本(整个互联网、所有书籍……),每次遮住最后一个词,让模型猜是什么词,猜错了就调整模型参数。反复数亿次,模型就”学会”了语言的规律。
所以当你问LLM”今天天气怎么样”,它做的事情是:根据你的问题,找到”最可能跟在后面的词”,然后一个词一个词地输出。它不是在查数据库,而是在概率采样。
【关键洞察】
LLM是”有创造力的概率机器”,不是”精确的查询系统”。
这解释了为什么它有时会”编造”不存在的事实——它是在找”最可能跟着出现的词”,而不是在”查真实答案”。
1.4 什么是”涌现能力”?
早期的语言模型,参数量小,只会做简单的文本续写。当模型做到足够大(几十亿、几百亿参数),一些在训练时从未明确设计的能力,突然”涌现”出来:
l数学推理:能做多步骤数学题
l逻辑推理:能分析逻辑谬误
l写代码:能理解编程语言并生成代码
l类比思维:能举一反三
【核心概念】
涌现能力(Emergent Ability):当系统规模超过某个临界点,突然出现的、在小规模时完全不存在的能力。
这不是设计出来的,而是”量变引起质变”。
【类比】
往杯子里倒水,前99%的水是液态的;
但当水冻成冰(达到临界点),突然出现了”固态”这个新性质——这不是逐渐出现的,而是突变。
LLM的涌现能力也是类似的突变。
1.5 LLM的能力边界与局限
了解LLM的限制,比了解它能做什么更重要。在做技术选型时,不了解局限性会导致项目失败。
|
局限性 |
原因 |
应对方法 |
|
幻觉(Hallucination) |
模型在找”可能的词”,不在查”真实的事” |
RAG(引入外部知识库)/ 要求引用来源 |
|
知识截止日期 |
训练数据有截止点,不知道之后发生的事 |
联网搜索工具 / RAG |
|
无持久记忆 |
每次对话独立,不记得上次说什么 |
外部记忆系统(第3章展开) |
|
计算错误 |
模型本质上是语言模型,不是计算器 |
调用计算器工具 / Code Interpreter |
|
上下文限制 |
每次能”看到”的内容有限(下一章展开) |
Context Engineering / 分段处理 |
【核心概念】
幻觉(Hallucination):LLM生成看起来合理但实际上不正确的内容。
比如你问它某篇论文的作者,它可能会”编”一个听起来像真名字的名字,且说得很自信。
这是LLM的固有局限,不是bug,是架构特性。
• 传统软件靠规则;AI靠从数据中学习规律——这是根本区别
• 大语言模型(LLM)是深度学习模型,核心机制是”预测下一个token的概率”
• Token是LLM处理文字的基本单位,不等于一个字或词
• 涌现能力是规模扩大后突然出现的能力,不是设计出来的
• LLM的三大固有局限:幻觉、知识截止、无记忆——理解这些是用好AI的前提
第2章:从LLM到AI助手——中间发生了什么?
• Prompt、System Prompt、User Prompt的概念与区别
• Context Window是什么,为什么重要
• Temperature等关键参数的含义
• ChatGPT/Claude背后的工作原理
• RAG的初步认识
2.1 Prompt:给LLM的指挥棒
【核心概念】
Prompt:给LLM的输入文本。
从最简单的”今天天气好吗”,到复杂的系统级指令,都叫Prompt。
Prompt的质量直接决定输出的质量——”垃圾进,垃圾出”在LLM里同样适用。
一个完整的Prompt通常由两部分构成:
|
类型 |
谁设置 |
作用 |
例子 |
|
System Prompt |
开发者/产品方 |
角色设定、行为约束、背景信息 |
“你是一个代码审查专家,只回答编程相关问题,回答必须简洁” |
|
User Prompt |
最终用户 |
具体的任务指令 |
“帮我审查这段Python代码” |
【类比】
System Prompt像一家公司的”员工手册”——告诉AI它是谁、能做什么、怎么做事;
User Prompt像员工收到的”工单”——具体这次要做什么。
手册定角色,工单定任务。
2.2 Context Window:AI的工作记忆
【核心概念】
Context Window(上下文窗口):LLM每次处理时能”看到”的全部内容总量,以token计量。
包括System Prompt + 历史对话 + 当前提问 + 要生成的回答。
超过这个限制,早期的内容就会被”遗忘”或报错。
常见LLM的Context Window大小(2025年数据):
|
模型 |
Context Window |
大约能放多少内容 |
|
GPT-4o |
128K tokens |
约10万字(一本薄书) |
|
Claude 3.7 Sonnet |
200K tokens |
约15万字(一本厚书) |
|
Gemini 1.5 Pro |
1M tokens |
约75万字(几本书) |
【类比】
人的工作记忆(短期记忆)大约能同时保持7±2件事。
Context Window就是AI的工作记忆——它能”同时看着”的内容是有限的。
超过了,就开始忘;
要么需要你提醒,要么就出错。
Context Window的重要性:
l决定AI能理解多少背景信息:一次性给它10万字文档,它能理解全文;如果只有1000 token,只能看一小段
l影响多轮对话的连贯性:长对话后,早期的信息可能被”挤出”context
l是Agent设计的核心约束(后面章节会深入)
2.3 关键参数:Temperature与TopP
调用LLM的API时,有几个参数控制输出行为:
【核心概念】
Temperature(温度):控制输出的随机性/创造性。
数值范围通常0~2。
→ Temperature=0:每次输出几乎相同,最确定、最稳定(适合需要准确答案的场景) → Temperature=1:平衡创意与准确(默认值) → Temperature=2:非常随机,可能离题(不推荐用于生产)
【类比】
Temperature就像人回答问题时的”发挥空间”。
Temperature=0,像考试做选择题,按最确定的答案填;
Temperature=2,像脑洞大开的创意写作,天马行空。
写SQL用低temperature,写广告文案用高temperature。
2.4 ChatGPT/Claude背后的工作原理
我们每天用的AI助手(ChatGPT、Claude、Kimi……),不只是一个LLM,而是一个系统:
用户输入
↓
安全过滤(屏蔽违规内容)
↓
组装完整Prompt = System Prompt + 对话历史 + 用户输入
↓
LLM(核心:预测token)
↓
输出后处理(格式化、安全过滤、流式输出)
↓
用户看到的回答
这说明:”AI助手”和”LLM”不是同一件事。LLM只是核心引擎,外面包了一层工程系统。
2.5 RAG:让AI能查阅外部知识
【核心概念】
RAG(Retrieval-Augmented Generation,检索增强生成):让LLM在回答问题前,先从外部知识库中检索相关内容,然后把检索结果加入Prompt,再生成回答。
这样AI就能”查资料”了,不再只靠训练时的记忆。
【类比】
没有RAG的LLM:像一个从不查书的人,全靠记忆回答——记得的说对,不记得的会乱说。
有RAG的LLM:像一个在旁边摆了一排参考书的人——有问题先查书,再给你答案,准确多了。
RAG解决的核心问题:
l知识截止日期:外部知识库可以实时更新
l私有知识:公司内部文档、代码库,LLM没训练过,但RAG能用
l减少幻觉:有了真实参考资料,乱编的概率大幅下降
RAG的工作流程(简化版):
1. 预处理:把文档切片 → 向量化(转成数字) → 存入向量数据库
2. 查询时:用户问题 → 向量化 → 在数据库中找最相似的片段
3. 生成:相关片段 + 用户问题 → 一起发给LLM → LLM生成带参考依据的回答
• Prompt是给LLM的输入:System Prompt设定角色,User Prompt给出任务
• Context Window是AI的工作记忆,有上限,决定AI能同时”看到”多少信息
• Temperature控制输出的随机性:准确型任务用低temperature,创意型任务用高temperature
• ChatGPT/Claude是”LLM + 工程系统”,不只是裸模型
• RAG让AI能查阅外部知识库,解决幻觉和知识截止的问题
第二部分
AI Agent:从问答到自主完成任务
第3章:什么是AI Agent?
• Chatbot与Agent的本质区别
• ReAct循环(Reason-Act-Observe)的工作方式
• 工具调用(Tool Use)是怎么回事
• Memory三层架构
• 为什么Agent需要Planning和Human-in-the-Loop
3.1 从Chatbot到Agent:一次本质跃迁
很多人把AI Agent理解为”更聪明的Chatbot”,这是一个根本性的误区。
Chatbot的工作方式是:你问 → 它答 → 结束。每次交互是独立的,它不会主动做任何事情,也不会自己判断”任务是否真的完成了”。
Agent的工作方式完全不同:给它一个目标,它自己规划路径、调用工具、观察结果、调整策略,直到目标达成。
|
维度 |
Chatbot |
AI Agent |
|
交互模式 |
一问一答,做完就走 |
接到目标→自主循环→直到完成 |
|
工具使用 |
偶尔调用一个API |
自主选择、组合多个工具 |
|
记忆 |
对话内短暂记忆 |
三层记忆(情景/语义/程序) |
|
规划 |
无规划,直接响应 |
先规划(write_todos),再执行,持续修订 |
|
子任务 |
不派发子任务 |
可生成子Agent,隔离执行 |
|
完成判断 |
模型自己说”完成了”就完成了 |
每个todo项必须check-off验证 |
【类比】
Chatbot像一个”只接电话的客服”——你问什么答什么,挂了电话就忘了;
Agent像一个”项目负责人”——你告诉他目标,他自己拆任务、调资源、跟进进度,直到项目真的完成。
3.2 ReAct循环:Agent的心脏
【核心概念】
ReAct(Reason-Act-Observe)循环:Agent的核心运行机制。
每一轮:先推理(Reason)应该做什么,再行动(Act)调用工具,然后观察(Observe)工具返回的结果,基于结果再推理下一步。
循环往复直到任务完成。
用一个完整的例子走一遍——任务:”帮我分析这季度的销售数据,找出异常”:
[Reason] 我需要先获取这季度的销售数据,然后进行分析
[Act]调用工具:query_database(“SELECT * FROM sales WHERE quarter=’Q1 2026′”)
[Observe] 返回:12000条记录,包含门店、产品、金额等字段…
[Reason] 数据量不大,我可以直接分析。先看整体趋势,再找异常
[Act]调用工具:analyze_data(data, method=”trend_analysis”)
[Observe] 返回:总销售额环比下降8%,华北区门店下降最明显(-23%)
[Reason] 华北区异常显著,需要深入看华北区的具体数据
[Act]调用工具:query_database(“…WHERE region=’华北’ ORDER BY sales ASC”)
[Observe] 返回:北京朝阳门店销售额从60万跌到12万,跌幅80%
[Reason] 单店跌幅过大,可能是数据问题或门店运营问题,需要提醒用户
[Response] 发现异常:北京朝阳门店本季度销售额下降80%(60万→12万),
显著异常,建议核实数据准确性和门店运营情况。
这就是ReAct循环的全过程。Agent并不是一次性给出答案,而是边做边想,根据每一步的结果调整下一步的行动。
3.3 工具调用(Tool Use):让Agent能”动手”
【核心概念】
工具调用(Tool Use / Function Calling):LLM本身只能输出文字,工具调用让它能”做事”。
开发者预先定义好工具(函数名+参数说明+返回值格式),LLM在推理时自行判断何时调用哪个工具、传什么参数。
常见的工具类型:
l搜索工具:web_search、查文档
l代码执行:run_python、execute_sql
l文件操作:read_file、write_file、list_directory
l外部API:发邮件、发Slack消息、操作数据库
l子Agent派发:让另一个Agent完成子任务
【类比】
LLM的语言能力是”大脑”,工具是”手”。
大脑没有手什么都做不了;
光有手没有大脑也不知道做什么。
工具调用让Agent同时有了”大脑”和”手”。
3.4 Memory:Agent的记忆系统
Agent需要记住信息——但记什么?怎么记?借鉴认知科学,Deep Agent有三层记忆:
|
层级 |
存什么 |
类比 |
实现方式 |
|
情景记忆(Episodic) |
过去发生了什么(事件/交互历史) |
“上次他让我做代码审查,我漏掉了安全漏洞” |
向量数据库(Chroma/Qdrant) |
|
语义记忆(Semantic) |
什么是真的(事实/知识) |
“Python的GIL限制多线程性能” |
RAG(第2章)+ 知识图谱 |
|
程序记忆(Procedural) |
怎么做事情(行为规范/工作流) |
“做代码Review时,先看diff再看周边文件” |
System Prompt + Skill文件(第7章) |
【关键洞察】
RAG就是语义记忆系统;
Skill(第7章)就是程序记忆系统。
理解了Memory三层,你就理解了为什么需要RAG、为什么需要Skill——它们各自服务于不同类型的记忆需求。
3.5 Planning:为什么Agent需要先规划?
一个常见的Agent失败模式是:直接开始行动,做着做着忘了最初的目标;或者做完了第一步以为任务完成了,其实还差很多。
解决方案是显式规划(Planning):
1.接到任务后,先把任务拆解成子步骤,写入待办列表(write_todos)
2.逐步执行,每完成一步就check-off
3.所有步骤check-off才能宣告任务完成
【核心概念】
write_todos机制:把规划写入文件系统(而非context内存),避免长任务中规划被”挤出”context窗口。
这是Agent可靠完成复杂任务的关键工程实践。
3.6 Human-in-the-Loop:关键决策点的人工参与
【核心概念】
Human-in-the-Loop(HITL):在Agent执行过程中的关键决策点,强制暂停等待人类审批,再继续执行。
不是”全程人工监控”,而是”关键节点人工把关”。
哪些操作需要HITL?
l修改生产数据库配置
l删除数据或文件
l发送邮件/消息给外部
l部署到生产环境
l花费超过阈值的资源
【类比】
自动驾驶L2级别:大多数时候AI自己开,但遇到复杂路况(施工、暴雪、复杂交叉口)系统会提示司机接管。
HITL在Agent中的作用完全类似——”高风险操作前,移交人类决策”。
【注意】
EU AI Act 2026年8月2日生效,高风险AI系统(涉及医疗/金融/关键基础设施)法律要求必须有Human-in-the-Loop机制。
这不只是工程最佳实践,正在成为法规要求。
• Agent ≠ 聪明的Chatbot:Agent是自主循环执行到目标达成,Chatbot是一问一答
• ReAct循环(Reason→Act→Observe→Reason)是Agent的核心机制
• 工具调用让Agent从”只能说”变成”能做事”
• 三层记忆:情景(RAG历史)/ 语义(RAG知识)/ 程序(Skill)——对应后续两章
• Planning(显式规划+check-off)防止Agent”自以为完成了”的失败
• Human-in-the-Loop是高风险操作的必要安全机制
第4章:多Agent系统——让Agent组团工作
• 为什么需要多个Agent协作
• 四种多Agent编排模式及其类比
• MCP协议的深入解释(为什么是AI的USB-C?)
• A2A协议与MCP的区别
• 常见失败模式与防御策略
4.1 为什么需要多个Agent?
单个Agent有三个根本限制,推动了多Agent架构的出现:
4.Context Window限制:一个Agent同时看的内容有限,超大任务塞不下
5.并行能力限制:单Agent只能串行做事,大量子任务需要并行
6.专才vs通才:一个”什么都做”的Agent,不如多个”专做一件事”的Agent组合效果好
【类比】
开发一个大型软件,一个全栈工程师单打独斗,不如一个前端+一个后端+一个测试+一个DevOps的团队高效。
多Agent是”AI团队协作”,每个Agent有自己的专责领域。
4.2 四种编排模式
模式1:Sequential(流水线)
Agent A做完,把结果交给Agent B,B做完交给C,依次串行。
【类比】
工厂流水线:零件先到冲压车间→焊接车间→喷漆车间→装配车间,每个环节只做自己的事。
适合:有明确依赖关系的任务(数据清洗→分析→报告生成) 优势:可预测、易调试 劣势:无法并行,速度慢
模式2:Parallel Fan-Out/Fan-In(并行汇聚)
主Agent把任务分发给多个子Agent(Fan-Out),子Agent并行执行,主Agent汇聚结果(Fan-In)。
【类比】
学校分组讨论:老师把一个大问题分给5个小组同时讨论(Fan-Out),然后各组派代表汇报,老师综合所有观点(Fan-In)。
适合:独立子任务(同时分析5个部门的报告、同时审查5个代码文件) 优势:速度快,N个Agent同时工作 注意:Fan-In聚合逻辑需要精心设计
模式3:Hierarchical/Supervisor(层级管理)
Supervisor Agent负责拆解任务、分配给下属Agent、汇聚结果;下属Agent专注执行。
【类比】
项目经理+执行团队:项目经理不亲自写代码,而是分配任务、跟进进度、整合交付物。
适合:企业级复杂任务,权责需要清晰划分 优势:清晰的权责边界,易于扩展 注意:Supervisor的调度逻辑设计要花心思
模式4:Adaptive/Magentic-One(自适应)
没有固定结构,Agent根据任务动态决定下一步找谁合作、用什么工具。
【类比】
SWAT特种部队:没有固定剧本,遇到情况动态调配人员和资源,灵活响应。
适合:开放式探索(不确定如何解决的问题) 优势:灵活 注意:难以调试,结果不稳定,不适合生产关键路径
4.3 MCP协议:AI的USB-C
在讲MCP之前,先理解一个问题:没有统一标准时,Agent连接工具有多痛苦?
假设你有3个AI Agent,10个工具(数据库/Slack/GitHub/邮件/日历……),每个Agent要连接每个工具,需要单独开发集成代码。这是 3×10=30 个集成。再加5个Agent、10个工具,就是 8×20=160 个集成。这就是N×M问题——随着工具和Agent数量增加,集成工作量爆炸式增长。
【核心概念】
MCP(Model Context Protocol):Anthropic提出的开放协议,标准化Agent与外部工具/数据源的连接方式。
工具方实现一次MCP Server;
Agent方实现一次MCP Client;
之后任何Agent都能连接任何工具。
把N×M问题变成了N+M问题。
【类比】
USB-C出现之前:每个设备用不同接口(Micro-USB/Lightning/proprietary),需要一堆不同的数据线。
USB-C出现之后:一个接口,连所有设备。
MCP对AI世界的意义完全一样:一个协议,连所有工具。
MCP的三个角色:
lMCP Server:工具/数据源方实现(如GitHub的MCP Server提供”看issue、提PR”等能力)
lMCP Client:Agent的一部分,知道如何通过MCP协议调用工具
l协议规范:Linux基金会AAIF负责维护,保证互操作性
实际例子:
|
MCP Server |
提供的能力 |
|
MCP-GitHub |
读代码、看PR、创建Issue、合并分支 |
|
MCP-Slack |
发消息、读频道、@人 |
|
MCP-PostgreSQL |
查询数据库、执行SQL |
|
MCP-Filesystem |
读写本地文件、列目录 |
4.4 A2A协议:Agent之间的HTTP
【核心概念】
A2A(Agent-to-Agent)协议:由Google发起(50+合作伙伴)的协议,标准化Agent之间的通信方式。
MCP是Agent连接”工具”的标准,A2A是Agent连接”其他Agent”的标准。
两者互补,不是替代关系。
|
维度 |
MCP |
A2A |
|
连接对象 |
Agent ↔ 工具/数据源 |
Agent ↔ Agent |
|
类比 |
USB-C(设备接口) |
HTTP(服务器间通信) |
|
发起方 |
Anthropic → Linux基金会AAIF |
Google + 50+合作伙伴 |
|
关系 |
互补,共同构建完整的Agent生态 |
4.5 常见失败模式与防御策略
|
失败模式 |
表现 |
防御策略 |
|
Context Rot(上下文腐化) |
对话越来越长,早期关键信息被挤出或被”淹没” |
每N轮主动压缩;结果存文件;70%满时触发摘要 |
|
Infinite Loop(无限循环) |
Agent反复调用同一工具却没有进展 |
步数硬限制;语义去重检测;第三次相同行动触发HITL |
|
Premature Closure(过早结束) |
第一步做完就宣告任务完成 |
write_todos强制check-off每个子项 |
|
Memory Incoherence(记忆冲突) |
多个Agent并发写同一数据导致冲突 |
原子写操作;namespace所有权;版本控制 |
• 多Agent架构的驱动力:Context限制 + 并行需求 + 专才效应
• 四种编排模式:Sequential(流水线)/ Parallel(并行汇聚)/ Hierarchical(层级管理)/ Adaptive(自适应)
• MCP:工具连接标准化(USB-C类比),把N×M问题变成N+M
• A2A:Agent间通信标准化(HTTP类比),与MCP互补
• 多Agent系统常见失败:Context腐化 / 无限循环 / 过早结束 / 记忆冲突——每种都有对应防御
第三部分
AI编程:工程化落地
第5章:AI时代的编程方式变了
• Software 1.0/2.0/3.0三大范式的含义
• LLM作为新操作系统的类比框架
• 六大AI编程新模式(Vibe Coding、Context Engineering等)
• 什么是Context Engineering,为什么是核心技能
• AI编程”快了什么,慢了什么”的现实评估
5.1 Software的三次范式革命(Karpathy框架)
OpenAI创始人之一Andrej Karpathy(前特斯拉AI总监)在2025年的演讲中提出了一个深刻的框架:软件正在经历第三次范式革命。
|
范式 |
“代码”是什么 |
“编程”怎么做 |
时代 |
|
Software 1.0 |
人类写的指令(Python/Java/C++) |
人类手工写代码,定义每一行逻辑 |
1950s至今 |
|
Software 2.0 |
神经网络权重(数字参数) |
管理训练数据 + 设计优化器,让模型学习行为 |
2015年起(深度学习兴起) |
|
Software 3.0 |
LLM的Prompt和Context |
用自然语言”编程”,Prompt就是程序 |
2024年起(LLM普及) |
【关键洞察】
三种范式共存,不是替代关系。
一个现代AI项目:用Python代码(1.0)调用模型API,模型本身是训练好的神经网络权重(2.0),Agent的行为由Prompt和Skill文件控制(3.0)。
三者同时运行。
5.2 LLM = 新操作系统
Karpathy的另一个深刻类比:LLM正在扮演”新操作系统”的角色——管理资源、调度任务、提供统一接口。
|
传统操作系统 |
LLM对应 |
|
系统内存(RAM) |
Context Window(工作记忆) |
|
CPU/进程调度 |
LLM推理和Agent编排 |
|
外存/硬盘 |
文件系统 + 向量数据库 |
|
系统调用(syscall) |
Tool Use / MCP协议 |
|
多进程 |
Sub-Agent |
|
用户态/内核态 |
人工干预区域 / AI自主区域 |
|
程序(.exe) |
Prompt + Skill文件 |
这个类比帮助你理解:为什么Context Window管理这么重要(就像内存管理);为什么工具调用需要标准化协议(就像系统调用需要ABI)。
5.3 六大AI编程新模式
模式1:Vibe Coding(直觉编程)
【核心概念】
Vibe Coding:用自然语言描述意图,让AI生成代码,人类专注在”感觉对不对”上,而不是盯着每一行代码。
Karpathy本人用这种方式,在不懂Swift的情况下做出了iOS应用。
适合:快速原型、MVP、个人项目、探索性开发 不适合:生产关键系统、安全敏感代码、长期维护的大型项目
核心风险:”感觉对了”不等于”真的对了”。
模式2:Generation-Verification Loop(生成-验证循环)
AI生成→人类验证→反馈修改→再生成→再验证……快速循环。关键是让验证步骤尽量轻量(视觉diff而不是读10000行代码)。
模式3:Context Engineering(上下文工程)
【核心概念】
Context Engineering:精心设计”给AI的信息套餐”——什么信息放进去、以什么顺序放、放多少量。
它已经取代”Prompt Engineering”成为AI工程师的核心技能。
Context Engineering的四个基本操作:
lWrite:把关键信息(代码规范、业务背景)主动写入context
lSelect:从大量信息中挑最相关的放入(RAG的核心)
lCompress:把冗余信息压缩成摘要
lIsolate:不同任务用不同context,防止互相干扰
【关键洞察】
AI表现不佳,十有八九不是”模型不够强”,而是”给模型的context不够好”。
Context Engineering就是解决”给AI什么信息、怎么给”的学问——这是当前AI工程师最重要的技能之一。
模式4:Agent-First Design(Agent优先设计)
现代软件要为两类用户设计界面:
l人类界面:视觉化、直觉化(按钮、图表、表单)
lAgent界面:结构化、文本化(API文档、MCP Server、llm.txt)
模式5:Partial Autonomy / Autonomy Slider(可调节自主度)
AI不是”要么全自动、要么全手动”,而是一个滑块:按任务复杂度和风险程度,灵活调节AI自主程度。低风险任务:完全自动;高风险操作:必须人工审批。
模式6:Agentic Coding(Agent化编程)
不同于随性的Vibe Coding,Agentic Coding是结构化workflow + AI执行:先有清晰的任务规划(或Spec),然后Agent按计划执行,人类监督关键节点。
5.4 AI编程的现实:快了什么,慢了什么?
|
变快了 ✅ |
仍然慢 ⚠️ |
|
核心业务逻辑、自定义功能 |
认证系统(OAuth/SSO/MFA) |
|
原型和MVP |
支付集成(Stripe/微信支付) |
|
标准框架任务(CRUD/API) |
生产级部署(K8s/CI-CD/监控) |
|
单文件编辑和重构 |
跨系统数据一致性 |
|
写文档和注释 |
性能优化和安全审计 |
【注意】
“最后一公里”仍是瓶颈:Demo看起来很惊艳,但MVP→Production之间有巨大的gap。
认证/支付/部署这些”胶水层”AI仍然很难做好。
不要被demo迷惑,要评估完整落地成本。
5.5 古法 vs AI编程——概念对照
|
古法概念 |
AI时代对应 |
变化本质 |
|
编写代码 |
Vibe Coding / Agentic Coding |
人→描述意图,AI→生成实现 |
|
代码评审 |
Generation-Verification Loop |
从”逐行读”到”验证AI产物” |
|
写需求文档 |
Spec(SDD) |
需求文档变成AI可执行的Spec |
|
README.md |
SKILL.md |
给人类读的 → 给AI读的操作手册 |
|
.gitignore |
llm.txt / .cursorrules |
控制人类工具行为 → 控制AI行为 |
|
架构设计 |
Context架构 + Agent架构设计 |
设计的对象包含了”给AI的信息结构” |
|
调试(Debug) |
AI Archaeology(AI考古) |
理解AI自己生成的代码往往需要”反向工程” |
• Software 1.0/2.0/3.0三种范式共存:代码/权重/Prompt同时存在于现代AI项目
• LLM是新操作系统:Context Window=内存,工具=系统调用,Sub-Agent=多进程
• 六大新模式:Vibe Coding / Generation-Verification / Context Engineering / Agent-First Design / Autonomy Slider / Agentic Coding
• Context Engineering是当前最重要的AI工程技能——给AI好的信息,比换更大的模型更有效
• AI编程快的是”核心逻辑”,慢的是”最后一公里”(认证/部署/跨系统集成)
第6章:SDD规格驱动开发——给AI编程加上纪律
• Vibe Coding的隐患和代价
• SDD(规格驱动开发)的核心理念与三层分级
• SDD的四步工作流
• SDD与TDD的关系
• 如何写好Spec,常见误区
6.1 Vibe Coding的代价
Vibe Coding很爽,尤其是刚开始的时候。你描述一个想法,AI马上给你一个可以运行的原型。但随着功能叠加,麻烦来了:
lScope creep(范围蔓延):每次”顺便再加一个功能”,架构越改越乱
l语义漂移:团队对需求的理解不断偏移,AI生成的代码也跟着偏移,错误越积越深
l不可维护:AI生成的代码没有一致的设计哲学,六个月后自己都看不懂
l无法协作:没有清晰的需求文档,多人协作时各自理解不同,冲突频发
【类比】
Vibe Coding建系统,就像凭感觉盖房子——先搭一个房间,感觉不错;
再加一个房间,又加阳台,再改厨房……最后结构越来越复杂,墙都不知道哪堵是承重墙,拆哪堵都危险。
6.2 什么是SDD?
【核心概念】
SDD(Spec-Driven Development,规格驱动开发):在写代码之前,先写一份人类可读的”规格文档(Spec)”,清楚描述”要做什么、约束是什么、怎么验证对了”,然后用这份Spec指导AI生成代码。
核心理念:规格先行,意图明确,AI实现。
【核心概念】
Spec(规格文档):不是代码,不是注释,而是用结构化的自然语言描述的行为约束文档。
一个好的Spec包含:功能描述、前置条件、约束限制、输入/输出示例、验收标准。
它同时可以被人类理解和被AI执行。
对比一下有无Spec的差别:
|
维度 |
无Spec(Vibe Coding) |
有Spec(SDD) |
|
输入给AI的 |
“加个文件上传功能” |
“支持JPEG/PNG,单文件≤10MB,存S3,上传者可删除,管理员可以看所有人的” |
|
AI的理解 |
猜测,可能和你想的不一样 |
基于明确约束生成,偏差小 |
|
验收方式 |
“看起来能用” |
按Spec的验收标准逐项核对 |
|
六个月后 |
没人知道当初为什么这么做 |
Spec就是活的需求文档 |
6.3 SDD三层分级
SDD不是非此即彼,而是一个成熟度光谱:
|
层级 |
特征 |
适用场景 |
风险 |
|
Spec-First(规格先行) |
写Spec→指导构建→Spec可能被遗忘,后续不维护 |
AI辅助初始开发、探索阶段 |
Spec与代码逐渐脱节 |
|
Spec-Anchored(规格锚定) |
Spec持续维护,与代码同步,BDD场景成为自动测试 |
生产级功能、长期维护系统(推荐甜点) |
需要额外维护成本 |
|
Spec-as-Source(规格即源) |
Spec是唯一人类编辑的产物,代码完全从Spec自动生成 |
API stub/OpenAPI/嵌入式代码生成 |
工具链要求高,适用范围窄 |
【常见误区:Spec-Once】
写完Spec就扔掉,代码快速演化,但Spec不更新。
三个月后Spec成了废纸,和代码完全不匹配。
这是最常见的”伪SDD”——有Spec的名,没Spec的实。
Spec必须和代码一起维护。
6.4 SDD的四步工作流
Step 1: Specify(规格)
→ 写清楚”做什么”:功能描述 + 前置条件 + 约束 + 验收标准
→ 格式推荐:Given/When/Then(BDD风格)
Step 2: Plan(规划)
→ AI(或人)基于Spec,分解实现步骤
→ 确认技术方案、识别依赖、估算工作量
Step 3: Implement(实现)
→ AI按Spec和Plan生成代码
→ 人类专注于验证,而不是写代码
Step 4: Validate(验证)
→ 按Spec的验收标准逐项核对
→ 不符合的地方回到Step 1修订Spec,再循环
6.5 如何写好Spec?
一个好的Spec包含五个要素:
7.功能描述:这个功能做什么(用户视角,而不是技术视角)
8.前置条件:什么情况下这个功能才工作(用户已登录?文件存在?)
9.约束限制:不能做什么、边界在哪里(文件大小限制、并发数量等)
10.场景举例:给3-5个具体例子(正常案例 + 边界案例 + 异常案例)
11.验收标准:怎么验证”做对了”(可检验的、明确的标准)
一个Spec示例(文件上传功能):
# 文件上传功能 Spec
## 功能描述
用户可以上传图片文件,系统将文件存储到S3,并记录文件所有权。
## 前置条件
– 用户已登录(持有有效JWT Token)
– 用户有上传权限(非封禁状态)
## 约束限制
– 支持格式:JPEG、PNG(不支持GIF、WebP、PDF)
– 单文件大小:≤10MB
– 每用户每天上传限额:50个文件
– 文件名:自动重命名为UUID,不保留原始文件名
## 场景
Given 已登录用户上传一个8MB的JPEG文件
When 文件上传完成
Then 返回状态200和文件URL;文件出现在用户的文件列表
Given 用户上传一个12MB的PNG
When 文件超过大小限制
Then 返回状态400,错误信息”文件大小超过10MB限制”,文件不存储
## 验收标准
– [ ] 正常上传JPEG/PNG成功
– [ ] 超大文件被拒绝且有明确错误信息
– [ ] 上传的文件在S3中可访问
– [ ] 文件归属关系正确记录在数据库
6.6 SDD与TDD的关系
【核心概念】
TDD(Test-Driven Development,测试驱动开发):先写测试,再写代码,测试通过即完成。
Red(测试失败)→ Green(测试通过)→ Refactor(重构)三步循环。
核心是从单个函数/方法的行为出发设计代码。
SDD与TDD的关系:
lTDD是微观(单元级):关注单个函数的输入输出行为
lSDD是宏观(feature/系统级):关注整个功能的行为约束
lTDD是SDD在单元级的特例:测试代码就是”代码级的Spec”
|
维度 |
TDD |
SDD |
|
关注范围 |
单个函数/方法(微观) |
整个feature/系统(宏观) |
|
“Spec”形式 |
测试代码(可执行) |
自然语言文档(可读) |
|
验证时机 |
每次保存自动运行测试 |
手动对照Spec验收,或BDD自动化 |
|
AI时代变化 |
AI可以从Spec自动推导单元测试 |
Spec成为AI代码生成的输入 |
推荐组合方式:
l快速原型阶段:Vibe Coding,不需要TDD也不需要SDD
l生产级feature:Spec-Anchored SDD + 从Spec推导BDD场景(测试)
lAPI接口:Spec-as-Source (OpenAPI),合约测试自动生成
【关键误区】
测试通过 ≠ 软件正确。
如果Spec本身写错了,TDD只会”忠实地验证一个错误的规格”。
Spec的质量需要和代码一样认真review。
• Vibe Coding的隐患:Scope creep、语义漂移、不可维护——生产系统需要更多纪律
• SDD核心:规格先行,先定义”做什么和约束”,再让AI实现
• 三层分级:Spec-First(入门)→ Spec-Anchored(甜点,推荐)→ Spec-as-Source(高阶)
• TDD是SDD的微观版:测试=代码级Spec;两者互补,不是非此即彼
• 最常见陷阱:写完Spec就不维护(Spec-Once),导致Spec与代码脱节
第7章:Skill——给Agent的”操作手册”
• Skill的本质:过程性知识的结构化封装
• Skill的三阶段加载机制
• SKILL.md的标准格式
• 如何写好Skill(三条设计原则)
• Skill vs MCP vs .cursorrules的区别
• OpenClaw与Skill生态,以及安全风险
7.1 从一个类比开始理解Skill
想象一个场景:你新招了一个实习生,非常聪明,但什么都不懂公司的流程。
第一种方式:每次他来问你”代码Review怎么做”,你口头给他讲一遍。明天他再来,你再讲一遍——效率极低。
第二种方式:你给他一份操作手册,写清楚”代码Review先看什么,发现什么类型的问题怎么报告,哪些是必须修复的,哪些可以忽略”。他按手册做,不用每次来问你。
Skill就是这份操作手册,只不过读者是AI Agent。
【核心概念】
Skill(智能体技能):一种以SKILL.md为核心的开放格式,用于封装AI Agent的过程性知识——告诉Agent”如何做某类任务”。
它是结构化的、可移植的、可版本化的”Agent操作手册”。
【核心概念】
过程性知识(Procedural Knowledge):知道”怎么做”,而非”是什么”。
例如”酱油是调味品”是陈述性知识;
“炒菜时先热锅再下油,油温七成热时放配料”是过程性知识。
Skill封装的是过程性知识。
【关键洞察】
回忆第3章的Memory三层:程序记忆(Procedural Memory)存的就是”行为规范/工作流”。
Skill文件就是实现程序记忆的工程化方式——把隐性的经验知识,编写成Agent能理解和执行的显性文档。
7.2 Skill的四类内容
|
内容类型 |
说明 |
例子 |
蒸馏时 |
|
触发条件 |
什么时候该用这个Skill |
“当用户要求Code Review时” |
✅ 必须保留 |
|
核心步骤 |
先干什么,后干什么,顺序不能乱 |
“1.先看diff 2.再看周边文件 3.最后看测试覆盖” |
✅ 顺序不能乱 |
|
硬约束 |
什么绝对不能做 |
“绝不能直接给用户明文密码” |
✅ 原封不动 |
|
辅助说明 |
背景、例子、解释性文字 |
“以下是几个常见错误模式示例……” |
⚠️ 可压缩 |
7.3 Skill的三阶段加载机制
一个Agent可能有几十个Skill可用。如果把所有Skill的全文都塞进context,context window会被撑爆。所以Skill采用”按需加载”机制:
阶段1 – Discovery(发现):
仅加载 name + description(每个Skill约50字)
判断当前任务与哪个Skill最相关
节省 context token
阶段2 – Activation(激活):
当任务与某Skill高度匹配
将该Skill的完整 SKILL.md 加载到 context
阶段3 – Execution(执行):
Agent按照Skill指令执行任务
按需加载 scripts/ references/ assets/ 中的支撑文件
【关键洞察】
这是Context Engineering的典范应用:有100个Skill,但大多数时候只激活1-2个,其余只占50字左右的”目录条目”。
按需加载让Agent可以”拥有很多能力”而不”撑爆context”。
7.4 SKILL.md格式详解
一个标准的SKILL.md文件分两部分:
第一部分:YAML Frontmatter(必须有)
—
name: code-review# Skill的唯一名称,Discovery时用
description: ># 简介,50字以内,Discovery阶段加载
Review code for quality issues, security vulnerabilities,
and spec compliance. Triggered when user asks for code review.
license: Apache-2.0
allowed-tools: Read Bash(git:*) Bash(grep:*)# 允许调用的工具(安全边界)
metadata:
author: your-team
version: “1.2”
—
第二部分:Markdown正文(Skill的实质内容)
# Code Review Skill
## 何时使用
当用户明确要求 Code Review,或提交了代码变更请求时触发本 Skill。
## 工作流程
1. 先用 git diff 查看变更范围
2. 阅读被修改文件的上下文(周边代码)
3. 检查是否符合 Spec(如有)
4. 检查安全漏洞(SQL注入/XSS/硬编码密钥等)
5. 检查代码质量(命名/复杂度/重复/注释)
6. 检查测试覆盖是否充分
## 约束与规则
– 必须按上述顺序执行,不能跳过安全检查
– 发现高危漏洞时,立即标注 [CRITICAL] 并停止其他检查
– 绝不修改用户未要求改动的文件
– 输出格式必须是:Summary / Issues(分级)/ Suggestions
## 输出格式
**Summary**: 一句话总结变更内容
**Issues**:
– [CRITICAL] 问题描述
– [WARNING] 问题描述
– [INFO] 问题描述
**Suggestions**: 可选的改进建议
7.5 如何写好Skill:三条设计原则
原则1:写过程,不写答案
错误做法:把某道具体题目的最终答案塞进Skill(这不是过程性知识) 正确做法:告诉Agent”遇到这类问题时,先做什么,再做什么,怎么判断结果”
原则2:聚焦任务类,不追求百科全书
一个Skill应该覆盖一类相似任务的稳定工作流,而不是把所有知识塞进一个Skill。 功能边界越清晰 → 触发越稳定 → 负迁移越少(负迁移:用了Skill反而让不相关任务变差)
原则3:把确定性逻辑下沉
长文档、校验脚本、模板文件放进 scripts/ references/ assets/ 目录,SKILL.md只放核心流程。不要把所有东西堆进SKILL.md正文。
7.6 好Skill vs 坏Skill
|
维度 |
好Skill ✅ |
坏Skill ❌ |
|
长度 |
<1500字,精炼 |
>3000字,什么都往里塞 |
|
聚焦度 |
一个任务类 |
十几页背景知识+技巧合集 |
|
触发条件 |
明确(”当用户要求Code Review时”) |
模糊(”用于开发相关场景”) |
|
步骤 |
有序、有优先级、有判断分支 |
随意罗列,没有执行顺序 |
|
约束 |
硬约束清晰(”绝不能……”) |
只有建议(”最好……”、”尽量……”) |
|
可验证性 |
有回归样例集,能测试效果 |
无法验证,靠感觉 |
|
支撑文件 |
脚本/模板放 scripts/ assets/ |
所有内容全堆进SKILL.md正文 |
7.7 Skill vs MCP vs .cursorrules 区别
|
维度 |
Skill (SKILL.md) |
MCP |
.cursorrules/.clinerules |
|
本质 |
过程性知识包(”如何做”) |
工具连接协议(”用什么做”) |
项目级约束规则 |
|
格式 |
YAML + Markdown |
JSON Schema(工具定义) |
纯文本规则 |
|
可移植性 |
高(跨平台开放标准) |
高(开放协议) |
低(工具特定) |
|
加载方式 |
三阶段按需加载 |
启动时注册 |
每次对话直接注入 |
|
编写者 |
领域专家/团队 |
工具/服务开发者 |
项目负责人 |
|
解决什么 |
Agent”怎么工作” |
Agent”连接什么工具” |
Agent在这个项目中遵守什么规则 |
【关键洞察】
三者不互斥,而是互补的层次: .cursorrules 定义”在这个项目中,你要遵守什么规则” MCP 定义”你能连接什么工具” Skill 定义”你应该怎么用这些工具完成某类任务” 三者一起,构成完整的Agent行为约束体系。
7.8 为什么GitHub上出现了大量Skill?
三个驱动因素:
12.Anthropic 2025.12发布Skill为开放标准:任何AI工具都可以读取同一份SKILL.md文件,跨平台可移植性成为现实(就像npm package可以在任何Node环境用)
13.SkillsBench论文(2026)证明Skill是工程变量:不是”可有可无的提示词”,而是能单独测量、显著提升Agent完成率的资产。论文关键发现:人工策划的好Skill,让小模型逼近大模型裸跑的效果
14.降本增效的现实需求:小模型+好Skill能替代更贵的大模型,企业有强烈动机投入Skill开发
7.9 OpenClaw与Skill生态
【核心概念】
OpenClaw:一个开源的AI Agent桌面客户端,采用Skill-first架构——Agent的能力扩展主要靠加载Skill文件,而不是配置更多工具。
社区有 awesome-openclaw-skills 仓库,收集了44+可复用的Skill。
【安全警告】
Skill安全风险(Cisco/1Password 2026年报告): 恶意的SKILL.md可能嵌入恶意payload,指示Agent执行危险操作(”tool poisoning攻击”)。
OpenClaw给了Agent shell权限,意味着恶意Skill可以让Agent执行任意系统命令。
使用第三方Skill时务必审查内容,就像审查第三方npm包一样认真。
• Skill = Agent的操作手册,封装过程性知识(怎么做),不是陈述性知识(是什么)
• 三阶段加载(Discovery→Activation→Execution)是Context Engineering的典范应用
• SKILL.md由YAML Frontmatter(元数据)和Markdown正文(内容)两部分构成
• 三条设计原则:写过程不写答案 / 聚焦任务类 / 确定性逻辑下沉
• Skill vs MCP vs .cursorrules:过程知识 vs 工具协议 vs 项目规则——三者互补
• 使用第三方Skill需要像审查第三方代码一样谨慎,防止tool poisoning攻击
第四部分
AI+数据:专项深入
第8章:数据工程的AI化——从手动到自主
• Text-to-SQL的能力与局限
• Context Layer的概念及其与传统语义层的区别
• Data Agent成熟度分级(L0-L5)
• 各数据子领域当前的位置
• 为什么Context Layer是数据Agent跃迁的关键
8.1 数据工程师的现实痛点
在谈AI化之前,先看看数据工程师日常的痛苦:
l业务方问”今天GMV多少”,数据分析师要写SQL、跑查询、做表格,30分钟起步
l数据Pipeline挂了,花2小时定位是哪个节点出错,再花1小时修复
l数据质量告警一天几百条,大部分是噪音,但真正的问题不能漏
l新来的数据分析师要花3个月才能搞清楚哪张表是”真正对的”那张表
AI有没有可能改变这些?正在改变,但程度不一。
8.2 Text-to-SQL:AI数据分析的第一步
【核心概念】
Text-to-SQL:用自然语言查询数据库。
用户输入”今天各区域销售额是多少”,AI自动生成对应的SQL语句并执行,返回结果。
无需用户懂SQL,降低数据获取门槛。
听起来很美好,但实际落地发现一个根本问题:
【Text-to-SQL的致命局限】
AI只知道”数据库有什么表、表有什么字段”,但不知道”这个字段的业务含义”。
比如: → 数据库里有 revenue 字段,但这是ARR(年度经常性收入)还是run rate(流水)? → 数据库里有 user_id,但这是app用户ID还是CRM用户ID?不同系统的user_id是否一致? → 有 sales_amount,但2025年1月起美国区切换了CRM系统,之前的数据在旧表,之后的在新表 这些”部落知识”不在数据库Schema里,AI不知道,所以会给出技术正确但业务错误的SQL。
8.3 Context Layer:解决AI数据理解的”语境”问题
【核心概念】
Context Layer(上下文层):给数据系统加上”业务语境”的一层中间层。
包含:指标的业务定义、实体的身份关系、历史变更依赖、隐性的”部落知识”、数据治理规则。
它让AI不只知道”数据有什么”,还知道”数据代表什么意思”。
【类比】
没有Context Layer的数据系统,就像给一个刚来公司的实习生一本数据字典(字段名+数据类型)。
他知道有 revenue 这个字段,但不知道这是哪种口径的收入,不知道有没有什么特殊处理规则,不知道哪段历史数据有问题。
Context Layer就像一本完整的”数据文化手册”——数据是什么、怎么产生的、有什么坑、不同时期有什么特殊规则。
Context Layer vs 传统语义层:
|
维度 |
传统语义层(如LookML) |
现代Context Layer |
|
覆盖范围 |
仅指标定义(维度/指标/计算逻辑) |
指标+实体+历史依赖+部落知识+治理规则 |
|
维护方式 |
数据团队手工写YAML/LookML |
自动从查询历史构建+人工精修+AI辅助更新 |
|
连接方式 |
直连BI工具(Looker/Tableau) |
API/MCP供AI Agent实时调用 |
|
形态 |
静态,定期人工更新 |
活的,持续演进,能从Agent反馈自更新 |
|
AI时代定位 |
不够用(缺少部落知识和历史依赖) |
AI数据Agent的必需基础设施 |
8.4 Data Agent成熟度分级(L0-L5)
SIGMOD 2026 Tutorial(arXiv 2602.04261v1)提出了Data Agent的正式分级体系:
|
级别 |
名称 |
人类角色 |
Agent角色 |
典型例子 |
|
L0 |
无自主 |
完全手动 |
无参与 |
手写SQL,人工跑查询 |
|
L1 |
AI辅助 |
人执行+验证 |
建议者(无状态,一问一答) |
Copilot补全SQL;ChatGPT帮写查询 |
|
L2 |
部分自主 |
设计pipeline,审批每步 |
执行者(感知环境+调工具+有记忆) |
Agent自动执行查询,人看结果 |
|
L3 |
条件自主 |
监督者(审批关键步骤) |
编排者(自主设计+执行pipeline) |
Agent自主设计数据清洗pipeline,人审批方案 |
|
L4 |
高度自主 |
只处理异常 |
主动发现问题+自主治理 |
Agent主动发现数据质量问题并修复 |
|
L5 |
全自主 |
仅设目标 |
生成式数据科学家(发明新方法) |
Agent自主研究新的分析方法 |
8.5 各子领域当前位置
|
子领域 |
当前L级 |
代表系统 |
主要瓶颈 |
|
数据库管理(DBA) |
L1→L2 |
Rabbit/R-Bot/GaussMaster |
调错参数影响全系统,需要可靠rollback机制 |
|
数据清洗/准备 |
L2 |
CleanAgent/MegaTran |
跨源异构需要深度schema理解,Context Layer缺失 |
|
数据分析 |
L2→Proto-L3 |
Data Interpreter/DeepAnalyze |
分析意图的深层理解(业务问题≠技术查询) |
|
数据Pipeline编排 |
L1→L2 |
dbt AI Agent/Databricks Genie |
自主设计pipeline需要完整的Context Layer |
【关键洞察】
Context Layer是数据Agent从L1→L2→L3跃迁的绝对瓶颈。
没有Context Layer,Agent只能”盲操作”(执行已知的SQL模板),不能”智编排”(自主设计完整的数据处理方案)。
这和代码工程的 .cursorrules / SKILL.md 是完全对齐的——都是”给Agent的结构化context”,都是跃迁的地基。
• Text-to-SQL局限:AI知道Schema,不知道”业务含义”——Context Layer解决这个问题
• Context Layer = 数据系统的业务语境层,包含指标定义/部落知识/历史依赖/治理规则
• Data Agent L0-L5:从”完全手动”到”全自主”——当前大多数团队在L1→L2之间
• Context Layer是所有数据Agent自主化跃迁的基础设施,必须先建好
第9章:研发自动化成熟度——你的团队在L几?
• 研发通用L0-L5自动化成熟度分级
• 各工种当前成熟度评估
• 为什么”最后一公里”最难
• 数据工程从L1到L3的演进路径
9.1 研发通用L0-L5分级
类比自动驾驶的成熟度分级(L1辅助→L2部分自动→L3条件自动→L4高度自动→L5全自动),研发的AI自动化程度也可以分级:
|
级别 |
名称 |
人类角色 |
AI角色 |
代表工具 |
|
L0 |
无AI辅助 |
完全手动写代码 |
无 |
传统IDE(无AI) |
|
L1 |
AI辅助 |
人类主导一切决策和执行 |
给建议/补全代码 |
GitHub Copilot、代码补全 |
|
L2 |
AI执行+人审批 |
审批每一个步骤 |
执行但每步需确认 |
Cursor、Windsurf(Accept per file) |
|
L3 |
AI自主+人抽查 |
定期审查,关键节点干预 |
大部分自主执行 |
Claude Code、Codex CLI |
|
L4 |
AI高度自主 |
仅处理异常情况 |
完成整个任务,包括测试和部署 |
Devin(委派模式) |
|
L5 |
全自主 |
只设定目标 |
完全自主端到端 |
愿景,尚未实现 |
9.2 各工种当前成熟度(2026年4月评估)
|
工种 |
当前L级 |
说明 |
卡点 |
|
前端开发 |
L2→L3 |
原型/UI组件可达L3,生产级仍L2 |
复杂状态管理、跨组件依赖 |
|
后端开发 |
L2 |
CRUD/API可达L2+,架构设计仍L1 |
分布式一致性、复杂事务 |
|
代码审查 |
L2→L3 |
AI审查质量被广泛认可 |
深层业务逻辑理解 |
|
测试 |
L2 |
单元测试生成较好,E2E仍L1 |
E2E场景覆盖需要深度业务理解 |
|
DevOps/部署 |
L1→L2 |
“最后一公里”仍严重依赖人工 |
环境差异、权限管理、回滚策略 |
|
数据分析 |
L1→L2 |
需要Context Layer才能从L1跳L2 |
业务语境理解(见第8章) |
|
数据工程 |
L1→L2 |
Pipeline编排/调度仍高度手动 |
Context Layer缺失+影响范围大 |
9.3 为什么”最后一公里”最难?
“最后一公里”指的是从MVP(最小可行产品)到真正生产部署之间的那段距离。它包括:
l认证系统:OAuth 2.0/SSO/MFA/Session管理——每个业务需求都不一样,安全边界复杂
l支付集成:对接各种支付平台、对账、退款、异常处理——测试环境和生产环境差异巨大
l生产部署:Kubernetes配置、CI/CD流水线、监控告警、灰度发布——基础设施复杂度高
l跨系统数据一致性:多个系统之间的数据同步、分布式事务——没有银弹
【关键洞察】
AI在”核心业务逻辑”上速度最快——因为这部分有大量训练数据,问题有清晰边界。
但”最后一公里”往往是每个公司特有的、环境特定的、历史积累的——AI没有足够的相关训练数据,无法泛化。
这就是为什么”AI写代码”的效率提升在MVP阶段最明显,但不能简单外推到完整产品交付。
9.4 数据工程从L1到L3的演进路径
|
阶段 |
目标 |
需要的基础设施 |
业界代表实践 |
|
Phase 1建地基 |
L0→L1的基础 |
数据可观测性(Observability)+ 结构化Metadata |
Monte Carlo/Acceldata:数据质量监控;dbt:结构化metadata和lineage |
|
Phase 2接工具 |
L1→L2的跃迁 |
Agent工具接入 + 执行反馈闭环 |
Databricks Genie/Snowflake Cortex:Agent可自主执行SQL并反馈结果 |
|
Phase 3建Context |
L2→Proto-L3 |
Context Layer + Human-in-the-Loop |
dbt AI Agent/Acceldata Agentic:结构化context + 关键步骤审批 |
|
Phase 4自主编排 |
Proto-L3→L3 |
因果推理 + Meta-reasoning |
学术突破仍在路上,当前最弱领域 |
|
Phase 5愿景 |
L3→L4 |
内在动机 + 自主治理 |
3-5年目标,当前未实现 |
• 研发L0-L5:从完全手动到完全自主,当前大多数团队在L1→L2之间
• 前端/代码审查进度最快(L2→L3),DevOps/数据工程最慢(L1→L2)
• “最后一公里”难因为它是公司特有、环境特定的,AI缺少足够训练数据
• 数据工程演进的五阶段:建观测→接工具→建Context→自主编排→L4愿景
• Context Layer(第8章)是数据工程从L1到L2的关键跃迁点
第五部分
前沿进阶:加深认知
第10章:蒸馏——AI知识的压缩与传递
• 为什么大模型”犯的错”有价值(暗知识)
• 模型蒸馏的Teacher-Student框架
• DeepSeek-R1案例:1.5B模型做数学题
• Skill蒸馏:给Skill文件”瘦身”
• 蒸馏的灰色地带
10.1 从一个反直觉问题出发
我问你一道数学题,你答对了,给我说”答案是42″。
旁边的大模型也回答了,它输出的概率分布是:42(92%)、43(4%)、41(2%)、100(0.5%)……
问题:哪个信息量更大?
直觉上是”答对了”更有用。但Geoffrey Hinton在2015年说:概率分布更有价值——因为里面藏着”类别相似性关系”。43比100更接近42,这个信息在硬标签(对/错)里完全看不到,但在概率分布里清清楚楚。
【核心概念】
暗知识(Dark Knowledge):Hinton 2015年提出的概念。
大模型输出的概率分布中,”错误答案的概率”包含了大量隐含信息——类别间的相似性、概念的模糊边界、特殊情况的判断。
这些信息被称为”暗知识”,因为它隐藏在概率里,肉眼看不到。
10.2 模型蒸馏:让小模型学大模型的”智慧”
【核心概念】
模型蒸馏(Knowledge Distillation):用大模型(Teacher)的输出来训练小模型(Student)。
Student学的不是”对/错”的硬标签,而是Teacher输出的完整概率分布(软标签/soft targets)。
结果:小模型能超越”只看硬标签训练”的能力上限,接近Teacher的能力。
【类比】
徒弟学厨——方式A:师傅只说”这道菜你做的对/错”;
方式B:师傅说”这道菜80%像粤菜,15%有川味,5%有点像闽菜,整体偏向清淡……”。
方式B传递的信息量远大于方式A。
这就是蒸馏的核心:学”老师对世界的理解方式”,而不只是学”正确答案”。
三种蒸馏路径:
|
路径 |
学什么 |
特点 |
|
响应蒸馏 |
Teacher的输出概率分布(最后一层) |
最简单,只需要Teacher的最终输出 |
|
特征蒸馏 |
Teacher中间层的特征表示 |
传递更深层的理解,效果更好 |
|
注意力蒸馏 |
Teacher的注意力模式(关注哪些词) |
传递”关注什么”的能力 |
10.3 DeepSeek-R1:蒸馏的教科书级案例
DeepSeek-R1是671B参数的大模型(671亿参数),训练成本极高,部署需要专用服务器。但通过蒸馏,它的”推理能力”被压缩进了更小的模型:
|
蒸馏后的模型 |
参数量 |
MATH-500分数 |
对比 |
|
R1-Distill-Qwen-1.5B |
15亿 |
83.9分 |
手机都能跑! |
|
R1-Distill-Qwen-7B |
70亿 |
92.8分 |
超越很多更大模型 |
|
R1-Distill-Qwen-32B |
320亿 |
94.3分 |
打平OpenAI o1-mini |
一个1.5B的模型,在数学推理基准上拿了83.9分。这不是因为1.5B的模型天然有这个能力,而是671B Teacher的推理模式被”蒸”进去了。
10.4 蒸馏为什么重要?
l降本:1.5B模型的推理成本是671B的1/100以下
l边缘部署:小模型可以在手机/边缘设备上运行,不依赖云端
l推理提速:小模型响应更快,适合实时场景
l私有化部署:不需要把敏感数据发给大模型API
10.5 Skill蒸馏:给Skill文件”瘦身”
Skill蒸馏和模型蒸馏完全不同,不要混淆:
|
维度 |
模型蒸馏 |
Skill蒸馏 |
|
操作对象 |
神经网络模型(数十亿参数) |
Skill文档(几百到几千字) |
|
解决问题 |
大模型推理成本太高 |
Skill文件太长,占用太多context |
|
方法 |
用大模型输出训练小模型 |
用LLM压缩文档,保留语义 |
|
目标 |
小而能干的模型 |
短而精准的Skill文件 |
【类比】
Skill蒸馏不是”重新练功”,而是”把口诀从一本厚书压成一张小抄”。
功夫还是那套功夫,只是更轻量、更容易装进口袋(context window)。
Skill蒸馏的三关验证:压缩后的Skill必须通过三个检验:
15.任务不变:原Skill能完成的任务,压缩版还能完成(不能因为压缩丢失能力)
16.顺序不乱:关键步骤的执行顺序不能颠倒
17.硬约束不丢:”绝不能泄露API密钥”这类硬约束,必须原封不动保留
【走火入魔的Skill蒸馏】
把一个500字的Skill蒸馏成”Review code for bugs. Be concise.”——表面上极度精简,实际上信息丢失殆尽。
Agent不知道先看什么、怎么分级、输出什么格式。
蒸馏的目标是”短而精准”,不是”短而空洞”。
10.6 蒸馏的灰色地带
2026年2月,Anthropic披露:三家中国AI实验室对Claude发起了”工业级蒸馏攻击”——用24000个假账号,生成1600万条对话数据,用这些数据训练自家模型,试图把Claude的能力蒸馏过去。
【法律与伦理警告】
蒸馏自己的大模型叫降本增效;
蒸馏别人的大模型叫侵权。
技术层面:完全相同的操作。
法律层面:天壤之别。
大多数商业模型(OpenAI/Anthropic/Google)的服务条款明确禁止”用API输出训练竞品模型”。
在选型和使用开源模型/商业模型时,必须仔细阅读许可证和使用条款。
10.7 蒸馏的本质:知识的压缩传递
跳出技术细节,蒸馏的本质是:知识从”大/复杂”向”小/简洁”的压缩传递,同时保留关键信息。
l师傅带徒弟 = 人类版蒸馏(多年经验→短期教学)
l写教材 = 蒸馏(领域知识→结构化课本)
l写SOP/Checklist = 蒸馏(操作流程→精简步骤表)
l写Skill = 蒸馏(隐性的专家经验→显性的结构化文档)
lCode Review的评论 = 蒸馏(代码判断→精简反馈)
AI把这个过程加速了几个数量级:用几天GPU时间,把671B参数模型的推理能力”蒸”进1.5B的小模型。
• 暗知识(Dark Knowledge):大模型的概率分布里藏着类别相似性关系,比硬标签信息量更大
• 模型蒸馏:Student学Teacher的软概率分布,获得超出自身规模的能力
• DeepSeek-R1案例:1.5B模型MATH-500拿83.9分,蒸馏让小模型做到大事
• Skill蒸馏:文档压缩,不是模型训练——目标是”短而精准,不丢约束”
• 蒸馏别人的模型在法律上是侵权——使用前仔细阅读许可证
第11章:统一视角与团队落地建议
• 所有概念的统一框架:知识的结构化/压缩/传递/供给
• 框架与工具生态全景
• 数据工程团队三步走
• 代码工程团队三步走
• 场景速查表
• 7条核心建议
11.1 回头看:所有概念的统一本质
走完11章,我们看了很多概念:LLM、Agent、ReAct、MCP、A2A、Context Engineering、Vibe Coding、SDD、TDD、Skill、Context Layer、Data Agent、蒸馏……
这些概念表面上分散,但有一个共同本质:知识的结构化、压缩、传递、供给。
|
概念 |
本质作用 |
类比 |
|
Prompt |
给LLM的知识输入 |
工单 |
|
RAG |
从外部检索相关知识 |
查参考书 |
|
Context Engineering |
精心设计知识的供给方式 |
图书馆管理员 |
|
SDD Spec |
宏观级的过程性知识 |
项目章程 |
|
.cursorrules |
项目级的约束知识 |
项目规范手册 |
|
SKILL.md |
任务级的过程性知识 |
操作手册 |
|
Memory(三层) |
存储不同类型的知识 |
图书馆分区 |
|
Context Layer |
数据领域的业务语境知识 |
数据文化手册 |
|
蒸馏 |
知识的压缩传递 |
教学/写教材 |
|
MCP |
标准化知识/能力的获取通道 |
USB-C接口 |
【最终洞察】
AI工程的本质是:给AI提供恰好足够、高质量的知识。
不是比谁用的模型更大(虽然模型很重要),而是比谁能更好地: ① 结构化自己团队的过程性知识(Skill/Spec) ② 把业务语境清晰地传递给AI(Context Layer / .cursorrules) ③ 在合适的时候给AI合适的信息(Context Engineering) ④ 用合适的协议连接合适的工具(MCP/A2A) 做好这四件事,比换更贵的模型更有效。
11.2 框架与工具生态全景(2026年)
|
框架 |
定位 |
适合场景 |
|
LangGraph |
生产级Stateful Agent首选 |
复杂、有状态的Agent系统 |
|
AutoGen |
多Agent对话协调 |
Debate/Review/讨论型多Agent |
|
CrewAI |
角色团队分工 |
有明确角色分工的Agent团队 |
|
smolagents (HF) |
代码优先Agent |
让Agent生成并执行Python代码 |
|
Claude Agent SDK |
“给Claude一台电脑” |
终端原生、深度推理任务 |
|
OpenAI Agents SDK |
极简多Agent编排 |
快速上手、Handoff优先场景 |
11.3 代码工程团队三步走
|
阶段 |
目标 |
具体行动 |
|
Step 1(现在)建强项目Context |
让AI Agent真正理解你的项目 |
① 写好 .cursorrules(编码规范/架构约定)② 建立项目级 SKILL.md(常见任务的操作手册)③ 维护 llm.txt(给AI的项目说明文档) |
|
Step 2(接下来)从Vibe过渡到SDD |
给AI编程加上纪律 |
① 简单任务:继续Vibe Coding② 生产级功能:Spec-First SDD③ 长期维护系统:Spec-Anchored SDD + BDD场景自动化 |
|
Step 3(中期)Skill资产化 |
把经验知识沉淀为可复用资产 |
① 把反复使用的工作流写成SKILL.md② 语义化版本管理 + 回归样例集③ 定期蒸馏优化(压缩+验证) |
11.4 数据工程团队三步走
|
阶段 |
目标 |
具体行动 |
|
Step 1(现在)建Context Layer地基 |
让数据Agent真正理解你的数据 |
① 建数据Catalog(表/字段的业务含义)② 建lineage(数据血缘关系)③ 记录”部落知识”(历史特殊规则)④ 统一暴露为API/MCP |
|
Step 2(接下来)从L1逐步给Agent松绑 |
安全地提升自主程度 |
① 先:Agent写SQL,人审核再执行② 再:Agent执行SQL,人看结果③ 再:Agent自主调参,人看报告④ 关键步骤始终保留HITL |
|
Step 3(中期)为Agent建”刹车和方向盘” |
让自主化安全可控 |
① Spec-Anchored:数据pipeline有Spec② BDD场景从Spec推导,CI自动验证③ 异常处理升级HITL机制 |
11.5 场景速查表
|
场景 |
编程模式 |
数据Agent模式 |
Skill策略 |
|
快速原型/探索 |
Vibe Coding |
L1:Copilot辅助 |
不需要Skill,直接给描述 |
|
标准Feature开发 |
Spec-First SDD |
L2:执行+人审批 |
轻量SKILL.md,聚焦该任务类 |
|
生产级长期系统 |
Spec-Anchored + BDD |
L2→Proto-L3 |
聚焦Skill + 回归样例集 |
|
API/微服务 |
Spec-as-Source (OpenAPI) |
L3:编排+审批 |
Contract Skill + MCP |
|
数据分析任务 |
Context Engineering |
L2:Agent执行+人验证 |
Context Layer + 分析Skill |
|
安全关键/合规场景 |
Spec-as-Source + Formal verification |
强制HITL |
安全约束Skill + 审计日志 |
11.6 7条核心建议
18.不要被Demo迷惑 Karpathy说过”这是Agent之十年的开端,不是Agent之年”。完美的Demo ≠ 生产部署。评估AI工具时,不只看Demo效果,要问:这能真正集成到我的生产系统吗?
19.先建Context,再给自主权 Context Layer / .cursorrules / SKILL.md 是所有自主化跃迁的地基。跳过这一步,直接让Agent”自由发挥”,结果通常是灾难性的。先把AI能理解的”语境”建好,再逐步提升自主程度。
20.Human-in-the-Loop是L3的核心安全机制 从L2到L3,关键不是”去掉人”,而是”把人放到更重要的位置”——从”每步都看”变成”关键决策才审批”。EU AI Act也在要求这一点。
21.Skill是资产,不是一次性Prompt 好的Skill需要像代码一样:版本管理、回归测试、持续维护。把团队的过程性知识写成Skill,是长期竞争力的来源,而不是一次性的”AI提示词技巧”。
22.Context Engineering是最重要的新技能 给AI好的信息,比换更贵的模型更有效。培养团队的Context Engineering能力:怎么写.cursorrules / SKILL.md / Spec,怎么设计RAG的检索逻辑。这是2025-2026年最值得投入的工程技能。
23.小模型+好Skill可以逼近大模型裸跑 SkillsBench论文证明了这一点。在选型时,不要只看模型大小,要考虑Skill/Context Engineering的成本。有时候用小模型+精心设计的Skill,效果等于甚至超过大模型,成本却低很多。
24.三件事要同步:自主化、Spec、安全 不要”先自动化,再想安全”。数据Agent/代码Agent的自主程度提升,必须同步:Spec(知道做对了没有)、HITL(关键步骤有人把关)、审计日志(出了问题能追溯)。三者缺一不可。
• 所有AI概念的本质:给AI提供恰好足够、高质量的知识——这是AI工程的核心
• Spec/Skill/.cursorrules/Context Layer是不同粒度的”过程性知识包”,本质相同
• 代码团队三步走:建Context → 从Vibe到SDD → Skill资产化
• 数据团队三步走:建Context Layer → 从L1逐步松绑 → 建刹车(HITL+Spec)
• 核心原则:先建语境,再给自主;自主化和安全机制必须同步
• arXiv 2602.04261v1:《Data Agents: Levels, State of the Art, and Open Problems》(SIGMOD 2026 Tutorial) — Data Agent L0-L5正式分级体系来源
• Hinton et al.《Distilling the Knowledge in a Neural Network》(2015) — 模型蒸馏与暗知识的奠基论文
• ReAct: Synergizing Reasoning and Acting in Language Models(Yao et al. 2022) — ReAct循环的原始论文
• SkillsBench(2026):《Benchmarking How Well Agent Skills Work Across Diverse Tasks》— Skill是可测量工程变量的实证
• arXiv 2602.00180:《Spec-Driven Development: From Code to Contract》(2026) — SDD三层分级与决策框架
• Andrej Karpathy at YC 2025:《Software is Changing Again》 — Software 1.0/2.0/3.0、Vibe Coding、LLM=新OS
• Anthropic: Introduction to Claude’s Agent SDK — Deep Agent四大支柱,Sub-Agent机制
• Martin Fowler:《Exploring Gen AI: SDD Tools》(2025) — SDD工具对比
• dbt Labs:《How AI is changing the analytics stack》(2025) — Context Layer的结构化观点
• Manik Hossain:《The Future of Autonomous Data Pipelines》(2026)
• Walter Fan:《蒸馏:AI世界里的”吸星大法”》(2026) — 模型蒸馏与Skill蒸馏全景
• Acceldata:《Autonomous Data Management》(2025)
• Cisco Blog:《Personal AI Agents like OpenClaw Are a Security Nightmare》(2026) — Skill的tool poisoning攻击
• 1Password Blog:《From Magic to Malware: How OpenClaw’s Agent Skills Become an Attack Surface》(2026) — 已确认的恶意Skill案例
• Anthropic Security Report(2026.2):《Detecting and preventing distillation attacks》— 工业级蒸馏攻击披露
• awesome-openclaw-skills (GitHub) — OpenClaw社区Skill集合(44+可复用Skill)
• titanwings/colleague-skill (GitHub) — 自动化Skill生成(”把同事蒸馏成AI”)
• skills-optimizer (GitHub) — Skill蒸馏/压缩工具(号称6:1压缩率)
• GitBook:《智能体AI权威指南》 — Skill规范、三阶段加载机制
• DeepSeek-R1蒸馏模型系列 (HuggingFace) — 1.5B/7B/32B蒸馏模型
• OpenAI:《Model Distillation in the API》 — store=True→Stored Completions→fine-tuning一条龙
• MCP官方文档:Model Context Protocol Introduction — MCP规范、Server/Client架构
• A2A Protocol (GitHub) — Agent-to-Agent协议规范
• Linux基金会AAIF — MCP治理组织
• AI项目Leader知识地图-2025-2026.md(基础版)
• AI项目Leader知识地图-2025-2026-深度版.md(深度版,含L0-L5分级)
• Vibe-Coding-vs-SDD-vs-TDD.md(第6章参考)
• 研发自动化×数据工程演进分析.md(第8-9章参考)
• Skill-vs-MCP-vs-OpenClaw-蒸馏与编写指南.md(第7、10章参考)
夜雨聆风