首页 › tips-tricks › 上下文工程八招:AI写代码准确率翻倍

上下文工程八招: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?」 中,最高频的抱怨和最高赞的经验都指向同一件事:

"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,然后继续以下任务...」
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 都会被自动注入到上下文中,无需手动引用。这意味着:

第五招: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 中加入角色设定:

## 你的角色
你是一位有 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 —— 捕获 AI 编码会话中的经验:

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

rtk —— Token 瘦身工具:

# 自动扫描你的 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 小时):

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

进阶尝试(需要安装工具):

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

五、参考来源

  1. Ask HN: What hacks/tips do you use to make AI work better for you? — 123票,101条评论的实战经验帖
  2. Writing a good Claude.md — Anthropic 员工分享的 CLAUDE.md 最佳实践
  3. Managing context on the Claude Developer Platform — 上下文管理的进阶讨论
  4. Ask HN: How are you using AI code assistants on large messy legacy code bases? — 大型遗留代码库的 AI 使用策略
  5. Show HN: Stato – Transfer AI coding agent expertise across platforms — 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学通信知识星球海报-扫码加入