227k星的Karpathy技能库:109个PR在给“不要加功能”的文件加功能
一个基于Karpathy对LLM编码陷阱观察的GitHub仓库,用四个原则教Claude写代码。讽刺的是,它自己收到了109个open PR,而它的原则第一条就是“不要添加未被要求的功能”。
GitHub上有个叫 andrej-karpathy-skills 的仓库,227k stars。它做的事情很简单:把 Andrej Karpathy 关于 LLM 写代码时犯的毛病的观察,提炼成一个 CLAUDE.md 文件,用来指导 Claude Code 的行为。
Karpathy 之前发推说过几个问题:模型会替你做错误的假设然后一路跑下去,不管理自己的困惑,不寻求澄清,不表面化不一致,不给出权衡,该反驳的时候不反驳;它们喜欢把代码和 API 过度复杂化,膨胀抽象,不清理死代码,100 行能搞定的事非要写 1000 行;它们有时还会修改或删除自己没完全理解的注释和代码,即使跟任务无关。
这个仓库把这些问题归纳成了四个原则,写进一个文件里:
- Think Before Coding:不要假设,不要隐藏困惑,把权衡摆出来。不确定就问,有歧义就列出多种解释,有更简单的方案就反驳,困惑时就停下来。
- Simplicity First:用最少的代码解决问题,不写任何推测性的东西。不加没要求的功能,不为单次使用写抽象,不提供没要求的“灵活性”,不为不可能的场景写错误处理。如果 200 行能改成 50 行,就重写。
- Surgical Changes:只碰必须碰的,只清理自己制造的麻烦。不“改进”相邻的代码、注释或格式,不重构没坏的东西,匹配现有风格。如果发现无关的死代码,提一嘴,别删。
- Goal-Driven Execution:定义成功标准,循环直到验证通过。把“加验证”变成“为无效输入写测试,然后让它们通过”;把“修 bug”变成“写一个复现它的测试,然后让它通过”。
但最有意思的不是这个文件本身。在 Niels Rogge 发推介绍这个仓库后,Daniel Lenton 在下面回复:“109 open PRs on a file that says no features beyond what was asked”。一个教人不要过度设计的指南,自己却面临 109 个添加功能的 PR 请求。这大概是 LLM 时代最应景的黑色幽默。
README 里明明白白写着“No features beyond what was asked”,然后人们争先恐后地给它加功能。就像给“极简主义”写了一本书,每个读者都想往书里塞一章。
发布时间: 2026-11-01 07:44