
行为准则减少常见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权衡这些准则偏向谨慎而非速度。对于简单任务请使用判断力。1. 编码前思考不要假设。不要隐藏困惑。呈现权衡。在实现之前明确陈述你的假设。如果不确定请提问。如果存在多种解释呈现它们——不要默默选择。如果存在更简单的方法请说明。必要时提出反对。如果有不清楚的地方请停止。明确指出困惑之处。提问。2. 简洁优先解决问题的极简代码。不要推测性添加。不要添加超出请求的功能不要为单次使用代码添加抽象不要添加未被请求的灵活性或可配置性不要为不可能的场景添加错误处理如果你写了200行而50行就能完成重写它问自己资深工程师会说这过于复杂吗如果是就简化。3. 精准修改只修改必须修改的部分。只清理自己造成的混乱。编辑现有代码时不要改进相邻的代码、注释或格式不要重构没有问题的部分匹配现有风格即使你会用不同方式如果注意到无关的死代码提及它——不要删除它当你的变更产生孤儿代码时移除你的变更导致未使用的导入/变量/函数除非被要求否则不要移除预先存在的死代码检验每一行修改都应该直接追溯到用户的请求。4. 目标驱动执行定义成功标准。循环直到验证通过。将任务转换为可验证的目标添加验证 → 为无效输入编写测试然后使其通过修复bug → 编写重现它的测试然后使其通过重构X → 确保重构前后测试都通过对于多步骤任务陈述简要计划1. [步骤] → 验证: [检查] 2. [步骤] → 验证: [检查] 3. [步骤] → 验证: [检查]强大的成功标准让你能够独立循环。弱标准让它工作需要不断澄清。这种约束机制的技术原理在于利用LLM的指令遵循能力。通过明确的、具体的、可操作的行为描述AI能够更好地理解开发者的期望并在编码过程中进行自我监控。 ## 实践路径从理论到落地的技术集成 ### 安装与配置策略 项目提供了两种集成方式适应不同的开发场景 **Claude Code插件安装推荐** 通过Claude Code内部市场直接安装这种方式将准则作为插件安装在所有项目中自动生效适合希望统一AI助手行为的团队。 **项目级CLAUDE.md文件** 对于希望只在特定项目中应用这些原则的场景可以将CLAUDE.md文件添加到项目根目录。这种方式允许项目特定的定制化可以与现有的项目规则结合 markdown ## 项目特定指南 - 使用TypeScript严格模式 - 所有API端点必须有测试 - 遵循src/utils/errors.ts中的现有错误处理模式 - 所有数据库查询必须使用参数化查询 - 日志记录使用结构化JSON格式与现有开发工作流的集成Karpathy-skills准则可以与现有的开发实践无缝集成。例如在测试驱动开发TDD流程中这些准则可以增强红-绿-重构循环# 传统TDD红-绿-重构 def test_calculate_tax(): # 红编写失败的测试 assert calculate_tax(100, 0.1) 10 # 绿使测试通过的最小代码 def calculate_tax(amount, rate): return amount * rate # 重构改进代码结构 # 这里Karpathy准则发挥作用只重构必要的部分 # 增强TDD目标-验证-精炼 def test_calculate_tax_with_edge_cases(): # 目标处理边界情况 # 验证编写全面的测试套件 assert calculate_tax(100, 0.1) 10 assert calculate_tax(0, 0.1) 0 assert calculate_tax(-100, 0.1) 0 # 负金额处理 # 精炼基于测试结果调整实现 # Karpathy准则确保不添加未请求的灵活性性能优化场景的应用在性能优化任务中Karpathy准则能够防止过早优化和过度优化# 传统AI优化立即添加缓存层 class UserService: def __init__(self): self.cache {} def get_user(self, user_id): if user_id in self.cache: return self.cache[user_id] user db.query(User).filter_by(iduser_id).first() self.cache[user_id] user return user def invalidate_cache(self, user_id): if user_id in self.cache: del self.cache[user_id] # 添加了未请求的缓存失效机制 # Karpathy准则优化先测量后优化 def analyze_performance(): 性能分析识别真正的瓶颈 # 1. 测量当前性能 current_latency measure_latency(get_user) # 2. 确定优化目标 if current_latency 100ms: return 性能已达标无需优化 # 3. 提出具体优化方案 return 当前get_user延迟: 200ms 建议优化 1. 数据库索引优化预计减少到50ms 2. 查询优化预计减少到30ms 3. 仅在需要时添加缓存 技术案例不同场景下的范式对比案例一API端点开发传统AI模式过度设计的REST API# 过度设计的API端点 app.route(/api/v1/users, methods[GET, POST, PUT, DELETE]) def users_endpoint(): # 200行代码包含认证、授权、验证、分页、过滤、排序 # 支持多种内容类型、版本控制、错误处理 # 但用户只需要GET功能Karpathy模式精确满足需求# 精确实现的API端点 app.route(/users, methods[GET]) def get_users(): 获取用户列表 - 仅实现请求的功能 users User.query.all() return jsonify([user.to_dict() for user in users]) # 当需要POST功能时再扩展 app.route(/users, methods[POST]) def create_user(): 创建新用户 - 按需添加 # 最小实现案例二数据处理管道传统AI模式通用但复杂的数据处理# 通用数据处理框架 class DataProcessor: def __init__(self, transformersNone, validatorsNone, normalizersNone, exportersNone): # 支持多种转换器、验证器、标准化器、导出器 # 但实际上只需要简单的CSV转JSON def process(self, input_path, output_path, formatauto, validateTrue, normalizeTrue, batch_size1000): # 200行复杂逻辑Karpathy模式特定任务的简洁实现def csv_to_json(csv_path, json_path): 将CSV文件转换为JSON - 仅完成请求的任务 import csv import json with open(csv_path, r) as csv_file: reader csv.DictReader(csv_file) data list(reader) with open(json_path, w) as json_file: json.dump(data, json_file, indent2)案例三错误处理策略传统AI模式防御性编程过度# 过度防御的错误处理 def process_data(data): try: if not data: raise ValueError(数据不能为空) if not isinstance(data, dict): raise TypeError(数据必须是字典) if required_field not in data: raise KeyError(缺少必要字段) # 实际处理逻辑 result complex_processing(data) if not result: raise ProcessingError(处理失败) return result except (ValueError, TypeError, KeyError) as e: logger.error(f输入错误: {e}) raise except ProcessingError as e: logger.error(f处理错误: {e}) raise except Exception as e: logger.critical(f未知错误: {e}) raiseKarpathy模式适度的错误处理def process_data(data): 处理数据 - 仅处理已知的错误情况 # 仅验证实际可能发生的错误 if not isinstance(data, dict): raise TypeError(数据必须是字典) # 直接的处理逻辑 return data.get(value, 0) * 2 # 当实际出现其他错误时再扩展案例四配置管理系统传统AI模式过早的配置抽象# 复杂的配置管理系统 class ConfigManager: def __init__(self, sourcesNone, validatorsNone, reload_strategypolling): # 支持多种配置源、验证器、重载策略 # 但实际上只需要读取环境变量 def get(self, key, defaultNone, type_caststr): # 复杂的类型转换和验证逻辑Karpathy模式按需简化的配置import os def get_config(key, defaultNone): 获取配置值 - 从环境变量读取 value os.getenv(key) return value if value is not None else default # 当需要文件配置时再扩展 def get_config_from_file(key, filepathconfig.json): 从文件读取配置 - 按需添加 import json with open(filepath) as f: config json.load(f) return config.get(key)【免费下载链接】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),仅供参考