学径 LearnPath

编程语言基础

氛围编程

利用 AI 红利来提升开发效率。

讲解模式

通过本节课,你将理解:

#goal

上一课的软件工程骨架——模块、分层、测试、框架、版本——并没有过时。变的是:人越来越少从空白行开始逐字敲完,而是在 IDE 里与工具轮流起草。

氛围编程(Vibe Coding)描述的正是这种工作方式:人用自然语言推进意图,模型与代理生成或修改代码,人再验收。本节从代码补全讲起,依次看清 LLM、Agent、Skill、Rules 各自补上哪一段能力,以及效率背后常见的负面问题。

下一课你将在海龟项目里亲手使用这些能力;本课先把地图画清楚。

从补全一个名字开始

#hook

早年的 IDE 已经会在你输入 math. 时列出候选函数——那是代码补全:根据语言规则与眼前文件,猜测下一个记号。它加速的是打字,不替你决定算什么。

后来补全学会了读更大的上下文:刚写过的函数名、邻近的注释、项目里的其它文件。再往后,补全背后换成了大语言模型——可以一次草拟整段函数,而不只是一个标识符。

工具链变厚了,循环却还是那三步:写下(或生成)文本 → 运行 → 阅读现象。IDE 仍然是工作台;解释器仍然是裁判;人仍然要签名。

IDE:把写、跑、看收在一张桌子上

#explore-ide

IDE 把编辑、运行、输出、(常常还有)调试放在同一界面。本课的 在线 IDE 也是这条循环的一种包装:你改 Python,按运行,看终端或海龟画布。

补全是 IDE 里最旧、也最容易被低估的一层自动化:

  • 减少拼写错误与查文档的次数;
  • 暗示「这里通常会调用什么」;
  • 不保证建议符合你的问题——它只保证「像合法代码」。

当你开始接受「灰色字可以直接回车采纳」时,验收责任其实已经从键盘挪到了眼睛:你采纳的是一条未经运行证明的猜测。

LLM:用对话起草与改写

#explore-llm

LLM(Large Language Model,大语言模型)根据提示生成文本——包括程序文本。在氛围编程里,它常见的用法是:

  • 按自然语言说明起草函数或文件;
  • 解释一段报错;
  • 按你的新要求改写已有草稿。

它擅长的是「看起来像训练里见过的那种完整写法」。上一课的框架脚手架、多余的类、泛化过度的接口,常常从这里来。LLM 没有你的画布,也不会自动替你跑单元测试——除非外层工具把它接到运行环境上。

和 LLM 对话时,需求写得越像验收标准(对象、边界、结构约定),草稿越可控;只说「帮我弄好」,得到的往往是平均意义上的「好工程样子」。

Agent:不只回答,还会去做多步

#explore-agent

Agent(智能体)把模型嵌进一条行动环:规划 → 改文件 / 跑命令 / 读输出 → 再规划。它不是单次问答,而是试图在仓库里「做完一件事」。

相对纯聊天,Agent 更接近:

  • 打开多个文件并保持修改一致;
  • 根据报错自动再试;
  • 按任务列表推进重构或补测试。

能力变强,风险也同步放大:它可能在你没看清的路径上批量改文件,或为了「让测试变绿」删掉断言、跳过检查。Agent 的效率来自少问你;软件工程的安全来自关键步骤仍可被审查。使用 Agent 时,应缩小任务范围、要求说明改动摘要,并在版本管理里留下可回退点。

Skill 与 Rules:把重复的做法写成可调用的约定

#explore-skill-rules

现代工具链里,还有两层常被放进项目的「说明书」:

Skill(技能)
把一类重复任务打包成可触发的流程或提示模板——例如「按本仓库风格补一个海龟图形函数并附上两个 assert」。Skill 让 Agent / LLM 少猜你的习惯,多走你预设的步骤。

Rules(规则)
长期生效的约束:命名方式、禁止使用的库、测试必须如何写、提交前要检查什么。规则写在项目里,工具在每次生成时读取。它像团队章程:不替你写业务,但缩小「胡乱发挥」的空间。

Skill 偏「怎么做完这类事」;Rules 偏「无论做什么都要遵守什么」。二者都把软件工程的纪律,从人口头提醒,变成工具默认会看见的文本。

加速之后,常见的负面问题

#explore-downside

氛围编程提高吞吐,也带来一组系统性副作用——不是道德说教,而是工程上反复出现的现象:

  1. 看似完整、实则难读
    生成稿偏好大仓库姿势,课堂小目标被撑成空架子(见上一课的复杂度问题)。
  2. 能跑掩盖未测边界
    幸运输入通过后,人容易停止追问;单元测试与分层边界若被跳过,缺陷只是延后爆炸。
  3. 理解空洞
    若长期只粘贴不阅读,人会失去指出「错在哪一行」的能力——于是只能整段重来,迭代成本反而上升。
  4. 静默改坏邻域
    Agent 大范围修改时,可能碰坏无关模块;没有版本管理与审查,回退困难。
  5. 规则与现实脱节
    Skill / Rules 写得过时或互相矛盾时,工具会一本正经地遵守错误章程。

正面用法可以记成一句:用工具加速你已经能验收的闭环;不要用工具代替你尚未理解的责任。

本节练习:交给工具的一条章程

#practice

假设你请对话工具起草函数:输入雨量列表 [1, 2, 3],return 平均值 2,并且不改写原列表。请把下面这一条原样写成交给它的 Rules:「必须 return 数值;不得改写传入的列表;空列表 [] 时说明没有读数,不要做除法。」再指出:若生成的函数只 print、不 return,人把结果拿去下一步就会接不上。起草可以交给工具,这条章程和这一处验收仍留在人这一侧。

本节要点

#review
  • IDE 与补全缩短「写—跑—看」;补全是猜测,不是证明。
  • LLM 擅长按提示起草与改写;Agent 能多步行动,更需缩小范围与留下版本。
  • Skill 打包重复流程,Rules 固化长期约束;二者把工程纪律交给工具可见。
  • 负面问题集中在:臃肿、假通过、理解空洞、静默改坏、错误章程——效率不能外包验收。

单选题

补全在做什么

IDE 的代码补全,更接近哪一项描述?

单选题

Agent 与纯对话

相对单次 LLM 问答,Agent 更突出的特点是?

单选题

Rules 的位置

项目里的 Rules 主要用来做什么?

多选题

氛围编程的风险

下列哪些是氛围编程常见的负面问题?可以多选。

可多选

未登录时不会保存学习进度