# Fowler/Thoughtworks: Context Engineering for Coding Agents

> 原文链接：https://martinfowler.com/articles/exploring-gen-ai/context-engineering-coding-agents.html
> 作者/来源：Thoughtworks (Birgitta Böckeler, Martin Fowler 网站)
> 阅读日期：2026-04-02

## 一句话总结
Birgitta Böckeler 从实践角度定义 context engineering 为"策划模型所看到的内容以获得更好结果"，系统梳理了 coding agent 的 context 配置分类法，并提出了关于**谁控制 context 加载**的关键决策框架。

## 核心论点
文章以一个简洁的定义开始："context engineering 是策划模型所看到的内容以获得更好结果"。对于 coding agent，这意味着系统性地配置提供给 AI 工具（如 Claude Code）的信息和指令。

文章将 context 配置分为两大类别。第一是**可复用的 prompt**，包含两种子类型：Instructions（特定任务指令，如"按此模式编写 E2E 测试"）和 Guidance（通用惯例，如"保持测试独立性"）。第二是 **Context Interfaces**（context 接口），描述 agent 如何获取额外信息：Tools（内置能力如 bash 命令和文件搜索）、MCP Servers（访问外部数据源的自定义程序）和 Skills（agent 在认为相关时按需加载的资源）。

文章提出了一个**关键决策问题：谁控制 context 的加载？** 三种模式各有权衡：LLM-driven（agent 自主判断加载，支持无监督运行但引入不确定性）、Human-triggered（用户显式触发，有控制力但降低自动化）、Agent software（系统在确定性节点触发 context）。这个决策直接影响了 agent 的自主性和可预测性之间的平衡。

文章还提出了一个重要的认知校准：**context engineering 提供的是概率上的改进，而非确定性的控制**。LLM 行为仍然是概率性的，需要根据任务关键性来校准适当的人类监督。

## 关键概念
- **Instructions vs Guidance**：两种可复用 prompt 类型的区分。Instructions 是特定任务指令；Guidance 是通用惯例和规范。这个分类有助于组织和管理大量的 context 配置。
- **Context Interfaces**：agent 获取动态信息的接口——Tools、MCP Servers、Skills。它们是 context 的"管道"而非 context 本身。
- **Context Loading Control（context 加载控制）**：谁决定什么 context 在什么时候加载？LLM-driven vs Human-triggered vs Agent software 三种模式的权衡是 context engineering 的核心设计决策。
- **CLAUDE.md**：始终加载的项目级 guidance 文件，用于项目范围的惯例和标准。
- **Rules**：模块化的、路径范围的 guidance（如仅适用于 TypeScript 文件的规则）。比全局 CLAUDE.md 更精细的 context 控制。
- **Skills**：延迟加载的资源包，组合了 guidance、instructions 和脚本。体现了 progressive disclosure 原则。
- **Subagents**：拥有独立 context window 和配置的专门任务 agent。实现了 context 隔离。
- **Illusion of Control（控制幻觉）**：对 context engineering 效力的重要校准——它增加了有用结果的概率，但不保证确定性结果。

## 实践建议
1. **渐进式构建 context 配置**：不要预先加载所有内容。从最小配置开始，根据实际需求逐步添加。
2. **区分 Instructions 和 Guidance**：前者用于具体任务，后者用于通用惯例。清晰的分类有助于管理和复用。
3. **慎重选择 context 加载控制模式**：根据任务的关键性和自动化需求，在 LLM-driven、human-triggered 和 agent software 之间做出明智选择。
4. **利用 Rules 实现路径范围的精细控制**：不同目录/文件类型可以有不同的规则，避免"一刀切"。
5. **警惕从外部复制配置**：直接复制他人的 context 配置可能与现有规则矛盾。迭代式开发优于批量复制。
6. **监控 context 空间的消耗**：了解哪些内容占用了 context 空间，确保高价值信息优先。
7. **对 context engineering 的效力保持现实预期**：它是概率改进而非确定性保证，重要任务仍需人类监督。

## 独到观点
这篇文章最独特的贡献在于两点。第一是**提出了 context 加载控制的三模式框架**（LLM-driven / Human-triggered / Agent software），这是其他文章较少明确讨论的设计维度。第二是**"控制幻觉"的认知校准**——在整个 harness/context engineering 社区的乐观氛围中，这篇文章提醒读者 LLM 行为仍然是概率性的，过度依赖 context engineering 来"控制" agent 可能是危险的。此外，将 Claude Code 的完整功能集（CLAUDE.md、Rules、Skills、Subagents、MCP、Hooks、Plugins）系统性地映射到 context engineering 概念上，为实践者提供了很好的参考。

## 与其他文章的关联
- 与 [Fowler: Harness Engineering](05-fowler-harness-engineering.md) 是同一作者/网站的系列文章，从 harness engineering 下沉到 context engineering 层面。
- Context loading control 的三模式与 [Anthropic: Context Engineering](09-anthropic-context-engineering.md) 中 Just-in-Time vs 预加载的讨论直接相关。
- Instructions vs Guidance 的分类有助于理解 [OpenAI](01-openai-harness-engineering.md) 中 AGENTS.md 和 ARCHITECTURE.md 的不同角色。
- Progressive disclosure（通过 Skills 实现）与 [HumanLayer: Skill Issue](07-humanlayer-skill-issue.md) 和 [LangChain](04-langchain-anatomy-of-harness.md) 的同名概念一致。
- "控制幻觉"的警告为 [Anthropic: Building Effective Agents](06-anthropic-building-effective-agents.md) 中关于 agent 需要 guardrails 的建议提供了更深层的理由。
- Subagents 作为 context 隔离与 [HumanLayer](07-humanlayer-skill-issue.md) 中的 "context firewall" 概念对应。
