一、Tab 补全(传统 AI 补全)
定位:AI 只是高级输入法
- 你写一行,AI 猜下一行
- 只看局部上下文(几十行)
- 输出:单行/短句补全
- 触发:按 Tab 接受
典型: Copilot 早期、IntelliCode、Tabnine
人: 主导逻辑、架构、流程、命名、结构 AI: 只补全语法、重复模式、模板代码
一句话:AI 帮你打字,不帮你思考。
二、Vibe Coding(氛围编程)
定位:自然语言撸代码,随性、快速、不严谨 Andrej Karpathy 2025 年提出的概念,现在 Cursor、Claude 主流模式
特点:
- 不用写详细需求,用自然语言描述“感觉”
- AI 直接生成整函数、整文件、整页面
- 人不断口头调整:
- “这里改一改”
- “样式好看点”
- “逻辑顺一点”
- 没有严格规范、没有文档、没有SPEC
工作流: 自然语言描述 → AI 生成 → 人看一眼 → 口头修改 → 接受
人: 指挥、审美、判断对错 AI: 写大部分代码
一句话:像跟助手聊天一样写代码,快但混乱。
三、SPEC Coding(规范编程)
定位:先写清晰规范,再让AI严格按规范编码 是企业级、工程化、可维护的AI编码方式
核心:先 SPEC,后 CODE
SPEC 包括:
- 接口定义
- 入参出参格式
- 错误码
- 数据结构
- 边界条件
- 测试用例
- 命名规范、风格规范
AI 严格按照 SPEC 生成代码,不自由发挥,不脑补。
工作流: 写 SPEC → AI 生成代码 → 自动校验是否符合 SPEC → 不一致则重生成
人: 写规范、设计结构、定规则 AI: 机械但准确地实现 SPEC
一句话:AI 是严格执行规范的工人,不允许自由创作。
四、Agentic Coding(智能体编程)
定位:AI 变成独立软件工程师,自主完成整个任务 代表:Devin、OpenClaw、Claude Code Agent、豆包专业版Agent
完全颠覆前面所有模式:
AI 可以:
- 自主理解需求
- 拆解任务(拆成子任务)
- 自主查文档、读代码
- 写代码、建文件、改文件
- 运行、测试、报错、自己调试
- 重构、优化、注释
- 自主汇报进度
- 直到任务完全完成
人只做:
- 提最终需求
- 验收结果
- 偶尔纠正方向
AI 拥有:
- 记忆
- 计划能力
- 工具调用(shell、git、编辑器)
- 自我修正
- 长期任务执行
一句话:AI 自己从头到尾做完一个开发任务,人只是老板。
五、对比表
| 模式 | 核心 | 人做什么 | AI做什么 | 控制程度 | 工程适合度 | 代表工具 |
|---|---|---|---|---|---|---|
| Tab 补全 | 打字辅助 | 全逻辑+全结构 | 补全下一行 | 人完全控制 | 极高 | Copilot早期 |
| Vibe 氛围编程 | 自然语言快速撸码 | 指挥+调整 | 写整块代码 | 人松散控制 | 低(适合快速原型) | Cursor、ChatGPT |
| SPEC 规范编程 | 按规范精准生成 | 写SPEC+定规则 | 严格实现SPEC | 规则完全控制 | 极高(企业生产) | 企业级AI Coding |
| Agent 智能体编程 | 自主完成整个任务 | 提需求+验收 | 全流程自主完成 | AI自主决策 | 中高(未来主流) | Devin、OpenClaw、Claude Agent |
六、例子
用同一个真实需求:用户登录接口(Node.js + Express + MySQL) 逐一对标四种模式:Tab补全、Vibe、SPEC、Agent
统一需求
实现 POST /login 接收 username、password 查询数据库 user 表 密码正确返回 { code:0, token } 错误返回 { code:-1, msg:'用户名或密码错误' }
1)Tab 补全(传统AI)
AI 只补全下一行/小段,不写完整逻辑 你必须一行行写,AI 只猜接下来该打什么。
你的输入(手动写)
app.post('/login', async (req, res) => {
const { username, password } = req.body;
const [rows] = await db.query('SELECT * FROM user WHERE username = ?', [username]);
if (rows.length === 0) {
AI 按 Tab 补全(只补一句)
return res.json({ code: -1, msg: '用户名或密码错误' });
特点
- AI 只补全语法、不理解业务
- 无整体逻辑
- 你写90%,AI补10%
- 只输出代码片段,不碰工程
2)Vibe Coding(氛围编程 · 现在主流:Cursor/Claude)
你自然语言随便说,AI直接写整块代码,自由发挥 不看规范、不看结构、不校验。
你的输入(自然语言,很随意)
写一个登录接口,express mysql,判断用户名密码,返回token
AI 直接输出完整函数(自由发挥)
app.post('/login', async (req, res) => {
const { username, password } = req.body;
const [user] = await db.query('SELECT * FROM user WHERE username=?', [username]);
if (!user) return res.json({ code: -1, msg: '登录失败' });
const isValid = user[0].password === password;
if (!isValid) return res.json({ code: -1, msg: '错误' });
const token = jwt.sign({ id: user[0].id }, 'secret', { expiresIn: '7d' });
return res.json({ code: 0, token });
});
工作流
自然语言 → AI生成 → 你肉眼看 → 口头改
“提示词更标准一点” “错误信息改准确” “加JWT”
特点
- 快、随性、自由
- 可能不规范、变量名随意、无校验
- AI写80%,你改20%
- 仍然只输出代码文本,不运行、不调试
3)SPEC Coding(规范编程 · 企业级)
你先写严格规范(SPEC),AI 必须严格遵守,不能自由发挥 这是生产环境可用的AI编码。
你先写 SPEC(人写)
接口:POST /login
请求:{ username:string, password:string }
数据库表:user(id, username, password)
返回码:
0: 成功
-1: 用户名不存在
-2: 密码错误
密码明文比较(演示用)
token 使用 jwt,密钥 process.env.JWT_SECRET,有效期 2h
必须返回固定结构:{ code, msg, token? }
AI 严格按 SPEC 生成(不自由发挥)
app.post('/login', async (req, res) => {
const { username, password } = req.body;
const [rows] = await db.query('SELECT * FROM user WHERE username = ?', [username]);
if (rows.length === 0) {
return res.json({ code: -1, msg: '用户名不存在' });
}
const user = rows[0];
if (user.password !== password) {
return res.json({ code: -2, msg: '密码错误' });
}
const token = jwt.sign(
{ userId: user.id },
process.env.JWT_SECRET,
{ expiresIn: '2h' }
);
return res.json({
code: 0,
msg: '登录成功',
token
});
});
特点
- 无幻觉、完全可控、可工程化
- AI 100%遵守规范
- 人:定规范、定结构
- AI:只做机械实现
- 仍然不运行、不调试
4)Agentic Coding(智能体编程 · 下一代)
AI 不再只是写代码,而是直接完成整个开发任务 它有手、眼、计划、工具。
你只说一句话(终极极简)
实现一个安全的登录接口,Express + MySQL,JWT,错误码规范,能直接运行。
Agent 自动做全套(你完全不用动手)
- 分析需求
- 检查项目结构
- 创建
routes/login.js - 写接口、JWT、错误处理
- 运行代码
- 看报错(比如缺少依赖 jsonwebtoken)
- 自动 npm install jsonwebtoken
- 再运行、自测、修复
- 告诉你:完成
Agent 最终产出(不仅仅是代码,是可运行功能)
// routes/login.js
const express = require('express');
const jwt = require('jsonwebtoken');
const router = express.Router();
const db = require('../db');
router.post('/', async (req, res) => {
try {
const { username, password } = req.body;
const [users] = await db.query('SELECT * FROM user WHERE username = ?', [username]);
if (!users.length) return res.json({ code: -1, msg: '用户不存在' });
const user = users[0];
if (password !== user.password) return res.json({ code: -2, msg: '密码错误' });
const token = jwt.sign(
{ id: user.id },
process.env.JWT_SECRET,
{ expiresIn: '2h' }
);
return res.json({ code: 0, token, msg: 'ok' });
} catch (err) {
return res.json({ code: -99, msg: '服务器异常' });
}
});
module.exports = router;
Agent 还会:
- 自动在 app.js 引入路由
- 自动处理异常
- 自动补依赖
- 自动测试接口
- 自动修复bug
- 给你汇报结果
真正区别
Agent 之前:AI 只输出字符串 Agent 之后:AI 完成可交付功能