Vibe Coding 必装:Karpathy Skills(65 行 MD,让 AI 写代码像个靠谱同事)
你用 AI 写代码有没有这种崩溃瞬间:
- 需求没问清楚就开写,写完发现方向错了 😅
- 一通输出看着很努力,结果代码又臭又长
- 让它改个小 bug,它顺手把别的地方也“优化”了,然后全挂
- 做完也不知道算不算完成,反复拉扯到深夜
Karpathy Skills 这套东西,专治这些毛病。
它火的原因也很直接:用 4 条约束把 AI 的“随性输出”拴住,让它按工程方式交付。
这玩意到底是什么?
一句话:一份写给 AI 的工作纪律。
形式很朴素,甚至有点离谱——只有 65 行 Markdown。但它把 Andrej Karpathy 那套“写代码的思路”浓缩成可执行的规则。
你可以把它当成:
- 代码搭子上岗前的“行为手册”
- 每次对话自动附带的开发规范
- 让模型少犯蠢的“保险丝”
AI 开发常见 4 个痛点,它用 4 条约束对着打
1)想清楚再写:不懂就问,别瞎编
很多 AI 最大的问题不是不会写,而是不确定也硬写。
你真正想要的是这种节奏:
- 先把需求问完整
- 不确定的地方列出来
- 关键决策让你拍板
你会明显感到:输出变慢了一点点,但返工少一大截。
建议你配合一个固定句式,让模型更老实:
“如果信息不够,先问我 3~7 个关键问题;别猜。”
2)极简至上:能用 20 行解决,就别给我 200 行
AI 很爱“堆料”:抽象层、配置层、封装层,全给你上齐。
看起来很专业,维护起来想骂人。
Karpathy Skills 的核心态度是:
- 优先用最少代码解决问题
- 先写清晰的小实现
- 真到需要扩展时再重构
适用场景很广:写脚本、做小工具、改一个 API、修一个 UI 逻辑……
你会得到那种“能跑、易懂、好改”的代码,而不是“像框架作者写的炫技稿”。
3)精准修改:只动该动的,不碰需求外的代码
这条太关键了。
你让 AI 改一个函数,它顺便把文件格式化、变量名全改了、目录结构也“顺手整理”。
然后 Git diff 一眼看过去:全是红绿,根本没法 review。
Karpathy Skills 把它掰回来:
- 改动范围要受控
- 不相关的地方别碰
- 需要大改时要提前说明原因,并征得同意
你会发现 PR 更干净,合并也更快。
4)目标导向:每个任务都要有验收标准
最容易无限拉扯的就是这类对话:
“好像差点意思,你再优化一下。”
优化到天荒地老。
Karpathy Skills 要求模型在动手前就把“完成”的定义写出来,最好是可验证的。
比如:
- “新增接口返回字段
xxx,并补 2 个单测覆盖异常分支” - “点击按钮后 300ms 内弹出 toast,失败时展示错误码”
- “修复 bug:复现步骤 A/B/C 下不再报错,并加回归测试”
有了验收标准,你就能一句话收工:
“满足这 3 条就合并。”
安装:两行命令搞定
把插件装上(按你提供的命令原样执行):
/plugin marketplace add forrestchang/andrej-karpathy-skills
/plugin install andrej-karpathy-skills@karpathy-skills
装完后建议你做一件事:
- 在常用 IDE/Agent 里确认它是“默认启用”状态
- 尝试开一个新对话,让它按约束来工作(下面有测试脚本)
上手用法:给你一套“对话模板”,直接复制
你可以把下面这段当成每次开工的开场白(特别适合 vibe coding):
我要做一件事:<一句话描述>
约束:
- 信息不够就问我问题,别猜
- 尽量用最少代码完成
- 只改我指定范围内的文件/函数
- 先写验收标准(可验证),我确认后再写代码
当前上下文:
- 语言/框架:
- 相关文件:
- 现状:
你会发现 AI 的工作方式变得很“像人”:先对齐目标,再动手。
示例:修一个真实一点的需求(你能直接照抄)
场景:你有个 Node/Express 接口很慢,想加缓存,但不想引入复杂中间件。
你对 AI 说:
我要做一件事:给 GET /products 增加 10 秒内存缓存
只允许改动:routes/products.ts
验收标准:
1) 连续请求 10 秒内第二次开始响应时间明显降低(你用 console.time 打点即可)
2) 10 秒后缓存失效,数据会重新拉取
3) 出错时不写入缓存
信息不够就问我,别猜。先给方案和你要问我的问题。
理想的反馈应该是:
- 先问:数据是否跟用户/权限相关?缓存 key 怎么区分?
- 提方案:最小实现就是模块内 Map + timestamp
- 明确改动范围:只改
routes/products.ts - 再给出短小清晰的代码 diff
这就是它的价值:少走弯路 + 代码干净 + 你掌控节奏。
避坑清单(踩过的人都懂)
- 你不写“只改哪些文件”,AI 很可能顺手改一堆。把范围钉死。
- 你不写验收标准,就会陷入无限“再优化一下”。先把“完成”说清。
- 你给的信息太少,还要求它直接写代码,结果大概率猜错。让它先提问。
- 别一上来就要完美架构。小功能用极简实现,能跑能交付更重要。
快速自测:装完是否生效
随便丢一个小任务,看看模型会不会做这两件事:
- 提问补信息
- 给验收标准
测试口令:
我要把一个 Python 脚本改成支持读取 .env 配置。
先问我必要问题,然后写验收标准。我确认后你再动代码。
它如果直接开始贴代码,说明你的工作流里约束没吃进去。回去检查插件是否启用,或把约束写进系统提示/项目规则里。
你会得到什么变化?
- 代码更短,更像“能维护的手写代码”
- 改动更小,diff 更好 review
- 任务结束更利索,不会拖到半夜
vibe coding 要的不是“写得快”,是“写完能交”。Karpathy Skills 就是干这个的。