ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

给 AI 编码助手立规矩:一个文件治住 LLM 写代码的四大坏习惯

给 AI 编码助手立规矩:一个文件治住 LLM 写代码的四大坏习惯 给 AI 编码助手立规矩一个文件治住 LLM 写代码的四大坏习惯【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathys observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills上次让 AI 修一个空邮箱导致校验器崩溃的小 bugdiff 里多出来二十多行引号全换了类型注解补上了还附赠一套没人要的用户名校验。这种顺手改造几乎每次都有。andrej-karpathy-skills 就是冲着这个来的它用一份 CLAUDE.md 行为指南提前管住 AI 编码助手写代码时的四个坏习惯。它管的是行为不是能力这个项目是一份写给 AI 编码助手的行为守则不是工具、不是库通篇没有一行可执行的代码。它的全部交付物就是 CLAUDE.md 里那六十来行自然语言约束内容源自 Andrej Karpathy 对 LLM 编码的观察模型会默默替你做出错误假设然后一路执行会把 100 行的事堆成 1000 行的臃肿架构还会改动自己根本没理解、和任务也无关的代码。我一开始以为是又一个提示词模板合集读完才发现它的切入点不同——它不教你怎么把代码写好全是怎么别作。常规做法是每次任务里临时叮嘱一句别过度设计叮嘱不叮嘱全看心情它把约束做成常驻规则Claude Code 每个会话自动读项目根目录的 CLAUDE.mdCursor 读规则文件技能体系读同一份文本约束不再依赖你记得提醒。同一份正文在仓库里存了三份CLAUDE.md、.cursor/rules/karpathy-guidelines.mdc、skills/karpathy-guidelines/SKILL.md一份内容、三个入口各对应一套工具生态。下面按一次任务实际经历的时间线看这四个约束各卡在哪个时刻。四个约束各卡一个时刻动手之前先问再写管的是闷头假设的问题——模型对模糊需求的默认动作是挑一种解释然后不声不响地执行。约束长这样把假设明说出来拿不准就问别猜同一个请求有不止一种理解时全部列出来不默默挑一个有更快的路径就提该反驳就反驳卡住了就停指出哪里不清楚等答案之前你说加个导出用户数据的功能AI 直接交出一个函数导出全部用户、文件写到固定路径、字段自己猜、CSV 列名自己编——四个假设没一个跟你对过。之后它的第一步变成一段澄清全量还是筛选有隐私风险、导出成文件还是走接口、包含哪些字段、数据量多大同时给出最简单的选项分页 JSON 接口你点头再动手。让搜索更快同理不再一上来堆缓存、索引、异步三层而是先区分响应时间、并发吞吐、感知速度三种含义各标工作量问你在意哪个。这一步挡住了方向跑偏但方向对了还有第二坑它写新代码时总是写太多。写新代码只写今天的量管的是过度工程——为想象中的未来需求提前搭好架子。要求之外的功能一行不加只用一次的代码不配拥有抽象基类没被要求的灵活性可配置性不碰不可能发生的场景不做防御处理200 行能压到 50 行的重写自检问题一个资深工程师会不会说这写复杂了从评审视角看差别很直观。任务只是加个算折扣的函数之前打开的是抽象策略类、两个策略实现、配置数据类和计算门面算一次折扣要组装三十行以上之后是四行函数传金额和百分比完事。更微妙的是那套之前的代码并不算错——模式标准、代码工整问题只在时机在以后可能有多种折扣还没发生前就把复杂度搬了进来代价是更难读懂、更难测试、写得更慢。EXAMPLES.md 里那句总结很准好代码是简单解决今天的问题而不是提前解决明天的问题。保存用户偏好那个例子同理——带缓存、校验、合并、通知回调的管理器类最后只需要一句 UPDATE。新代码管住了可更常见的场景是改老代码顺带改动恰恰最爱在这里冒出来。改老代码只碰必须碰的行管的是无关编辑和风格漂移。相邻代码、注释、格式不顺手改进没坏的东西不重构匹配现有风格哪怕你更偏好别的写法发现无关的死代码提一句别删你的改动弄出的孤儿导入和变量可以清掉原有的死代码不被要求就留下自检标准只有一条每一行改动都应该能直接追溯到用户的请求。还是那个空邮箱 bug之前的 diff 里混着重写校验规则加了点号要求、新塞的用户名长度和字母检查、改过的注释和补上的 docstring之后只动两行——取邮箱时给个默认空串判断改成空或纯空格文件其余部分一行不动。变体是风格漂移任务只是给上传函数加日志之前的单引号被全换成双引号、补了类型注解、连布尔返回都重构成了新写法之后只插入三行 logger 调用引号和缩进完全沿用原文件。代码写完了diff 也干净了最后一个问题还剩怎么知道它真的做完了收尾之前把做完了变成可验证的管的是让它能跑就行式模糊目标——没有验收标准的任务AI 会自己宣布胜利。约束的思路是把指令翻译成验收动作加验证变成为非法输入写测试然后让它们通过修 bug变成先写一个能复现 bug 的测试再让它通过重构 X变成改之前测试通过改之后依然通过。多步骤任务则要求交一份短计划每步配一个验证点1. [步骤] → verify: [检查] 2. [步骤] → verify: [检查] 3. [步骤] → verify: [检查]这背后是 Karpathy 的一句话LLM 非常擅长循环执行直到达成特定目标……不要告诉它该做什么给它成功标准然后看着它完成。标准强AI 能自己转圈直到绿标准弱让它工作你就得不断澄清。对比一组前后之前修复认证系统得到的计划是审查代码 → 找出问题 → 改进 → 测试四步全是自说自话没有一步可验证之后问题先被具体化成改密后旧会话仍有效再拆成四步——写失败测试verify测试挂了说明复现了、实现会话失效verify通过、补边界情况verify通过、跑全量旧测试verify全绿。给 API 加限流则是多步模板单端点内存限流verify100 次请求前 10 成功、其余 429→ 提为中间件verify全端点生效→ 换 Redisverify跨实例共享计数→ 按端点配置verify各端点速率独立生效每一步都能独立部署、独立验收。还有一个更讲究的顺序细节排序在重复分数时出错正确开场不是改排序逻辑而是先写复现测试、跑 10 次确认它确实不稳定再换稳定排序最后验证测试稳定通过。接入复制一个文件就够门槛最低的路径就是搬一个文件git clone https://gitcode.com/GitHub_Truck/an/andrej-karpathy-skills # 把 CLAUDE.md 拷进项目根目录 # 项目已有 CLAUDE.md 的把内容追加到末尾即可上面地址应为https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills其他入口一句话带过Claude Code 插件全局生效先/plugin marketplace add forrestchang/andrej-karpathy-skills再/plugin install andrej-karpathy-skillskarpathy-skills装一次所有项目可用Cursor把.cursor/rules/karpathy-guidelines.mdc拷进目标项目的.cursor/rules/即可技能形态skills/karpathy-guidelines/SKILL.md 可复制软链进~/.cursor/skills各环境的分工差异环境生效载体说明Claude Code插件全局或根目录 CLAUDE.md按项目插件装一次处处生效Cursor.cursor/rules/规则文件不读 CLAUDE.md必须放规则文件只认根指令文件的工具CLAUDE.md 内容复制或合并进现有指令用一阵子之后会注意到什么变化最先感觉到的是diff 干净了。任务结束打开变更列表里面只剩你要的行顺手改进那一块基本消失评审时间跟着省。第二问题前置了。模糊的需求下AI 会先弹出一串澄清而不是直接开写。说白了就是成本转移它开工前问两句比它在错误的理解上狂奔三百行后再返工便宜得多。第三重写变少了。代码第一版就不离谱太绕了重一版的场景肉眼可见地减少。但要说清楚边界这套约束默认偏谨慎、不偏速度。对拼写错误、一行显而易见的小改动让它走列假设 → 澄清 → 写复现测试全套纯属浪费。仓库自己也承认琐碎任务请自行判断——它要削减的是非琐碎工作里那些代价高昂的错误不是把简单任务拖慢。贴墙速查AI 默默决定导出全部用户、写到 users.json → 让它先列假设再问一次折扣计算配了策略模式 → 单函数直到第二种折扣类型真的出现修 bug 时顺手改引号、补类型注解 → 只改修复必需的行我来审查并改进认证系统 → 为 bug 写复现测试 → 让它通过 → 确认无回归改动产生的孤儿导入删掉无关死代码只提一句不删琐碎改动跳过全套流程直接改模型写代码的能力早就够用了缺的是纪律把别做什么写清楚再给它一个可验证的标准大部分返工会自己消失。把仓库里的 CLAUDE.md 拷进你的项目跑一个真实任务diff 和上次对一对就明白。想看更具体的前后对比EXAMPLES.md 里存了八组完整案例。【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathys observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表