GitHub 上一个叫 andrej-karpathy-skills 的开源 Skill深受开发者喜爱。它是受 Karpathy 在 X 上发表的一篇长推启发实现的可以说是 Karpathy 最近两年 Vibe Coding 的经验结晶。Karpathy 说他现在80%的代码是靠指挥 LLM 写的。几周之内把工作方式翻了个底朝天。他精准指出了 AI 写代码的几大致命毛病这个开源 Skill 就是专治这些毛病的方案就藏在一个 CLAUDE.md 文件里。andrej-karpathy-skills 把他的洞察提炼成四条原则直接改造 AI Agent 的行为方式。Agent 编程的甜蜜与苦涩2025年12月前后Claude Code 和 Codex 等工具的能力跨过了一道门槛。Karpathy 说他从11月的80%手动编码加20% Agent 辅助变成了12月的80% Agent 编码加20%手动修整。几周时间二十年的习惯被颠覆。甜蜜的部分很明显。Agent 不知疲倦遇到难题死磕30分钟最终搞定人早就放弃了它还在那里一轮一轮地尝试。Karpathy 称之为feel the AGI时刻你看着它跟一个问题搏斗很久最后赢了你会意识到耐力本身就是工作的核心瓶颈而 LLM 把这个瓶颈撑大了。对 IDE 和 Agent 集群的热炒Karpathy 觉得过头了模型依然会犯错如果你在乎自己的代码就得盯着它在一个宽大的 IDE 里盯着它。效率的提升也不只是单纯的加速。Karpathy 提到一个更微妙的效果他做的事情变多了。以前觉得不值得写的代码现在可以写了以前因为知识短板不敢碰的代码现在敢碰了。速度确实变快了但更像是能力的扩展。就像给了你一把更锋利的刀你切的不只是原来的东西切得更快你会开始切以前根本不会去切的东西。这个感受在工程师中间应该正在发生Karpathy 估计已有两位数比例的工程师经历了类似转变但大众的认知恐怕还停留在个位数百分比。编程甚至变得更快乐了。填空式的苦活被剥离留下的是创造性的部分。被卡住的感觉也少了因为跟 Agent 搭伴几乎总能往前推进。Karpathy 也注意到这会在程序员中间划出一道分界线那些主要喜欢写代码的人和那些主要喜欢造东西的人对 LLM 编程的感受完全不同。喜欢造东西的人会觉得如虎添翼喜欢写代码本身的人可能会觉得乐趣被稀释了。苦涩的部分同样真实而且 Karpathy 逐一列举得相当细致。模型会替你做错误假设然后不假思索地一路执行。它们不管理困惑不寻求澄清不呈现矛盾不展示权衡该反驳时沉默还带着点讨好型人格。它们热衷于把代码搞复杂堆砌抽象100行能解决的事写成1000行你问一句能不能简单点它立马砍到100行。它们会顺手删改自己没充分理解的代码和注释哪怕跟当前任务无关。Karpathy 尝试在 CLAUDE.md 里写几句指令来纠正效果有限。他把这些错误归类为一个粗心急躁的初级开发者会犯的错只是错误发生在更高的抽象层级上。语法错误已经很少了取而代之的是微妙的概念性错误。Agent 模式下问题更多计划模式好一些但缺少一种轻量级的内联计划模式来衔接。他的工作流是左边开几个 Claude Code 的终端窗口右边一个 IDE 用来查看代码加手动编辑两边配合。Karpathy 还提醒尽管有这些问题Agent 编程依然是净收益巨大的改进很难想象再回到纯手动编码的日子。 开发者 Suryanshti777 把上述原则提炼成了 Karpathy 的 CLAUDE.md 文件。四条原则治住 Agentandrej-karpathy-skills 项目的核心是把 Karpathy 指出的每个问题对应用一条原则去解决。编码前思考针对的是 LLM 最常见的毛病默默选一种理解然后闷头干。这条原则强制 Agent 必须明确说明假设不确定就问而不是猜存在歧义时呈现多种解释不要偷偷选一个有更简单的方案就大声说出来搞不清楚的地方要停下来要求澄清。本质上把先想后做从建议变成了强制流程。Karpathy 在推文里原话就是模型会代你做错误假设然后一路执行下去它们不管理困惑不寻求澄清不呈现矛盾不展示权衡该反驳时也不反驳。编码前思考这条原则一条一条地堵住了这些窟窿。简洁优先对抗的是 Agent 的过度工程倾向。不添加要求之外的功能不为一次性代码创建抽象不添加没人要求的灵活性和可配置性不为不太可能发生的场景写错误处理。200行能写成50行就重写。检验标准很直观资深工程师会不会觉得这段代码过于复杂如果是简化。这条原则直接回应了 Karpathy 的观察Agent 总是倾向于构建臃肿脆弱的方案1000行的过度工程你一问能不能简化它立马砍到100行。与其每次都靠你主动提醒不如把简洁写入规则。精准修改针对 Agent 乱改代码的老毛病。只碰必须碰的只清理自己制造的混乱。不要改进相邻的代码、注释或格式不要重构没坏的东西匹配现有风格即使你更倾向于不同写法。注意到无关的死代码可以提一句但不要删。反过来你的改动产生的孤儿代码比如不再使用的导入、变量、函数那得自己清理干净。检验标准每一行修改都应该能直接追溯到用户的请求。Karpathy 专门指出Agent 有时会改动或删除自己不够理解的代码和注释即使那些内容跟当前任务无关精准修改这条就是来管住这双手的。目标驱动执行是 Karpathy 认为最有杠杆效应的一条。把指令式任务转化为可验证的声明式目标。添加验证变成为无效输入编写测试然后让它们通过修复 bug变成编写重现 bug 的测试然后让它通过。多步骤任务要说明简短计划每一步都有验证检查。Karpathy 原话是LLM 非常擅长循环执行直到达成特定目标不要告诉它该做什么给它成功标准然后看着它完成。强标准让 Agent 能独立循环弱标准需要你不断澄清。这跟软件开发中先写测试再写实现是同一个逻辑只是现在你让 Agent 来执行这个循环。项目 README 里也给了很好的对照添加验证应该变成为无效输入编写测试然后让它们通过修复 bug应该变成编写重现 bug 的测试然后让它通过重构 X应该变成确保重构前后测试都能通过。从告诉它怎么做变成告诉它什么叫做好了剩下的让它自己跑。开发者社区对 Karpathy 推文的解读把问题引向了更深的层面。有人指出CLAUDE.md 文件之所以突然遍地开花跟提示词无关它们在充当 Agent 的操作系统。这带来一个关键转变从告诉模型做什么到给它目标、约束、测试和验证体系让它迭代到正确为止。有人已经开始并行运行多个 Claude Code Agent像工程团队一样分工一个负责调研一个调试一个写测试一个优化代码一个验证输出。这已经超越了 AI 辅助的范畴进入了 Agent 编排的领域。Karpathy 提到最好的 AI 工程师不再是在提示词上下功夫而是在 Agent 周围搭建系统。先写大概率正确的朴素算法再让 Agent 在保持正确性的前提下优化。把 Agent 放进浏览器 MCP 的循环里。从指令式转向声明式让 Agent 循环更久获得更大杠杆。他还提了几个开放问题值得琢磨10倍工程师和普通工程师的生产力差距会不会拉得更大借助 LLM通才是否会越来越胜过专才LLM 在微观层面的填空能力远强于宏观层面的战略判断所以通才搭配 Agent 可能比深钻一个领域的专才更有优势。LLM 编程未来是什么感觉像打星际争霸像玩异星工厂还是像演奏音乐社会有多少比例的瓶颈其实是数字知识工作装上就能用andrej-karpathy-skills 的安装很简单。用 Claude Code 的话推荐插件方式/plugin marketplace add forrestchang/andrej-karpathy-skills/plugin install andrej-karpathy-skillskarpathy-skills所有项目自动生效。也可以按项目安装一行命令把 CLAUDE.md 下载到项目根目录curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md已有项目可以追加到现有 CLAUDE.md 末尾。用 Cursor 的开发者也有对应的项目规则文件开箱即用。项目还支持自定义你可以在 CLAUDE.md 里加项目特定规则比如 TypeScript 严格模式、API 端点必须有测试之类跟四条原则合并生效。怎么判断它在起作用diff 里不必要的改动少了代码第一次就写得简洁澄清问题在实现之前就提出来了PR 干净利落没有顺手重构。这个项目倾向谨慎而非速度琐碎任务自行判断核心目标是减少非琐碎工作中代价高昂的错误。项目也做了权衡声明四条原则对琐碎任务可能过于严谨简单的拼写错误修复、显而易见的一行修改不需要走完整流程目标是减少大活儿上的失误别拖慢小活儿的节奏。andrej-karpathy-skills 做的事情就是把那些本不该让 Agent 自由发挥的部分用规则约束住让你把注意力放在真正需要人类判断的地方。你的 Agent哪条原则最缺参考资料https://github.com/multica-ai/andrej-karpathy-skillshttps://x.com/Suryanshti777/status/2057389330625339902https://x.com/karpathy/status/2015883857489522876