第 04 课:Vibecoding 究竟是如何运作的
踏上构建生产级应用的旅程。
你已经了解到 AI 智能体(agent)和聊天机器人不一样:它不只是回应,它还会采取行动。你描述你想要的东西,智能体编写代码、运行代码、不断迭代。
但它是怎么做到的?编程智能体内部到底有什么,能让它完成这一切?
本课程中你会用到的每一个智能体(Replit 的 agent、Codex、Cursor 等等)都是由相同的核心组件构建而成。它们的封装方式和默认配置不同,但底层结构是一样的:一个模型、一个上下文窗口、一组工具、一个循环,外加把它们包裹起来的 harness(外壳/运行时)。一旦你理解了这些组件,你就能对任何编程智能体做出推断——什么时候该用哪一个,以及它为什么会表现成那样。
为了让这些组件具体起来,我们会以 Anthropic 的 Claude 作为贯穿全文的例子。深入剖析一个具体的智能体,比同时对比五个更容易看清结构。我们讲到的一切,对其他智能体也适用,只是名字略有不同。
可以把它想象成一辆汽车。你不需要成为机修工才能开车,但知道车里有发动机、变速箱、轮子和油箱,能帮你理解它为什么会有那样的表现。我们对编程智能体做的就是同一件事。
整体图景
Claude 不是一个单独的东西。它是一组协同工作的分层结构:
- 模型(The Model):负责读写文本的「大脑」。
- 上下文窗口(The Context Window):大脑此刻能看到的全部内容。
- 系统提示(The System Prompt):塑造行为的常驻指令。
- 工具(Tools):让大脑在现实世界做事的「双手」。
- 智能体循环(The Agentic Loop):让大脑不断行动、观察、迭代的引擎。
- 记忆与 CLAUDE.md(Memory & CLAUDE.md):跨会话保留的长期笔记。
- Skills、Hooks 和 Settings:配置 Claude 如何运行的 harness。
- MCP:让 Claude 接入外部系统的「插头」。
我们一个一个来看。
对 Claude 最准确的描述是……
第 1 层:模型(大脑)
Claude 的核心是一个 大语言模型(large language model,LLM):一个被训练来根据输入预测下一段文本的神经网络。这听上去几乎过于简单,但规模会改变一切。在海量代码、文档和文字上训练之后,模型学会了推理、遵循指令,并能用几十种语言生成可工作的代码。
Claude 系列有不同的尺寸:
- Opus:能力最强,适合困难推理和长任务。
- Sonnet:能力与速度的平衡。默认主力。
- Haiku:最快也最便宜,适合大量简单任务。
模型本身是 无状态(stateless) 的。它自己不会在请求之间记住任何东西。每次给它发消息,你都必须把它需要知道的一切一并发过去。这就是上下文窗口登场的地方。
Claude 核心的模型是……
哪个 Claude 模型通常最适合困难推理?
说模型本身是无状态的,意思是……
第 2 层:上下文窗口(Claude 看到的东西)
上下文窗口(context window) 是 Claude 当下能同时看到的所有内容:你当前的消息、对话中过去的消息、它读过的文件,以及它运行工具得到的输出。它就像 Claude 在这次会话中的短期工作记忆。
上下文是用 token(令牌)来度量的。一个 token 大致是四分之三个英文单词,或一小段代码。现代的 Claude 模型可以看到最多 200,000 个 token(标准)甚至 1,000,000 个 token(扩展),足以容纳一个小型代码库。
关于上下文窗口,有几件重要的事:
- 越大并不总是越好。 更多 token 意味着更多花费和更多处理时间。
- 它会被填满。 在长任务中,Claude Code 会自动总结较早的轮次,以保持在上限之内。
- 不在上下文里的东西,对 Claude 来说就不存在。 如果一个相关文件还没被读入,Claude 就无法对它进行推理。它必须先用
Read把文件读进来。
这就是为什么好的 vibecoding 往往意味着把 Claude 指向正确的文件。你在塑造最终进入上下文窗口的内容。
上下文窗口是……
一个「token」大致是……
如果一个文件还没被读入上下文,Claude……
第 3 层:系统提示(常驻指令)
在你发出第一条消息之前,Claude 就已经收到了指令。它们来自 系统提示(system prompt):应用程序(比如 Claude Code)每一轮都放在上下文窗口最顶端的一段文本。
系统提示告诉 Claude:
- 它是谁(「You are Claude Code, Anthropic's official CLI…」)。
- 它能用哪些工具,以及如何使用。
- 行为规则(如何处理风险操作、什么时候需要和用户确认、如何组织回复)。
- 任何项目相关的上下文(关于
CLAUDE.md我们下文再说)。
可以把系统提示看作 Claude 每次「上班」前都会读一遍的 岗位说明书。它一直在那里,安静地引导着行为。如果 Claude Code 在删除文件时显得格外谨慎,那就是系统提示在发挥作用。
系统提示是……
系统提示对谁是可见的?
第 4 层:工具(双手)
模型可以读写文本,但仅靠文本无法编辑文件或运行测试。工具(tools) 才是让 Claude 能真正动手做事的东西。
一个工具就是一个具名的能力,带有定义好的输入和输出。当 Claude 判断需要使用某个工具时,它会输出一个结构化的请求,比如 Read(file_path="src/app.js"),由 harness 实际执行并把结果送回来。
在 Claude Code 中,内建工具箱包括:
Read:打开一个文件并查看其内容。Write:创建一个新文件。Edit:对已有文件做精确修改(diff 风格)。Bash:运行一个 shell 命令(测试、构建、git,任何东西)。Grep:在文件内容中搜索某个模式。Glob:按文件名模式查找文件。WebFetch/WebSearch:在线查资料。Agent:派生一个子智能体处理一个聚焦的子任务。
没有工具,Claude 只能产出文本。有了工具,Claude 就能调研代码库、修改它、运行它,并看到发生了什么。工具是「给你建议的 AI」和「替你把事情做完的 AI」之间的差距。
工具是……
没有工具的话,Claude 只能……
以下哪一个 *不是* 真实的 Claude Code 工具?
第 5 层:智能体循环(引擎)
我们已经有了模型(大脑)、上下文(短期记忆)、系统提示(岗位说明)和工具(双手)。把这一切串起来的,是 智能体循环(agentic loop)。
每一轮,Claude 都做这件事:
- 思考(Think)。 读取完整上下文,推理下一步该做什么。
- 行动(Act)。 要么用文本回复,要么调用一个工具。
- 观察(Observe)。 如果调用了工具,就读取工具的结果。
- 重复(Repeat)。 用新得到的信息决定下一步。
循环会一直运行,直到 Claude 判断任务已经完成。
这就是整个游戏。一个「修测试」的任务可能是这样的:跑测试(Bash)、读失败的测试(Read)、读源码(Read)、提出假设、修改(Edit)、再次跑测试(Bash)、变绿、汇报。每一步都是循环的一轮。
因为循环会一直跑到任务完成,Claude 可以处理需要很多步骤的任务,而不需要你逐步审批每一步。你描述目标;循环就一直转,直到目标达成。
「智能体循环」是……
智能体循环什么时候停下?
第 6 层:子智能体(委托)
对于大任务,Claude 可以派生 子智能体(sub-agents):处理一个聚焦子任务并把结果汇报回来的、独立的智能体循环实例。
假设你让 Claude 重构 auth 系统。它可能会派生出:
- 一个 Explore 子智能体,负责梳理出所有 auth 相关的文件。
- 一个 Plan 子智能体,负责设计重构方案。
- 几个聚焦的通用子智能体,并行实现各个具体的部分。
每个子智能体都有自己的上下文窗口。它在自己的草稿区里做大量乱糟糟的搜索和阅读,然后把一份简洁的总结返回给主智能体。这样主对话的上下文就能保持干净,专注在高层规划上。
子智能体正是 Claude Code 能在不被杂物淹没的前提下,承担规模惊人的任务的原因。
子智能体有用,是因为它……
每个子智能体拥有……
第 7 层:记忆与 CLAUDE.md(长期笔记)
上下文窗口是短期记忆。对话结束时它会被重置。对于需要跨会话保留的东西,Claude 有两种机制:
CLAUDE.md 是项目级的指令文件。当你在某个文件夹里启动 Claude Code 时,它会自动读取项目里的任何 CLAUDE.md,并把它放进系统提示中。这里就是你存放项目约定、关键文件位置、常用命令以及任何 Claude 应当「知道」的东西的地方。它最接近于你给 AI 协作者准备的入职文档。
记忆文件(Memory files) 是一个 Markdown 文件夹,Claude 可以在里面保存关于用户、长期项目、反馈和参考资料的笔记。每次会话开始前,Claude 会查阅 memory 索引;会话结束后,它可以写入新的记忆。这就是 Claude 「记得」你偏好简短回复,或者 Linear 上专门记录 bug 的项目叫「INGEST」的方式。
CLAUDE.md(项目知识)和 memory(用户与跨项目知识)合在一起,构成了 Claude 的连续性。
`CLAUDE.md` 的作用是存放……
memory 系统的作用是……
对话结束时,上下文窗口会……
第 8 层:Skills、Hooks 和 Settings(harness)
围绕模型的,是一个 harness:组装上下文、执行工具、管理循环的应用层代码(比如 Claude Code)。harness 是可配置的。
- Skills / Slash Commands:可复用的工作流,用
/name调用。例如:/init用于生成 CLAUDE.md,/review用于审查 PR,/security-review用于审计最近的改动。一个 skill 把 prompt(通常带特定工具和步骤)打包成一条命令。 - Hooks:harness 会在特定事件自动运行的 shell 命令——工具调用之前、Claude 停下之后、文件被编辑时。非常适合自动格式化代码、拦截危险命令或发送通知。
- Settings(
settings.json):控制权限(哪些工具自动批准)、环境变量、默认模型和 hook 配置。这里就是把 Claude 的行为从「凡事都问」调到「在这个沙箱里可以放手干」的地方。 - Keybindings:自定义常用操作的键盘快捷键。
harness 是把一个原始模型变成可用产品的东西。不同的 harness(Claude Code vs. Cursor vs. Replit)以不同方式包裹同一类模型,服务于不同的工作流。
一个「slash command」或「skill」是……
Claude Code 中的「Hooks」是……
「harness」是……
第 9 层:MCP(插头)
内建工具能覆盖文件、shell 和网络。但你自己的系统呢——你的数据库、你的 Linear 看板、你的 Gmail?
MCP(Model Context Protocol,模型上下文协议) 是 Anthropic 创建的一个开放标准,用来把 AI 助手连接到外部工具和数据源。一个 MCP server 暴露一组工具。任何兼容 MCP 的客户端(包括 Claude Code)都可以使用它们。
这把工具集成从一种定制开发,变成了一个即插即用的生态:
- 想让 Claude 读你的 Gmail?安装 Gmail MCP server。
- 想让 Claude 查询你的 Postgres 数据库?安装 Postgres MCP server。
- 想让 Claude 与你的内部 API 对话?写一个小型的自定义 MCP server。
MCP 就是 Claude 把能力扩展到「开箱即用范围之外」的方式。
MCP 代表的是……
MCP 的用途是……
把它们拼到一起
这是 Claude 单轮对话的完整图景:
┌──────────────────────────────────────────────────────┐
│ HARNESS (Claude Code) │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ CONTEXT WINDOW │ │
│ │ - System prompt │ │
│ │ - CLAUDE.md │ │
│ │ - Memory index │ │
│ │ - Conversation history │ │
│ │ - Tool outputs │ │
│ │ - Your current message │ │
│ └──────────────────────────────────────┘ │
│ ▼ │
│ ┌──────────┐ │
│ │ MODEL │ ← think │
│ └──────────┘ │
│ ▼ │
│ text response OR tool call │
│ │ │
│ ▼ │
│ ┌───────────────────────────┐ │
│ │ TOOLS │ │
│ │ Read, Edit, Bash, Grep… │ ← act │
│ │ + MCP tools │ │
│ └───────────────────────────┘ │
│ │ │
│ ▼ │
│ tool result ← observe │
│ │ │
│ └──► back into context │
└──────────────────────────────────────────────────────┘
(repeat until task is done)
Claude 做的所有看起来很厉害的事情——端到端修一个 bug、重构一个模块、探索一个陌生的代码库——本质上都是这套结构在循环里跑。模型负责推理,工具负责行动,上下文把一切串在一起,harness 让整套东西安全地运转。
现在,当 Claude 让你惊喜或令你困惑时(无论好坏),你都可以问一句:这是哪一层造成的? 是模型推理得不好?是上下文里少了某个文件?是系统提示太过谨慎?还是选错了工具?理解结构,正是从「魔法」走向「可调试」的方法。
最后检查一下:Claude 的每一轮都涉及……
当 Claude 做出意料之外的事情时,正确的调试动作是……
接下来是什么
现在,你可以用组成部分来理解任何一个编码智能体:模型、上下文窗口、工具、循环,以及 harness。接下来,你将学习威胁意识——这是你第一次接触安全,学会思考一个真实上线的应用会以哪些方式被攻击,从而提前防范。
0/26 正确
0% — 全部答对即可完成