ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从默默猜想到自查自纠:一份 CLAUDE.md 如何管住 Claude Code 的编码风格

从默默猜想到自查自纠:一份 CLAUDE.md 如何管住 Claude Code 的编码风格 从默默猜想到自查自纠一份 CLAUDE.md 如何管住 Claude Code 的编码风格【免费下载链接】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 上来就是策略模式、抽象类、配置类100 行的活儿写出 1000 行还默默把细节全假设了一个问题都不问。这正是 andrej-karpathy-skills 要解决的问题把四条行为准则压进一个 CLAUDE.md让 Claude Code 的编码行为收敛下来。项目来历Karpathy 对 AI 编码陷阱的观察Andrej Karpathy 在观察 LLM 编码时总结过一组经典毛病模型会替你做出错误假设然后一路狂奔不寻求澄清、不说明取舍100 行能完成的事膨胀成 1000 行还会顺手改动它并不理解的代码和注释。这个项目仓库名 andrej-karpathy-skills把这一观察提炼成四条原则写进单一CLAUDE.md文件MIT 协议可以直接放进任何项目使用。四条准则自检清单让 Claude Code 编码更靠谱先别猜开口问 不要假设不要藏着困惑更不要默默挑一种解释然后闷头执行。动手前把你依赖的假设明确说出来没把握就问存在多种理解时全部列出来让你挑而不是自己拍板如果觉得有更简单的做法直接讲该反对就反对卡住了就停下来说清楚哪里不清楚再继续自检标准如果每个假设你都能写出来才可以开工写不出来就先回去提问。只做被要求的一件都不多写解决问题的最小代码不为将来也许提前铺路。不加需求之外的功能不为一次性代码建抽象不塞没人要的灵活性和可配置性不处理不可能发生的场景写了 200 行而 50 行就能解决重写自检标准问自己资深工程师会不会说这过度设计了会就简化。像外科手术一样下刀 只动必须动的地方只清理你自己制造出来的烂摊子。不顺手改进相邻的代码、注释和格式不重构没坏的东西匹配现有风格哪怕你会用别的写法发现无关的死代码提一嘴别删只删除因你这次改动而变得无用的导入、变量、函数自检标准你改动的每一行都应能直接追溯到用户的原始请求。先定义做完长什么样 别接指令式任务先把它翻译成可验证的目标然后循环直到通过。指令式说法可验证目标加个验证为无效输入写测试然后让测试通过修这个 bug先写一个能复现 bug 的测试然后让它通过重构 X确保重构前后的测试都通过多步任务先列个简短计划每步都带验证动作[步骤] → 验证[检查点][步骤] → 验证[检查点][步骤] → 验证[检查点]自检标准标准越强AI 越能独立循环如果你发现自己总在被追问做成什么样说明目标定义得不够清楚。实战对照两个 AI 编码翻车现场的前后差异场景一加个导出用户数据的功能❌ 常见的翻车姿势AI 直接假设导出全部用户到本地 JSON 文件然后开写def export_users(formatjson): users User.query.all() with open(users.json, w) as f: json.dump([u.to_dict() for u in users], f) return fExported {len(users)} users导出范围、文件位置、字段取舍、隐私风险全被默默定了你 review diff 时才发现。✅ 准则下的行为差异AI 动手前先摆出待澄清的清单——范围全部用户还是筛选后的子集隐私问题导出指浏览器下载、带邮件通知的后台任务还是返回数据的 API导出哪些字段哪些是敏感的用户量级多大这决定方案选型然后给出最简方案比如一个返回分页 JSON 的 API 端点让你选。说白了区别在于前者是我替你决定后者是选项给你你定。场景二加个计算折扣的函数❌ 常见的翻车姿势直接上策略模式——抽象基类、百分比/固定额两个策略类、配置 dataclass、计算器包装类约 40 行用的时候还得再写 30 行初始化。✅ 准则下的行为差异def calculate_discount(amount: float, percent: float) - float: Calculate discount amount. percent should be 0-100. return amount * (percent / 100)什么时候才引入复杂度等真的需要多种折扣类型那天再重构。值得注意的是过度抽象那版并不错它遵循标准设计模式错在时机——过早加复杂度代码更难懂、更难测、写起来更慢。接入步骤三种把准则装进 Claude Code 的方式推荐装成 Claude Code 插件在 Claude Code 内先加市场再装插件装一次所有项目通用/plugin marketplace add forrestchang/andrej-karpathy-skills/plugin install andrej-karpathy-skillskarpathy-skills适合人群以 Claude Code 为主力、不想每个项目单独配置的开发者。替代一项目级放置 CLAUDE.md新项目直接拉取curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md现有项目追加到文件末尾不要覆盖已有项目约定echo CLAUDE.md curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md CLAUDE.md适合人群想自己微调准则、或使用的工具只认根目录指令文件的人。追加之后可以再加一个Project-Specific Guidelines小节写死模式、测试要求等项目专属规则和这四条准则合并使用。替代二在 Cursor 里用仓库自带 Cursor 项目规则把.cursor/rules/karpathy-guidelines.mdc拷到你项目的.cursor/rules/目录没有就建打开项目即自动生效。想升级为个人级技能仓库还提供了skills/karpathy-guidelines/SKILL.md可复制或软链到你的个人技能目录。生效信号怎么判断准则真的起效了用上一段时间你开始注意到这些变化你开始注意到 diff 里意外改动变少了——只出现你要求的修改你开始注意到因过度复杂而重写的次数变少了——代码第一版就是简单版你开始注意到澄清问题提前了——在实现之前问而不是出错之后才挖你开始注意到 PR 更干净了——没有顺带的重构也没有自我加戏的改进需要留意这套准则的取舍是谨慎优先于速度。改错别字、一行就能搞定的小活不必走全流程——它的目标是降低复杂任务上的高成本错误不是拖慢简单任务。收尾让 AI 追目标而不是执行命令Karpathy 那段观察是项目的地基LLMs are exceptionally good at looping until they meet specific goals... Dont tell it what to do, give it success criteria and watch it go.这也是为什么定义成功标准循环直到验证通过是四条准则里分量最重的一条它没有要求 AI 变得更听话而是把协作模式从执行指令切换成追求可验证的目标。目标清晰模型的循环迭代能力才真正被释放目标模糊跑得再快也是偏航。把今天的问题简单解决掉别为明天的问题提前付复杂度。延伸阅读仓库里的EXAMPLES.md收录了四条准则的前后对照代码与反模式分析README.zh.md是项目的完整中文说明CURSOR.md则讲清了 Cursor 场景下的接入细节。【免费下载链接】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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进