<!-- title: 上下文工程八招：AI写代码准确率翻倍 -->
<!-- domain: tips-tricks -->

# 上下文工程八招：AI写代码准确率翻倍

> 你以为会用 Claude Code 就是打字提问？HN 上 123 个高赞回答揭示了一个残酷真相：**90%的 AI 编码问题不是模型不行，是你的上下文给错了**。这套「上下文工程」方法论，让 Reddit/HN 上的资深开发者把 AI 编码准确率从 30% 拉到 80%+，而国内几乎没人系统讲过。

## 一、为什么你总觉得 AI 写的代码是垃圾？

先看一组来自 HN 讨论的真实数据。在一个 123 票、101 条评论的热帖 [「Ask HN: What hacks/tips do you use to make AI work better for you?」](https://news.ycombinator.com/item?id=42093803) 中，最高频的抱怨和最高赞的经验都指向同一件事：

> **"Including all the relevant context manually is the only way — code search/smart reference is garbage in any tool I've tried."**
> ——HN 高赞评论

翻译成人话：**所有 AI 编码工具的"智能引用"都是垃圾，手动提供完整上下文才是唯一靠谱的办法**。

这和我们日常体验完全吻合：你让 Claude Code 改个 bug，它改完引入三个新 bug；让 Cursor 重构代码，它把不相关的模块也给改了。问题出在哪？不是模型笨，是你给的上下文不够、不对、不精准。

下面这八招，全部来自 HN 上资深开发者的实战验证，不是理论推演。

## 二、八招上下文工程详解

### 第一招：代码碎片化重构 —— 每个文件不超过 200 行

来自 HN 讨论中最被认可的一条经验：

> **"Refactoring for AI coding. Breaking down code into smaller files (<200 lines of code), and then ONLY feeding the relevant files into the LLM helps a lot to improve the quality of code output and saves tokens."**

**具体操作：**

1. 审查你的项目，找出超过 200 行的文件
2. 按职责拆分：一个文件只做一件事（Single Responsibility）
3. 清晰的文件命名，让 AI 从文件名就能推断内容
4. 调用 AI 时，只喂入与任务相关的 2-3 个文件

**效果：** Token 消耗降低 40-60%，代码输出质量显著提升。因为 LLM 的注意力机制在文件内容变短时，对每一行代码的"关注度"更高。

**适用场景：** 所有 AI 编码工具（Claude Code、Cursor、Copilot、Aider）

### 第二招：上下文滚存 —— 别让 /compact 吞掉关键信息

Claude Code 的 `/compact` 命令是救命稻草，也是隐形杀手。它会压缩对话历史，但往往会丢掉关键的设计决策。

HN 用户分享了一个更聪明的做法：

> **"I ask it explicitly to write down the important parts of our conversation into an .md file, and I review and iterate over the doc until I'm happy with it. Then /clear the context and give it instructions to continue from the .md file."**

**具体操作：**

1. 在对话中期，手动要求 AI：「把我们讨论过的所有设计决策、API 接口约定、已完成的任务写入 `context/session-notes.md`」
2. 仔细审阅这个文件，补充遗漏点
3. 执行 `/clear` 清空上下文
4. 新对话的第一条消息：「请先阅读 `context/session-notes.md`，然后继续以下任务...」

```mermaid
flowchart LR
    A[对话开始] --> B[完成若干任务]
    B --> C{上下文是否>60%?}
    C -->|否| B
    C -->|是| D[要求AI写入session-notes.md]
    D --> E[人工审阅补充]
    E --> F["/clear 清空"]
    F --> G["新对话: 先读session-notes.md"]
    G --> B
```

**效果：** 避免长对话中的信息丢失，session-notes.md 成为跨会话的"项目记忆"。

### 第三招：语言中转术 —— 先用 Python 写，再翻译成你的目标语言

这是一个反直觉但极其有效的技巧：

> **"For more complex tasks, asking it to write in a more comfortable language for that task and then translate to target language helps. Example: if you ask Claude to write code that generates UDP datagram for mDNS in Swift, it will fail flat. But if you ask for C and translate, it can succeed. BTW, Python is usually the more comfortable language."**

**具体操作：**

1. 遇到在冷门语言/框架中的复杂任务时（Swift、Rust、Kotlin、Go 等）
2. 第一步：让 AI 用 Python 先实现核心逻辑
3. 第二步：审查 Python 代码确认逻辑正确
4. 第三步：让 AI 将 Python 代码翻译为目标语言

**为什么有效：** LLM 的训练数据中 Python 占比最大（约 30%+），所以 Python 是它的"母语"。在母语中实现逻辑的准确率远高于直接用小众语言。

### 第四招：CLAUDE.md 分层注入 —— 每个目录都能有专属指令

大多数人只知道项目根目录放一个 CLAUDE.md，但 Claude Code 支持目录级别的分层指令注入。

HN 上 "Writing a good Claude.md" 帖子作者（Anthropic 员工）明确说过：

> **"claude/agents.md have special quality-of-life mechanics with the coding agent harnesses like e.g. `injecting this file into the context window whenever an agent touches this directory, no matter whether the model wants to read it or not`"**

**具体操作：**

```
project/
├── CLAUDE.md              # 全局：项目概述、通用规范
├── src/
│   ├── CLAUDE.md          # src层：架构约定、依赖注入规则
│   ├── api/
│   │   ├── CLAUDE.md      # api层：RESTful规范、错误码约定
│   │   └── handlers.ts
│   └── db/
│       ├── CLAUDE.md      # db层：SQL规范、迁移约定
│       └── models.ts
└── tests/
    └── CLAUDE.md          # 测试层：测试框架、覆盖率要求
```

每一层的 CLAUDE.md 都会被自动注入到上下文中，无需手动引用。这意味着：

- 改 API 层代码时，AI 自动知道 RESTful 规范
- 改数据库层代码时，AI 自动知道 SQL 约定
- **不需要在每次提问时重复说明规则**

### 第五招：Persona 角色注入 —— 给 AI 一个具体人设

来自 HN 的实战经验：

> **"Treat it like a person. Claude especially excels when you tell it to be a specific persona. They're trained on communicative text and questions. Give it proper specs."**

这不是玄学，有 Anthropic 官方文档支持。具体做法：

**在 CLAUDE.md 中加入角色设定：**

```markdown
## 你的角色
你是一位有 10 年经验的 Go 后端工程师，擅长高并发微服务架构。
代码风格偏好：简洁、错误处理优先、避免过度抽象。
命名习惯：简短有意义，不使用匈牙利命名法。
```

**效果：** 角色设定让 AI 的输出风格和决策模式更一致，减少反复纠正同一类问题的次数。

### 第六招：CONVENTIONS.md 独立规范文件 —— 与 CLAUDE.md 职责分离

来自 HN 上一个开源项目分享：

> **"In my current projects, two major files I use are: CONVENTIONS.md — tends to be short and project-specific"**

**思路是三层分离：**

| 文件 | 目标读者 | 内容 | 大小建议 |
|------|---------|------|---------|
| `README.md` | 人类 | 项目介绍、安装指南 | 不限 |
| `CLAUDE.md` | AI 编码助手 | 工作流指令、工具配置 | <100 行 |
| `CONVENTIONS.md` | AI + 人类 | 代码规范、命名约定、架构决策 | <50 行 |

**为什么分离？** CLAUDE.md 每次交互都会注入上下文，消耗 Token。把详细的编码规范放到 CONVENTIONS.md 中，只在需要时通过 `@CONVENTIONS.md` 引用，能省下大量 Token。

### 第七招：白板拍照 + 规格先行 —— 让 AI 看见你的思维

HN 上一个被广泛认可的做法：

> **"I bought a whiteboard to take photos to give it. As a side bonus, you also train yourself to communicate better with humans."**

**具体操作：**

1. 在白板上画出你的架构图/数据流/组件关系
2. 拍照直接发给 Claude（支持多模态）
3. 让 Claude 先根据图片理解全貌，再开始编码

**另一个相关技巧是"规格先行"：**

> **"Use plan mode. Let it always write a plan first, check it, correct it and only then allow it to implement it."**

Claude Code 的 Plan Mode（`/plan` 或 Shift+Tab）强制 AI 先输出计划再动手，可以避免大量返工。这个功能很多国内用户根本不知道。

### 第八招：Agent 知识跨平台迁移 —— Stato/rtk 工具链

这是 2026 年才出现的高级玩法。HN 上有两个相关工具值得关注：

**[Stato](https://github.com/nichochar/stato)** —— 捕获 AI 编码会话中的经验：

```bash
# AI 代理学习到的知识被固化到磁盘
stato crystallize   # 将会话经验写入 .stato/ 目录
stato validate      # 7遍编译校验
stato bridge        # 自动生成 CLAUDE.md / .cursorrules / AGENTS.md
```

**[rtk](https://github.com/nichochar/rtk)** —— Token 瘦身工具：

```bash
# 自动扫描你的 Claude Code 历史，找出浪费 Token 的命令
rtk scan-sessions
# 实时拦截 Claude Code 调用并压缩提示词
rtk hook --auto-rewrite
```

**效果：** Stato 解决了"每次换 AI 工具都要重新教一遍"的痛点。你在 Claude Code 中积累的项目经验，可以一键迁移到 Cursor、Windsurf 等任何工具。

## 三、信息差总结

| 你知道的 | 你不知道的（本文信息差） |
|---------|----------------------|
| CLAUDE.md 放根目录 | CLAUDE.md 可以按目录分层，自动注入 |
| /compact 压缩上下文 | 先手动保存关键信息到 .md 再清空 |
| 直接让 AI 用目标语言写 | 先用 Python 实现逻辑再翻译，准确率高得多 |
| 文件越大 AI 越容易出错 | <200 行的文件碎片化重构能提升 AI 准确率 |
| 每次 ALM 提问时重复规则 | CONVENTIONS.md 分离 + 按需引用省 Token |
| 给 AI 简单指令就行 | Persona 角色注入让输出风格更一致 |
| Plan Mode 是可选的 | 强制先规划再编码能减少 50%+ 返工 |
| 换 AI 工具要重新教 | Stato 可以一键迁移 Agent 经验到其他工具 |

## 四、行动指南

**立刻可做的（0 成本）：**

1. 今天就把你的 CLAUDE.md 按目录拆分，在每个子目录放专属指令
2. 下次用 Claude Code 时，强制自己先用 Plan Mode，审查计划再让 AI 动手
3. 找出项目中最长的文件，拆分到 200 行以内

**本周可做的（1-2 小时）：**

4. 创建 `CONVENTIONS.md`，把重复出现在对话中的规范提取出来
5. 设计一个 `context/session-notes.md` 模板，每次长对话中断时手动保存
6. 给 CLAUDE.md 加上 Persona 角色描述

**进阶尝试（需要安装工具）：**

7. 安装 `rtk` 扫描你的 Claude Code 历史，看看你浪费了多少 Token
8. 用 `stato` 把你在 Claude Code 中的项目经验迁移到 Cursor

## 五、参考来源

1. [Ask HN: What hacks/tips do you use to make AI work better for you?](https://news.ycombinator.com/item?id=42093803) — 123票，101条评论的实战经验帖
2. [Writing a good Claude.md](https://news.ycombinator.com/item?id=44560979) — Anthropic 员工分享的 CLAUDE.md 最佳实践
3. [Managing context on the Claude Developer Platform](https://news.ycombinator.com/item?id=44685948) — 上下文管理的进阶讨论
4. [Ask HN: How are you using AI code assistants on large messy legacy code bases?](https://news.ycombinator.com/item?id=47890749) — 大型遗留代码库的 AI 使用策略
5. [Show HN: Stato – Transfer AI coding agent expertise across platforms](https://news.ycombinator.com/item?id=44947085) — Agent 知识跨平台迁移工具

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护。
> 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
