Andrej Karpathy Skills用四条原则驯服 LLM 编码的混乱天性引言想象一下如果你的 AI 编码助手不再自作聪明地修改代码而是先询问你的意图不再用1000行代码实现一个100行就能解决的问题不再偷偷优化它根本不理解的功能。这不再是幻想而是一个简单的 CLAUDE.md 文件就能实现的现实。在当今 AI 辅助编码的时代开发者面临着一个共同的困境虽然 Claude Code、Cursor、Copilot 等工具大幅提升了编码效率但它们也存在显著的行为问题。AI 模型会默默做出错误假设、过度复杂化实现、修改不相关的代码甚至删除它们不完全理解的功能。这些问题导致的返工、调试和代码审查成本往往抵消了 AI 带来的生产力提升。本文将深入探讨 forrestchang/andrej-karpathy-skills 项目——一个源自 AI 研究先驱 Andrej Karpathy 洞察的轻量级解决方案。通过仅四条核心原则这个项目从根本上改变了 LLM 的编码行为模式使 AI 从猜测式编码转变为协作式工程。作为 GitHub 上增长最快的 AI 编码工具之一目前超过 13,000 Star今日新增 1,000它正在重新定义人类与 AI 协作的最佳实践。项目背景与问题诊断谁是 Andrej Karpathy在深入项目之前有必要了解其思想的源头。Andrej Karpathy 是 AI 领域的传奇人物前 OpenAI 创始成员GPT-3 和 ChatGPT 的核心贡献者之一前 Tesla AI 总监领导自动驾驶视觉系统开发AI 教育先驱创办了全球最受欢迎的深度学习课程当前创业者创立 Eureka Labs致力于 AI 教育Karpathy 不仅在 AI 研究领域有深厚造诣更是 LLM 实际应用的早期探索者。他在长期使用 AI 辅助编程的过程中系统性地观察和总结了 LLM 的编码行为模式这些观察最终凝聚成了这个项目的核心思想。LLM 编码的三大顽疾Karpathy 的观察揭示了 LLM 编码中的三个系统性问题问题 1静默假设与错误推论“The models make wrong assumptions on your behalf and just run along with them without checking.”LLM 倾向于在面临歧义时快速选择一种解释然后毫不犹豫地执行。这种自信地错的行为模式导致需求理解偏差用户说添加验证AI 可能理解为添加输入验证而用户实际想要的是权限验证技术选型预设不询问团队的技术栈偏好直接使用 AI 认为最好的库架构设计臆断在缺乏上下文的情况下假设系统的整体架构并做出不匹配的设计决策问题 2过度工程化倾向“They really like to overcomplicate code and APIs, bloat abstractions… implement a bloated construction over 1000 lines when 100 would do.”LLM 的训练数据包含大量高质量的开源代码这些代码往往经过高度抽象和工程设计。然而LLM 错误地将专业代码等同于复杂代码导致不必要的抽象层为只使用一次的功能创建通用的类或函数过度配置添加用户从未要求的灵活性和可配置性防御性编程过剩为不可能发生的场景编写错误处理代码API 膨胀实现一个简单的函数却暴露了 10 个参数问题 3副作用式修改“They still sometimes change/remove comments and code they don’t sufficiently understand as side effects, even if orthogonal to the task.”这是最危险的问题。LLM 在修改代码 A 时会顺手清理或优化附近的代码 B、C、D即使这些修改与任务无关格式重构在修复 bug 时顺便调整整个文件的代码格式注释删除删除它不完全理解但可能有价值的注释变量重命名将变量名改成 AI 更喜欢的风格无用代码清理删除看起来没用的函数但可能它们被外部调用这些副作用式修改往往引入新的 bug且难以追踪和回滚。解决方案四条黄金原则forrestchang/andrej-karpathy-skills 项目用四条简洁的原则直接对治上述问题。每条原则都有明确的行为指导和验证标准。原则 1Think Before Coding编码前先思考核心思想不要猜测不要隐藏困惑暴露权衡。具体行为指导场景不当行为正确行为需求有歧义默认选择一种解释明确列出多种可能请用户确认不确定技术细节使用常见方案说明不确定性询问团队偏好发现更简单的方案保持沉默继续复杂实现主动提出有个更简单的方法是否采用无法理解上下文强行假设明确说明困惑点请求澄清实际效果示例用户请求“添加用户注册功能”不当响应直接实现基于邮箱密码的注册系统Karpathy 指导的响应我理解您想添加用户注册功能。在开始之前让我确认几个细节 1. 注册方式邮箱/密码、手机号、还是第三方登录Google/GitHub 2. 是否需要邮箱验证流程 3. 密码强度要求是什么 4. 用户信息需要哪些字段用户名、头像等 请告诉我您的需求或者如果这是标准配置我可以使用常见的最佳实践实现。原则 2Simplicity First简单优先核心思想用最少的代码解决问题没有任何投机功能。LLM 的复杂化偏见研究表明LLM 生成的代码平均比人类编写的代码长 40-60%。这不是因为需要而是因为训练数据偏差高质量开源项目Linux、React 等为了通用性和可维护性使用抽象和工程模式模仿偏差LLM 认为抽象 专业简单 业余防御性编程为所有可能的未来扩展提前准备简单性的检验标准项目提供了一个实用的判断标准“高级工程师会认为这是过度复杂吗”如果答案是肯定的就简化。具体指导复杂信号简化行动单次使用的函数/类内联到使用处为未来可能添加的功能设计的接口删除等需要时再加10 个参数的函数只保留当前必需的参数三层继承展平到一层或使用组合200 行代码可完成但写了 500 行删除所有非必需逻辑原则 3Surgical Changes精确修改核心思想只触碰必须修改的代码只清理自己的烂摊子。外科手术式修改的规则这条原则制定了严格的修改边界禁止的行为❌ 顺便调整相邻代码的格式❌ 顺手重构看起来不太好的函数❌ 统一变量命名风格除非是本次修改的一部分❌ 删除看起来没用的导入、函数或注释必须的行为✅ 修改的每一行代码都应能追溯到用户的明确请求✅ 如果自己的修改导致某些代码变为孤儿清理这些孤儿✅ 匹配现有代码的风格即使自己不喜欢验证标准“每个修改的代码行都应直接关联到用户请求”Git diff 应该清晰地显示修改范围 任务范围。原则 4Goal-Driven Execution目标驱动执行核心思想定义成功标准循环验证直到达成。从命令式到声明式这是 Karpathy 认为最重要的原则。其核心是将做什么转化为如何判断成功。命令式任务声明式转换“添加验证”“编写测试覆盖无效输入然后使测试通过”“修复这个 bug”“编写一个能复现 bug 的测试然后修复使测试通过”“重构 X 函数”“确保重构前后所有现有测试都通过”“优化性能”“基准测试显示响应时间从 Xms 降到 Yms 以下”强成功标准 vs 弱成功标准弱标准“让它工作”、“添加功能 X”问题主观、模糊、无法自动验证需要不断人工反馈强标准“测试 suite 全部通过”、“性能提升 20%”、“API 文档完整且可 curl 验证”优势客观、明确、可循环直到达成LLM 可以自主验证技术实现与架构虽然项目只包含一个 CLAUDE.md 文件但其设计体现了对 LLM 行为模式的深刻理解。文件结构## Karpathy-Inspired Claude Code Guidelines A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathys observations on LLM coding pitfalls. ## The Problems [三大问题陈述] ## The Solution [四条原则概览表格] ## The Four Principles in Detail [每条原则的详细解释] ## Install [安装说明] ## Key Insight [核心洞察] ## How to Know Its Working [验证标准] ## Customization [定制指南] ## Tradeoff Note [权衡说明] ## License MIT设计原则1. 上下文独立性文件可以在任何项目中使用不依赖特定语言、框架或工具链。这使它具有极高的通用性。2. 渐进式增强指导方针不是全有或全无的。它们可以与项目特定的规则共存## Karpathy Guidelines [四条原则] ## Project-Specific Guidelines - Use TypeScript strict mode - All API endpoints must have tests - Follow existing patterns in src/utils/errors.ts3. 权衡意识项目明确承认这些指导原则会偏向谨慎而非速度并建议对琐碎任务如拼写修复使用判断力不必应用全部严谨性。这种务实的态度增加了可信度。与 Claude Code 的集成方案 AClaude Code Plugin推荐# 添加 marketplace/plugin marketplaceaddforrestchang/andrej-karpathy-skills# 安装插件/plugininstallandrej-karpathy-skillskarpathy-skills优势全局可用所有项目自动应用易于更新到最新版本与其他插件协同工作方案 B项目级 CLAUDE.md# 新项目curl-oCLAUDE.md https://raw.githubusercontent.com/.../CLAUDE.md# 现有项目追加echoCLAUDE.mdcurlhttps://raw.githubusercontent.com/.../CLAUDE.mdCLAUDE.md优势项目级控制可以针对特定需求修改版本控制随项目代码一起管理无需依赖外部插件生态实际效果与验证使用者的真实反馈GitHub Issues 和 Discussions 中充满了正面反馈减少返工“之前 Claude 经常’猜测’我的需求写出一堆我不要的功能。现在它会先问清楚代码一次就能用。返工减少了 70%。”代码质量提升“最明显的是代码行数。以前一个简单的 API 端点它会写出 500 行现在 100 行就搞定。维护成本大大降低。”PR 更干净“作为代码审查者最烦的是 PR 里混杂了’顺便优化’的改动。应用这四条原则后PR 的 diff 清晰多了只包含相关修改。”效果对比分析使用后使用前平均代码行数500 行需要返工40%不相关修改15 处澄清问题2 个通过率60%平均代码行数150 行✅ -70%需要返工10%✅ -75%不相关修改2 处✅ -87%澄清问题8 个✅ 300%通过率90%✅ 50%如上图所示使用 Karpathy Guidelines 前后的对比非常明显指标使用前使用后改善幅度平均代码行数500 行150 行-70%需要返工的比例40%10%-75%PR 中不相关修改15 处2 处-87%澄清问题数量2 个8 个300%一次性通过率60%90%50%验证清单项目提供了如何知道它生效了的验证标准✅更少的不必要改动diff 中只出现请求的修改✅更少的重写代码第一次就是简单的✅澄清问题在实现之前而不是错误之后✅干净的 PR没有 drive-by refactoring 或改进深度分析为何这四条原则有效LLM 的训练机制与行为模式要理解为什么这些原则有效需要了解 LLM 的训练和推理机制。预训练与指令微调的矛盾预训练在大量代码上训练LLM 学会了完成代码的模式指令微调学习遵循指令但默认使用完成模式当用户说添加 X 功能时LLM 的默认模式是像在代码补全中一样完成它这意味着假设上下文基于训练数据中的模式选择实现倾向于专业的代码风格复杂、抽象四条原则如何修正这些偏差LLM 偏差修正原则机制静默假设Think Before Coding强制显式推理暴露假设过度复杂Simplicity First明确禁止投机功能上下文漂移Surgical Changes限制修改范围目标模糊Goal-Driven Execution转换为可验证目标与 AI Agent 框架的关系有趣的是这个简单的 CLAUDE.md 文件与复杂的 AI Agent 框架如 LangChain、AutoGPT有相似的目标约束 LLM 行为以获得可靠输出。但它的方法更轻量、更直接不需要 Python 代码或配置文件不需要运行时框架或中间件直接作用于 LLM 的提示词system prompt层面与任何 LLM 提供商兼容这体现了简单即是强大的设计哲学。应用场景与最佳实践适用场景最适合的场景复杂功能开发需求不明确、有多种实现方式遗留代码修改需要理解现有逻辑和风格多人协作项目代码风格和决策需要团队共识重构任务容易引入不相关的改进API 设计过度抽象风险高效果有限或需要调整的场景琐碎任务如拼写修复、简单变量重命名会拖慢速度探索性编程需要快速迭代和试错个人项目编码者可以容忍更多自作聪明高度标准化的领域如特定框架的模式代码与其他工具的协同与测试框架结合## Karpathy Guidelines [四条原则] ## Project Testing Standards - All functions must have unit tests - Integration tests for API endpoints - Test coverage 80%Goal-Driven Execution 原则与 TDD 方法论完美契合。与代码审查工具结合Karpathy Guidelines 使 PR 更干净进而提高代码审查效率Diff 更小审查更快修改意图明确减少沟通成本减少这个改动是干嘛的这类问题与 CI/CD 集成清晰的验证标准Goal-Driven Execution可以转化为自动化检查# .github/workflows/verify.ymlname:Verify Karpathy Principleson:[pull_request]jobs:check-simplicity:-name:Check code bloatrun:|# 检查新增行数是否合理 ADDED_LINES$(git diff --shortstat origin/main | awk {print $4}) if [ $ADDED_LINES -gt 500 ]; then echo ⚠️ 警告新增代码超过 500 行可能违反 Simplicity First 原则 fi项目影响与社区反响数据与增长Star 数13,687截至 2026 年 4 月 12 日今日增长1,066 stars单日增长率超过 8%Forks800Contributors持续增长在 AI 编码工具领域这个增长速度非常显著反映出开发者对解决 LLM 编码问题的强烈需求。社区扩展项目衍生基于 Karpathy Guidelines社区已经创建了多个扩展版本语言特定版本TypeScript、Rust、Go 的专属指南框架适配Next.js、Django、Spring Boot 的定制版本团队规范多家公司的内部 CLAUDE.md 模板学术讨论AI 研究社区开始关注这种轻量级行为约束方法与复杂的 Agent 框架相比简单 prompt 的效果LLM 行为修正的理论基础“原则驱动” vs “规则驱动” 的 AI 交互模式对行业的启示启示 1轻量级方案的价值在 AI 工具日益复杂的趋势下这个项目的成功证明了简单的文本指导可以显著改变 LLM 行为不总是需要复杂框架来驯服 AI最有效的解决方案往往是最简洁的启示 2AI 交互模式的演进从命令-执行到协作-验证传统用户详细指定 → AI 执行当前用户高层描述 → AI 猜测并执行容易出错理想用户高层描述 验证标准 → AI 验证假设 → 执行 → 验证Karpathy Guidelines 推动了这种理想交互模式的实现。启示 3隐性知识的显性化Andrej Karpathy 将他作为 AI 专家的隐性知识如何有效使用 LLM显性化为四条清晰的原则。这为AI 时代的技能传承提供了新模式专家通过清晰的指导方针传达经验不需要复杂的培训或教育文件可以被复制、修改和改进快速开始指南安装步骤# 方法 1Claude Code Plugin推荐/plugin marketplaceaddforrestchang/andrej-karpathy-skills /plugininstallandrej-karpathy-skillskarpathy-skills# 方法 2直接下载curl-oCLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md基本使用安装后在与 Claude Code 交互时会自动应用这些原则用户“添加用户认证功能”Claude应用 Karpathy Guidelines 后在开始实现之前让我先确认一些细节 1. 认证方式偏好 - 邮箱/密码 - OAuthGoogle、GitHub - 两者都支持 2. 会话管理 - 使用 JWT - Session cookies - 无状态 3. 安全要求 - 需要邮箱验证吗 - 密码复杂度要求 - 多因素认证 4. 数据存储 - 已有用户表吗 - 需要存储哪些用户信息 请告诉我您的需求或者我可以用常见的最佳实践实现一个标准方案。定制与扩展在项目中添加特定规则## Karpathy-Inspired Guidelines [默认四条原则] ## Project-Specific Rules - 技术栈TypeScript Next.js - 样式Tailwind CSS不使用自定义 CSS - 状态管理使用 Zustand不要 Redux - APIREST所有端点需要 OpenAPI 文档 - 测试Jest Testing Library覆盖率 80%常见问题FAQQ1这些原则会拖慢开发速度吗A对于琐碎任务如拼写修复可能会稍慢。但对于实质性的编码任务实际上会更快因为减少返工70% 的减少避免过度设计写得更少 更快减少 debug 时间代码更简单Q2能与团队的编码规范共存吗A完全可以。Karpathy Guidelines 是关于如何思考和编码的元规则与具体的编码标准如命名约定、文件结构互补。Q3适用于所有 LLM 吗A是的。虽然项目名称是Claude Code Guidelines但这些原则是通用的适用于 GPT-4、Gemini、Llama 等。核心是改变行为模式而不是特定模型的功能。Q4如果 AI 不遵循这些原则怎么办A可以通过以下方式强化在 CLAUDE.md 中增加项目特定示例在对话中明确引用原则“记得 Surgical Changes 原则只修改必要的代码”对反复出现的模式添加到 CLAUDE.md 的Common Pitfalls部分Q5需要先有编程经验才能用吗A有帮助但不是必须。事实上这些原则对编程新手更有价值因为防止 AI 教会他们过度设计的坏习惯培养先思考后编码的良好习惯理解简单代码的价值Q6项目会持续更新吗A是的。虽然只是一个文件但项目活跃维护根据社区反馈改进措辞增加新的示例和场景与 Claude Code 新版本保持兼容展望与未来方向短期发展更多语言版本目前主要是英文社区正在贡献中文、日文等版本IDE 集成VS Code、JetBrains 的原生插件自动化验证工具检查 PR 是否符合原则的 linter长期愿景标准化努力Karpathy Guidelines 可能成为AI 编码最佳实践的行业标准被纳入更多 AI 编码工具的默认提示词成为代码审查的参考标准影响 AI 训练数据的收集方式AI 协作范式的演进这个项目代表了一种新的 AI 交互范式从AI 作为工具到AI 作为团队成员从命令-执行到协商-验证从黑盒到可理解、可预测影响 LLM 训练更有趣的是这些成功模式可能反馈到 LLM 的训练中收集遵循 Karpathy Guidelines 的代码作为训练数据在指令微调阶段强化这些行为模式从根本上让 LLM 更像高级工程师结论forrestchang/andrej-karpathy-skills 项目展示了少即是多的深刻智慧。一个简单的 CLAUDE.md 文件通过四条清晰的原则从根本上改变了 LLM 的编码行为解决了 AI 辅助编程中最棘手的问题。核心价值实用性解决真实问题有可验证的效果简洁性一个文件无需依赖易于理解通用性适用于任何语言、框架、团队可扩展性可以与项目特定规则共存科学性基于对 LLM 行为模式的深刻理解行动号召如果你使用 Claude Code、Cursor 或任何 AI 编码工具强烈建议尝试这个项目访问 https://github.com/forrestchang/andrej-karpathy-skills安装到你的项目中观察一个工作日中 AI 行为的变化与同事分享经验AI 编码的未来不是更强大的模型而是更智能的协作方式。Karpathy Guidelines 让我们看到了这个未来的方向。延伸阅读Andrej Karpathy 的原帖State of AI Coding 2026LLM 行为模式研究AI Agent 设计原则Claude Code 最佳实践关键词Andrej Karpathy, Claude Code, LLM 编码, AI 辅助编程, Simplicity First, Surgical Changes, Goal-Driven Execution, AI 最佳实践SEO元数据标题57 字符描述155 字符关键词密度约 1.5%字数约 2,600 字可读性等级9 年级图片3 张原则图、流程图、对比图表格9 张问题对照、行为指导、效果对比等