在AI辅助编程日益普及的今天,大型语言模型(LLM)如Claude展现出了惊人的代码生成能力,但也暴露出一系列棘手的系统性缺陷。AI研究员Andrej Karpathy深刻指出,模型常常在未明确需求的情况下替开发者做决定,倾向于过度工程化,甚至在不经意间破坏原有代码结构。
针对这些痛点,开发者 forrestchang 创建了 andrej-karpathy-skills 项目。该项目通过一个核心配置文件 CLAUDE.md,将Karpathy的观察转化为一套可执行的行为准则,旨在引导LLM产出更可靠、简洁且专注的代码。
一、 项目作者与能力背景
该项目的作者 forrestchang 展现出了卓越的工程素养:
- 深刻的洞察力:他精准捕捉并提炼了Karpathy关于LLM编程缺陷的理论,将其归纳为四大核心原则。
- 工程化落地能力:他没有止步于理论,而是将其封装为具体的开发者工具(Claude插件、规则文件),极大降低了使用门槛。
- 生态贡献:作为开源社区活跃的贡献者(同时也是Multica平台的作者),他致力于提升整个AI编程生态的效率与质量。
二、 四大核心原则:对抗AI的编码陋习
项目针对LLM常见的“幻觉”与“臃肿”问题,制定了以下四项核心原则:
1. 编码前思考 (Think Before Coding)
解决痛点:模型盲目假设,不懂装懂。
核心要求:不假设、不隐藏困惑、揭示权衡。
实践:明确要求模型在不确定时必须提问,展示多种可能性而非私自抉择,并在发现更简单方案时主动提出异议。
2. 简单性优先 (Simplicity First)
解决痛点:过度设计,200行代码解决50行能搞定的事。
核心要求:用最少的代码解决问题,不做推测性开发。
实践:严禁添加未要求的功能、为单次使用创建抽象、或引入不必要的“灵活性”。如果资深工程师认为代码过于复杂,就必须重写。
3. 外科手术式更改 (Surgical Changes)
解决痛点:编辑时顺手“改进”无关代码,引入副作用。
核心要求:只动必须动的地方,只清理自己制造的烂摊子。
实践:不重构没坏的代码,严格匹配现有风格。仅移除因本次改动产生的“孤儿代码”(如未使用的导入),不擅自删除原有的死代码。
4. 目标驱动执行 (Goal-Driven Execution)
解决痛点:缺乏验证标准,导致结果不可控。
核心要求:定义可验证的成功标准,循环工作直至达标。
实践:将指令转化为测试。例如,“修复Bug”应转化为“先写一个复现Bug的测试,再修复它”。对于多步骤任务,必须先列出含验证点的计划。
三、 如何应用这些技能
项目提供了灵活的集成方式,以适应不同的开发场景:
1. 全局安装(推荐):Claude Code 插件
这是最便捷的方式,安装后将在所有项目中生效。
1 | # 1. 添加插件市场源 |
2. 项目级安装:CLAUDE.md 文件
若仅需在特定项目中启用,可将规则写入项目根目录。
1 | # 新项目:直接下载文件 |
注:项目也提供了适用于Cursor编辑器的规则文件,实现跨IDE的统一规范。
四、 预期效果与总结
当这套指南生效时,你将明显感受到协作质量的提升:
- Diff更干净:不必要的格式改动和无关代码修改显著减少。
- 代码更精简:因过度复杂化导致的重写次数降低。
- 沟通更高效:AI会在写代码前主动提出澄清问题,而非事后补救。
这套指南被设计为偏向谨慎(Cautious over Speed),对于琐碎任务(如改错字)可灵活跳过。但对于严肃的工程任务,它无疑是减少高昂错误、提升代码质量的坚实防线。