SOTA Sync
全部文章
记忆与上下文2026-03-28

Context Engineering:真正的瓶颈从来不是模型

GitClear 分析 2.11 亿行代码发现 AI 工具让代码量增 10% 但质量崩 60%。真正的问题不是模型不够聪明,是没人设计模型看到什么。Anthropic 内部研究也确认:agent drift 是 context 失败,不是 reasoning 失败。

#核心论点

Prompt engineering 教你问更好的问题。

Context engineering 教你建更好的环境。

一个精心设计的 prompt,放在一个破碎的 context 里,输出的还是垃圾。一个平庸的 prompt,放在一个丰富、结构化的 context 里,每次都能产出有用的结果。

GitClear 分析了 2.11 亿行代码:AI 工具让代码量增加 10%,但质量指标崩了 60%。重构减少 60%,复制粘贴代码上升 48%,代码变动率增加 44%。

这不是模型的问题。这是 context 的问题。

#四个失败模式

#Context Pollution(污染)

虚假或过时的信息进入 window 并不断累积。模型信任 context 里的内容——如果坏数据在里面,下游所有输出都继承错误。

#Context Distraction(干扰)

太多无关信息淹没相关信号。20 万 token 的 window 如果有 18 万是噪音,模型无法区分重要和次要,它把 window 里所有内容当作近似等权重的信息处理。

#Context Confusion(混乱)

工具太多、指令冲突。MCP 出现之前这个问题存在,出现之后反而更严重——50 个工具定义塞进 system prompt,模型花注意力在它根本不需要的工具上,而不是手头任务。

#Context Clash(冲突)

同一 window 里有矛盾信息。你的 CLAUDE.md 说"用 pnpm",项目 README 说"用 npm"。模型随机选一个,或者更糟,在两者之间来回切换。这就是为什么团队看到 agent 在不同 session 里行为不一致。

#三层架构

Context engineering 的核心 discipline 是设计什么信息、在什么时候、以什么结构到达模型。

Layer 1:什么进入 window(Selection)

Layer 2:它如何被结构化(Architecture)

Layer 3:什么时候刷新(Lifecycle)

大多数人只考虑 Layer 1,把所有东西都丢进 prompt,然后奇怪为什么模型会产生幻觉。研究清楚地表明:context 污染是累积的。一个幻觉的事实会滋生更多下游幻觉。

#Anthropic 的发现

Anthropic 内部研究发现:agent drift——AI 在长任务中逐渐失去连贯性——几乎完全是 context 管理问题,不是 reasoning 问题。他们的解决方案不是更好的模型,而是 compaction、结构化笔记、以及管理 window 内容的多智能体架构。

Manus(那个走红的自主 agent)发布了他们的 context engineering 教训。核心洞察:随着任务 context 增长,context 管理变成整个问题。其他所有能力在 context 退化时都会退化。

#正确的 context 架构

做得好的团队把 context 当作基础设施来对待:

CLAUDE.md 文件不是配置文件,是教学文档。 最好的 CLAUDE.md 读起来像给一位已经会编码、但不了解你代码库的新高级工程师的入职文档。

记忆层次结构 + 渐进式披露。 不是所有东西都需要同时放进 window。引导模型找到它需要的东西,而不是预加载所有东西。

关注点分离。 架构 context 在一个文件,编码规范在另一个,业务领域知识在第三个。模型加载当前任务需要的内容。

project/
├── CLAUDE.md              # architecture + boundaries
├── .claude/
│   └── memory/
│       ├── MEMORY.md      # routing document (< 200 lines)
│       ├── patterns.md    # confirmed conventions
│       ├── decisions.md   # architectural choices with reasoning
│       └── debugging.md   # solutions to recurring problems
├── docs/
│   ├── architecture.md    # system design (the model's map)
│   └── domain/            # business logic the model needs
└── src/                   # the actual code

研究的关键洞察:加载了专门领域 context 的专门 agent,比通用 agent 在相同任务上产生的错误显著更少。 超过一半的有效 agent specifications 是 context,不是指令。

更多 context 架构,更少指令。这就是模式。

#知识图谱 vs 扁平 context

扁平 context——一个巨大的 CLAUDE.md、一个长的 system prompt、一个大的 README——线性扩展。每增加一个事实,只增加一个单位价值。

知识图谱组合扩展。每新加一个节点,连接到现有节点。关系涌现。整体大于部分之和。

这就是为什么工具-思维(tools-for-thought)社区无意中为 LLM 构建了完美架构。他们花了多年时间研究原子笔记(一个概念一个文件)、概念间的 wikilinks、内容导航地图、不同参与深度的渐进式披露。

原来这就是 agent 有效遍历知识库所需要的。

模式:

  • 原子笔记(一概念一文件,可组合)
  • wikilinks 作为语义连接(关系就是链接文本本身)
  • 内容地图(路由文档,告诉 agent 去哪找)
  • 用于过滤的元数据(启用渐进披露的 frontmatter)
  • 声称式标题(文件名是 claim,不是 category)——不是 architecture-decisions.md,而是 we-chose-PostgreSQL-because-our-query-patterns-are-relational.md

当 agent 搜索时,仅看标题就能告诉它是否需要继续读。这是在文件命名层面的 context engineering。

#Tacit Knowledge 问题

你的 CTO 决定用 PostgreSQL 而不是 MongoDB,也许决定被写下来了。但她考虑的权衡、让她觉得显而易见但对其他人不可见的上下文——这些通常都丢失了。

会议过去是纯开销。现在你录制对话,agent 从中挖掘 claims、决定、行动项和战略转变。锁在人们头脑中的隐性知识变成结构化的图状态。

这不是没人读的会议总结。这是人类思维和 agent 外部化表示之间的主动同步。

#Agent 维护知识图谱

杀死每个 wiki、每个知识库、每个"单一真相来源"计划的是维护成本。有人必须保持更新,他们从来没做到。

Agent 不会因为维护而厌倦。不会因为赶会议而跳过更新。杀死每个知识管理系统的东西,正是 agent 被建造去做的事情。

一个结构良好的 context 图谱 + agent 运营商,与 wiki 有根本不同:

  • agent 注意到两个笔记相互矛盾时,标记张力
  • 注意到规范与代码库不同步时
  • 摩擦信号在正常工作中自动累积
  • 当足够多的观察堆积起来,agent 提议对系统本身进行结构性更改

它重构自己的指令。当当前的 context 系统造成太多阻力时,它演化自己的架构。

Context engineering 不是一次性设置。它是一个活的系统,每次 agent 工作时都会改进。

#执行步骤

  1. 审计你的 CLAUDE.md ——是配置文件还是教学文档?把它重写成给不了解你项目的高级工程师的入职培训
  2. 分离关注点 ——架构 context、编码规范、领域知识放在不同文件。加载任务需要的,不是所有东西
  3. 添加渐进披露 ——MEMORY.md 作为路由文档,控制在 200 行以内,详细主题文件从它链接出去
  4. 用 claim 命名 ——文件名回答"这相关吗?"而不需要打开。we chose X because Y.md,不是 decisions.md
  5. 挖掘你的会议 ——录制、提取 claims 和决定、加入图谱。对话中锁定的隐性知识是最大的 context 泄漏
  6. 让 agent 维护它 ——设置钩子标记矛盾、过时 context 和结构性漂移。agent 应该作为正常工作的副作用改进 context 系统
  7. 衡量 context 健康度 ——追踪 session 重解释时间、agent drift 率和跨 session 决策一致性。如果你的 agent 问同一个问题两次,你的 context 架构有个洞