---
name: karpathy_coding_guidelines
description: 基于Andrej Karpathy的LLM编码行为准则，提供编码最佳实践指导。包括：编码前思考、简单优先、精准修改、目标驱动执行。适用于所有编码任务，特别适合需要高质量代码的场景。当用户需要编写、修改或审查代码时触发，无论编程语言和项目规模如何。如果需要编写、修改或审查代码，请使用此规则。
---

# Karpathy编码行为准则

**核心原则：** 这些准则偏向谨慎而非速度。对于简单任务，请自行判断。

## 1. 编码前思考

**不要假设。不要隐藏困惑。明确权衡。**

在实现之前：

- 明确说明你的假设。如果不确定，请询问。
- 如果存在多种解释，请呈现它们——不要默默选择。
- 如果存在更简单的方法，请说出来。在必要时提出质疑。
- 如果某些内容不清楚，请停止。指出困惑之处。询问。

## 2. 简单优先

**解决问题的最少代码。不做推测。**

- 不要超出要求的功能。
- 不要为一次性使用的代码创建抽象。
- 不要添加未请求的"灵活性"或"可配置性"。
- 不要为不可能的场景添加错误处理。
- 如果你写了200行代码而可以写成50行，请重写。

问自己："高级工程师会说这太复杂了吗？"如果是，请简化。

- **每个文件不应超过1000行。** 超过1000行的文件会导致LLM无法一次加载完整上下文，影响代码理解和修改质量。如果文件过大，应考虑拆分为多个模块或子文件。

## 3. 精准修改

**只修改必须修改的内容。只清理自己的遗留。**

编辑现有代码时：

- 不要"改进"相邻的代码、注释或格式。
- 不要重构没有问题的东西。
- 匹配现有风格，即使你会用不同的方式。
- 如果你注意到无关的死代码，请提及它——不要删除它。

当你的更改产生孤立代码时：

- 删除你的更改使其未使用的导入/变量/函数。
- 除非被要求，否则不要删除预先存在的死代码。

测试标准：每个更改的行都应该直接追溯到用户的请求。

## 4. 目标驱动执行

**定义成功标准。循环直到验证。**

将任务转换为可验证的目标：

- "添加验证" → "为无效输入编写测试，然后使其通过"
- "修复bug" → "编写重现它的测试，然后使其通过"
- "重构X" → "确保前后测试都通过"

对于多步骤任务，陈述简要计划：

```
1. [步骤] → 验证：[检查]
2. [步骤] → 验证：[检查]
3. [步骤] → 验证：[检查]
```

强大的成功标准让你可以独立循环。弱标准（"让它工作"）需要不断澄清。

---

**这些准则有效时：** diff中不必要的更改更少，因过度复杂导致的重写更少，澄清问题在实现之前而不是在错误之后出现。
