125 lines
5.6 KiB
Markdown
125 lines
5.6 KiB
Markdown
---
|
||
title: 上下文工程
|
||
tags: [核心概念, 上下文, Harness]
|
||
source: [OpenAI, Anthropic, LangChain]
|
||
confidence_score: 高
|
||
last_updated: 2026-04-07
|
||
---
|
||
|
||
# 上下文工程
|
||
|
||
**上下文工程**(Context Engineering)是[[Harness-Engineering|Harness 工程]]的三大支柱之一,专注于确保智能体在正确的时间获得正确的信息。
|
||
|
||
## 核心原则
|
||
|
||
### 给地图,而不是一千页说明书
|
||
|
||
OpenAI 团队学到的最早经验之一很简单:要给 Codex 的是一张地图,而不是一本 1,000 页的说明书。
|
||
|
||
他们尝试了"一个大型的 AGENTS.md 方法。可想而知,这是一次失败的尝试:
|
||
|
||
- **上下文是一种稀缺资源**:一个巨大的指令文件会挤掉任务、代码和相关文档——因此智能体要么会错过关键约束条件,要么开始针对错误的约束条件进行优化。
|
||
- **过多的指导反而变得无效**:当一切都"重要"时,一切都不重要了。智能体最终会在本地进行模式匹配,而不是有意识地进行导航。
|
||
- **它会立即腐烂**:一本庞杂的手册会变成陈旧规则的坟场。智能体无法判断哪些信息仍然有效,一旦人类停止维护它,此文件就会悄然成为一个颇具吸引力的麻烦源头。
|
||
- **这很难核实**:单个 blob 不适合进行机械检查(覆盖率、新鲜度、所有权、交叉链接),因此漂移是不可避免的。
|
||
|
||
因此,他们不再将 AGENTS.md 视为百科全书,而是将其视为内容目录。
|
||
|
||
## 静态上下文与动态上下文
|
||
|
||
### 静态上下文
|
||
|
||
静态上下文是仓库中不会频繁变化的文档和规范:
|
||
|
||
- **仓库本地文档**:架构规范、API 契约、风格指南
|
||
- **AGENTS.md 或 CLAUDE.md 文件**:编码项目特定规则
|
||
- **交叉链接设计文档**:由 linter 验证的设计文档
|
||
|
||
### 动态上下文
|
||
|
||
动态上下文是随时间变化的运行时信息:
|
||
|
||
- **可观测性数据**:日志、指标、追踪——智能体可访问
|
||
- **目录结构映射**:智能体启动时的目录映射
|
||
- **CI/CD 流水线状态**:测试结果和流水线状态
|
||
|
||
## 关键规则
|
||
|
||
**从智能体的角度来看,它无法在上下文中访问的任何内容都不存在。**
|
||
|
||
存储在 Google Docs、Slack 线程或人们头脑中的知识对系统是不可见的。**仓库必须是单一事实来源。**
|
||
|
||
### 渐进式披露
|
||
|
||
这个框架实现了渐进式披露:智能体从一个小而稳定的切入点开始,并被指导下一步该去哪里查看,而不是一开始就被淹没。
|
||
|
||
OpenAI 团队严格执行这一点。专职的 linter 和 CI 作业会验证知识库的更新状况、是否已交叉链接且结构正确。一个定期运行的"doc-gardening"智能体会扫描那些不再反映真实代码行为的过时或废弃文档,并发起修复用的 Pull Request。
|
||
|
||
## 实践中的上下文工程
|
||
|
||
### OpenAI 的知识库布局
|
||
|
||
```
|
||
AGENTS.md
|
||
ARCHITECTURE.md
|
||
docs/
|
||
├── design-docs/
|
||
│ ├── index.md
|
||
│ ├── core-beliefs.md
|
||
│ └── ...
|
||
├── exec-plans/
|
||
│ ├── active/
|
||
│ ├── completed/
|
||
│ └── tech-debt-tracker.md
|
||
├── generated/
|
||
│ └── db-schema.md
|
||
├── product-specs/
|
||
│ ├── index.md
|
||
│ ├── new-user-onboarding.md
|
||
│ └── ...
|
||
├── references/
|
||
│ ├── design-system-reference-llms.txt
|
||
│ ├── nixpacks-llms.txt
|
||
│ ├── uv-llms.txt
|
||
│ └── ...
|
||
├── DESIGN.md
|
||
├── FRONTEND.md
|
||
├── PLANS.md
|
||
├── PRODUCT_SENSE.md
|
||
├── QUALITY_SCORE.md
|
||
├── RELIABILITY.md
|
||
└── SECURITY.md
|
||
```
|
||
|
||
设计文档已被编目和索引,其中包括验证状态和一套核心理念,定义了智能体优先的操作原则。架构文档提供域和包分层的顶层地图。一份高质量的文档会对每个产品领域和架构层进行评分,并随着时间的推移追踪差距。
|
||
|
||
计划被视为一流的工件。临时轻量计划用于小幅变更,而复杂工作则记录在执行计划中,并附带进度和决策日志,这些日志会被提交到代码仓库。活跃计划、已完成计划和已知的技术债务都已进行版本控制并集中存放,使智能体能够在不依赖外部情境的情况下运行。
|
||
|
||
### LangChain 的 LocalContextMiddleware
|
||
|
||
LangChain 使用 `LocalContextMiddleware` 在智能体启动时运行,映射 `cwd` 和其他父+子目录。他们运行 `bash` 命令来查找工具如 `Python` 安装。上下文发现和搜索容易出错,因此注入上下文减少了这个错误表面并帮助**将智能体引导到其环境中。**
|
||
|
||
## 将更多情境推送到仓库中
|
||
|
||
随着时间的推移,需要将越来越多的情境推送到仓库中。那次让团队在架构模式上达成一致的 Slack 讨论?如果智能体无法发现它,那么它就会像迟了三个月入职的新员工一样,对其一无所知。
|
||
|
||
为 Codex 提供更多情境意味着要组织和展示正确的信息,好令智能体能够基于这些信息进行推理,而不是用临时指令使其不堪重负。就像你会在产品原则、工程规范和团队文化(包括表情符号偏好)方面为新队友提供引导一样,将这些信息提供给智能体会带来更一致的输出。
|
||
|
||
## 相关概念
|
||
|
||
- [[Harness-Engineering|Harness 工程]]
|
||
- [[Context Reset|上下文重置]]
|
||
- [[Context Anxiety|上下文焦虑]]
|
||
- [[Architectural-Constraints|架构约束]]
|
||
|
||
## 参考来源
|
||
|
||
1. OpenAI - Harness Engineering:在智能体优先的世界中利用 Codex
|
||
2. LangChain - Improving Deep Agents with harness engineering
|
||
3. Anthropic - Effective context engineering for AI agents
|
||
|
||
---
|
||
|
||
*最后更新:2026-04-07*
|
||
*本文档由 [[WikiLLM]] 编译自多个来源*
|