andrej-karpathy-skills vs 传统编码规范:优势对比分析
andrej-karpathy-skills是一套由Andrej Karpathy提出的行为准则,旨在减少LLM编码常见错误。与传统编码规范相比,它采用了更具针对性的方法,专注于解决LLM特有的编码陷阱,如过度复杂化、隐藏假设和无目标执行等问题。本文将深入对比andrej-karpathy-skills与传统编码规范的核心差异,帮助开发者理解为何这套新型准则能显著提升代码质量和开发效率。##
andrej-karpathy-skills vs 传统编码规范:优势对比分析
【免费下载链接】andrej-karpathy-skills 项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills
andrej-karpathy-skills是一套由Andrej Karpathy提出的行为准则,旨在减少LLM编码常见错误。与传统编码规范相比,它采用了更具针对性的方法,专注于解决LLM特有的编码陷阱,如过度复杂化、隐藏假设和无目标执行等问题。本文将深入对比andrej-karpathy-skills与传统编码规范的核心差异,帮助开发者理解为何这套新型准则能显著提升代码质量和开发效率。
核心原则对比:从规则到行为的转变 🚀
传统编码规范通常侧重于代码格式、命名约定和语法规则,而andrej-karpathy-skills则提出了四项行为准则,从根本上改变LLM的编码方式。
1. 思考优先 vs 编码优先
传统规范往往直接指导如何编写代码,而andrej-karpathy-skills的首要原则是"Think Before Coding"(思考优先)。这一原则要求开发者在编写代码前明确假设、提出疑问并权衡取舍。
传统规范示例:
# 传统规范关注格式和语法
def calculate_discount(amount, percent):
# 计算折扣
return amount * (percent / 100)
andrej-karpathy-skills示例:
Before implementing, I need to clarify:
1. **Scope**: Export all users or filtered subset? (privacy implications)
2. **Format**: You mentioned "export" - did you mean:
- Download file in browser?
- Background job with email notification?
- API endpoint returning data?
3. **Fields**: Which user fields? (some might be sensitive)
4. **Volume**: How many users typically? (affects approach)
2. 简约至上 vs 过度设计
传统规范有时会鼓励使用设计模式和抽象,导致过度工程化。andrej-karpathy-skills的"Simplicity First"(简约至上)原则则强调编写解决问题的最少代码,避免不必要的抽象和功能。
传统过度设计示例:
# 传统规范可能鼓励的过度抽象
from abc import ABC, abstractmethod
class DiscountStrategy(ABC):
@abstractmethod
def calculate(self, amount: float) -> float:
pass
class PercentageDiscount(DiscountStrategy):
def __init__(self, percentage: float):
self.percentage = percentage
def calculate(self, amount: float) -> float:
return amount * (self.percentage / 100)
# 更多策略类...
andrej-karpathy-skills简约示例:
def calculate_discount(amount: float, percent: float) -> float:
"""Calculate discount amount. percent should be 0-100."""
return amount * (percent / 100)
# Usage
discount = calculate_discount(100.0, 10.0) # $10 off
3. 精准修改 vs 全面重构
传统规范有时会鼓励开发者在修改代码时顺便"改进"周边代码,导致不必要的变更。andrej-karpathy-skills的"Surgical Changes"(精准修改)原则要求只修改必要的代码,保持现有风格。
传统全面重构示例:
def validate_user(user_data):
- # Check email format
- if not user_data.get('email'):
+ """Validate user data."""
+ email = user_data.get('email', '').strip()
+
+ # Validate email
+ if not email:
raise ValueError("Email required")
-
- # Basic email validation
- if '@' not in user_data['email']:
+ if '@' not in email or '.' not in email.split('@')[1]:
raise ValueError("Invalid email")
andrej-karpathy-skills精准修改示例:
def validate_user(user_data):
# Check email format
- if not user_data.get('email'):
+ email = user_data.get('email', '')
+ if not email or not email.strip():
raise ValueError("Email required")
# Basic email validation
- if '@' not in user_data['email']:
+ if '@' not in email:
raise ValueError("Invalid email")
4. 目标驱动 vs 任务驱动
传统规范通常关注如何完成任务,而andrej-karpathy-skills的"Goal-Driven Execution"(目标驱动执行)原则强调定义可验证的成功标准,通过测试驱动开发。
传统任务驱动示例:
I'll fix the authentication system by:
1. Reviewing the code
2. Identifying issues
3. Making improvements
4. Testing the changes
andrej-karpathy-skills目标驱动示例:
Plan:
1. Write test: Change password → verify old session invalidated
Verify: Test fails (reproduces bug)
2. Implement: Invalidate sessions on password change
Verify: Test passes
3. Check edge cases: Multiple active sessions, concurrent changes
Verify: Additional tests pass
4. Verify no regression: Existing auth tests still pass
Verify: Full test suite green
实际应用对比:解决真实编码问题
处理模糊需求
传统方法:LLM往往会默默选择一种解释并继续编码,导致不符合预期的实现。
andrej-karpathy-skills方法:明确列出多种解释并请求澄清。
"Make the search faster" could mean:
1. **Faster response time** (< 100ms instead of 500ms)
- Add database indexes
- Cache frequent queries
- Estimated effort: 2 hours
2. **Handle more concurrent searches** (throughput)
- Add async/await
- Connection pooling
- Estimated effort: 4 hours
3. **Faster perceived speed** (UX)
- Show partial results immediately
- Progressive loading
- Estimated effort: 3 hours
Current search takes ~500ms for typical queries.
Which aspect matters most for your use case?
避免过度功能
传统方法:LLM常常添加未请求的功能,导致代码膨胀。
andrej-karpathy-skills方法:只实现请求的功能,避免推测性开发。
传统过度功能示例:
class PreferenceManager:
def __init__(self, db, cache=None, validator=None):
self.db = db
self.cache = cache or InMemoryCache()
self.validator = validator or DefaultValidator()
def save(self, user_id: int, prefs: dict,
merge: bool = True,
validate: bool = True,
notify: bool = False) -> bool:
# 实现了合并、验证、通知等未请求的功能
# ...
andrej-karpathy-skills方法:
def save_preferences(db, user_id: int, preferences: dict):
"""Save user preferences to database."""
db.execute(
"UPDATE users SET preferences = ? WHERE id = ?",
(json.dumps(preferences), user_id)
)
如何开始使用andrej-karpathy-skills
andrej-karpathy-skills提供了两种简单的安装方式,让你可以快速将这些准则集成到你的开发流程中:
方法一:Claude Code插件(推荐)
从Claude Code内部,首先添加市场:
/plugin marketplace add forrestchang/andrej-karpathy-skills
然后安装插件:
/plugin install andrej-karpathy-skills@karpathy-skills
方法二: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
总结:为何选择andrej-karpathy-skills
andrej-karpathy-skills与传统编码规范的核心区别在于它专注于LLM特有的编码行为问题。通过采用"思考优先"、"简约至上"、"精准修改"和"目标驱动执行"四项原则,开发者可以显著减少以下问题:
- 过度复杂化的代码和API
- 隐藏的假设和未澄清的需求
- 不必要的抽象和功能
- 影响稳定性的大范围重构
- 缺乏验证的实现
这些准则特别适合与LLM协作的开发流程,帮助开发者利用AI的优势,同时避免常见的陷阱。正如Andrej Karpathy所观察到的:"LLMs在满足特定目标方面异常出色...不要告诉它该做什么,给它成功标准,看着它前进。"
通过将andrej-karpathy-skills集成到你的开发流程中,你将能够创建更简洁、更可维护且更符合实际需求的代码,同时充分发挥LLM的潜力。
【免费下载链接】andrej-karpathy-skills 项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills
更多推荐



所有评论(0)