乐于分享
好东西不私藏

给 AI 编程助手加了 4 条准则,它终于不乱改代码了

给 AI 编程助手加了 4 条准则,它终于不乱改代码了
很多人用 AI 编程助手,最常遇到的问题不是“它不会写代码”。
恰恰相反,是它太敢写了。
你让他修改一个功能点,他把认为有问题的地方都修改了,甚至还增加了其他的功能效果,并且你还不知道。
AI 编程助手最大的问题,不是能力不足,而是边界不足。
01
AI 缺的不是能力,而是边界
写代码不是单纯把功能做出来。
在真实项目里,代码修改还要考虑很多事情:
  • 改动范围是否可控
  • 方案是否足够简单
  • 是否影响已有逻辑
  • review 成本是否过高
  • 后续维护是否变复杂
  • 有没有验证修复结果
而 AI 最容易失控的地方,恰好就在这里。
它经常会在需求还没完全明确时就开始写。它经常会把一个小问题做成大改动。它经常会在用户没要求的情况下顺手重构。它经常会告诉你“已经修复”,但没有给出验证依据。
这就导致一个结果:
AI 生成的代码越多,人类 review 的压力越大。
你原本是想用 AI 节省时间。结果最后花更多时间检查它到底改了什么。
所以,一个真正好用的 AI 编程助手,不应该只是“会写代码”,它需要一套边界,命令他干什么就只干什么。
02
给 AI 编程助手加了一套“边界协议”——Karpathy 准则
这套协议可以概括成四句话:
不确定,先问。能小改,不大改。非必要,不扩散。写完后,要验证。
这四句话,基本覆盖了 AI 编程助手最常见的失控场景。
它不是为了限制 AI 的能力。而是为了限制 AI 的失控。
1. 不确定,先问
很多需求本身就是模糊的。
比如你对 AI 说:
帮我优化一下这个接口。
这里的“优化”,其实可能有很多种意思。如果 AI 不问清楚,直接开始改,本质上就是在猜。
所以第一条边界是:当目标不明确时,AI 必须先指出不确定点,并向用户确认。
这会让 AI 从“假装自己懂了”,变成“先确认自己理解对不对”。
2. 能小改,不大改
AI 很容易过度设计。
明明一个判断条件就能修复的问题,它可能抽象出一套策略模式。明明 20 行代码能解决的问题,它可能写成 100 行。明明局部修改就够了,它可能重新组织整个模块。
所以第二条边界是:
优先选择能解决当前问题的最小方案,不提前为想象中的未来写复杂代码。
好用的 AI 编程助手,不应该总想着“把系统设计得更完美”。
它应该先问:
有没有更小、更直接、更安全的改法?
3. 非必要,不扩散
这是 AI 编程助手最让人头疼的地方。
你让它修一个按钮,它顺手改了组件结构。你让它补一个条件,它顺手重命名了一堆变量。你让它修一个 bug,它顺手格式化了整个文件。你让它改一段逻辑,它顺手删除了它认为“不重要”的代码。
这些改动不一定错。
但问题是:它们扩大了本次任务的风险。
软件工程里,改动范围越大,不确定性越高。不相关的改动越多,review 越困难。review 越困难,问题越容易漏掉。
所以第三条边界是:
每一处改动,都必须能对应到当前任务;对应不上的,就不要改。
4. 写完后,要验证
很多 AI 编程助手完成任务后,会给你一句:
已经修复。
但在工程里,这句话是不够的。修 bug 的时候,AI 不应该只告诉你“我改了哪里”。
它还应该说明:
  • 原问题是什么
  • 根因是什么
  • 做了什么最小修改
  • 如何验证
  • 验证结果是什么
一个更靠谱的流程应该是:
复现问题 → 定位原因 → 最小修改 → 运行测试 → 说明结果
这样你才能判断它是真的解决了问题,还是只是写了一段看起来合理的代码。
所以第四条边界是:不要只交付代码,还要交付验证依据。
03
同一个需求,普通 AI 和加了准则的 AI 差别有多大
为了验证这套边界协议到底有没有用,我做了一个简单的小测评。
我给 AI 编程助手同一个任务:
做一个脚本,功能为用Scanpy做单细胞QC、标准化、降维、聚类、marker鉴定
普通 AI 的表现
它给我的代码共428行
加了准则之后的 AI 表现
使用之后的代码只有164行
让AI给我对比一下这两个代码谁更好,scanpybasicpipeline.py是普通AI,scanpy_pipeline.py是使用准则后的AI
不管是从输入格式,参数设置,QC处理,标准Scanpy 流程完整性等各方面,使用了Karpathy 准则的AI输出的代码都更胜一筹。
04
如何安装Karpathy 准则?
这里我们需要准备两个工具,OKClawKarpathy 准则 skills
1.安装OKClaw
进入OKClaw官网选择合适的版本下载并安装。
OKClaw官网:https://okclaw.dftianyi.com
2.安装Karpathy 准则 skills
打开OKClaw,输入指令
帮我安装https://github.com/forrestchang/andrej-karpathy-skills
3.使用Karpathy 准则 skills
在输入框内“@”Karpathy 准则 skills,再输入你的指令就可以开始使用了。
05
最后
以前我总觉得,AI 编程助手越强越好。现在我越来越觉得,真正好用的 AI 编程助手,不是写最多代码的那个。而是能用最小必要改动,把问题可靠解决的那个。
它应该知道:什么时候该问。什么时候该停。什么时候该少改。什么时候必须验证。
我们要的不是一个无限发挥的 AI,我们要的是一个能可靠协作的工程搭档。
AI 不缺油门,缺的是刹车,而Karpathy 准则,就是给 AI 编程助手装上的刹车。

关注我,学习更多ai知识~OKClaw:https://okclaw.dafoai.com