6672 字
33 分钟

Claude Code 上下文窗口管理:从治理方法到工程实践

核心目标:让 Agent 在长任务中保持稳定、高效、可续接、可审计,而不是被历史对话、无关文件、旧日志和过期设计拖慢或带偏。


0. 一句话结论#

上下文治理不是简单”压缩聊天记录”,而是把 Agent 工作所需的信息按生命周期、重要性和使用频率分层管理:

长期规则 → CLAUDE.md / AGENTS.md
当前任务 → docs/ai/current-task.md
阶段进度 → docs/ai/progress.md
架构决策 → docs/ai/decisions.md
跨窗口交接 → docs/ai/handoff-summary.md
大范围搜索 → subagent
重复流程 → slash command / skill
自动检查 → hooks
任务切换 → /clear
长任务续航 → /compact
上下文诊断 → /context

真正有效的 Agent,不是”什么都记住”,而是”只把当前决策必须依赖的信息放进主上下文”。


1. 为什么要做上下文治理?#

Claude Code 不是普通聊天机器人。它的上下文窗口会逐步装入很多内容:

  • 用户和模型的对话历史;
  • Claude 读取过的文件内容;
  • 命令输出;
  • CLAUDE.md
  • auto memory;
  • 已加载的 skills;
  • MCP 工具信息;
  • 系统指令;
  • hook 注入的信息;
  • subagent 返回的摘要。

官方文档说明,随着工作推进,context 会不断填满;Claude Code 会自动 compact,但早期对话里的细节指令可能丢失。因此,持久规则应放入 CLAUDE.md,并可用 /context 查看空间占用。

参考资料:


2. 核心问题:上下文不是越多越好#

很多人使用 Claude Code 时,会犯一个错误:

让 Agent 读取所有文件
让 Agent 记住所有历史讨论
让 Agent 加载所有 Skill
让 Agent 保留所有命令输出
让 Agent 带着旧任务继续新任务

这会导致:

  1. 每轮推理变慢;
  2. token 成本变高;
  3. 模型注意力被稀释;
  4. 旧任务干扰新任务;
  5. 工具调用路径变乱;
  6. compact 后关键细节可能丢失;
  7. Agent 开始重复之前已经做过的事;
  8. Agent 把过期方案当成当前约束。

因此,上下文治理的核心不是”保留最多信息”,而是提高:

有效上下文密度 = 当前任务真正需要的信息 / 当前窗口里的全部信息

3. 上下文治理的五层模型#

建议把上下文拆成五层:

层级名称内容存放位置生命周期
L1长期规则层技术栈、代码规范、架构约束、禁止事项CLAUDE.md长期
L2任务边界层本轮要做什么、不做什么、完成标准docs/ai/current-task.md当前任务
L3状态进度层已完成、未完成、下一步docs/ai/progress.md阶段性
L4决策记录层为什么这么设计、不能随便推翻的取舍docs/ai/decisions.md中长期
L5交接压缩层跨窗口/compact 后继续工作的摘要docs/ai/handoff-summary.md会话切换

这五层的作用不同,不能混在一个聊天窗口里。


4. 推荐项目目录结构#

在项目根目录添加:

your-project/
├── CLAUDE.md
├── AGENTS.md # 可选,给多种 Agent 工具共用
├── docs/
│ └── ai/
│ ├── current-task.md # 当前任务边界
│ ├── progress.md # 阶段进度
│ ├── decisions.md # 架构决策
│ ├── file-map.md # 文件职责地图
│ ├── handoff-summary.md # 跨窗口交接摘要
│ └── context-policy.md # 上下文治理规则
└── .claude/
├── commands/ # 旧版自定义命令,可选
│ ├── context-sync.md
│ ├── handoff.md
│ └── task-start.md
├── skills/ # 推荐方式:用 skill 承载可复用流程
│ └── context-governance/
│ └── SKILL.md
└── agents/ # 项目级 subagent,可选
└── code-researcher.md

说明:

  • CLAUDE.md 适合放每次会话都需要加载的稳定规则。
  • docs/ai/* 适合放不会每次都全部加载、但需要时可以按需读取的信息。
  • .claude/commands/*.claude/skills/* 适合把重复流程自动化。
  • .claude/agents/* 适合创建专门的 subagent,例如代码调研、日志分析、测试修复。

Claude Code 官方文档提到,CLAUDE.md 会进入上下文窗口,因此应保持简洁、具体、结构清楚,并建议目标控制在 200 行以内。文档也提到自定义 slash commands 可以用 Markdown 文件定义;推荐的新格式是 .claude/skills/<name>/SKILL.md,CLI 仍支持 .claude/commands/

参考资料:


5. L1:CLAUDE.md 写法#

5.1 CLAUDE.md 只放长期稳定规则#

不要把日报、临时 bug、一次性讨论、超长需求都塞进 CLAUDE.md

适合放:

  • 项目背景;
  • 技术栈;
  • 代码分层规则;
  • 架构边界;
  • 测试命令;
  • 提交规范;
  • 禁止事项;
  • Agent 协作流程。

不适合放:

  • 临时 bug 日志;
  • 大段业务文档;
  • 已废弃方案;
  • 当前任务细节;
  • 长篇会议纪要;
  • 大段源码说明;
  • 一次性 prompt。

5.2 CLAUDE.md 模板#

# 项目 AI 协作规则
## 项目背景
本项目是一个 Java Web Agent 调度基座,用于支持 Agent 装配、Skill 管理、MCP Client Gateway、意图识别、计划编排和工具调用。
## 技术栈
- Java 17
- Spring Boot 3
- MySQL
- Redis
- Spring AI / Spring AI Alibaba Graph
- MCP Client Gateway
- SSE
## 代码分层规则
- Controller 只负责参数接收、鉴权入口和响应包装。
- Service 负责业务逻辑。
- Manager / Orchestrator 负责复杂流程编排。
- Repository / Mapper 只负责数据访问。
- Client / Gateway 负责外部系统连接。
- DTO / Request / Response 不混入业务逻辑。
## 开发规则
- 新增模块前,先说明接口设计、文件清单和影响范围。
- 每次只实现一个小阶段,避免跨模块大改。
- 修改前先读取相关文件,不要全项目扫描。
- 不要主动重构无关模块。
- 不要删除已有代码,除非用户明确要求。
- 不要引入未说明用途的新依赖。
## 测试与验证
- 修改核心逻辑后,需要给出测试方式。
- 如果项目已有测试命令,优先运行已有测试。
- 如果无法运行测试,需要说明原因和人工验证步骤。
## 上下文治理规则
- 当前任务细节写入 `docs/ai/current-task.md`
- 阶段进度写入 `docs/ai/progress.md`
- 架构决策写入 `docs/ai/decisions.md`
- 跨窗口交接写入 `docs/ai/handoff-summary.md`
- 大范围代码搜索优先交给 subagent,只把摘要带回主上下文。
- 切换无关任务时使用 `/clear`
- 长任务继续时先更新 handoff,再使用 `/compact`

6. L2:current-task.md 写法#

current-task.md 用来约束”本轮到底做什么”。

6.1 模板#

# 当前任务:MCP Client Gateway MVP
## 任务背景
当前完整 Agent 调度模块尚未完成,但需要先建设 MCP Client 能力,为后续 Agent 调用外部工具打基础。
## 本轮目标
实现一个最小可用 MCP Client Gateway,用于连接外部 MCP Server、发现工具、注册工具元数据,并通过统一接口调用工具。
## 本轮要做
- MCP Server 配置结构
- MCP Client 初始化管理
- Tool 发现与注册
- Tool 调用服务
- HTTP 调用入口
- 基础异常处理
## 本轮不做
- 不做 MCP Server 自研
- 不做完整 Agent Planner
- 不做 Skill 装配工厂
- 不做前端页面
- 不做多租户权限
- 不做复杂可视化
## 重点目录
- `src/main/java/.../mcp/`
- `src/main/resources/application.yml`
- `docs/mcp-client-gateway-design.md`
## 完成标准
- 可以配置一个外部 MCP Server
- 启动后可以加载配置
- 可以发现工具列表
- 可以通过 HTTP 接口调用某个工具
- 调用失败时有明确错误返回

6.2 使用方式#

新任务开始时给 Claude:

请先阅读:
1. CLAUDE.md
2. docs/ai/current-task.md
3. docs/ai/decisions.md
4. docs/ai/progress.md
然后只围绕 current-task.md 中的任务工作。
不要主动读取全项目文件。
修改代码前先说明准备修改哪些文件。

7. L3:progress.md 写法#

progress.md 是阶段状态,不是详细日志。

7.1 模板#

# 开发进度记录
## 2026-05-21:MCP Client Gateway 阶段 1
### 已完成
- 新增 MCP Server 配置结构。
- 新增配置绑定类。
- 在 application.yml 中增加 MCP Server 配置样例。
### 修改文件
- `McpServerProperties.java`:读取 MCP Server 配置。
- `McpServerConfig.java`:描述单个 MCP Server。
- `application.yml`:增加配置样例。
### 当前未完成
- MCP Client 初始化。
- Tool 发现。
- Tool 调用。
- HTTP 调用入口。
### 下一步
- 实现 `McpClientManager`
- 设计 `McpToolRegistry`
- 定义标准调用请求和响应。

7.2 更新时机#

每完成一个小阶段就更新一次:

请更新 docs/ai/progress.md,记录本阶段完成内容、修改文件、未完成事项和下一步。

8. L4:decisions.md 写法#

decisions.md 用来防止 Agent 后续推翻关键设计。

8.1 模板#

# 架构决策记录
## ADR-001:第一阶段只做 MCP Client Gateway
### 背景
完整 Agent 模块尚未搭建完成,但项目需要先具备 MCP Client 能力。
### 决策
第一阶段只实现 MCP Client Gateway,不实现 MCP Server,不实现完整 Agent Planner。
### 原因
- 先沉淀工具连接、工具发现、工具调用能力。
- 后续 Agent 调度层可以复用该 Gateway。
- 避免 Agent、Skill、MCP Server 同时开发导致边界混乱。
### 影响
- 当前模块只关注外部 MCP Server 的连接与调用。
- Skill 装配与 Plan-and-Execute 放到后续阶段。
- 当前不设计多租户权限和前端管理页面。
### 状态
已采纳。

8.2 记录原则#

每条决策都回答四个问题:

为什么有这个问题?
我们选择了什么?
为什么这么选?
这个选择会影响什么?

9. L5:handoff-summary.md 写法#

handoff-summary.md 用于:

  • /compact 前;
  • 新窗口继续;
  • 换模型继续;
  • 交给同事继续;
  • 从 Claude 迁移到 Codex/Cursor。

9.1 模板#

# 任务交接摘要
## 当前任务
实现 MCP Client Gateway MVP,用于连接外部 MCP Server、发现工具并提供统一调用入口。
## 已完成内容
- 完成 MCP Server 配置结构。
- 完成 McpClientManager 初版。
- 完成 McpToolRegistry 工具注册逻辑。
- 完成 McpToolInvocationService 调用入口。
- 完成 McpGatewayController HTTP 接口。
## 修改过的文件
- `McpServerProperties.java`:读取配置。
- `McpClientManager.java`:管理 MCP Client。
- `McpToolRegistry.java`:缓存工具元数据。
- `McpToolInvocationService.java`:统一调用工具。
- `McpGatewayController.java`:提供 HTTP API。
## 关键设计决策
- 第一阶段只做 MCP Client,不做 MCP Server。
- 工具调用统一走 McpToolInvocationService。
- Controller 不直接操作 MCP Client。
- Tool 元数据先缓存在内存,暂不落库。
## 未解决问题
- 需要补充工具调用超时控制。
- 需要补充调用日志。
- 需要考虑多 MCP Server 名称冲突问题。
- 需要补充基础测试用例。
## 下一步建议
1. 增加调用超时配置。
2. 增加标准错误码。
3. 编写基础测试用例。
## 注意事项
- 不要重构 Agent Planner。
- 不要新增 Skill 装配逻辑。
- 不要把 MCP Server 开发混进当前任务。

9.2 compact 前提示词#

请先更新 docs/ai/handoff-summary.md,保留:
1. 当前任务
2. 已完成内容
3. 修改过的文件
4. 关键设计决策
5. 未解决问题
6. 下一步建议
7. 不要重复做的事项
更新完成后,我再执行 /compact。

然后执行:

/compact

Claude Code 文档说明,/compact 会用结构化摘要替换对话历史;项目根目录 CLAUDE.md 和未限定作用域的规则会重新注入,但 path-scoped rules、子目录 CLAUDE.md 等可能要等匹配文件再次读取后才恢复。因此,跨窗口关键状态不要只放聊天历史里。

参考资料:


10. /clear/compact/context 的使用边界#

10.1 /clear#

用于清空无关上下文。

适合:

上午做 MCP Gateway,下午改论文,晚上问 Git 分支。

这种必须 /clear

判断标准:

情况是否 /clear
换了完全无关任务
当前任务方向错了
大量失败尝试污染上下文
继续同一个功能开发
只是在同一任务内修 bug

10.2 /compact#

用于长任务续航。

适合:

情况是否 /compact
同一任务已经做了很久
对话里有大量日志和修改过程
想跨窗口继续同一任务
换了无关任务不建议,用 /clear
任务刚开始不需要

建议写法:

/compact focus on MCP Client Gateway current status, modified files, design decisions, unresolved issues, and next steps.

Claude Code 官方文档说明,可以通过 /compact 加 focus 来控制保留重点。

10.3 /context#

用于诊断当前上下文占用。

适合:

/context

然后观察:

  • 是否有超大文件内容;
  • 是否有无关工具输出;
  • 是否加载了过多 rules;
  • 是否某个 skill 过长;
  • 是否 MCP 工具定义占用过高;
  • 是否历史任务没有清理。

11. Subagent:把脏上下文隔离出去#

11.1 什么时候用 subagent?#

适合:

  • 大范围代码搜索;
  • 全项目依赖分析;
  • 日志排查;
  • 多文件代码审查;
  • 技术调研;
  • 失败原因定位;
  • 临时探索。

不适合:

  • 当前主线的关键决策;
  • 需要你持续把关的架构设计;
  • 会直接修改核心代码的操作,除非你专门授权。

Claude Code 文档说明,subagent 有独立上下文窗口,可以配置工具权限、模型、hooks 和 skills。它适合处理会产生大量文件读取和搜索结果的任务,然后只把摘要返回主上下文。

参考资料:

11.2 使用提示词#

请使用 subagent 调研 MCP 模块相关代码。
要求:
1. subagent 可以读取相关文件和日志。
2. 主上下文只返回摘要,不要返回源码全文。
3. 摘要包括:
- 相关文件列表
- 每个文件职责
- 当前实现缺口
- 推荐修改点
- 风险点
4. 不要修改代码。

11.3 项目级 subagent 示例#

文件:.claude/agents/code-researcher.md

---
name: code-researcher
description: Read-only codebase research agent. Use it for large-scale search, file mapping, dependency tracing, and implementation gap analysis.
tools: Read, Grep, Glob
---
You are a read-only codebase research agent.
Your job:
1. Locate files relevant to the user's task.
2. Summarize responsibilities of each file.
3. Identify implementation gaps.
4. Return only concise summaries, not full source code.
5. Never modify files.
6. Prefer file paths, symbols, and line-level findings.

12. Skill / Slash Command:把重复治理流程自动化#

上下文治理不能完全靠人记。可以把常见流程做成命令或 skill。

12.1 context-sync 命令#

文件:.claude/commands/context-sync.md

---
description: Update AI context governance files for the current task.
allowed-tools: Read, Edit, Grep, Glob
---
请执行一次上下文维护:
1. 阅读:
- CLAUDE.md
- docs/ai/current-task.md
- docs/ai/progress.md
- docs/ai/decisions.md
- docs/ai/handoff-summary.md
2. 检查:
- current-task.md 是否仍然符合当前任务
- progress.md 是否记录了最新阶段
- decisions.md 是否有新架构决策需要补充
- handoff-summary.md 是否可以支持新窗口继续
3. 更新:
- progress.md
- decisions.md
- handoff-summary.md
4. 输出:
- 当前状态
- 下一步建议
- 建议是否 /compact 或 /clear

使用:

/context-sync

12.2 task-start 命令#

文件:.claude/commands/task-start.md

---
description: Start a new task with controlled context.
allowed-tools: Read, Grep, Glob
argument-hint: [task name]
---
请启动一个受控任务:$ARGUMENTS
步骤:
1. 阅读 CLAUDE.md。
2. 阅读 docs/ai/current-task.md。
3. 阅读 docs/ai/decisions.md。
4. 阅读 docs/ai/progress.md。
5. 给出:
- 你理解的任务目标
- 本轮要做什么
- 本轮不做什么
- 需要读取哪些文件
- 计划修改哪些文件
6. 在用户确认前不要修改代码。

12.3 handoff 命令#

文件:.claude/commands/handoff.md

---
description: Create or update handoff summary before compacting or switching sessions.
allowed-tools: Read, Edit, Grep, Glob
---
请更新 docs/ai/handoff-summary.md,必须包括:
1. 当前任务
2. 已完成内容
3. 修改过的文件
4. 关键设计决策
5. 未解决问题
6. 下一步建议
7. 不要重复做的事项
8. 可以安全忽略的旧信息
输出完成后,建议用户是否执行 /compact。

13. Hooks:把部分上下文治理做成自动触发#

Claude Code hooks 可以在生命周期事件中自动执行命令、HTTP endpoint 或 LLM prompt。官方文档列出的常见自动化包括:

  • Claude 需要输入时通知;
  • 编辑后自动格式化;
  • 阻止受保护文件被修改;
  • compact 后重新注入上下文;
  • 审计配置变更;
  • 文件或目录变化后重新加载环境。

参考资料:

13.1 建议自动化的点#

场景建议 hook
每次 session 开始提醒读取 CLAUDE.mdcurrent-task.md
每次工具编辑后自动格式化或检查 protected files
每次 compact 前触发 handoff 更新提醒
每次 compact 后提醒重新读取 handoff / progress
每次修改配置记录审计日志
每次任务停止提醒更新 progress

13.2 简化示例:compact 前提醒#

注意:hook 配置会随着 Claude Code 版本变化而变化,实际请以官方文档和本机 /hooks 菜单为准。

{
"hooks": {
"PreCompact": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "echo 'Before compact: please update docs/ai/handoff-summary.md'"
}
]
}
]
}
}

14. MCP / Tool 上下文治理#

如果你的 Agent 装配工厂未来接入大量 MCP tools / skills,不要一开始全部加载。

建议采用三层加载:

第一层:Tool / Skill Card
- 名称
- 一句话用途
- 输入输出摘要
- 适用场景
- 风险等级
第二层:Manifest
- 参数结构
- 权限要求
- 调用方式
- 错误码
- 依赖系统
第三层:Body
- 详细执行步骤
- 复杂 prompt
- 代码模板
- 业务规则

推荐调用流程:

用户输入
意图识别
只读取候选 Tool / Skill Card
筛选 1~3 个候选能力
读取候选 Manifest
必要时读取 Body
执行调用
把调用结果摘要写回上下文

不要这样做:

用户一进来
加载所有 Skill 全文
加载所有 MCP tool 详细 schema
让模型自己在几百个工具里判断

Claude Code 文档提到,MCP tool definitions 默认可以 deferred,并通过 tool search 按需加载,只有工具名称会先消耗上下文;也可以通过 /mcp 查看每个 server 的上下文成本。

参考资料:


15. Tool Result Clearing 思想#

Anthropic Cookbook 里提到,工具调用结果会作为 tool_result 进入对话历史,并在后续每轮请求中继续消耗上下文。很多工具结果是可重新获取的,例如文件读取、API 响应、搜索结果,因此不一定要把完整结果一直保留在上下文里。

这对工程实践的启发是:

不要长期携带大段日志、全量文件内容、长搜索结果。
只保留:
1. 结论
2. 来源路径
3. 关键行号
4. 下一步影响

参考资料:


16. 场景演示:开发 MCP Client Gateway#

16.1 错误做法#

你直接说:

帮我实现 MCP Client Gateway。

Agent 可能会:

  • 读取大量无关模块;
  • 设计完整 Agent Planner;
  • 顺手搞 Skill 装配;
  • 甚至开始设计 MCP Server;
  • 把本轮任务扩大成平台级重构。

16.2 正确做法#

第一步,清空无关任务:

/clear

第二步,创建 docs/ai/current-task.md

# 当前任务:MCP Client Gateway MVP
## 本轮目标
实现 MCP Client Gateway 的最小可用版本。
## 本轮要做
- MCP Server 配置加载
- MCP Client 初始化
- Tool 发现
- Tool 调用
- HTTP 调用入口
## 本轮不做
- 不做 MCP Server
- 不做 Agent Planner
- 不做 Skill 装配工厂
- 不做前端页面

第三步,启动 Claude:

请先阅读:
1. CLAUDE.md
2. docs/ai/current-task.md
3. docs/ai/decisions.md
4. docs/ai/progress.md
然后只围绕 current-task.md 工作。
先给出任务理解、涉及文件和执行计划,不要立刻改代码。

第四步,阶段实现:

可以。先只完成配置结构和核心接口。
每次只实现一个小阶段,完成后更新 progress.md。

第五步,阶段结束:

请更新 docs/ai/progress.md 和 docs/ai/decisions.md。

第六步,出现大范围 bug:

请使用 code-researcher subagent 调查 MCP 调用失败原因。
主上下文只返回摘要,不要返回源码全文。

第七步,准备 compact:

/handoff

然后:

/compact focus on MCP Client Gateway current status, modified files, key decisions, unresolved issues, and next steps.

第八步,新窗口继续:

请阅读:
1. CLAUDE.md
2. docs/ai/handoff-summary.md
3. docs/ai/progress.md
4. docs/ai/current-task.md
然后继续 MCP Client Gateway 任务。
不要重复已经完成的内容。
先给出当前状态理解和下一步计划。

17. 方法论:CTSH 上下文治理循环#

可以把整套流程总结为 CTSH:

C - Curate:筛选上下文
T - Track:记录进度和决策
S - Summarize:阶段性摘要
H - Handoff:跨窗口交接

17.1 Curate:筛选上下文#

目标:让主 Agent 只看到当前任务必须的信息。

操作:

  • current-task.md 规定任务边界;
  • CLAUDE.md 规定长期规则;
  • 用 subagent 隔离大范围搜索;
  • /clear 切断无关任务;
  • 不要一次性读全项目;
  • 不要把所有工具/skill 全量加载。

17.2 Track:记录进度和决策#

目标:避免 Agent 忘记”做到了哪里”和”为什么这么做”。

操作:

  • 阶段完成后更新 progress.md
  • 架构选择写入 decisions.md
  • 修改文件写入 file-map.md
  • 不要只依赖聊天历史。

17.3 Summarize:阶段性摘要#

目标:降低上下文体积,保留决策信息。

操作:

  • compact 前更新 handoff-summary.md
  • 摘要只保留任务、文件、决策、风险、下一步;
  • 删除过期探索和无关日志;
  • /context 检查是否还有低价值上下文。

17.4 Handoff:跨窗口交接#

目标:新窗口、换模型、换工具后能稳定继续。

操作:

  • 新窗口先读 handoff-summary.md
  • 再读 current-task.mdprogress.md
  • 先让 Agent 复述当前状态;
  • 确认后再继续开发。

18. 决策表:什么时候该做什么?#

场景操作
新任务和旧任务无关/clear
同一任务做很久/handoff,再 /compact
不知道上下文被什么占满/context
大范围读代码subagent
要反复执行同一流程slash command / skill
关键规则总被忘写入 CLAUDE.md
当前需求边界总被扩大写入 current-task.md 的”不做事项”
架构方向被反复推翻写入 decisions.md
新窗口无法继续完善 handoff-summary.md
频繁忘记更新文档hooks 或 context-sync 命令

19. 每日工作流建议#

19.1 开始工作#

/clear
/task-start MCP Client Gateway

如果没有自定义命令,就手动输入:

请阅读 CLAUDE.md、docs/ai/current-task.md、docs/ai/progress.md、docs/ai/decisions.md。
先给出当前任务理解和计划,不要改代码。

19.2 开发中#

每次只完成一个小阶段。
修改前说明文件清单。
修改后说明变更点和验证方式。
阶段结束更新 progress.md。

19.3 调研中#

请使用 subagent 调研相关文件。
主上下文只返回摘要,不要返回源码全文。

19.4 结束前#

/context-sync
/handoff

然后根据情况:

/compact

或者:

/clear

20. 最小可执行版本#

如果你不想一开始搞复杂,先建 4 个文件:

CLAUDE.md
docs/ai/current-task.md
docs/ai/progress.md
docs/ai/handoff-summary.md

并形成 5 个习惯:

1. 新任务前 /clear
2. 当前任务写 current-task.md
3. 阶段完成更新 progress.md
4. compact 前更新 handoff-summary.md
5. 大范围搜索用 subagent

这已经能解决 80% 的上下文混乱问题。


21. 进阶版本#

当项目进入多人协作或平台化阶段,再补充:

docs/ai/decisions.md
docs/ai/file-map.md
docs/ai/context-policy.md
.claude/commands/context-sync.md
.claude/commands/handoff.md
.claude/agents/code-researcher.md
.claude/skills/context-governance/SKILL.md
hooks for PreCompact / PostCompact / Stop

22. 给企业 Agent 平台的启发#

如果你要做”Agent 装配工厂”或”Agent 调度基座”,上下文治理要平台化,而不是只靠 prompt。

建议平台层内置:

22.1 Agent Context Registry#

记录每个 Agent 的:

  • 长期系统规则;
  • 当前任务;
  • 会话状态;
  • 已加载 Skill;
  • 已调用工具;
  • 历史摘要;
  • 当前 token 预算;
  • 上下文污染风险。

22.2 Skill Manifest 分层加载#

每个 Skill 分三层:

Skill Card 轻量检索
Skill Manifest 参数和权限
Skill Body 详细执行逻辑

22.3 Memory 类型区分#

Profile Memory 用户偏好
Project Memory 项目规则
Task Memory 当前任务状态
Decision Memory 架构决策
Tool Memory 工具调用摘要
Error Memory 已解决错误和修复方式

22.4 自动压缩策略#

不要只按 token 上限压缩,还可以按事件压缩:

模块完成
测试通过
bug 修复
任务切换
工具结果过大
subagent 返回后
多轮失败后

22.5 上下文质量评分#

可以为每条上下文打分:

score = relevance + freshness + authority + reusability - verbosity - staleness

低分上下文不进主窗口,只保存在可检索存储里。


23. 检查清单#

23.1 CLAUDE.md 检查#

  • 是否少于 200 行?
  • 是否只放长期规则?
  • 是否没有临时任务内容?
  • 是否没有过期指令?
  • 是否没有互相矛盾的规则?
  • 是否有明确禁止事项?
  • 是否有测试和验证命令?

23.2 current-task.md 检查#

  • 是否写清当前目标?
  • 是否写清本轮要做?
  • 是否写清本轮不做?
  • 是否写清完成标准?
  • 是否列出重点文件或目录?
  • 是否避免任务范围发散?

23.3 progress.md 检查#

  • 是否记录已完成内容?
  • 是否记录修改文件?
  • 是否记录未完成事项?
  • 是否记录下一步?
  • 是否删除过期状态?

23.4 decisions.md 检查#

  • 是否记录关键架构决策?
  • 是否说明为什么这样选?
  • 是否说明影响范围?
  • 是否标记状态?
  • 是否避免重复争论?

23.5 handoff-summary.md 检查#

  • 新窗口能否仅靠它恢复任务?
  • 是否包含当前任务?
  • 是否包含已完成内容?
  • 是否包含修改文件?
  • 是否包含关键决策?
  • 是否包含未解决问题?
  • 是否包含下一步?
  • 是否包含不要重复做的事项?

24. 常见误区#

误区 1:把 CLAUDE.md 当无限记忆#

错。CLAUDE.md 会消耗上下文,越长越容易降低遵循效果。

误区 2:让 Agent 每次都读全项目#

错。应该先让它定位相关文件,再按需读取。

误区 3:compact 等于万无一失#

错。compact 是有损摘要,关键状态应该先写入文件。

误区 4:subagent 只是多 Agent 炫技#

错。subagent 最大价值是上下文隔离,特别适合大范围搜索和日志排查。

误区 5:所有 Skill 都常驻上下文#

错。应该先看 Skill Card,再按需加载 Manifest 和 Body。

误区 6:自动化可以替代人工判断#

错。自动化能执行流程,但不能完全判断业务决策是否仍然有效。


25. 最终原则#

  1. 主上下文只放当前决策必需信息。
  2. 长期规则进 CLAUDE.md,阶段状态进 docs/ai。
  3. 大范围搜索交给 subagent,不污染主上下文。
  4. 任务切换用 /clear,长任务续航用 /compact。
  5. compact 前先写 handoff-summary。
  6. 重复流程用 slash command / skill 自动化。
  7. hooks 用来做提醒、检查和自动注入,不要把复杂业务完全交给 hooks。
  8. Agent 不应一次加载所有工具和 Skill,而应按意图分层加载。
  9. 每个任务都要有”不做事项”,否则 Agent 会自动扩大范围。
  10. 上下文治理的目标不是记住一切,而是让 Agent 始终知道下一步该做什么。

26. 参考资料#

  1. Claude Code Docs: How Claude remembers your project
    https://code.claude.com/docs/en/memory

  2. Claude Code Docs: Best practices for Claude Code
    https://code.claude.com/docs/en/best-practices

  3. Claude Code Docs: How Claude Code works
    https://code.claude.com/docs/en/how-claude-code-works

  4. Claude Code Docs: Explore the context window
    https://code.claude.com/docs/en/context-window

  5. Claude Code Docs: Create custom subagents
    https://code.claude.com/docs/en/sub-agents

  6. Claude Code Docs: Hooks reference
    https://code.claude.com/docs/en/hooks

  7. Claude Code Docs: Automate workflows with hooks
    https://code.claude.com/docs/en/hooks-guide

  8. Claude Agent SDK Docs: Slash Commands in the SDK
    https://code.claude.com/docs/en/agent-sdk/slash-commands

  9. Anthropic Engineering: Effective context engineering for AI agents
    https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents

  10. Anthropic Cookbook: Context engineering: memory, compaction, and tool clearing
    https://platform.claude.com/cookbook/tool-use-context-engineering-context-engineering-tools

  11. arXiv: Context Engineering for AI Agents in Open-Source Software
    https://arxiv.org/abs/2510.21413

  12. arXiv: On the Use of Agentic Coding Manifests: An Empirical Study of Claude Code
    https://arxiv.org/abs/2509.14744

Claude Code 上下文窗口管理:从治理方法到工程实践
https://jupiter-ws.cn/posts/ai-coding/context-window-management/
作者
Jupiter
发布于
2026-04-10
许可协议
CC BY-NC-SA 4.0