AI编程最大的问题不是能力不够,是没有边界感
我跟你说,用AI写代码这事儿,我踩过的坑比你想象的多。
去年有个项目,我让Claude帮我重构一个”屎山”模块。我想着简单嘛,不就是把一堆乱七八糟的代码整理干净吗?
结果你猜怎么着?
AI给我整出了一个抽象工厂+建造者模式+策略模式的三层嵌套架构。代码从200行变成了800行。我盯着屏幕看了半天,心里只有一个想法:这玩意儿,我还不如用原来的屎山呢。
后来我才知道,这玩意儿有个专门的名字,叫AI过度设计综合征。

上个月看到OpenAI创始成员Karpathy的一个观点,我一拍大腿:他说得太对了。
Karpathy的原话是这么说的(我直接翻译成人话):
“AI特别喜欢把代码搞复杂,API膨胀,抽象层级乱堆。一件100行能搞定的事儿,它能给你整出1000行来。”
他还说:
“它们真的不管理自己的困惑,遇到歧义不会问,不会把理解不了的代码标记出来,甚至会顺手改掉跟任务无关的注释和代码。”
翻译成大白话就是:AI写代码,眼里只有”能做什么”,没有”不该做什么”。
所以今天我想跟你聊一个GitHub开源项目,叫Andrej Karpathy Skills(项目地址:https://github.com/forrestchang/andrej-karpathy-skills)。
它的功能很简单:给Claude Code等AI编程助手套上一套”工程缰绳”,让AI知道什么不该做。
截至2026年4月27日,这个项目在GitHub上已经热到PR排到113号了,还有多语言翻译、Codex支持、Trae IDE支持等各种社区贡献。
这个项目到底在解决什么问题?
先说说Karpathy总结的AI编程四大原罪:
第一,AI不假设不隐藏困惑。 它默认自己完全理解了你的需求,遇到歧义也不问,直接按照自己猜的意思往下写。
第二,AI特别喜欢把简单问题复杂化。 写个配置读取函数,它能给你整出一套完整的设计模式。
第三,AI会”顺手”改进代码。 你让它修一个bug,它可能顺手把旁边的代码也改了,改完才发现这个”顺手”改的东西导致另一个功能挂了。
第四,AI不爱验证。 写完代码就跑,不测试,不确认是不是解决了你的真实问题。
四大核心原则:AI的”工程缰绳”
这个项目本质上是把Karpathy的观点转化成了一套工程约束规则,Claude Code加载之后,行为会发生根本性变化。
原则一:Think Before Coding(先想再做)
AI收到任务后,不是直接开干,而是先显式化推理:
“我理解你的需求是这样的:___。有几个地方我不太确定,想先跟你确认一下:1)… 2)…”
举个例子。你说”帮我优化一下这个函数”,AI不会直接开搞,而是会问:
“你说的’优化’是指性能优化、代码可读性优化、还是内存占用优化?另外,这个函数目前被3个地方调用,优化后需要保证兼容性吗?”
这才是正确的打开方式。我之前踩的坑,就是AI跳过这一步,直接按自己理解的”优化”去改了。
原则二:Simplicity First(极简优先)
这个原则要求AI遵循”没有要求的功能不加“的铁律:
-
没有被要求的功能,坚决不加 -
单次使用的代码,不抽象 -
不预设”万一以后要扩展”的灵活性
项目里提了一个资深工程师测试法:如果资深工程师说”这代码太复杂了”,AI就必须简化。200行能变成50行,那就重写。
说实话,这点我太有共鸣了。之前我让AI帮我写一个HTTP请求的封装,它愣是给我整出了一个完整的SDK,还带链路追踪、熔断降级、重试策略… 我就想要个fetch啊。
原则三:Surgical Changes(手术刀式修改)
这个原则要求AI精准打击,只改必须改的:
-
不”顺手”改进相邻代码 -
不重构没坏的东西 -
发现死代码,只提不删(删的权力留给你) -
每一行改动都能追溯到用户的原始请求

这个原则简直是对付AI顺手改代码的特效药。我之前遇到最离谱的一次,是让AI修一个拼写错误,它把整个文件的格式都重新排了一遍,还”顺便”删了几个它认为没用的空行。结果上线后发现,那几个”没用的空行”其实是某行代码的临时调试开关。
原则四:Goal-Driven Execution(目标驱动执行)
这是Karpathy最核心的观点,原话是:
“LLMs are exceptionally good at looping until they meet specific goals. Don’t tell it what to do, give it success criteria and watch it go.”
翻译:告诉AI你要什么结果,而不是告诉它做什么。
比如:
|
|
|
|---|---|
|
|
|
|
|
|
多步任务呢?AI应该先出计划,列出步骤和验证点,等你确认后再执行。
怎么安装?
有两种方式,推荐第一种:
方式一:Claude Code插件(推荐)
在Claude Code里输入:
/plugin marketplace add forrestchang/andrej-karpathy-skills
然后再输入:
/plugin install andrej-karpathy-skills@karpathy-skills
方式二:项目级配置
下载CLAUDE.md到你的项目根目录,或者把它的内容追加到你已有的CLAUDE.md里。
怎么知道生效了?
你装完之后,如果发现AI开始有这些变化,说明”缰绳”套上了:
- 开始问澄清问题了
,而不是直接开干 - 复杂任务先出计划
,让你确认 - 代码明显变短、变简洁
- PR diff更干净
,没有”顺手”改动
说说我自己的感受
我装了大概两周了,最大的感受是:和AI对话的节奏变了。
以前是:提需求 → AI一顿输出 → 发现不对 → 改改改 → 还是不对 → 改改改 → 算了凑合用
现在是:提需求 → AI问问题 → 我确认 → AI出计划 → 我再看一遍 → AI执行 → 基本一遍过
省时间是一方面,更重要的是心理负担小了。以前用AI写代码,总有一种”不知道它会整出什么幺蛾子”的不安全感。现在有了这四把”手术刀”,至少知道AI不会乱来。
独特观点:最贵的代码是你没要求AI写的那行
我想特别强调一个观点,这是我认为这个项目最核心的价值:
最贵的代码,是你没要求AI写的那行。
AI”顺手”加的东西,往往是bug的来源。一次看似无害的”顺手重构”,可能毁掉一个稳定运行三年的模块。AI不知道什么不能改,因为它没有边界感。
Karpathy Skills本质上是在教AI”什么时候不该做“。这比告诉它”该做什么”重要一百倍。
总结
Andrej Karpathy Skills这个开源项目,解决的不是AI编程的能力问题,而是边界感问题。它让AI学会:
-
先问清楚再动手 -
简单的事情简单做 -
只改必须改的 -
按目标执行而不是按指令执行
GitHub地址:https://github.com/forrestchang/andrej-karpathy-skills
PR数量:113号(截至2026年4月27日)
如果你用Claude Code,我强烈建议你试试。
关注yesno讲AI
不讲难懂技术,只聊普通人能用的AI ❤️
数据来源:GitHub项目页面(2026年4月27日);Karpathy原话来自项目README

夜雨聆风