andrej-karpathy-skills vs 传统编码规范:优势对比分析

【免费下载链接】andrej-karpathy-skills 【免费下载链接】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 【免费下载链接】andrej-karpathy-skills 项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐