规范驱动开发不是过时,而是进化
最近看到一篇关于规范驱动开发的文章,作者指出一个有趣的现象:规范也是文档,而文档总是过时的。
这话说的没错,但我有一点点不同看法。规范驱动开发不是过时了,而是在AI时代进化了。
不过,在讲怎么进化之前,我想先聊一个更底层的问题——为什么有时候规范是最新的,效率还是没提升?
最近看到一篇关于规范驱动开发的文章,作者指出一个有趣的现象:规范也是文档,而文档总是过时的。
这话说的没错,但我有一点点不同看法。规范驱动开发不是过时了,而是在AI时代进化了。
不过,在讲怎么进化之前,我想先聊一个更底层的问题——为什么有时候规范是最新的,效率还是没提升?
我紧张了。
一个从来没写过一行代码的人,能把事情做到这个程度:在token预算里做架构设计,在上下文窗口的夹缝里做项目管理,在“够用”和“魔法”之间做审美决策。他能主导产品从0到1的落地,能和精英工程师协作而不拖后腿,能把模糊的商业想法翻译成机器能执行的指令——他真正把Vibe Coding做成了一份职业,甚至是一门手艺。
读完你会发现,Vibe Coding不是逃避技术的借口,而是对另一种能力的极致要求:清晰、品味、以及知道什么才是真正重要的。
几个月前,Lovable增长负责人Elena Verna在播客中提到,她和一个“专业的Vibe Coding师”一起工作——全职,拿工资,却不写代码。这个人叫Lazar。
两周前,主持人终于把Lazar请到了麦克风前。一个半小时的对话,我记了六千字笔记。聊完只有一个感受:关于“AI会不会取代程序员”的争论,其实问错了问题。
真正的问题是:当“把东西做出来”变得无比廉价,什么能力会变得无比稀缺?
Lazar的答案非常直接:清晰度、品味、判断力。下面是他完整的工作流和心法——一个从来没写过一行代码的人,如何成为顶尖的AI原生构建者。
Lazar的职位描述听起来像个玩笑:每天用Lovable把想法推到生产环境,从营销模板到内部工具,从Shopify集成的模版到公司的周边商城——你在官网上买的那件衬衫,就是从他自己搭的商店里卖出去的。
“我做的是我愿意免费做的事情,世界上最好的工作。”Lazar说。
他的角色在公司内部像个“游牧者”:今天在增长团队,明天帮企业组做内部工具,后天又在社区组捣鼓新东西。没有固定的汇报线,只有一个模糊的指令:“这是一个想法,最快速度把它变成现实。”
这听起来像极了一个拿着锤子到处找钉子的疯子。但Lazar说,这恰恰是AI时代的稀缺能力——把模糊的想法,翻译成机器能执行的指令。
Lazar非常坦诚:在加入Lovable之前,他这辈子没写过代码。最多手敲过几次console.log。
“没有技术背景反而是种优势,”他说,“因为我根本不知道自己‘不该做什么’。”
他讲了个例子:六个月前,社区有人说希望Lovable能做Chrome扩展。技术人员立刻开始解释:我们是React栈,架构不兼容,这很麻烦……但非技术的人只会想:嗯?为什么不行?Lazar直接对着工具说:“基于这个应用给我做一个Chrome扩展。”
结果做出来了。
类似的事还有:社区经理在做演示文稿时随口说了句“如果这是个视频会很酷”,就直接用提示词在Lovable里生成了一个真正的视频——当时连这个功能都没正式上线。
Lazar把这种心态叫做 “积极的妄想”:在被证明不行之前,默认一切皆有可能。
但他也承认,没有技术背景的人容易掉进两个陷阱:
所以他在做的,并不是鼓吹“不学编程”,而是重新定义“学什么”。
Lazar反复强调一个观点:AI输出比人类快得多,瓶颈早就不在“写代码”上,而在“你知道自己想写什么”上。
他把80%的时间花在规划和聊天上,只有20%在执行计划。
“我在优化‘正确的速度’,大多数人在优化‘错误的速度’。”他说。
那什么是“正确的速度”?
Lazar用了一个阿拉丁与灯神的比喻:你一次只能许三个愿望,不是三万个。 LLM的上下文窗口就是你的token预算——你用多少来理解问题、多少来搜索、多少来思考、多少来执行代码,完全取决于你的输入质量。
“如果你只丢一句‘帮我做个应用’,然后抱怨AI生成的东西太丑、太烂、全是bug——那是你自己的问题。你没给工具足够的清晰度,却指望它读心。”
那么,如何获得清晰度?
Lazar的工作流让我大开眼界:
这可能是最反常识的一步。
大多数人的习惯是:一个项目,反复改,反复调,越调越乱。Lazar的做法是:同时开五个Lovable窗口,从五个完全不同的角度起手。
“很多人问我为什么发货这么快,”Lazar说,“因为我从来不一次只做一个项目。我等一个智能体跑完的时间,足够另四个窗口同时推进。”
等五个版本都跑出来,哪个对、哪个错、哪个好看、哪个好用,一目了然。清晰度不是在脑子里想出来的,是在对比中长出来的。
一旦方向确定,Lazar会做一件更反直觉的事:停掉所有构建,花一整天写文档。
他至少写四个文档:
这些文档汇总成一个plan.md或tasks.md,成为项目的“真理源”。
“之后我的提示词就只剩一句话:继续下一个任务。”Lazar说,“我不需要再重复上下文,因为上下文已经全在文档里了。智能体每次启动任务,先读最新版的tasks.md,然后执行,执行完告诉我做了什么、应该怎么测试。”
这就是他说的 “动态上下文迁移”:不是靠聊天窗口的滚动记忆,而是靠持续更新的文档,让token永远分配在“解决问题”上,而不是“回忆我们在干什么”上。
不管你计划得多好,总会遇到bug。Lazar有个简单的 “4x4脱困框架” ,每种方法只试一次:
第一层:让工具自己修。 Lovable、Cursor、Claude Code都有“尝试修复”按钮。很多时候只是个小错,工具自己就能纠正。
第二层:加日志,让它看见问题。 如果工具不知道自己在犯错,它就永远修不好。Lazar的做法是:让工具在关键路径上加console.log,运行一遍,把日志拷回聊天窗口。99%的情况下,这就够了。
第三层:引入外部顾问。 他会把代码库导出到GitHub,然后丢给Codex(或者Claude + RepoMix),只做诊断,不改代码。拿到诊断结论,再回Lovable修复。
第四层:回滚。 很多时候是你自己的问题——提示词写歪了,前提设错了,或者只是累了。回退三步,深呼吸,重写提示。有时候同样的请求再跑一遍,它就过了。
最后还有 “第4.5层”:等bug修好,切到聊天模式问它:“我刚才用了四层才修好。你教我,下一次我该怎么提示,才能一次到位?”
99%的时候,它会给你一个非常好的答案。然后你把答案写进rules.md或项目知识库,从此它就知道“你这个人容易在哪些地方犯错”,下次自动帮你避坑。
访谈后半段,主持人问了一个很多人关心的问题:职业标签会不会失效?程序员、设计师、PM,以后还有区分吗?
Lazar的回答很直接:
“我如果现在有个18岁的弟弟问我该学什么,我可能会说:去当水管工。别读CS了。”
“不是因为工程不重要——我们比以往任何时候都更需要精英工程师来撑住基础设施。而是因为,对于一个18岁的人来说,四年的机会成本太高了。”
他的逻辑是:当“把东西做出来”变得极其廉价,“做出好东西”就变成了稀缺能力。而“好东西”的判断标准,99%与代码无关——是设计、是品味、是对人类情感的理解。
他承认自己最大的成长,来自和Lovable的设计师们一起工作。
“我以前觉得一个渐变就是三个颜色。直到我点开Figma,发现一个看起来‘很简单’的背景,用了50层——不同梯度、不同不透明度、不同叠加模式。那一刻我才明白,原来我一直以为的‘够用’,离‘世界级’有多远。”
他现在甚至会专门做一个应用来“学习设计风格”:波普艺术、玻璃拟态、新粗野主义……每个风格配一组可复制的提示词,公开分享。
“我的安全感不来自职位,也不来自公司,”他说,“来自我知道自己能快速学会新工具、快速理解需求、快速做出有美感的产品。”
访谈的最后,主持人问:如果只能给听众一条建议,你会说什么?
Lazar几乎没有犹豫:
“今天就去构建点什么。”
“不要等自己想清楚。你的想法永远不会自己变清楚。开五个窗口,同时试五个方向。让AI帮你试错,帮你迭代,帮你把模糊变成具体。”
“然后,把你的过程公开。不用等完美,不用等大作品。真实持续的输出,比任何简历都管用。”
他说自己当初进入Lovable,没有投简历,没有内推,只是在X上持续发自己做的小项目、踩过的坑、试过的提示词。公司的人看到了,主动找过来。
“作品就是机会。”他说。
这场访谈让我印象最深的,是Lazar对“未来竞争力”的定义。
他说,我们正在快速进入一个 “人人都能产出够用”的世界。任何人花两小时,都能用AI搭出一个能跑通的SaaS、一个像模像样的官网、一个带数据库的小工具。
“够用”不再是护城河。
真正拉开差距的,是你能不能做出 “魔法感” ——让用户第一次点开页面时,心里“哇”一声;让同事用你做的内部工具时,感觉“这比市面上的商业软件还顺手”。
而这种魔法感,不来自你会不会写React,不来自你用Supabase还是Firebase,也不来自你的代码有没有遵循SOLID原则。
它来自你的判断力——知道什么该留,什么该砍,什么该磨三天,什么该一键生成。
它来自你的清晰度——能把脑子里那团模糊的、兴奋的、不确定的感觉,翻译成一行行工具能理解的指令。
它来自你的品味——能区分“还行”和“惊艳”,能为了一个渐变叠加层多试二十次,能在所有人都满足于“跑通了”的时候,对自己说:
“还可以更好。”
而这,是AI永远无法外包的能力。
最近发现个项目叫 PAI(Personal AI Infrastructure),看了下挺有意思。
核心想法很简单:**把 AI 从”临时工具”变成”持久基础设施”**。
不像 ChatGPT 那种问完就忘,PAI 让 AI 记住你是谁、你在做什么、你之前怎么处理类似问题。用下来最大的感受是:AI 终于不用每次都当陌生人重新认识了。
这篇文章不谈虚的,直接讲怎么搭起来。
说明:以下步骤都是我实际搭建时验证过的,遇到的问题和解决方法也都记录在「踩坑」章节。
| 方面 | ChatGPT | PAI |
|---|---|---|
| 记忆 | 对话结束就忘 | Hook 驱动的 Memory 系统(WORK/LEARNING/STATE/) |
| 身份 | 不知道你是谁 | TELOS 系统定义数字身份 |
| 扩展 | 无 | 39 个 Skills 可扩展 |
| 定制 | 提示词里重复 | 配置文件化 + Hooks 自动化 |
| 代理能力 | 单模型 | 13 个专用 Agents(Algorithm/Architect/Engineer 等) |
| 工具 | 作用 | 必需/可选 |
|---|---|---|
| Claude Code | AI 运行环境 | 必需 |
| Bun | TypeScript 运行时 | 必需 |
| 本地 Markdown | TELOS 和记忆存储 | 必需 |
| Obsidian | 可视化编辑 TELOS | 可选(推荐) |
| Git | 版本控制和同步 | 可选 |
关于 Obsidian:用 Obsidian 管理 TELOS 文件的好处是有双向链接和图谱视图,能更直观地看到各文件之间的关系。不过如果你习惯用 VS Code 或 vim,也没问题。
我的建议是:先跑起来,再慢慢调。别想着一次把所有配置都搞完美。
适合想要完整 PAI 功能的用户(Hooks、Skills、Agents、Voice Server 全套系统)。
1 | # 1. 克隆仓库 |
安装器会自动完成:
pai 命令别名适合只想快速上手核心身份功能的用户——手动创建 TELOS + 配置 CLAUDE.md + Obsidian 可视化。
1 | # 创建 PAI 基础目录 |
创建后的结构:
1 | ~/.claude/ |
如果你用 Obsidian 管理 TELOS:
PAI-Identity(或其他你喜欢的)~/.claude/USER/identity
这样你的 TELOS 文件就能在 Obsidian 中可视化编辑,还能看到图谱关系。
TELOS 是 5 个核心 Markdown 文件,定义”你是谁”。
先填这 5 个核心文件。下面是我的示例,你可以参考着写自己的:
IDENTITY.md:
1 | # Identity |
GOALS.md:
1 | # Goals |
SKILLS.md:
1 | # Skills |
VALUES.md:
1 | # Values |
BELIEFS.md:
1 | # Beliefs |
在 ~/.claude/CLAUDE.md 开头添加 TELOS 引导:
1 | # 你是 Gamehu 的个人 AI 助理 |
在 ~/.zshrc 末尾追加:
1 | # PAI 命令别名 |
然后重新加载配置:
1 | source ~/.zshrc |
重启 Claude Code,然后问:
1 | 你知道我是谁吗? |
如果 AI 能正确回应你的身份信息(根据 IDENTITY.md),说明配置成功了。
PAI v3.0 使用新的 Memory 架构(取代旧的 hot/warm/cold 模型):
| 目录 | 用途 | 格式 |
|---|---|---|
| WORK/ | 工作跟踪,每次会话自动创建 | 目录 + YAML |
| LEARNING/ | 从对话中提炼的学习记录 | Markdown + JSONL |
| RESEARCH/ | Agents 输出捕捉 | Markdown |
| SECURITY/ | 安全审计事件 | JSONL |
| STATE/ | 快速运行时数据 | JSON |
数据流:
1 | 用户请求 |
PAI 内置 39 个 Skills,涵盖思考、研究、开发、安全等全领域:
| 类别 | 代表 Skills |
|---|---|
| 核心系统 | PAI, PAIUpgrade, Telos |
| 思考分析 | Science, FirstPrinciples, IterativeDepth, BeCreative |
| 研究工具 | Research, OSINT, Recon, Parser |
| 开发工具 | CreateSkill, CreateCLI, Cloudflare |
| 内容处理 | Fabric, Documents, ExtractWisdom, WebAssessment |
| 安全工具 | RedTeam, PromptInjection, SECUpdates |
| 专用代理 | Agents - 13 个命名 Agent(Algorithm/Architect/Engineer 等) |
使用方式:在对话中直接调用,例如 /science、/telos、/fabric。
Hooks 在特定生命周期事件时触发,自动执行相应逻辑。PAI v3.0 有 20 个 Hooks:
| Hook 类型 | 触发时机 | 典型 Hooks |
|---|---|---|
| SessionStart | 会话开始 | StartupGreeting, LoadContext, CheckVersion |
| UserPromptSubmit | 提交问题时 | RatingCapture, AutoWorkCreation, SessionAutoName |
| PreToolUse | 调用工具前 | SecurityValidator, AgentExecutionGuard, SkillGuard |
| PostToolUse | 工具调用后 | AlgorithmTracker, QuestionAnswered |
| SessionEnd | 会话结束 | WorkCompletionLearning, SessionSummary, UpdateCounts |
Hooks 是 TypeScript 脚本,需要 Bun 运行时来执行。这就是为什么安装 Bun 是必需的。
PAI 提供 13 个专用 Agent,每个都有明确的 persona 和专长:
| Agent | 专长 | 用途 |
|---|---|---|
| Algorithm | ISC 专家,验证纯粹主义者 | 系统化问题解决 |
| Architect | 系统设计 | 架构规划和设计 |
| Engineer | 构建和实现 | 代码实现 |
| Designer | 设计决策 | UI/UX 设计 |
| QATester | 质量保证 | 测试和验证 |
| Intern | 学习和初级任务 | 辅助性任务 |
| 命令 | 作用 |
|---|---|
/science |
科学方法思考和迭代 |
/telos |
管理 TELOS(个人 + 项目分析) |
/fabric |
240+ 种提示词模式(提取、总结等) |
/brainstorm |
创意风暴和需求分析 |
1 | 启动 Claude Code → AI 加载 TELOS → 执行任务 → Hooks 自动捕获学习 |
问题:Hooks 是 TypeScript 脚本,执行需要 Bun。如果 Bun 没有安装,Hooks 无法运行。
解决:
1 | curl -fsSL https://bun.sh/install | bash |
问题:首次使用时,MEMORY/ 下的子目录(WORK/、LEARNING/ 等)不存在,Hooks 会报错。
解决:
1 | # 创建完整的 Memory v7.0 目录结构 |
问题:Hooks 文件存在但没有在 settings.json 中注册,导致不会触发。
解决:确保 settings.json 中包含完整的 hooks 配置(参考官方模板)。
问题:CLAUDE.md 中引用的 TELOS 文件路径与实际位置不符。
检查:
1 | ls ~/.claude/USER/identity/ |
问题:Hexo 的 asset_img 标签引用的文件名与实际文件名不一致。
解决:确保引用名称与实际文件名完全一致(包括扩展名)。
如果你用 Obsidian 管理 TELOS,有几个插件值得装:
| 插件 | 作用 |
|---|---|
| Graph Analysis | 可视化 TELOS 各文件的关系 |
| Dataview | 查询和汇总 TELOS 内容 |
| Templates | 快速创建新 TELOS 条目 |
一个小技巧:在 Obsidian 中设置 [[GOALS]] 为首页,每次打开都能看到当前目标。
PAI 让我重新思考了 AI 的使用方式。
以前把 AI 当”临时工”,用完就扔。现在更像”长期助理”,相处越久越懂你。
关键区别:不是模型更强,而是上下文更完整。
当 AI 知道你的背景、理解你的目标、记住你的决策历史,它给出的建议就不再泛泛而谈,而是真正贴合你的情况。
这才是”个人” AI 的含义。
没有银弹。
PAI 不是万能药,它只是一个框架,让你更系统地使用 AI。
真正有价值的是:你有意识地构建自己的数字基础设施,而不是每次都从头开始。
对于 AI 的重度用户或初级开发者来说,经常会混淆:到底什么是“规则”,什么又是“技能”? 当 Anthropic 推出 MCP 协议后,这层关系变得更加扑朔迷离。
这篇旨在尽量简单生动的理清这四个概念。
构建成熟可用的 AI 智能体应用,核心在于协调四大要素形成闭环链路。各层级各司其职、层层支撑,既明确边界又深度协同,共同构成智能体稳定运行的核心骨架。
技术定义:Skills 是 AI 智能体的显性能力外延,核心落地形态为 Function Calling(函数调用) 与 External Tools(外部工具集成),是智能体突破自身能力边界、落地实际操作的关键载体。
核心职能:大语言模型(LLM)通过 JSON Schema 描述符,精准解析工具的功能范围、参数规范及返回格式,打破自身训练数据的时空限制,实现从“文本生成”到“落地执行”的核心跨越。
技术定义:Rules 是智能体的运行准则与风格锚点,通常通过 System Prompt(系统提示词) 硬编码或 Guardrails(护栏系统) 部署,形成刚性约束框架,划定运行边界。
核心职能:以确定性逻辑约束随机性模型的输出,在生产环境中承担三大核心职责——安全性防护(Safety)、品牌调性统一(Tone)、输出格式标准化,从根源上规避模型“幻觉”与违规风险。
技术定义:Prompt 是用户意图与模型上下文的实时动态组合体(Context Window),是指令传递、需求转化与场景激活的核心媒介。
核心职能:在 Rules 划定的约束框架内,精准捕捉并转化用户需求,按需激活对应 Skills 工具,实现“需求-能力”的精准匹配,驱动任务全流程推进。
技术定义:Model Context Protocol(模型上下文协议,简称 MCP) 由 Anthropic 牵头发起,是聚焦智能体与异构数据源互联适配的开放技术标准。
核心职能:实现数据源(Resources)与模型端的解耦设计,通过标准化接口让 AI 智能体“即插即用”访问各类数据资源(数据库、本地文件、SaaS 应用等),是 Context-as-a-Service(上下文即服务) 模式落地的核心基础设施。
为具象化四大模块的协同逻辑,我们以“AI 商务出行助手”(原“数字化导游”适配场景)为例,拆解智能体响应商务需求的全流程运行链路:
用户输入(Prompt):“我下周三要去上海出差,帮我结合日程表规划通勤路线,并订一张符合要求的机票。”
| 架构维度 | 实际运行逻辑 | 核心架构价值 |
|---|---|---|
| Rules | 底层刚性约束:1. 交互全程礼貌称呼用户,保持专业商务调性;2. 机票预订严格遵循公司报销标准(单张≤¥2000);3. 仅规划通勤路线,严禁推荐无关景区及违规服务。 | 筑牢合规基准,确保输出既符合企业行政政策,又规避安全风险,保持风格统一。 |
| MCP | 通过 MCP 协议实现数据互联,自动读取用户 Outlook 日程表(确认出差具体时段)、Notion 行程偏好(如座位、航司倾向),无需人工手动录入或复制信息。 | 低成本构建实时上下文,打通数据孤岛,保障信息获取的高效性与私密性。 |
| Skills | 识别用户核心意图后,自动激活 Flight_Search_API 查询符合预算的航班余票,调用 Map_Routing_SDK 结合日程与酒店位置计算最优通勤路线。 |
将文本需求转化为实际业务操作,落地“查询-规划-预订”的核心功能,突破纯文本输出局限。 |
| Prompt | 整合“上海”“下周三”等用户指令参数,叠加 MCP 获取的日程/偏好数据、Skills 返回的航班/路线信息,生成结构化出行建议(含航班备选、通勤方案)。 | 串联全流程模块,实现“意图输入-结果输出”的闭环,驱动各环节协同落地。 |
为进一步明确四大维度的定位差异,通过核心特征对比,助力开发者精准把握各模块的设计重点与落地优先级:
| 维度 | 核心角色 | 核心痛点 | 工业级实现 | 变动频率 |
|---|---|---|---|---|
| Skills | 能力工具箱 | 解决“手脚不长”、无法落地操作的问题 | Function Calling / Plugins / 工具市场集成 | 中(随业务需求迭代工具矩阵) |
| Rules | 运行紧箍咒 | 解决模型“不可控、易幻觉”的问题 | System Message / Guardrails / 合规校验引擎 | 低(仅随合规政策调整) |
| Prompt | 需求指挥棒 | 解决“意图理解偏差”的任务匹配问题 | Prompt Engineering / CoT(思维链)/ 上下文管理 | 高(随场景优化指令设计) |
| MCP | 数据总线/插座 | 解决“数据孤岛、集成复杂”的问题 | MCP Server / Client / 标准化数据接口 | 极低(作为基础设施长期稳定) |
现在,有一个更优雅的解决方案:**Skills.sh**。它正在把 AI 的能力标准化,让你像安装 npm 包一样,一键给你的 AI 助手增加“神技”。
Skills.sh 是一个开放的 AI 智能体技能生态系统。它允许开发者将特定的领域知识、操作指令和最佳实践封装成“Skills(技能)”。
通过一行简单的命令,你就可以把这些技能安装到你的 AI 开发环境(如 Cursor, Trae, Windsurf, Claude Code 等)中。
1 | # 安装一个特定的技能 |
Skills.sh 本身是一个聚合器,真正的力量来自于 GitHub 上那些被“开源精神”填满的仓库。以下是目前最值得关注的三个顶级仓库:
everything —— 全能的工具箱如果你不知道装什么,先看 everything。它致力于覆盖开发者日常的方方面面。
everything/refactor, everything/ui-polishawesome-agent-skills —— 精选推荐集类似于我们熟悉的 GitHub Awesome 列表,这里汇集了社区中经过验证的高质量技能。
superpowers —— 赋予 AI “思考逻辑”这是我个人最推崇的库。它不只是教 AI 写代码,而是教 AI “如何思考”。
superpowers/systematic-debugging: 让 AI 按照逻辑排除法寻找 Bug,而不是乱猜。superpowers/planning: 强制 AI 在动工前先写技术方案,这对于复杂重构至关重要。作为一名研发负责人,我推荐以下集成路径:
在你项目根目录下执行:
1 | npx skills add vercel-labs/agent-skills |
这会在你的项目里生成或更新 .cursorrules 文件,让 Cursor 自动感知并遵循 Vercel 级别的开发标准。
你可以创建自己公司的专属 skills 库。
Skills.sh 的出现标志着 AI 辅助开发进入了“模块化”时代。我们不再需要去记复杂的 Prompt 技巧,而是通过社区共建,直接复用全球最顶尖开发者的思维模型。
如果你还没试过,建议现在就去 skills.sh 寻找适合你的那款“超能力”。
我评审了团队里几位研发程师提交的《xx详细设计》。
在评审数据库设计(Schema Design)部分时,我们针对“资产表的独立性”、“复杂 JSON 的存储策略”以及“列表查询性能”展开了几轮讨论。起初他的设计偏向于“开发省事”,而我更强调“业务边界”和“长期可维护性”。这样的场景在我职业生涯中其实遇到好多次,虽然每次可能都稍有不同但是我个人认为核心考量规则是不变的。
这次讨论非常有代表性,不仅解决了一个具体的业务场景,更折射出 SaaS 系统设计中通用的取舍逻辑。复盘如下,与大家分享。
摘要:在现代 SaaS 架构中,越来越多的业务场景需要依赖“外部异步工作流”来生成核心数据(例如:调用一个耗时的分析流、审批流或数据处理管道)。本文复盘了一个垂直领域 SaaS 系统的数据库演进过程,探讨在异步任务与复杂结构化数据的双重挑战下,如何进行合理的数据库建模。
我们正在开发一套垂直领域的 SaaS 系统,核心业务链路是:**客户 (Customer) -> 资产 (Asset, 如宠物/设备) -> 业务记录 (Record)**。
核心痛点:
系统的核心记录(Record)不是由用户简单的 CRUD 生成的,而是依赖一个**外部异步工作流 (External Workflow)**。
架构师面临的三个核心问题:
最初的想法:
“既然每次调用工作流都是针对某个对象的,能不能直接把对象信息存在记录表里?减少表关联。”
架构决策:坚决剥离资产表(如 t_pet),建立星型拓扑。
面临挑战:
工作流返回的数据极其复杂,既包含核心指标(如数值、状态),也包含大量的描述性文本和嵌套结构。
架构决策:“核心指标列式存储” + “业务载荷 JSONB 存储”。
weight, status, result_summary),提取为独立的数据库列。JSONB 格式存入 form_data 字段。这既应对了工作流输出结构的潜在变化,又简化了前端渲染逻辑。面临挑战:
列表页需要展示资产当时的名称、客户的联系方式。如果采用完全范式化设计(Join Asset Join Customer),不仅查询性能受限,且一旦资产发生变更(如过户),历史记录的展示就会失真。
架构决策:在记录表中引入“快照冗余” (Snapshot Redundancy)。
在工作流完成并写入数据库的那一刻,将当时的 关键资产属性(如名称、归属人)冗余写入记录表。
面临挑战:
是否需要将记录表拆分为 Record_Master 和 Record_Detail?
架构决策:回归“单表设计”。
经过评估,外部工作流返回的结果主要是结构化数据,不包含巨大的二进制文件(BLOB)或超长文本(Log)。单行数据量控制在合理范围内(< 2KB)。在 PostgreSQL 等现代数据库中,单表完全足以支撑百万级业务数据,拆分反而增加了事务复杂性。
1 | erDiagram |
1 | -- 1. 资产表:核心实体,支撑多业务线 |
针对“SaaS + 复杂外部工作流”场景,我们总结了以下决策模版:
结语
无论是对接 AI、IoT 设备还是审批流,架构设计的本质是不变的:**厘清资产与事件的边界,在结构化与灵活性之间找到平衡。**这套设计模式能有效降低系统的复杂性,并为未来的业务扩展预留充足的空间。
最近读了 Naval Ravikant 的新作《Curate People》,有一种醍醐灌顶的感觉。
作为一名负责一线交付的技术团队负责人(Tech Lead),“招人”是我工作中极高频、也极痛苦的一环。很多时候,我很难向 HR 或其他协作方解释,为什么我拒绝了一个履历光鲜、技术看似合格的候选人,仅仅是因为“感觉不对”。
Naval 的这篇文章,给了这种“直觉”一个精准的理论支撑。他提出招聘不仅仅是填补空缺,而是一种“策展”(Curate)——像博物馆馆长挑选艺术品一样,审慎地甄选每一位团队成员。
这让我意识到,虽然我不是公司的创始人,但我实际上是这个研发团队的“创始人”。我所坚持的那些看似玄学的“闻味道”标准,其实正是为了对抗团队的平庸化。
这篇博客,既是对 Naval 顶级认知的深度梳理,也是对自己经手过百人面试后总结出的“闻味道”招聘法的复盘。希望能给同样在为打造“特种部队”而焦虑的技术管理者们一些启发。
硅谷知名投资人、AngelList 创始人 Naval Ravikant 曾说过:“你建立的团队,就是你建立的公司。”(引用自 Vinod Khosla)。
对于早期创业者而言,很多人认为这是一场技术游戏或产品游戏,但 Naval 在他最近的分享《Curate People》中直言不讳地指出:这实际上是一场招聘游戏。
为什么招聘如此重要?为什么创始人绝对不能外包这一职能?以下是对 Naval 核心观点的深度解析。
Naval 提出一个核心论断:创始人可以授权一切,唯独除了招聘、融资、战略和产品愿景。 而这其中,招聘又是重中之重。
早期员工构成了公司的 DNA。如果你把招聘外包给猎头或 HR 部门,你就等于是在引入“中间层”和“机械传动装置”。外部人员或中层管理者永远无法像创始人那样保持极高的选择标准。
一旦创始人不再直接参与每一个人的招聘和管理,公司就开始变质。无论这时公司是 20 人还是 40 人,当你失去了对“谁在车上”的直接控制权,你就失去了对公司文化和产品灵魂的控制权。
招聘之所以不能妥协,有一个非显性的原因:最优秀的人,只愿意和最优秀的人一起工作。
对于一个顶尖人才来说,与平庸之辈共事是一种巨大的认知负担(Cognitive Load)。如果他们发现周围的人不如自己,他们会敏锐地意识到自己“来错了地方”。
Naval 提供了一个极其犀利的招聘测试标准:
当你面试一个新人时,问自己:如果让这个人走进隔壁房间,随机挑选团队里的任何一个人进行 30 分钟的谈话,你会感到放心吗?如果你担心他会随机挑到那个“不够好”的员工,那就说明那个员工本就不该留在团队里。
好的团队是互相激励的。如果你允许平庸存在,你就在驱逐天才。
在早期阶段,你的目标不应该是扩张规模,而是浓缩密度。
Naval 提到他和联合创始人设立的一个新标准:“Geniuses Only(只招天才)”。这听起来很刺耳,也不切实际,但这是一种态度的宣示。
你要找的不仅是“聪明且能干”的人(Smart and Get Things Done),更是能创造新知识的人。在 AI 时代,重复性的工作终将被自动化,唯有创造力无法被替代。
早期投资人看团队时,往往不看你的商业计划书,甚至不看早期的微小进展,他们只看一件事:你有多强? 而证明你有多强的最好方式,就是看你能招募到多少比你更强、或者和你一样强的“天才”。
这是 Naval 非常反直觉的一个建议:不要做标准化的 HR。
为了得到最顶尖的人才,你必须打破所有规则。
最优秀的人不是机器上的齿轮,他们往往是多面手,有着独特的怪癖和需求。如果你用死板的“公司制度”去套他们,你只能招到平庸的“齿轮型”员工。创始人相对于 HR 的最大优势,就在于你有权力为了一个人才去重写规则。
在性格特质上,Naval 推崇巴菲特的“智慧、精力、正直”三要素,但他加了一个极其重要的第四点:低自我(Low Ego)。
我不是创始人而是技术团队负责人(Tech Lead / Manager)的角色,但是吹牛逼的说我也可以称为是这个研发团队的“创始人”。
我将从技术管理者的角度,将 Naval 的“创始人思维”转化为更落地的“Team Lead 思考”。
读完 Naval 的这篇文章,作为一个在一线带队的技术管理者(而非公司创始人),我深有感触。虽然我不能像创始人那样重写公司的底层规则,但在我的“局部环境”里,Curate People(甄选人才) 的逻辑同样适用,甚至更为紧迫。
以下是我作为技术 Team Lead 的几点反思:
Naval 说“创始人不能外包招聘”,对于研发主管来说,这意味着不能把技术把关的责任完全丢给 HR 或面试题库。
在我的团队里,我必须是那个最终的“策展人”。所谓的“策展”,不仅仅是看候选人的技术栈(Java 熟不熟,架构懂不懂),更是看他的代码品味和工程素养。
在技术团队中,”Low Ego” 尤为珍贵。软件开发是一个需要高频协作和快速试错的领域。
Naval 建议为了人才“打破所有规则”。作为中层管理者,我或许无法随意打破公司的薪酬体系或期权池,但我可以在我的权限范围内打破常规:
在复杂的软硬件结合项目或高并发系统中,系统的“熵”(混乱度)是自然增加的。
平庸的工程师(B 类或 C 类)在解决问题时,往往会引入新的复杂度,导致系统越来越臃肿,变成“屎山”。只有 A 类人才(Naval 口中的 Geniuses),才具备把复杂问题简单化、把代码写得像工业设计一样优雅的能力。
招聘不仅仅是为了填补 HC(人力预算),而是为了引入对抗系统熵增的负熵流。
我在公司电话面试+线下面试应该超过了100人,我的面试方法其实比较简单,首先我认为 “闻味道” (Sniff Test / Culture Fit) 往往比单纯的“做题”更重要。
因为技术栈(Spring Cloud, PostgreSQL, Python 等)是可以学的,但一个人的底层操作系统(性格、沟通方式、价值观、思维习惯)是很难重装的。
在技术圈,大家习惯谈论算法、架构和硬技能。但在我的招聘逻辑里,有一个看似不科学却极其精准的权重,称之为——“闻味道”(我之前没想到这个词,是在公司老板提出来的我觉得很贴切)。
这并不是忽视技术,而是我认为:技能决定了一个人的下限,但“味道”决定了一个人的上限,以及我们能一起走多远。
我的面试流程通常分为两轮:电话初筛和线下深聊。这其实就是我“闻味道”的两个步骤。
电话面试看不到表情,排除了视觉干扰,反而让我更能专注于思维的逻辑性和沟通的信噪比。
我在这一轮“闻味道”主要闻的是:逻辑闭环与沟通成本。
听“清晰度”而非“术语量”:
听“真诚度”:
到了线下,技术细节往往已经不是唯一的重点,我在观察这个人的能量场和协作潜质。
这一轮,我寻找的是:**同理心、好奇心与低自我 (Low Ego)**。
**看“眼里的光” (Curiosity & Energy)**:
**测“抗压与复盘” (Resilience & Fail Fast)**:
甚至看“非正式时刻”:
Naval 说“只招天才”,但我认为的“天才”不一定是现在的技术大牛,而是具备“成长型思维”的潜力股。
我之所以敢说“技术不一定要很牛逼”,是因为:
“闻味道”,本质上是在寻找那一类:
总结来说,我招的不是代码机器,而是能够在这个充满不确定性的世界里,一起解决问题的伙伴。
Naval 在文中建议创始人要保持极高的“不耐受度(Intolerance)”,把每一个候选人都视为可能摧毁公司的变量。
这听起来很残酷,但无论是创始人还是像我这样的技术管理者,本质目标是一致的:我们在寻找那些无需鞭策(Self-managing)、能够背靠背信任(Trustworthy) 且能够互相激发(Inspiring) 的伙伴。
在这个 AI 杠杆率极高的时代,一个小型的、由“味道相同”的天才组成的特种部队,远胜过一支庞大却平庸的正规军。
归根结底,The team I build is the product I build.(我建立的团队,即是我最终交付的产品。)
原文链接:Naval: Curate People
这篇文章源于跟公司CEO讨论某个事情时,他给我抛的一个学习课题——思维模型。
说实话,一开始我对这个词挺无感的,觉得是他作为咨询大牛的一些术语。但是历史经验告诉我所有事情上来不是应该先否定而是应该先了解甚至实践。特别是作为技术人很容易只考虑了技术维度,完全忽略了人的因素、组织的惯性、时机的问题。
查理·芒格有个概念叫”多元思维模型格栅”(Latticework of Mental Models)。意思就是真正的高手脑子里不止一把锤子,而是一个工具箱——懂技术,也懂心理学;懂管理,还懂系统动力学。
所以我专门下来花时间整理了这份清单,把8大类、75个思维模型和对应的实战工具都列出来了。
学习这些模型,说穿了就是看看是否能让自己多几把”刷子”——思考问题的时候,能从更多维度去看,理解事物的时候,能多一些工具可以拿起来用。
“手中只有锤子的人,看什么问题都像钉子。” —— 查理·芒格
核心目标:提升思考质量,避免愚蠢的错误。
这些是思考“思考本身”的模型,是所有决策的基础。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 1 | 第一性原理 (First Principles) | 回归事物最基本的真理,从头推导。 | 5 Whys 分析法 / 苏格拉底提问法 | 颠覆式创新、打破常规流程。 |
| 2 | 逆向思维 (Inversion) | 先想如何失败,然后避开它。 | 事前验尸 (Pre-mortem) | 项目启动前的风险排查。 |
| 3 | 二阶思维 (Second-Order Thinking) | 不只看直接后果,要看后果的后果。 | 决策树 / 影响地图 (Impact Mapping) | 政策制定、复杂决策推演。 |
| 4 | 地图非疆域 (Map is not Territory) | 模型只是简化,现实更复杂。 | 现地现物 (Genchi Genbutsu) | 丰田管理法:亲自去现场看真实情况。 |
| 5 | 奥卡姆剃刀 (Occam’s Razor) | 如无必要,勿增实体。 | MVP / 代码重构 | 砍掉冗余流程、简化产品设计。 |
| 6 | 汉隆剃刀 (Hanlon’s Razor) | 能用愚蠢解释的,别用恶意解释。 | SBI 反馈法 | 沟通时只讲事实(S/B/I),减少情绪内耗。 |
| 7 | 能力圈 (Circle of Competence) | 知之为知之,不知为不知。 | 能力矩阵 / 外包决策表 | 决定什么自己做,什么必须外包。 |
| 8 | 概率思维 (Probabilistic Thinking) | 世界是灰度的,用概率下注。 | 期望值计算 (Expected Value) | 计算 (赢率x收益) - (输率x成本)。 |
| 9 | 贝叶斯更新 (Bayesian Updating) | 随新信息出现,动态调整观点。 | A/B 测试 | 根据测试数据验证并修正策略。 |
| 10 | 可证伪性 (Falsifiability) | 科学理论必须容许被证明是错的。 | 假设检验 (Hypothesis Testing) | 精益创业:设计实验去验证商业假设。 |
核心目标:找准方向,建立壁垒。
不要用战术上的勤奋,掩盖战略上的懒惰。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 11 | 护城河 (Economic Moat) | 建立不可复制的竞争优势。 | VRIO 分析模型 | 评估资源的稀缺性和不可模仿性。 |
| 12 | 跨越鸿沟 (Crossing the Chasm) | 早期市场到主流市场有巨大断层。 | STP 营销理论 | 针对不同阶段切换目标用户群。 |
| 13 | 红海/蓝海 (Red/Blue Ocean) | 避开血腥竞争,创造新需求。 | 战略布局图 / ERC 动作框架 | 剔除、减少、增加、创造。 |
| 14 | 不对称战争 (Asymmetric Warfare) | 利用强者的弱点以弱胜强。 | 游击营销 (Guerrilla Marketing) | 低成本、创意突袭大公司盲区。 |
| 15 | 破坏性创新 (Disruptive Innovation) | 从低端切入,最终颠覆高端。 | JTBD (Jobs to be Done) | 挖掘用户“雇佣”产品的真实任务。 |
| 16 | 红皇后效应 (Red Queen Effect) | 不进则退,必须比对手跑得更快。 | 标杆管理 (Benchmarking) | 持续对标行业第一名的数据。 |
| 17 | 博弈论 (Game Theory) | 你的收益取决于对手的行动。 | 囚徒困境矩阵 / 纳什均衡 | 定价策略、商务谈判分析。 |
| 18 | 只有偏执狂才能生存 | 时刻警惕战略转折点。 | PESTEL 分析 | 扫描宏观环境的突变风险。 |
| 19 | 孙子兵法 (Sun Tzu) | 知己知彼,攻其不备。 | 商业兵棋推演 (Business Wargaming) | 模拟红蓝军对抗,预演对手反应。 |
| 20 | 有限/无限博弈 | 有的游戏为了赢,有的为了玩下去。 | 使命愿景价值观 (MVV) | 确立企业的终极目标。 |
核心目标:理解业务如何变大、变乱或崩溃。
系统不仅仅是零件的堆砌,而是零件之间的关系。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 21 | 复利效应 (Compounding) | 指数级增长的威力。 | 定投策略 / Wiki 知识库 | 财务积累、团队知识沉淀。 |
| 22 | 临界质量 (Critical Mass) | 量变引起质变的引爆点。 | 病毒系数 (K-factor) 计算 | 确保 K>1 实现自增长。 |
| 23 | 网络效应 (Network Effects) | 用户越多,价值越大。 | 梅特卡夫定律 | 平台型产品的估值与增长设计。 |
| 24 | 飞轮效应 (Flywheel Effect) | 咬合齿轮,一旦转动惯性巨大。 | 增长回路图 | 设计业务闭环(如亚马逊飞轮)。 |
| 25 | 熵增定律 (Entropy) | 封闭系统必然走向混乱。 | 5S 管理法 / 断舍离 | 整理整顿、定期重构、清除死代码。 |
| 26 | 反馈循环 (Feedback Loops) | 正反馈导致暴涨,负反馈维持稳定。 | 系统动力学建模 | 识别增强回路与调节回路。 |
| 27 | 涌现 (Emergence) | 简单的个体汇聚成群体智慧。 | Scrum / 敏捷开发 | 自组织团队,去中心化管理。 |
| 28 | 幂律分布 (Power Law) | 极少数人拿走极大部分利益。 | ABC 分析法 | 重点管理最重要的20%(A类)。 |
| 29 | 长尾理论 (The Long Tail) | 小众市场的总和匹敌热门市场。 | SEO 关键词矩阵 | 覆盖大量低频但精准的长尾流量。 |
| 30 | 制约理论 (Theory of Constraints) | 链条强度取决于最弱的一环。 | DBR (鼓-缓冲-绳) 系统 | 找到瓶颈,围绕瓶颈排期。 |
核心目标:算账、搞钱、提升效率。
商业的本质是价值交换,而财务是商业的语言。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 31 | 机会成本 (Opportunity Cost) | 选择A的成本是放弃了B。 | 艾森豪威尔矩阵 (四象限) | 放弃“紧急不重要”的事。 |
| 32 | 沉没成本 (Sunk Cost) | 泼出去的水,别再想了。 | 零基预算法 (ZBB) | 预算从零算起,不参考历史投入。 |
| 33 | 边际效用递减 | 投入越多,新增产出越少。 | 边际分析 | 决策是否继续增加投入(如加班)。 |
| 34 | 安全边际 (Margin of Safety) | 预留缓冲空间应对未知。 | 盈亏平衡分析 | 预留30%以上的现金流缓冲。 |
| 35 | 单元经济 (Unit Economics) | 单笔交易必须赚钱。 | LTV / CAC 模型 | 验证商业模式(SaaS标准 > 3)。 |
| 36 | 套利 (Arbitrage) | 利用信息/价格差获利。 | (无特定通用管理工具) | 早期红利捕捉、跨市场交易。 |
| 37 | 杠杆作用 (Leverage) | 劳动力、资本、代码、媒体。 | 杜邦分析法 | 拆解ROE,看靠什么撬动收益。 |
| 38 | 现金转换周期 (CCC) | 资金周转速度决定生死。 | 营运资本管理 | 压缩应收账款,延长应付账款。 |
| 39 | 凡勃伦效应 (Veblen Effect) | 价格越高,越有人买。 | 撇脂定价法 | 高端产品定价,收割高净值用户。 |
| 40 | 帕金森定律 (Parkinson’s Law) | 工作会自动膨胀占满时间。 | 番茄工作法 / Timeboxing | 强行限定截止时间 (Deadline)。 |
核心目标:做出用户真正需要的东西。
从“制造”思维转向“设计”思维。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 41 | MVP (最小可行性产品) | 小步快跑,快速试错。 | 精益画布 (Lean Canvas) | 一张纸写清商业模式,快速验证。 |
| 42 | PMF (Product-Market Fit) | 产品与市场完美契合。 | NPS (净推荐值) 调查 | 判断用户忠诚度与扩张时机。 |
| 43 | 待办任务 (Jobs to be Done) | 用户买钻头是为了得到孔。 | 用户故事 (User Story) | 敏捷开发中的需求定义。 |
| 44 | 技术债务 (Technical Debt) | 速度牺牲质量,未来要加倍还。 | SonarQube / 偿债周 | 代码质量检测与定期修复。 |
| 45 | 冗余/备份 (Redundancy) | 关键系统必须有备份。 | RAID / 灾备演练 | 系统高可用设计。 |
| 46 | 标准化 (Standardization) | 减少变数,提高效率。 | SOP (标准作业程序) / Checklist | 确保小白也能操作,减少失误。 |
| 47 | 规模效应 (Economies of Scale) | 产量越大,单位成本越低。 | 供应链管理 (SCM) | 集中采购,降低边际成本。 |
| 48 | 货柜崇拜 (Cargo Cult) | 模仿外表,不理解本质。 | (去形式化) | 避免盲目照搬大厂流程。 |
| 49 | 断裂点 (Breakpoint) | 系统在压力下崩溃的临界点。 | 压力测试 (Stress Testing) | 模拟高并发,测出系统极限。 |
| 50 | 用户路径 (User Journey) | 从用户视角看全流程。 | 用户体验地图 | 优化转化率,发现体验断点。 |
核心目标:带好队伍,分好钱。
管理是关于人类行为的杠杆。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 51 | 彼得原理 (Peter Principle) | 人会被晋升到不胜任的位置。 | 九宫格人才盘点 | 区分业绩与潜力,避免错误提拔。 |
| 52 | 邓巴数字 (Dunbar’s Number) | 150人的管理极限。 | 双披萨原则 (Two Pizza Rule) | 亚马逊法则:团队规模保持精简。 |
| 53 | 激励机制 (Incentives) | 屁股决定脑袋。 | OKR / ESOP (期权池) | 目标对齐与利益绑定。 |
| 54 | 破窗效应 (Broken Windows) | 坏事没人管,就会越来越多。 | Code Review / 6S | 发现小问题立刻修复,维护文化。 |
| 55 | 格鲁夫杠杆 (High Output) | 经理产出 = 团队产出。 | 1-on-1 会议 | 通过辅导下属撬动高产出。 |
| 56 | 指挥官意图 | 告诉Why和What,别管How。 | 任务式指挥 (Mission Command) | 充分授权,发挥一线主观能动性。 |
| 57 | 皮格马利翁效应 | 期望越高,表现越好。 | 教练技术 (Coaching) | 积极心理暗示,引导员工成长。 |
| 58 | 责任分散 | 人越多,越没人负责。 | DRI (直接负责人) / RACI | 确保每个任务有且仅有一个负责人。 |
| 59 | 群体极化 (Group Polarization) | 群体讨论容易导致极端。 | 德尔菲法 (Delphi Method) | 匿名征求专家意见,避免随大流。 |
| 60 | 学习曲线 (Learning Curve) | 熟能生巧,效率随经验提升。 | 入职培训清单 (Onboarding) | 加速新人上手速度。 |
核心目标:洞察人性,营销与说服。
查理·芒格最推崇的领域,理解人类误判心理学。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 61 | 社会认同 (Social Proof) | 大家都在买,所以我也买。 | 客户证言 / Logo墙 | 官网信用背书建设。 |
| 62 | 稀缺效应 (Scarcity) | 越少越想要。 | 倒计时 / 限购令 | 电商逼单转化。 |
| 63 | 互惠倾向 (Reciprocity) | 拿人手短,想回报。 | 内容营销 (白皮书/试用) | 免费给价值,换取销售线索。 |
| 64 | 承诺与一致 (Consistency) | 人倾向于遵守公开承诺。 | 登门槛效应 (Foot-in-the-door) | 先求小承诺(点赞),再求大承诺。 |
| 65 | 厌恶损失 (Loss Aversion) | 失去的痛苦大于得到的快乐。 | 无理由退款 / 试用期 | 消除客户顾虑,提升转化。 |
| 66 | 锚定效应 (Anchoring) | 第一印象决定后续判断。 | 价格诱饵 / 价格锚点 | 设置高价套餐衬托主推款性价比。 |
| 67 | 确认偏误 (Confirmation Bias) | 只看支持自己的证据。 | 红蓝军对抗 (Red Teaming) | 找专人挑刺,攻击现有方案。 |
| 68 | 幸存者偏差 | 死人不会说话。 | 流失分析 (Churn Analysis) | 回访不再续费的客户,寻找真因。 |
| 69 | 基本归因谬误 | 别人错是人品,我错是环境。 | 360度评估 | 多维度评价,避免单一视角偏见。 |
| 70 | 这种鲁巴效应 (Lollapalooza) | 多种心理因素叠加产生爆炸效果。 | 营销漏斗 (Funnel) | 在各环节叠加多种诱因促成转化。 |
核心目标:从大自然借智慧。
| 序号 | 思维模型 | 核心理念 | ⚔️ 落地方法论/工具 | 实战应用场景 |
|---|---|---|---|---|
| 71 | 活化能 (Activation Energy) | 万事开头难,需最小能量启动。 | 用户引导 (Onboarding Flow) | 极致简化注册/上手流程。 |
| 72 | 催化剂 (Catalyst) | 加速反应但不消耗自己。 | 增长黑客 (Growth Hacking) | 寻找低成本加速增长的手段。 |
| 73 | 半衰期 (Half-life) | 事物衰减的速度。 | 内容审计 (Content Audit) | 定期更新过时的文档或代码。 |
| 74 | 惯性 (Inertia) | 改变现状需要巨大外力。 | 变革管理八步法 | 打破组织惯性,推行新政。 |
| 75 | 相对论 (Relativity) | 参照系决定视角。 | 价格锚点 | 利用对比产生价值感。 |
不要试图一次性背诵所有模型。建议将本文收藏或打印,作为您的“案头词典”。
思维模型不是为了让你看起来更聪明,而是为了让你在关键时刻,做出那个胜率更高的决定。
本文基于一篇优秀的Medium文章,解析并提炼了50道经典LLM面试题。我对内容进行了润色和优化,使其更简洁、实用,同时保留了核心知识点。此次版本特别结合了相关图示,帮助你更直观地理解复杂概念。无论你是求职者、面试官,还是AI爱好者,这份指南都能帮你快速掌握LLM的核心概念、机制和应用。
这些问题涵盖了从基础原理到高级技巧的方方面面,每个问题后附带简明解释,帮助你获得“顿悟”时刻。让我们一起来探索吧!
分词是将文本分解成更小的单位(如单词、子词或字符)的过程。例如,“artificial”可能被拆分成“art”、“ific”和“ial”。这对LLM至关重要,因为模型处理的是数字而非原始文本。分词能处理多种语言、稀有词汇,并优化词汇表大小,提高计算效率和模型性能。
注意力机制允许LLM在生成或解释文本时,权衡序列中不同token的重要性。它通过查询(query)、键(key)和值(value)向量计算相似度分数(如点积)。例如,在“The cat chased the mouse”中,它能将“mouse”与“chased”关联起来,提升上下文理解,使Transformer在NLP任务中表现出色。
上下文窗口是指LLM一次能处理的token数量上限(如32,000个token),它定义了模型的“记忆”范围。更大的窗口能提升如摘要生成的任务连贯性,但会增加计算成本。在实际部署中,平衡窗口大小与效率是关键。
LoRA(Low-Rank Adaptation)通过添加低秩矩阵来高效微调模型,减少内存开销。QLoRA在此基础上引入量化(如4-bit精度),进一步降低内存需求。例如,QLoRA能让70B参数模型在单GPU上微调,适合资源有限的环境。
束搜索在生成文本时保留前k个(例如k=5)最佳序列,探索更多路径,而贪婪解码只选最高概率词。这能产生更连贯的输出,尤其在机器翻译或对话生成中,平衡概率与多样性。
温度是一个超参数,用于调整文本生成的随机性。低温度(如0.3)偏好高概率token,输出更可预测;高温度(如1.5)增加多样性。通过设置如0.8,能在创意任务如讲故事中平衡创造力和连贯性。
掩码语言建模(MLM)是将序列中随机token隐藏,并训练模型基于上下文预测它们。如BERT模型中使用,这促进双向语言理解,捕捉语义关系,为情感分析或问答等任务打下基础。
Seq2Seq模型将输入序列转换为输出序列(长度可不同),由编码器处理输入、解码器生成输出。应用包括机器翻译(如英文到西班牙文)、文本摘要和聊天机器人,处理变长输入输出。
自回归模型(如GPT)基于先前token顺序预测,擅长生成任务如文本补全。掩码模型(如BERT)使用双向上下文预测掩码token,适合分类等理解任务。训练目标决定了它们在生成 vs. 理解上的优势。
嵌入是将token表示为连续空间中的稠密向量,捕捉语义和句法属性。通常随机初始化或用预训练如GloVe,然后在训练中微调。例如,“dog”的嵌入可能在宠物相关任务中演化,提升模型准确性。
下一句预测(NSP)训练模型判断两句是否连续(50%正样本,50%负样本)。如BERT中使用,这改善如对话系统或文档摘要的任务连贯性,通过理解句子关系。
Top-k采样选择前k个最高概率token(如k=20)随机采样,确保控制多样性。Top-p(核采样)选择累积概率超过阈值p(如0.95)的token,更灵活。在创意写作中,Top-p能产生多样且连贯的输出。
提示工程是设计输入以引发理想响应的艺术。例如,“用100字总结这篇文章”比模糊指令更有效。在零样本或少样本设置中,它让LLM无需大量微调就能处理翻译或分类任务。
灾难性遗忘是微调抹除先前知识的现象。缓解方法包括:重放(混合旧新数据)、弹性权重整合(保护关键权重)、模块化架构(添加任务特定模块)。这些确保LLM在多任务中保持多功能性。
模型蒸馏训练“小学生”模型模仿“大老师”模型的输出,使用软概率而非硬标签。这减少内存和计算需求,让模型能在智能手机上部署,同时保留近似性能,适合实时应用。
LLM使用子词分词如字节对编码(BPE),将OOV词拆分成已知子词。例如,“cryptocurrency”拆成“crypto”和“currency”。这确保处理稀有或新词,增强语言理解和生成鲁棒性。
Transformer通过并行处理(自注意力同时处理token)、捕捉长距离依赖、位置编码(保留顺序)来改进。相比RNN的顺序处理,这些提升了可扩展性和如翻译任务的性能。
过拟合是模型记忆训练数据但无法泛化。缓解包括:正则化(L1/L2惩罚)、Dropout(随机禁用神经元)、早停(验证性能停滞时停止)。这些确保对未见数据的鲁棒泛化。
生成模型(如GPT)建模联合概率,创建新数据如文本。判别模型(如BERT分类)建模条件概率,区分类别如情感分析。生成模型擅长创建,判别模型聚焦准确分类。
GPT-4超越GPT-3的多模态输入(文本+图像)、更大上下文(25,000 vs. 4,096 token)、更高准确性(减少事实错误)。这扩展了其在视觉问答和复杂对话的应用。
位置编码为Transformer输入添加序列顺序信息,因为自注意力无固有顺序。用正弦函数或学习向量,确保如“king”和“crown”基于位置正确解释,关键于翻译任务。
多头注意力将查询、键、值拆分成多个子空间,同时关注输入的不同方面。例如,一头关注句法,另一头关注语义。这提升模型捕捉复杂模式的能力。
Softmax将注意力分数规范化成概率分布:在注意力中,将原始相似分数(查询-键点积)转为权重,强调相关token,确保模型聚焦上下文重要部分。
在自注意力中,查询(Q)和键(K)向量的点积计算相似分数:高分表示相关token。尽管高效,但其二次复杂度(O(n²))促使研究稀疏注意力。
交叉熵测量预测与真实token概率的差异:它惩罚错误预测,鼓励准确token选择。在语言建模中,确保模型为正确下一token分配高概率,优化性能。
嵌入梯度通过链式法则在反向传播中计算:这些梯度调整嵌入向量以最小化损失,精炼语义表示,提升任务性能。
Jacobian矩阵捕捉输出对输入的部分导数。在Transformer中,它帮助计算多维输出的梯度,确保权重和嵌入的准确更新,优化复杂模型。
特征向量定义数据主方向,特征值表示方差。在PCA中,选择高特征值的向量减少维度,同时保留大部分方差,便于LLM输入处理。
KL散度量化两个概率分布的差异:在LLM中,它评估模型预测与真实分布的接近度,指导微调改善输出质量和数据对齐。
ReLU函数f(x) = max(0, x)的导数为:1 (x > 0),0 (x ≤ 0)。其稀疏性和非线性防止梯度消失,使ReLU在LLM中高效且广泛使用。
链式法则计算复合函数导数:在梯度下降中,它启用反向传播逐层计算梯度,高效更新参数,最小化深度LLM架构的损失。
注意力分数计算为:缩放点积测量token相关性,Softmax规范化分数,聚焦关键token,提升如摘要的上下文生成。
Gemini通过统一架构(结合文本和图像)、高级注意力(提升跨模态学习稳定性)、数据效率(自监督减少标签需求)来优化。更稳定、可扩展于如GPT-4。
基础模型包括:语言模型(BERT、GPT-4用于文本)、视觉模型(ResNet用于图像分类)、生成模型(DALL-E用于内容创建)、多模态模型(CLIP用于文本-图像)。它们利用广泛预训练适用于多样应用。
参数高效微调(PEFT)仅更新小部分参数,冻结其余以保留预训练知识。如LoRA,确保LLM适应新任务而不丢失核心能力,维持跨域性能。
RAG包括:检索(用查询嵌入获取相关文档)、排序(按相关性排序)、生成(用检索上下文生成准确响应)。提升如问答的任务事实准确性。
MoE用门控函数激活特定专家子网络,减少计算负载。例如,每查询仅用10%参数,让亿级参数模型高效运行,同时保持高性能。
CoT提示引导LLM逐步解决问题,模仿人类推理。例如,在数学问题中分解计算,提升复杂任务如逻辑推理的准确性和可解释性。
判别AI(如情感分类器)基于输入特征预测标签,建模条件概率。生成AI(如GPT)创建新数据,建模联合概率,适合文本或图像生成,提供创意灵活性。
知识图谱提供结构化事实数据,通过减少幻觉(验证事实)、改善推理(利用实体关系)、增强上下文来提升LLM。适用于问答和实体识别。
零样本学习让LLM使用预训练通用知识执行未训练任务。例如,提示“将此评论分类为积极或消极”,无需特定数据即可推断情感,展示其多功能性。
自适应Softmax按频率分组词,减少稀有词计算。降低大词汇表成本,加速训练和推理,同时保持准确性,尤其在资源有限环境中。
Transformer通过自注意力(避免顺序依赖)、残差连接(直接梯度流)、层规范化(稳定更新)来缓解。与RNN不同,确保深度模型有效训练。
少样本学习让LLM用少量示例执行任务,利用预训练知识。益处包括减少数据需求、快速适应、成本效率,适合利基任务如特定文本分类。
解决方法:1. 分析模式(识别偏见来源);2. 增强数据(用平衡数据集和去偏技术);3. 微调(用精选数据或对抗方法重训)。改善公平性和准确性。
编码器将输入序列处理成抽象表示,捕捉上下文。解码器生成输出,使用编码器输出和先前token。在翻译中,编码器理解源语言,解码器产生目标语言,实现有效Seq2Seq任务。
LLM使用Transformer架构、海量数据集和无监督预训练,而统计模型(如N-gram)依赖简单监督方法。LLM处理长距离依赖、上下文嵌入和多样任务,但需大量计算资源。
超参数是预设值,如学习率或批次大小,控制模型训练。它们影响收敛和性能;例如,高学习率可能导致不稳定。调优超参数优化LLM效率和准确性。
LLM是训练于海量文本语料的AI系统,能理解和生成类人语言。拥有亿级参数,在翻译、摘要和问答中卓越,利用上下文学习广泛适用。
挑战包括:资源密集(高计算需求)、偏见(延续训练数据偏见)、可解释性(复杂模型难解释)、隐私(数据安全担忧)。解决这些确保LLM的伦理和有效使用。
https://github.com/github/spec-kit
我选用的Cursut-agent,我的建议是一定要按照官方的这几个命令顺序执,按顺序执行你才能真正体现这个工具的强大之处:
按顺序执行
生成结果
我个人觉得,从0到1开始一个项目,有这个是很省心的。