
四步AI协作协议让编码交付可验证【免费下载链接】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搞定。全表查询固定 CSV存到当前目录。 你……我要的是导出当前页。 AI明白重写。214 行改成了 96 行这不是模型笨是缺一份要求先问再写的 AI 协作协议。andrej-karpathy-skills 项目把 Karpathy 对 LLM 编码陷阱的观察提炼成四条行为条款压进一个 CLAUDE.md 文件让 AI 编码工具在动手前自动加载协议。 建立四步 AI 协作协议四步不是并列清单是一条流水线不先对齐写代码就是在错误的方向上狂奔对齐了却不收敛代码会膨胀收敛了却不隔离改动会扩散到相邻区域隔离了却不闭环完成了就靠感觉。每一步都是下一步的前提。第一步对齐条款——动笔前把假设和疑问摆上桌面在生成第一行代码前先陈述所有前提和未确认的疑问。不做这一步AI 会默默挑一种解释执行直到你测试时才暴露偏差// ❌ 典型反模式 export function exportUsers() { const rows db.query(SELECT * FROM users); // 假设导出全表 fs.writeFileSync(export.csv, toCSV(rows)); // 假设格式和路径 return Done: ${rows.length}; }// ✅ 协作协议写法 // 前提1. 范围是当前页 rows 2. 格式 CSV 3. 路径由调用方传入 // 疑问超过一万行的导出是否需要二次确认 export function exportUsers(rows: User[], to: string) { const safe rows.map(({ email, ...rest }) rest); // 敏感字段不带出 fs.writeFileSync(to, toCSV(safe)); return safe.length; }如果你有不确定为前提先停手写成问题而不是默默写进代码。第二步收敛条款——只写解决当前问题的最小代码只解决今天的问题不为以防万一预留任何扩展。对齐解决了方向范围收敛才能解决体量。否则一个 50 行就能解决的问题会收到 200 行的架构// ❌ 典型反模式 interface DiscountStrategy { calc(amount: number): number } class PercentStrategy implements DiscountStrategy { /* … */ } class FixedStrategy implements DiscountStrategy { /* … */ } class DiscountEngine { constructor(private strategies: DiscountStrategy[]) {} apply(amount: number) { /* 40 行分发逻辑 */ } }// ✅ 协作协议写法 // 只有一个调用点只有一种需求百分比折扣 function calcDiscount(amount: number, percent: number): number { return amount * (percent / 100); } // 等固定金额折扣需求真出现时再抽取公共接口如果你说不出第二种使用场景就别抽抽象50 行能解决就不要写 200 行。第三步隔离条款——每一行改动都要能追溯到本任务只动必须动的行只清理自己制造的残留。收敛让代码量对了但改动范围仍要管住。AI 喜欢顺手重排整个函数diff 越审越大// ❌ 典型反模式 // 任务只修空 email 导致崩溃 function validate(u: User) { const email (u.email ?? ).trim(); if (!email) throw new Error(Email required); if (email.length 254) throw new Error(Too long); // 没人要的新规则 if (!/^[a-z]$/i.test(u.username ?? )) throw new Error(Bad name); // 没人要 return true; }// ✅ 协作协议写法 function validate(u: User) { if (!u.email) throw new Error(Email required); // 唯一改动判空 if (!u.email.includes()) throw new Error(Bad email); if (!u.username) throw new Error(Username required); return true; } // 原有代码看着不顺眼的风格只在评审意见里提不动代码如果改动行追溯不到本次需求就回滚想顺手清理周边代码写进评审备注。第四步闭环条款——用可验证的验收标准替换模糊任务先写下怎样算通过跑验证循环到通过为止才叫完成。即使影响面受控验收标准还是模糊的看看行不行时没人能证明修复是对的回归也会悄悄溜进来// ❌ 典型反模式 async function fixRateLimit() { // 先看看哪里不对劲微调一下 await adjustConfig(); // 调什么没人知道 await runCheck(); // 怎样算通过没人定义 return 应该好了; }// ✅ 协作协议写法 // 验收标准连续请求 11 次前 10 次 200第 11 次 429 async function verifyRateLimit() { const codes: number[] []; for (let i 0; i 11; i) { codes.push((await api.get(/items)).status); } const ok codes.slice(0, 10).every((s) s 200) codes[10] 429; return ok; // 不通过就改完重跑循环直到通过 }如果你写不出怎样算通过就先别开工一步无法用命令验证就拆到能验证为止。四条条款合起来就是一份完整契约。接新任务前用这份清单自查前提是否已列出疑问是否已提问本次代码量是否只够解决当前问题每行改动是否都能追溯到本任务是否存在可执行的验收标准diff 里是否没有顺手改进 用三行命令把协作协议接入项目项目核心是一个叫CLAUDE.md的文件也就是 AI 编码工具如 Claude Code开工前会自动读取的项目级指令文件。放进项目根目录协议即刻生效git clone https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills cp andrej-karpathy-skills/CLAUDE.md /path/to/your-project/CLAUDE.md # Cursor 用户也可把 .cursor/rules/karpathy-guidelines.mdc 拷进项目 # 已有 CLAUDE.md 的项目追加到原文件末尾不要覆盖接入前后工作流的变化是这样的。改造前你提需求AI 直接生成代码你测试发现问题打回再来回几轮diff 越滚越大改造后AI 先列出假设和疑问等你确认你确认后AI 给出最小实现方案AI 动手只改与本任务相关的行AI 按验收标准写并运行验证你审 diff每步都过才交付协议偏向谨慎优先于速度。改错别字、一行小修复不必走全流程。认清协议不管用的三种情况协议默认谨慎有收益。三种情况下这个前提不成立一次性代码spike 脚本一天就扔对齐与验证的成本高于代码本身的价值只保留闭环条款即可。批量规则性改动统一改名上百个文件逐行追溯不可行改用脚本批处理加抽样检查。纯聊天窗口工具不支持加载指令文件协议每轮会话都不被读取把四条要点贴进首条消息。✅ 用三个信号验证 AI 协作协议生效不用等季度数据日常观察三点就能判断用没用对观察指标改造前典型状态改造后预期状态同一需求返工轮次多轮反复每轮 diff 变大显著下降趋于收敛diff 中的非预期改动常见顺手重排与重构只剩任务相关行明显变少澄清问题的出现时机出事后才提出动手前就提出如果你发现问题还是出事后才问大概率是工具没真正加载指令文件先检查 CLAUDE.md 是否位于项目根目录。下次 AI 再自信地看起来都做完了你可以指给项目根目录的协议文件先列假设再问清导出范围然后才动笔。完整条款在 CLAUDE.md每条条款的好坏案例对照在 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),仅供参考