Andrej Karpathy,前特斯拉 AI 总监、OpenAI 联合创始人之一,近期在社交媒体上分享了他对 LLM(大语言模型)编码常见陷阱的观察。社区开发者据此整理出了一套行为准则——Karpathy Guidelines,旨在帮助开发者在使用 AI 辅助编程时减少过度设计、做到精准修改、明确成功标准。
本文源自 GitHub 开源项目 andrej-karpathy-skills,以下是完整中文解读。
核心理念:谨慎优于速度
这套准则明确指出:宁可慢一点,也不要写出过度复杂的代码。对于简单任务,可酌情灵活处理;但对于正式项目,遵循以下四大原则将显著提升代码质量。
原则一:先思考,再编码
不要假设。不要隐藏困惑。主动呈现取舍。
- 在动手实现之前,明确陈述你的假设。如果不确定,就主动提问。
- 如果存在多种理解方式,全部列出来——不要悄悄选一个。
- 如果有更简单的方案,说出来。该反驳时就反驳。
- 如果某处不清楚,停下来。说出困惑之处,然后提问。
原则二:简单至上
只写能解决问题的最少量代码,不做任何推测性设计。
- 不添加用户没要求的功能。
- 不给只用一次的代码做抽象。
- 不添加没人要求的「灵活性」或「可配置性」。
- 不为不可能发生的场景写错误处理。
- 如果你写了 200 行但 50 行就能搞定——重写它。
问自己:「一个资深工程师会认为这太复杂了吗?」如果是,就简化。
原则三:精准修改,外科手术式操作
只改你必须改的。只清理你自己制造的混乱。
修改已有代码时:
- 不要顺手「改进」相邻的代码、注释或格式。
- 不要重构没坏的东西。
- 匹配已有代码风格,即使你自己会写得更不同。
- 如果发现了无关的死代码,提一句就好——不要删它。
当你的修改产生了孤立代码时:
- 删除因你的修改而变得无用的 import、变量、函数。
- 不要删除原本就存在的死代码,除非被要求。
检验标准:每一行修改都应该能追溯到用户的原始需求。
原则四:目标驱动,循环验证
定义成功标准,循环直到验证通过。
将任务转化为可验证的目标:
- 「添加验证」→「为无效输入编写测试,然后让它们通过」
- 「修复 Bug」→「写一个能复现 Bug 的测试,然后让它通过」
- 「重构 X」→「确保重构前后测试都能通过」
对于多步骤任务,列出简要计划:
- 步骤 1 → 验证:[检查项]
- 步骤 2 → 验证:[检查项]
- 步骤 3 → 验证:[检查项]
强有力的成功标准让你能独立循环推进。模糊的标准(「让它能跑就行」)则需要不断沟通确认。
总结
Karpathy Guidelines 的核心可以概括为四句话:
- 先想清楚再动手——别假设,别隐藏困惑
- 能简单就简单——最少量代码解决问题
- 精准修改——只动该动的代码
- 用目标驱动——定义可验证的成功标准
在 AI 辅助编程日益普及的今天,这套准则不仅适用于 LLM,也是每一位开发者在日常编码中值得遵循的实践。无论你是使用 ChatGPT、Claude、Cursor 还是其他 AI 编程工具,这些原则都能帮助你获得更高质量的代码输出。
参考来源:Andrej Karpathy 原始推文 | GitHub 项目地址(MIT License)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)