乐于分享
好东西不私藏

让AI编程助手说人话、做事更精准:一次配置优化记录

让AI编程助手说人话、做事更精准:一次配置优化记录

凌晨一点多,我在给银角派任务。

银角是我搭的一套 AI 编程助手体系里的执行节点——接任务、干活、汇报。本质上是个 sub-agent ,听我调度。按理说应该挺顺的。但那天我让它写一个简单的数据校验逻辑,它给我返了 300 多行。里面有接口抽象、工厂模式、策略模式的实现。

问题不在于它做不出来。而在于它每次都在做更多。

这不是它的问题。这是所有 LLM 编程助手骨子里的倾向:默默假设、过度设计、动不该动的东西。

Andrej Karpathy 前段时间发过一条推,直接点名这个问题:

“The models make wrong assumptions on your behalf and just run along with them without checking. They don’t manage their confusion, don’t seek clarifications, don’t surface inconsistencies, don’t present tradeoffs, don’t push back when they should.”

Karpathy 说了四个核心问题:
– 闷头假设,不对就猜
– 过度工程, 200 行能搞定写 1000 行
– 顺手改掉不该改的代码
– 没有清晰的成功标准,做完不知道自己干对了没有

我一看,这不是银角和 Opencode 都有的毛病吗。

所以今天花了点时间,把两套东西都配置了一遍。

方案一: Karpathy 编程四原则

这套原则来自 forrestchang/andrej-karpathy-skills[1],本质是一份 CLAUDE.md 的行为准则。我把核心内容拆成了四条。

原则 1 : Think Before Coding (动手前先想)

不假设。不隐藏困惑。表面权衡。

具体来说:实施前要把假设说清楚,不确定就先问,存在多种解释要呈现出来不要默默选一个,发现更简单的方案要说出来,遇到不清楚的地方停下来问。

AI 编程助手最常见的问题就是选了一个解释然后闷头干,结果方向就偏了。这条原则就是硬性要求它先把假设摆出来。

原则 2 : Simplicity First (简洁优先)

最小代码解决问题。不做投机性编码。

不加需求之外的功能,不为单次使用的代码创建抽象,不加没有被要求的”灵活性”,不处理不可能出现的错误场景。如果 200 行能搞定就不写 1000 行。

Karpathy 的原话是:”They really like to overcomplicate code and APIs, bloat abstractions, don’t clean up dead code.”

银角之前给我返 300 行工厂模式,就是这个问题的典型。

原则 3 : Surgical Changes (精准修改)

只改必须改的。只清理自己造成的混乱。

编辑现有代码时:不要顺手改进相邻代码、注释或格式,不要重构没有坏的东西,匹配现有风格。发现无关死代码,提一下但不删除。

自己修改造成的孤儿(未使用的 import/变量/函数)要删,事前已存在的死代码不删。

检验标准:每一行改动都能追溯到用户的原始需求。

原则 4 : Goal-Driven Execution (目标驱动执行)

定义成功标准,循环验证直到达成。

“加验证”→”先写无效输入的测试,再让测试通过”,”修 bug”→”先写能复现 bug 的测试,再让测试通过”,”重构 X”→”确保重构前后测试都通过”。

多步任务要给计划:每一步写清楚,验证方式写清楚。

方案二: Talk-Normal 回复准则

编程原则管的是做事风格,但还有个并行的问题: AI 说话太啰嗦。

“当然可以!””值得注意的是””让我们一起来看看”——这些话刷一遍就够烦的了,更别提那些”这不是 X ,而是 Y”的否定式对比结构,一句话能说清楚的事非要先否定再纠正。

Talk-normal 就是来解决这个的。核心规则就几条:

先给答案,再补充上下文。是否问题先回答,一句话理由。比较问题给推荐和理由,不做平衡 essay 。代码给代码加使用示例,不需要”当然可以!这里有…”。

禁止否定式对比结构。不说”这不是 X ,而是 Y”,不说”真正的创新者是 X ,而不是 Y”。只陈述正面结论。

禁止总结性收尾语。不说”一句话总结”、”In conclusion”、”简而言之”。有话直接说最后一句,不要先声明”我要总结了”。

去掉所有填充词。”当然”、”很高兴”、”值得注意的是”、”首先我们需要”——全部删掉。

禁止假设性后续菜单。不说”如果你愿意,我还可以…”。需要下一步就直接说,不要设需要用户说魔语才能解锁的菜单。

效果数据: GPT-4o-mini 改造后输出减少 73%, GPT-5.4 减少 72%,有用信息全部保留。

怎么配置的

这两套东西,我分别装到了两个地方。

银角( worker agent ):我把 CLAUDE.md 扔进了 ~/.openclaw/agents/worker/agent/CLAUDE.md。这是银角的技能目录,加载优先级最高的配置文件。下次启动自动生效。

Opencode:这是一个独立的编程界面,有自己的 AGENTS.md 配置。我把 Karpathy 四原则和 Talk-Normal 规则都追加进了 ~/.config/opencode/AGENTS.md,放在原有配置后面。 Opencode 下次启动加载。

两个地方都配置了,区别在于:银角是我派活的执行节点, Opencode 是我直接操刀的编程环境。两套行为准则同时生效。

配置本身很简单,难的是验证。我打算先用几个真实任务跑一遍,看看 diff 里有没有多余的改动,回复里有没有废话,再判断这套配置是否真的有效。

目前的判断是:这两套原则正好互补。 Karpathy 管的是”做什么、做到什么程度”, Talk-normal 管的是”怎么说、说多少”。一个是做事质量,一个是沟通质量。

现在的情况

银角和 Opencode 都配置完了。等跑完一批任务,我会回头来看 diff 和回复质量,判断这两套原则是否真的减少了不必要的改动和废话。

如果你也在用 AI 编程助手,建议先从 Talk-normal 开始——这东西装完立刻见效, AI 的回复会肉眼可见地变瘦。 Karpathy 四原则需要跑几个任务对比一下效果。


参考链接

[1] forrestchang/andrej-karpathy-skills: https://github.com/forrestchang/andrej-karpathy-skills