返回博客

AI 大项目如何拆分上下文并保持可追踪

人工智能5682
AI 大项目如何拆分上下文并保持可追踪

长期 AI 项目最容易失控的地方不是模型本身,而是上下文分散在聊天记录、代码、决策和临时文档中。本文从一个可追踪的项目问题出发,把上下文拆成可独立更新的文档单元,并给出交接、校验和失效处理方法。你将得到一套不依赖特定供应商的项目知识组织流程。文中只讨论可在本地复现的步骤,不把单次结果扩展成产品承诺;每个结论都标注前提、证据和无法覆盖的边界。读者可以先完成最小验证,再根据自己的版本、权限和数据补充实验,避免把配置示例误当成普遍结论。

AI 编程项目一旦超过几个文件,最先恶化的往往不是代码,而是上下文:

text
同一件事在不同对话里叫不同名字。
旧决策被新对话重新推翻。
模型读了太多历史,反而找不到当前目标。
多人并行修改时,不清楚谁负责哪一块。

1. 不要把项目规划写成一张超长清单

面对一个大需求,模型很容易一次列出几十个任务。看起来完整,实际有两个问题:

更好的做法是建立“决策地图”,把任务拆成一个个有依赖关系的决策:

text
目标:交付一个可验收的版本
  ├─ 数据模型如何演进
  ├─ 权限边界如何划分
  ├─ 核心接口如何保持兼容
  ├─ 哪些任务可以并行
  └─ 哪些验收指标必须先确定

每个决策单独记录四项:

text
问题是什么。
当前已知事实。
有哪些候选方案。
做出选择后会影响谁。

只有依赖已满足的决策,才进入下一轮对话。还没有足够信息的部分保持“未展开”,避免为了追求计划完整而制造假设。

2. 用术语库减少重复解释

大型项目经常有内部说法。一个动作如果每次都要用一大段话解释,模型和团队成员都会浪费上下文。

建议维护一个短小的 CONTEXT.md

markdown
# Project Context

## Terms
- 发布包:通过校验并进入预发布环境的构建产物。
- 任务卡:一个可以独立验收、拥有唯一编号的工作单元。
- 读模型:只负责查询,不执行写入的服务接口。

## Invariants
- 所有外部请求必须经过鉴权。
- 读模型不得直接修改主数据。
- 每个任务必须包含验证命令。

## Locations
- API 规范:docs/api/
- 架构决策:docs/decisions/
- 回归测试:tests/regression/

术语库应该记录项目事实,不要变成一篇百科全书。每次确认新术语时再追加,超过几百行就拆成按领域组织的多个文件。

3. 上下文交接包应该包含什么

长任务切换到新对话或交给另一位成员时,不要只说“请继续”。准备一份可检查的交接包:

text
handoff/
└─ TASK-042.md

模板如下:

markdown
# TASK-042 Handoff

## Goal
把订单查询接口的分页查询改成游标分页。

## Completed
- 已确认响应字段不能变化。
- 已新增两个失败测试。

## Current state
- 测试命令:npm test -- orders-pagination
- 当前失败:游标为空时重复返回第一页。

## Decisions
- 保持旧 offset 参数兼容一个版本。

## Next actions
1. 先建立最小复现。
2. 修复游标为空的分支。
3. 运行完整回归测试。

## Constraints
- 不修改生产数据库结构。
- 需要外部写入时先确认。

交接包的目标是让新对话快速进入“当前状态”,而不是保存完整聊天记录。敏感信息、API Key 和个人数据必须在写入前脱敏。

4. 架构体检要输出决策,不只输出建议

定期扫描代码库是有价值的,但一份“问题大全”很快会变成新的噪声。架构巡检报告应该把每个发现整理成一张可行动卡片:

text
问题:多个模块重复实现权限校验。
证据:文件 A、B、C 各自维护一套规则。
影响:修复遗漏会造成权限行为不一致。
建议:抽出统一策略接口。
风险:需要迁移现有调用方。
验收:旧测试不变,新增权限矩阵测试通过。

建议把问题分成三个等级:

text
必须修复:会造成数据错误、安全问题或持续返工。
值得优化:能减少复杂度,但不影响当前交付。
观察项:证据不足,先记录,不立即改代码。

模型给出的架构建议必须经过人工确认。扫描报告不是授权书,不能让模型因为发现“浅模块”就自动进行大范围重构。

长周期项目通常同时运行需求分析、Coding Agent、知识库和客服流程。如果每个工具各自保存 Key,后续无法回答:

text
哪个团队消耗了最多模型预算?
哪个任务反复重试?
哪个模型最适合当前工作流?
一次架构巡检调用了多少 Token?
text
项目文档 / Coding Agent / 内部 SaaS

             上游 API 统一入口

   Key 分组、模型路由、限流、调用追踪

        不同能力和成本的模型通道

建议按项目、环境和任务类型拆分配置:

bash
export API_KEY=team-dev-key
export API_BASE_URL=https://api.example.com/v1
export AI_PROJECT=order-platform
export AI_ENV=staging

代码示例:

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.API_KEY,
  baseURL: process.env.API_BASE_URL
});

const response = await client.responses.create({
  model: "gpt-5.6",
  input: [
    {
      role: "user",
      content: "读取当前任务交接包,只给出下一步验证命令"
    }
  ]
});

console.log(response.output_text);

6. 长任务成本怎么控制

长上下文和多轮 Agent 最容易造成预算失控。建议把费用拆成:

text
任务成本
= 输入 Token
+ 输出 Token
+ 工具调用
+ 重试
+ 并行会话
+ 网关和基础设施成本
text
project_id
environment
task_id
model
input_tokens
output_tokens
cache_tokens
retry_count
latency_ms
status_code

项目侧再记录:

text
Skill 版本
决策编号
交接包编号
验证命令
人工修改时间

两边合起来,才能判断某个流程是真的省时间,还是只是把返工变成了更多 Token。

7. 团队协作的最小制度

不需要一开始建立复杂平台。先统一五条规则:

  1. 每个任务有唯一编号;
  2. 每个决策有记录位置;
  3. 每次交接包含当前失败和下一步验证;
  4. 每次模型调用带项目和环境标识;
  5. 生产写入、删除和支付需要人工确认。

8. 上线前检查清单

text
[ ] 决策地图只包含已知事实和明确依赖
[ ] CONTEXT.md 没有重复规则和敏感信息
[ ] 交接包包含目标、现状、失败、决策和下一步
[ ] 架构报告每条建议都有证据和验收方式
[ ] 上游 API 的团队/项目/环境 Key 已拆分
[ ] 模型、endpoint、价格和权限已在后台核对
[ ] 每个 Agent 有最大步骤数、超时和预算
[ ] 调用日志记录项目、任务、模型、Token 和错误
[ ] 工具参数和用户数据已脱敏
[ ] 外部写入和破坏性操作保留审批

9. 成本与风险提示

上下文治理不能替代权限治理。一个交接包写得再清楚,如果模型拥有过大的文件和外部系统权限,风险仍然存在。

不要把 API 网关描述成绕过官方限制的工具。它的合规价值是统一接入、权限审计、计费和调用追踪。

10. 总结

大项目的 AI 编程效率,取决于上下文能否被拆分、交接和审计:

text
决策地图减少过度规划。
术语库减少重复解释。
交接包减少会话丢失。
架构巡检减少无证据重构。
上游 API 减少分散的 Key、模型和账单。

来源与说明

结论

本文给出了问题定位、配置或验证的可执行路径。实际结果仍取决于当前版本、权限和运行环境,提交前应按官方文档复核可变字段,并保留失败证据和回滚边界。

标签:AI项目上下文工程文档治理

推荐阅读

探索更多前沿洞察与行业干货。