前言
在上篇《为什么每个团队都需要一套私有 Context 工程》里,我们只干了一件事:
用成本结构 + IN→推理→OUT 的最小单元,论证了一个结论:
在智力被工业化之后,真正昂贵的已经不再是"推理",而是"构造上下文(IN)"。
私有 Context 工程不是锦上添花,而是在新成本结构下,
你能不能真正用好 AI 的前提条件。
这篇是下篇,我们换一个视角:
- 不再讨论「要不要做」,默认你已经认同这件事是迟早要发生的;
- 专注回答一个问题:如果真的要在团队里落地一套「私有 Context 工程」,应该从哪里下手、按什么节奏推进?
为了控制篇幅,这篇只覆盖三个核心面向:
- 好 context 的工作标准:什么样的输入,值得你每次都努力构造?
- 长期载体与结构设计 :如何用目录、
context.md、架构决策记录和知识库,把好 context 预先拆分和铺好? - 在真实工程里的落地路径:新工程 / 存量工程各走什么路线,一次"大需求"应该如何跑完上下文流水线?
一、先把目标说清楚:不再「现场编造」上下文
很多团队在实践中会出现一个典型模式:
- 每次遇到新需求,都从零开始「讲故事」:
- 这是啥系统、有哪些模块;
- 最近发生了什么变更;
- 哪些是铁律、哪些是偏好;
- 哪些历史决策一定要记住......
- 然后再靠一次次剪贴 / 搜索 / 复制,把这些东西堆进同一个对话框里。
结果就是:
- 每次构造 IN 都很累;
- 每次构造出来的 IN 都长得不太一样;
- 模型偶尔发挥很好,但缺乏可预测性和可复制性。
私有 Context 工程想做的,是把这件事翻过来:
目标不是让每次 query 都「现场编造」 context,
而是用一些长期稳定的载体 + 简单规则,
把「好 context」预先拆分、分层、模板化。
真正提问时,只做「选取 + 拼接 + 少量补充」。
这就需要我们先讲清楚:
什么是「好」的 context?我们到底在「预先铺设」什么东西?
二、「好 context」的工作标准:五个必要特征
工作定义可以这样压缩:
一个好的 context = 在当前这一步推理里,最小体积的、高信号、结构化的 token 集合。
它至少满足下面几个特征:
-
1. 任务相关性强(高信号 / Need-to-know)
- 上下文围绕的是「当前这一步真正需要什么」,而不是「我手上有什么就都塞进去」。
- 判定标准很简单:如果删掉一段上下文,对当前一步输出几乎无影响,那这段就是噪音。
-
2. 边界清晰、与模块结构对齐
- 每个智能体只看到「自己职责内的局部世界」:
- 它负责的输入;
- 相关参考库;
- 上一阶段智能体的结构化输出摘要。
- 而不是整个系统的原始混沌状态。上下文的可见范围要和模块 / 角色边界一一对应。
- 每个智能体只看到「自己职责内的局部世界」:
-
3. 体积受控,token 有明确预算意识
- 上下文窗口是一种稀缺资源,必须事先规划预算:系统提示 / 工具描述 / 历史 / 检索各占多少。
- 当接近阈值时,应优先触发:压缩 / 卸载 / 摘要,而不是继续无脑追加历史。
-
4. 结构化且可解析
- 好的 context 不是一坨散文,而是:
- 有清晰分段(如 background / instructions / tools / examples / history);
- 有 schema、标签、标题,能标出「规则」「任务」「参考」「中间状态」。
- 中间大块状态尽量落盘到文件系统,上下文里只放指针或结构化摘要,让模型能快速定位当前指令与约束。
- 好的 context 不是一坨散文,而是:
-
5. 信息新鲜、状态一致
- 当前窗口里,只保留:
- 当前目标;
- 最新计划;
- 尚未解决的关键 TODO;
- 必要依赖与事实。
- 过期事实、已推翻结论要么下沉到冷历史,要么通过摘要「更正」,不能和最新决策混在一起给模型看。
- 当前窗口里,只保留:
-
6. 为「下一步行动」而优化,而不是为「一次性解释一切」优化
- 每一轮 context 都只为当前这一步期望行为服务,而不是试图在一个调用里讲清整个世界。
- 评价标准不是"讲得全",而是"让模型这一步做对"。
有了这套工作标准,接下来所有设计(目录结构、context.md、架构决策记录、索引、Agent 流水线),本质上都在回答一个问题:
怎样用尽量少的人力,把「好 context」提前拆好、放好,让每次构造 IN 时只需要低成本组合?
顺着这个视角再回头看今天市面上的一些工具,其实也很好理解它们各自扮演的角色:
- 像 Spec Kit、OpenSpec 这类规范工具,本质上是在帮你对「脑子里的模糊想法」做一次初步解压------把这一次任务要做什么、接口长什么样写清楚,让人类和模型都有一个可以 review 的半成品;
- bmad-method 这类思考 / 拆解方法,也是帮助人类做「第一轮解压」,把一团直觉拆成有结构的问题骨架,方便大家对齐「我们到底想干什么」;
- IDE 里的各种 Agent、skills、MCP 能力,则更多是在运行时帮你补齐 State(去读代码、查文档、调 API),相当于在解压过程中随手补上缺失的事实。
这些工具有一个共同点:都在帮助我们把"解压过程的前半段"做得更稳、更容易被人类检查和校准 ,确保后面的完整解压不会一开始就跑偏。
而这篇要谈的私有 Context 工程,是站在它们之上,再多搭一层长期可维护、可复用的上下文地基: - 不只是关心「这一次怎么解压得对」,
- 更关心「以后每一次遇到同类问题,都能在同一套上下文结构里,稳定地完成从模糊到清晰、从想法到结果的解压」。
三、长期载体:把好 context 预先拆分和分层
讲完什么是"好 context",下一个自然的问题就是: 这些东西平时应该放在哪里、长成什么形状? 否则每次都是现找现编,依然会很累。 我自己的实践是:先承认「一次大需求」只是业务长河里的一小段,而真正长期复用的,其实是那几类相对稳定的载体。
1. 分层的目录和 context.md
可以简单想象成一棵树:项目 → 领域 / 子系统 → 模块 / 组件 → 关键文件。 这棵树的每一层,只需要用一份很短的 context.md 回答四个问题:
- 我负责什么?(职责)
- 边界在哪里?(不负责什么)
- 我依赖谁?(上游 / 下游 / 外部系统)
- 入口在哪?(关键接口、关键文件)
同时,context.md 还有一个很重要的职责:充当当前目录的语义索引 ------告诉 AI「这里到底有哪些子模块 / 文件,重点看啥,哪些文件可以先不用看」,
这样在需要读代码或文档的时候,模型可以优先选择真正相关的那几份,而不是在一大堆无关文件里到处乱翻。
做需求或重构时,只要顺着目录往下钻,挑出相关几层的 context 段落,就能给模型构造出一版「局部系统观」,而不是让它从零散文件里自己猜。
2. 架构决策记录 + 模块 context 互链:把「为什么这么做」也变成上下文
很多严重 Bug 和重构争议,根源都在于:
后来的人不知道当初「为什么这么设计」。
解决方案很直接:
- 对「为什么要这么设计 / 为什么要升级架构」写简短的架构决策记录;
- 在相关模块的
context.md里挂上这些决策记录的链接。
真正讨论重构或新需求时,把:
- 模块
context+ 相关架构决策记录
一起喂给模型,相当于一次性提供「现状 + 历史理由」,极大减少人肉复述历史的成本。
3. discussions/:按任务维度组织的临时工作上下文
对需要多轮推理的大需求,可以采用:
- 每个具体需求 / 重构任务开一个讨论文件,记录:
- 目标;
- 已知约束;
- 中间探索和假设;
- 阶段性结论。
- 任务结束后,从中提炼「仍然稳定的事实 / 原则 」回写到对应的
context.md或知识库文章;
discussions本身只作为可追溯但不长期进入上下文窗口的历史保留。
这样做有两个好处:
- 热 context 集中在任务期爆发,不会永久占据 L2 / 知识库存储;
- 上收动作是有节奏的「事后沉淀」,而不是每一步都要同步维护所有层级。
4. knowledge-base/:作为通用高价值 context 池
把通用、相对稳定的东西沉淀成文章 / 笔记:
- 领域模型;
- 架构原则;
- 上下文工程策略;
- Agent 设计模式与最佳实践......
具体 query 时,不是把整个知识库砸给模型,而是按任务类型选 1--2 篇最相关的蓝图,作为「背景 + 方法论」注入,替代临场长篇解释。
5. 历史分层:Hot / Warm / Cold 与仓库结构的映射
结合前面提到的不同层次的信息类型,你可以在工程里做一层简单映射:
-
Hot:当前任务的目标、最新状态、关键决策
- 直接进入上下文窗口;
- 对应:当前活跃的
discussions、最近更新的模块context段落。
-
Warm:最近几次相关改动、局部讨论
- 通过检索 / 索引按需选取;
- 对应:同目录下较新的
discussions、相关架构决策记录。
-
Cold:完整历史、归档文章
- 只在需要深度溯源时才拉入;
- 对应:
knowledge-base/中的归档文章和长文。
这一层分级的核心,是让模型优先看到 Hot + 必要的 Warm,避免被 Cold 历史拖垮。
四、复杂工程下的两条落地路径:新工程 vs 存量工程
理解了「好 context」和长期载体,接下来的问题就是:
在真实工程里,如何一步步搭起来?
这里可以区分两种典型场景:
- 从 0 开始的新工程;
- 已经跑了很多年的存量工程。
4.1 新工程:从第一天就把 Context 工程当成基础设施
-
1)把 Context 工程当成架构层,不是文档附属物
- 在系统架构设计阶段,就把「如何提供 / 维护 / 复用上下文」当成和模块划分、数据模型同级的问题。
- 设计「上下文层」:目录结构、载体模板、索引入口。
-
2)先定信息形状,再写内容
- 为模块
context、架构决策记录、任务讨论等先定死最小模板,让后续所有自动化都有结构可依赖,而不是面对一堆 freestyle 文本。
- 为模块
-
3)及早内置「一次大需求的上下文流水线」
- 在工程早期就约定:大需求统一走哪条流水线(下面一节详述 0→6 步);
- 实现可以先很粗糙(Checklist + 少量脚本),关键是流程要早定,否则后期很难推行。
-
4)同步工程产物与 Context:每个正式输出必须挂钩
- 约定:新模块、重大改动、设计文档产生时,必须附带:
- 对应模块
context更新(哪怕是自动生成的草稿); - 至少一条架构决策记录,或者在已有的决策记录上补充一条新记录;
- 重要规范进入参考库,而不是只留在聊天或 PR 里。
- 对应模块
- 约定:新模块、重大改动、设计文档产生时,必须附带:
-
5)早期不做"大而全"索引,只做关键路径
- 先只为 2--3 类关键任务(新功能、改接口、修线上 Bug)设计「任务入口 + 推荐 context 列表」,
- 等系统相对稳定,再扩展到所有模块的细粒度索引。
4.2 存量工程:先控制信息爆炸,再逐步引入结构
对遗留系统,关键词是:「从任务切入」「先收缩,再结构化」。
-
1)从高价值任务类型切入,而不是从目录树切入
- 明确这套上下文工程优先想帮到的 2--3 类任务,如:
- 重构大模块;
- 引入新 cross-cutting 能力(观测、权限、多 Agent 编排);
- 复杂线上问题排查。
- 对每类任务,反推通常涉及哪些模块 / 文档 / 规范 / 历史讨论,相当于为遗留系统补一层「任务视图」。
- 明确这套上下文工程优先想帮到的 2--3 类任务,如:
-
2)建立「受限工作子集」:人为圈出重点上下文区域
- 对选中的任务类型,先人为圈一个有限子集:
- N 个关键模块 / 目录;
- 对应的设计文档 / 架构决策记录 / 规范;
- 最近一段时间相关的讨论 / PR / Issue。
- 后续 Agent 扩展、索引、摘要,一开始只在这块子集里活动,避免被全局噪音拖垮。
- 对选中的任务类型,先人为圈一个有限子集:
-
3)用一次真实大需求当试验田,跑完整流水线
- 选一条真实大需求,跑一遍从「选 context → 扩展 → 拆 task → 执行 → 回写」的全流程;
- 这次实践过程本身,就是该工程的第一版「上下文工程 Playbook」。
-
4)对存量信息采用「按需结构化」,而非「全量结构化」
- 不尝试一次性为整个遗留系统写完所有
context; - 采用「用到哪块,就为哪块补结构化 context」的策略:
- 某个模块第一次被卷入大需求 → 为它补模块
context+ 必要的架构决策记录; - 某类 Bug 多次出现 → 为该异常路径写专门的「调试 context」;
- 某条规范在 Review 中反复被提及 → 收敛成规范文档挂入参考库。
- 某个模块第一次被卷入大需求 → 为它补模块
- 不尝试一次性为整个遗留系统写完所有
-
5)渐进引入自动化:从摘要 + 簇类开始
- 在已经圈定的重点区域,让 Agent 做一些低风险自动化:
- 为老文档 / 代码目录生成简要摘要;
- 对历史讨论 / Issue 做聚类,识别经常被提及的问题域;
- 为重要模块生成初版
context草稿,交给人类修改。
- 目标不是一开始就做高精度 task 拆解,而是先造出一张可浏览的鸟瞰图。
- 在已经圈定的重点区域,让 Agent 做一些低风险自动化:
五、一次"大需求"的上下文流水线长什么样?
无论是新工程还是存量工程,真正执行时,一次复杂需求大致都会走完这样一条上下文流水线(人机协作版):
-
Step 0:由人类圈定上下文边界,并重置会话
- 先不让 Agent 在全仓库乱搜,而是由人或上层工具提供「候选上下文子集」:相关模块、文档、规范。
- 选定范围后,开启新会话或清空上下文,避免历史噪音干扰。
-
Step 1:输入少量模糊需求(Intent Seed)
- 用自然语言给出本次想达成的结果、所在系统 / 模块、已知硬约束即可,刻意不过度「一次性说完一切」。
-
Step 2:在限定子集内做结构化理解 + 缺口探测
- Agent 只在 Step 0 选定的文件集合里活动:
- 梳理现有实现、重要接口、已有约束和架构决策记录;
- 构造一个结构化的问题骨架(目标 / 现状 / 约束 / 风险 / 未知);
- 输出一份「缺口 & 风险清单」。
- Agent 只在 Step 0 选定的文件集合里活动:
-
Step 3:受控扩展草稿 context,并显式标注假设
- 在问题骨架上做有限扩展,但必须区分:
- 来自用户的原始输入;
- 来自文件 / 代码的已知事实;
- Agent 基于经验的「假设性补全」。
- 对每条假设增加来源与置信度说明,形成「草稿 context v0」。
- 在问题骨架上做有限扩展,但必须区分:
-
Step 4:人类 Review → 修改 → 再生成(迭代对齐)
- 人的工作被简化为:
- 接受 / 拒绝 / 修改假设;
- 回答少量关键开放问题;
- 在必要时补充少量背景。
- Agent 根据反馈生成「对齐后的 context v1/v2...」,直到目标、现状、约束都无重大歧义。
- 人的工作被简化为:
-
Step 5:从最终 context 派生 task 树并绑定局部切片
- 在对齐版 context 上按模板拆出一棵 task 树:分析 → 设计 → 实施 → 验证 → 文档更新;
- 每个 task 绑定其所需的局部 context 切片,而不是每步都重复给全量 context。
-
Step 6:执行与验收,并把结果反哺回 Context 体系
- 执行可以是 Agent、人工或混合,但每个 task 都有清晰输入和验收标准;
- 关键成果 / 决策上收为模块
context/ ADR / 文章; - 失败案例触发「报错 → 归因 → 更新 Context」的反馈闭环。
这条流水线的价值在于:
- 输入端:通过 Step 0 的「人工圈定上下文边界」,大幅减少自动检索噪音;
- 中间层:通过结构化理解、假设标注和迭代 Review,把便宜输入演化为高质量、可执行的 context,再落到可检查的 task 上。
六、Context 架构师:从抽象概念到具体职责
当 Context 被当成工程对象时,团队里会自然冒出一个新角色:
上下文架构师(Context Architect)
这不只是一个好听的头衔,而是有非常具体的职责和交付物:
-
1)结构设计者:把 Context 变成「有形状的文件系统」
- 设计不同层次的信息在工程里的落盘方式(哪些是长期规则、哪些是模块说明、哪些是任务笔记);
- 规划
knowledge-base/、模块context.md、discussions/、索引文件之间的关系; - 为每一层定义「必须回答的最小问题」,避免文档重新变成长篇小说。
-
2)约束与流程的维护者:围绕 IN 设计可复用剧本
- 从真实项目中提炼出可重复的工作流(新功能、重构、线上事故复盘等);
- 为这些步骤写出清晰的输入 / 输出约束(Intent、State、Constraints、Format),沉淀为模板;
- 在早期亲自跟着这些剧本跑几轮,观察 AI 在每一步的思考方式,找出需要「加约束」或「减噪音」的地方。
-
3)进化与信任的守门人:通过信噪比反馈闭环让系统越用越好
- 设计并落地 Context 质量的度量方式:覆盖率、利用率、腐烂风险等;
- 建立「报错 → 归因 → 更新 Context」的反馈机制,让每一次失败都推动体系升级;
- 在团队内教育和推广:什么时候该重置会话、什么时候该补充更上层的规则和模块说明、什么时候该把一次讨论上收沉淀。
在实践中,还有两个容易被忽略、但对这个角色非常关键的视角:
-
面向"过程"而不是只看"结果"
- 很多时候我们只在意这次 Agent 输出对不对,而忽略了它中间是怎么想的、怎么走到这个结果的。
- 在新的职责范式下,一次对的结果并不算成功 ,更重要的是:
- 找出这次执行过程中,哪些地方和你的思路发生了偏离;
- 分析偏离的原因,是信息缺失,还是约束不清,还是工具不够;
- 通过补充约束、调整流程、引入合适的工具,把这些偏差系统性纠正掉。
- 目标是:当未来遇到类似任务时,在不需要你频繁干预的情况下,Agent 也能沿着正确的思路走完过程。
- 换句话说,Context 架构师不是在解决某一次具体问题,而是在改造一整类问题的解法------只要信息是对的,推理过程被拉直了,结果大概率也会是对的。
-
紧贴业务演进,而不是"高悬在业务之上"
- 一个真正有价值的 Context 架构师,往往也是团队里最懂业务演进节奏的人之一。
- 业务从来不是一步到位的,很多关键规则、流程、红线,都是在一次次项目中被试出来、修出来的。
- Context 工程如果脱离这些真实的业务节奏,只停留在"理想蓝图"层面,很快就会和代码、和一线实践严重脱节。
- 更现实的做法是:让 Context 工工程永远贴着业务走 ------
- 新业务上线时,跟着跑几轮,把踩坑和修正同步进约束和模板;
- 老业务重构时,顺手补上之前缺失的模块说明和决策记录;
- 用业务的真实变化,作为推动 Context 体系进化的主要动力。
一个简单但实用的评估标准是:
如果有新人加入团队,他只需要:
- 看完团队的基础规则和架构蓝图;
- 按照模板写几次任务级别的 context;
- 在 AI 的帮助下完成几个真实需求;
整个过程几乎不需要你口头把「隐形规范」再讲一遍,
那么这套私有 Context 工程大概率已经走在正确的路上,
而你也基本完成了一个合格 Context 架构师的第一阶段使命。
结语:从「用工具」到「改造协作方式」
如果把上下篇压成一条线,它大概是这样的:
- 智力被工业化生产之后,真正昂贵的变成了「构造上下文」;
- 一切任务都可以看成 IN→推理→OUT,当前重要的问题是:我们用什么方式来构造 IN;
- 通用上下文工程面对的是未知世界,只能依赖 Search + 动态拼接,在复杂业务里会遇到天花板;
- 对具体组织而言,Context 是可以被设计、被维护、被演进的资产;
- 为自己的业务建立一套「私有 Context 工程实践」,本质上是在重构团队与 AI 协作的方式。
这篇只是给出了一套起步的骨架:
好 context 的标准、长期载体的设计、新工程 / 存量工程的落地路径,以及一次大需求的上下文流水线。
真正的价值,不在于你是否 100% 按照这套模板执行,
而在于你是否开始用工程师的方式,
去审视和改造这条连接「人 → AI → 产出」的上下文通道。
等你哪一天回头看,会发现那条曾经让你觉得「每次解释上下文都好累」的链路,
已经悄悄变成了团队最重要、也最难被复制的竞争力之一。