当前位置: 首页 > news >正文

andrej-karpathy-skills:把 AI 的“顺手重构“管住

andrej-karpathy-skills:把 AI 的"顺手重构"管住

【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills

让 AI 修一个空指针,diff 回来,整个模块被它重构成了策略模式,注释也换了一套说法。andrej-karpathy-skills 是写给 Claude Code 的行为指南,用四条规则管住 LLM 的乱假设、过度设计和顺手重构,直接影响你拿到的 LLM 代码质量。

一份单文件的 AI 编程规范

它不是框架,也不是代码库,就是一个CLAUDE.md文件,内容是四条行为规则。来源是 Andrej Karpathy 对 LLM 编程缺陷的公开观察:模型会替你默默做假设,然后一路跑下去,不核对、不澄清、不指出矛盾;爱把抽象层层堆高,百行能解决的事写成千行;修 bug 时顺手改动并不相关的注释和代码。这个项目的做法很直接:把观察逐条翻译成 AI 能执行的指令。

🧭 四条规则逐条拆

规则错误表现正确动作
编码前思考默默选定一种解释,直接开工把假设和多种解释摆出来,问清再动手
简单优先单一用途的代码配抽象基类和策略类只实现被要求的功能
精准修改修 bug 时顺手改注释、加类型提示只改与本次需求直接相关的行
目标驱动"我来审查并改进代码"式模糊推进先写验收标准,循环到验证通过

把假设写在前面

最常见的翻车是这样:你说"让搜索变快",AI 默默选了"降低响应时间"这一种解释,加缓存、加索引、改异步,一路写下去,你发现它理解的根本不是你要的那个"快"。规则要求它反过来:假设必须显式说出来;存在多种解释就全部列出来,不许私下挑一个;有更简单的做法要主动讲;遇到不清楚的,停下,说清哪里不清楚,然后问。落地动作只有一个——让它在动手前交一份"假设清单",你确认一句,它再写代码。

拿不准就停下来问,比写完再返工便宜。

只写解决问题的代码

加一个算折扣的函数,回来的可能是抽象基类、两个策略子类、一个配置数据类,调用它要多写三十行样板代码。规则把话说死:不实现没被要求的功能,不为只用一次的代码建抽象,不加没人要的"灵活性"和"可配置性",不处理不可能发生的错误场景。写完自问一句"资深工程师会不会说这太复杂",答案是会,就重写。

# 反例:为唯一一次折扣计算引入策略模式 class DiscountStrategy(ABC): @abstractmethod def calculate(self, amount): ... # 改法:一个函数就够 def calculate_discount(amount, percent): return amount * percent / 100

够用就停手,复杂度留给真正需要的日子。

只动该动的行

修"空邮箱导致校验器崩溃",回来的 diff 里注释换了、文档串加了、还多出一段没人要的用户名校验,你得花不少时间确认修复逻辑有没有被动过。规则是:不"顺手改进"相邻的代码、注释和格式;不重构没坏的东西;现有风格照抄,哪怕你会写得更好;发现无关的死代码,提一句,但别删。自己改动造成的孤儿代码要清掉,别人留下的不动。

# 反例:修空邮箱崩溃,顺手加了没人要的用户名校验 if not user_data.get('email'): raise ValueError("Email required") if len(user_data.get('username')) < 3: raise ValueError("Username too short") # 改法:只动空邮箱这一处判断 if not (user_data.get('email') or '').strip(): raise ValueError("Email required")

每行改动都要能对应到这次的需求。

先定义"什么叫做完"

"修复认证系统"这类指令,默认的回应是"我会审查代码、找出问题、做些改进",然后开始一轮又一轮没有终点的修改。规则要求把祈使句翻译成可验收的目标:"加校验"改成"为无效输入写测试,然后让它通过";"修 bug"改成"先写一个能复现它的测试,再修到通过";"重构 X"改成"保证重构前后测试都是绿的"。多步任务让 AI 先给一个简短计划,每一步后面跟一个验证方式。标准写得清楚,它就能自己循环;标准模糊,你就得全程陪聊。

有验收标准,它才能自己转起来。

🔁 一组前后对照:需求澄清

同一个请求:"加一个导出用户数据的功能。"

传统输出:直接落地一段导出函数——默认导出全部用户、字段固定、写进本地文件,每个假设都不是你要的,返工从确认字段开始。

约束后的输出:

动手前确认四件事:

  1. 范围:全部用户,还是筛选后的子集?
  2. "导出"具体指浏览器下载、后台任务加邮件,还是 API 直接返回?
  3. 包含哪些字段?有些可能敏感。
  4. 用户量级大概多少?它决定实现方式。

最简单的做法是一个返回分页 JSON 的接口;文件导出需要更多信息。你倾向哪种?

差别不在代码质量,而在假设的归属:前者的假设是 AI 替你做的,后者的假设是你确认过的。审一份确认过假设的实现,比审一份自己脑补的实现快得多。

接入方式:Claude Code 配置最短路径

两条路,都只要一步命令。插件方式一次配置、所有项目生效;文件方式把规则放进单个项目。

# 方式一:Claude Code 插件,一次配置全部项目生效 /plugin marketplace add forrestchang/andrej-karpathy-skills /plugin install andrej-karpathy-skills@karpathy-skills # 方式二:clone 仓库,将 CLAUDE.md 放入项目根目录 git clone https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills

已有CLAUDE.md的项目,把规则追加进去就行,它本来就是为合并项目专属指令而设计的。仓库里还有 skills 目录下的 SKILL.md 与 CURSOR.md,供 Cursor 等其他工具复用同一套规则。

适用边界:什么时候该用,什么时候不用

该用:非平凡的功能开发、多人协作的项目、你希望 diff 里每一行改动都有明确理由的场景。可以不用:拼写错误、明显的单行修复、用完即弃的原型。规则本身偏向"谨慎优先于速度",给琐碎任务上全套流程,只会拖慢节奏。

收束

工具只有一个文件,真正起作用的是那套判断顺序:先想清楚,简单实现,精确修改,用验收标准收尾。好的代码是简单解决今天的问题,而不是提前解决明天的问题。

【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4172549.html

相关文章:

  • 视频标题 - BV1xx411c7mX
  • palera1n 越狱工具:从连上设备到完成越狱的完整指南
  • 5分钟清干净满地物品:流放之路过滤器 NeverSink Filter 快速上手指南
  • 告别手动整理!FileMover开源工具实现文件批量自动化管理
  • wewe-rss RSS订阅管理前端错误监控完整指南:从白屏到分层防御
  • 数学建模中的概率模型:从随机变量到蒙特卡洛模拟的完整指南
  • Auto.js 简介与避坑指南
  • 工业AGV多车路径规划:从轻量级算法到仓库落地实践
  • 从文件到屏幕:Python/java 字符编码、解码、文本处理的底层逻辑解析
  • OPTEE 3.15运行在QEMU ARMv8上
  • MiniMax H3前瞻:技术评估、部署准备与效果验证全指南
  • 机器学习十大经典算法实战指南:从原理到数学建模应用
  • 工业机器人Socket通信:3D视觉引导路径传输的完整协议设计与实现
  • Vue.js面经应用开发实战与核心技巧解析
  • react-rangeslider快速上手指南:5分钟搭建你的第一个React滑块组件
  • 用google-ads-python增删改查广告:10个高频广告操作代码示例,简单到直接复制就能用
  • 为什么国旗有4个字符却只有1个字素簇?unicode-segmentation字素簇完整教程
  • meta与EnTT组合实战:打造C++ ECS游戏引擎的运行时内省与属性编辑基础
  • Physical Token经济学:破解机器人规模化瓶颈的能力复用新范式
  • MobileInfo 设备指纹实践:如何基于 Build 与 Serial 生成不碰撞的设备唯一 ID
  • 单机多GPU利用率最大化:Distributed-TensorFlow-Guide中Worker的GPU分配实战教程
  • 阿里云RTC LTR技术解析:硬件解码支持下的弱网视频抗丢包方案
  • 大模型Agent技术面试核心问题与实战解析
  • Vue+Flask求职推荐系统:Apriori算法实战
  • 人工变量法第二次迭代详解:从单纯形表到最优解判定
  • 在SUN 7149A CRT显示器上播放《九龙珠》:高行频驱动与信号配置实践
  • 美赛建模思维实战:从问题分析到模型构建的完整指南
  • 大模型面试8小时速通:知识图谱与高频题型解析
  • 自我认知面试技巧与STAR-L法则应用指南
  • Flutter混合开发中Gradle配置冲突:Cannot change attributes错误深度解析与解决方案