Vibe Coding(氛围编程)由 Andrej Karpathy 于 2025 年初提出,指用自然语言描述意图,让 LLM 生成代码,开发者凭“感觉”验收、遇错就贴回、持续迭代,甚至不完全阅读代码。它不是玩具,而是一种以意图为中心、以反馈为回路的新型开发方式。专业使用的关键,是给它装上工程护栏。
传统编程中,人负责语法、结构、边界;Vibe Coding 中,人负责意图、约束、验收,模型负责实现。适用场景:原型验证、脚本工具、内部系统、UI 迭代。不适用场景:核心交易、安全鉴权、合规审计、性能敏感模块。
核心循环只有四步:描述 → 生成 → 运行 → 反馈。而专业与否,取决于反馈环节是否自动化。
下面用 Python 实现最小 Vibe 循环:让模型写代码,自动跑测试,把错误回灌,直到通过或达上限。
import os, subprocess, pathlib
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
TARGET = pathlib.Path("src/solution.py")
TEST = pathlib.Path("tests/test_solution.py")
def ask(messages):
r = client.chat.completions.create(
model="gpt-4o", messages=messages, temperature=0)
return r.choices[0].message.content
def extract_code(text):
if "```" in text:
return text.split("```")[1].split("\n", 1)[1].rsplit("```", 1)[0]
return text
def run_tests():
p = subprocess.run(["pytest", "-q", str(TEST)],
capture_output=True, text=True)
return p.returncode == 0, p.stdout + p.stderr
def vibe(task, max_rounds=4):
messages = [{"role": "system",
"content": "你是资深 Python 工程师,只输出完整可运行代码。"},
{"role": "user",
"content": f"任务:{task}\n请实现并写入 {TARGET}"}]
for i in range(max_rounds):
code = extract_code(ask(messages))
TARGET.parent.mkdir(parents=True, exist_ok=True)
TARGET.write_text(code, encoding="utf-8")
ok, log = run_tests()
print(f"[round {i+1}] {'PASS' if ok else 'FAIL'}")
if ok:
return True
messages += [
{"role": "assistant", "content": code},
{"role": "user",
"content": f"测试失败,日志如下,请修复:\n{log[:2000]}"},
]
return False这个循环把“凭感觉验收”变成了“凭测试验收”,是 Vibe Coding 从个人玩具走向团队实践的分水岭。
仅有测试不够,需要三层静态与动态护栏:
# 一键护栏脚本 check.sh
set -e
ruff check . --fix # 风格与常见错误
mypy src --strict # 类型契约
pytest -q --cov=src --cov-fail-under=80
bandit -r src -ll # 安全扫描配合仓库内的规则文件,约束模型行为:
# VIBE.md
- 只使用标准库与 requirements.txt 中已有依赖
- 禁止 eval/exec/subprocess shell=True
- 所有外部输入必须校验
- 新增函数必须有类型注解与 docstring
- 提交前必须通过 check.sh这样,模型的自由发挥被限制在安全边界内,人只需审查 Diff 的意图是否匹配需求。
git bisect 与回滚。Vibe Coding 的三大风险是幻觉依赖(引入不存在的 API)、安全盲区(注入、越权)、技术债累积(能跑但难维护)。对策分别是:锁版本与依赖扫描、SAST 与人工审查、定期重构与文档补全。
它的定位应清晰:加速探索,而非替代工程判断。把 Vibe 用在 0→1 的验证阶段,把严格工程用在 1→N 的交付阶段,才是专业姿势。
Vibe Coding 把编程的门槛从“会写”降到“会说”,但把交付的门槛留给了“会验”。真正的专业,不是放弃阅读代码,而是用测试、类型、Lint、安全扫描构建自动验收网,让意图快速落地,让质量始终可控。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。