####################################
Tutorial 1: 氛围编程入门
####################################
.. include:: ../links.ref
.. include:: ../tags.ref
.. include:: ../abbrs.ref
============ ==========================
**Abstract** 氛围编程概念与核心理念
**Authors** Walter Fan
**Status** WIP
**Updated** |date|
============ ==========================
.. contents::
:local:
什么是氛围编程
==============
氛围编程(Vibe Coding)是 AI 时代的一种新编程范式。这个概念由 Andrej Karpathy 在 2025 年提出:
"There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes,
embrace exponentials, and forget that the code even exists."
简单来说,氛围编程就是:
1. **与 AI 协作编程**:不再是独自敲代码,而是与 AI 助手对话式开发
2. **关注意图而非实现**:你描述想要什么,AI 帮你实现
3. **快速迭代验证**:快速生成、测试、修正,形成闭环
核心理念
========
氛围编程的核心理念可以用一句话概括:
**"Create the right atmosphere for AI collaboration"**
(为 AI 协作创造合适的氛围)
这意味着:
- 不是让 AI 适应你
- 也不是你迁就 AI
- 而是建立一个清晰、系统化的沟通框架
类比:带实习生
--------------
想象你在带一个聪明但没有上下文的实习生。你不会只说"写个登录功能"就走开,对吧?
你会:
.. list-table::
:header-rows: 1
:widths: 30 70
* - 沟通内容
- 示例
* - 解释业务背景
- "我们是一个电商平台,用户需要登录后才能下单"
* - 说明技术栈
- "我们用 Spring Boot + React,数据库是 MySQL"
* - 指出安全要求
- "密码需要加密存储,支持 OAuth2 登录"
* - 告诉代码规范
- "我们用 RESTful API,返回统一的 JSON 格式"
* - 定义验收标准
- "需要支持手机号和邮箱两种登录方式"
AI 也需要同样的上下文!
AI 时代的角色转变
=================
氛围编程时代,开发者的角色发生了根本性转变:
.. csv-table::
:header: "角色", "过去的职责", "AI 时代的职责", "变化本质"
:widths: 15, 25, 30, 30
"开发者", "逐行编写代码", "维护和执行规格说明", "从打字员到架构师"
"QA", "手写测试用例", "定义验收标准", "从执行者到守护者"
"AI", "不存在", "代码生成与实现", "新的团队成员"
关键洞察
--------
.. note::
**AI 是生产力放大器——它既放大你的清晰度,也放大你的困惑。**
- 当你的需求清晰、规格明确时,AI 能以 10 倍速度帮你实现
- 但如果你自己都不清楚要什么,AI 只会用 10 倍速度生成垃圾代码
氛围编程所需能力
================
氛围编程需要一套新的能力模型:
.. code-block:: text
氛围编程能力金字塔
┌─────────────┐
│ 创新能力 │ ← 发现新问题,提出新方案
├─────────────┤
│ 决策能力 │ ← 在多方案中做出选择
├─────────────┤
│ 判断能力 │ ← 辨别 AI 输出质量
├─────────────┤
│ 提问能力 │ ← 问出好问题(最重要!)
├─────────────┤
│ 表达能力 │ ← 清晰传达技术想法
├─────────────┤
│ 编码能力 │ ← 理解和修改代码
└─────────────┘
核心能力详解
------------
**1. 提问能力(极高重要性)**
AI 给出什么样的答案,很大程度上取决于你问什么样的问题。
糟糕的问题::
帮我写一个查询订单的接口
好的问题::
我需要实现一个订单查询的 REST API,具体要求:
1. 使用 Spring Boot 3.x + Java 17
2. 支持按订单ID、用户ID、订单状态等多条件查询
3. 需要分页查询,支持排序
4. 使用 Spring Data JPA 访问 MySQL
5. 需要参数校验
6. 返回统一的响应格式
**2. 判断能力(极高重要性)**
AI 生成的代码不一定是最优的,你需要能够识别:
- 代码质量问题(命名、结构、可读性)
- 安全漏洞(SQL 注入、XSS 等)
- 性能问题(N+1 查询、内存泄漏)
- 架构合理性(是否符合项目规范)
**3. 决策能力(高重要性)**
AI 可能给出多种方案,你需要根据实际情况选择:
- 适用性:哪个方案更适合当前项目?
- 权衡:性能、可维护性、开发成本如何平衡?
- 风险:引入新技术的风险是否可控?
氛围编程 vs 传统编程
====================
.. list-table::
:header-rows: 1
:widths: 20 40 40
* - 维度
- 传统编程
- 氛围编程
* - 编码方式
- 手动逐行编写
- 描述意图,AI 生成
* - 关注点
- 语法、API、实现细节
- 需求、架构、验收标准
* - 迭代速度
- 较慢,需要手动修改
- 快速,对话式迭代
* - 学习曲线
- 需要掌握语言和框架
- 需要掌握提问和判断
* - 适用场景
- 所有场景
- 快速原型、CRUD、重复性工作
第一个氛围编程示例
==================
让我们通过一个简单的例子体验氛围编程:
**场景**:创建一个 Python 脚本,统计目录下的文件类型分布
**传统方式**:你需要自己编写代码
.. code-block:: python
import os
from collections import Counter
def count_file_types(directory):
extensions = []
for root, dirs, files in os.walk(directory):
for file in files:
ext = os.path.splitext(file)[1].lower()
extensions.append(ext if ext else 'no_extension')
return Counter(extensions)
if __name__ == '__main__':
result = count_file_types('.')
for ext, count in result.most_common():
print(f'{ext}: {count}')
**氛围编程方式**:你描述需求,AI 生成代码
::
我需要一个 Python 脚本,功能如下:
1. 统计指定目录下所有文件的扩展名分布
2. 递归遍历子目录
3. 按数量从多到少排序输出
4. 支持命令行参数指定目录
5. 输出格式美观,使用表格形式
AI 会生成更完善的代码,包含命令行参数解析、表格输出、错误处理等。
氛围编程工具链
==============
要进行高效的氛围编程,你需要合适的工具:
.. list-table::
:header-rows: 1
:widths: 25 35 40
* - 工具类型
- 代表产品
- 特点
* - AI IDE
- Cursor, Windsurf
- 深度集成 AI,支持上下文感知
* - IDE 插件
- GitHub Copilot, Codeium
- 在现有 IDE 中添加 AI 能力
* - 命令行工具
- Aider, Claude CLI
- 终端中进行 AI 编程
* - Web 工具
- ChatGPT, Claude
- 通用对话,可用于编程
本教程将以 **Cursor** 为主要示例工具,因为它:
- 专为 AI 编程设计
- 支持丰富的上下文管理
- 有强大的规则系统
- 支持 MCP 扩展
开始你的氛围编程之旅
====================
准备工作
--------
1. **安装 Cursor**
访问 https://cursor.sh 下载并安装
2. **配置 AI 模型**
- 打开 Settings → Models
- 选择你偏好的模型(Claude、GPT-4 等)
- 配置 API Key(如果使用自己的 key)
3. **熟悉基本快捷键**
.. list-table::
:header-rows: 1
:widths: 30 70
* - 快捷键
- 功能
* - ``Cmd/Ctrl + K``
- 内联编辑(在代码中直接修改)
* - ``Cmd/Ctrl + L``
- 打开聊天面板
* - ``Cmd/Ctrl + I``
- 打开 Composer(多文件编辑)
* - ``Tab``
- 接受 AI 建议
小试牛刀
--------
打开 Cursor,创建一个新文件,然后:
1. 按 ``Cmd/Ctrl + L`` 打开聊天
2. 输入:
::
创建一个 Python 函数,实现斐波那契数列的第 n 项计算,
要求:
1. 使用递归 + 记忆化
2. 添加类型注解
3. 添加文档字符串
4. 添加单元测试
3. 观察 AI 生成的代码
4. 点击 "Apply" 应用到文件
恭喜!你已经完成了第一次氛围编程。
小结
====
本教程介绍了氛围编程的基本概念:
- **氛围编程是什么**:与 AI 协作的新编程范式
- **核心理念**:为 AI 协作创造合适的氛围
- **所需能力**:提问、判断、决策、创新
- **工具选择**:Cursor 是理想的入门工具
下一步
------
在下一个教程中,我们将深入了解各种 AI 编程助手的特点和选择。
练习
====
1. 安装 Cursor 并完成基本配置
2. 使用 AI 生成一个简单的 TODO 应用
3. 对比你手写代码和 AI 生成代码的差异
4. 尝试用不同的提示词描述同一个需求,观察结果差异
参考资源
========
- `Cursor 官方文档 `_
- `Andrej Karpathy - Vibe Coding `_
- `AI-Assisted Programming Best Practices `_