在小型 demo 里 AI 表现惊艳,一进到几千文件的真实项目就经常答非所问。这不是模型退化了,而是上下文窗口被无效信息占满。做好上下文治理,AI 才能带得动大项目。

第一步:维护一份 REPO.md 项目地图

在仓库根目录放一份精简的项目地图,让每次提问都可以引用它。

# 项目地图
- app/controller:HTTP 层,负责参数校验与响应
- app/service:业务逻辑层,禁止直接写 SQL
- app/model:数据模型,禁止在此层写业务
- 数据库约定:金额一律以「分」存储
- 权限约定:新接口必须挂在 api 分组并声明权限码

第二步:把“铁律”提炼成 CONTRACT.md

把命名规范、分层职责、禁止事项写成契约文件。提问时附上一句“请遵守 CONTRACT.md 中的约定再改代码”,能明显减少越权改动。

第三步:分片提问,不要全文灌入

需要 AI 修改某个功能时,只提供:相关文件路径、入口函数签名、改动目标、受影响调用点。无关文件不必全部粘进上下文。

我要调整 app/service/OrderService.php 的 create 方法:
1. 新增“订单金额必须大于 0”的校验,错误码 40001
2. 保持原有事务逻辑与返回结构不变
请先指出需要一并检查的调用方文件,再给出改动方案。

第四步:利用代码库索引能力

支持全库检索的编程助手可以直接给出符号定义、引用关系与调用链,比手动复制代码可靠得多。优先让 AI 自己去读文件,而不是由你搬运。

小结:把项目里恒定不变的知识沉淀成文档,把每次提问限定在小范围,AI 就从临时工变成了熟悉项目的协作者。