Skip to content

上下文与规则文件

上下文工程不是把更多文字塞进提示词,而是让 Agent 在正确的时间看到正确的事实。对代码任务来说,仓库规则、当前 diff、相关源码、测试结果和用户约束通常比一份巨大的项目介绍更重要。

上下文的四层

  • 平台层:权限、网络和安全策略。
  • 仓库层:构建、测试、目录、提交和代码风格。
  • 模块层:某个 Go package 或 Java module 的局部约束。
  • 任务层:当前需求、相关文件、已有改动、验证命令和用户偏好。

越靠近任务,信息越具体;越靠近平台,约束越应该稳定。

CLAUDE.mdAGENTS.md

不同工具约定的文件名、搜索路径和优先级可能不同。不要假设一个工具读取的规则文件会被另一个工具自动读取。建议把真正重要的约束维护在仓库文档中,再生成或同步工具专用入口。

text
repository/
├── AGENTS.md                 # Codex/兼容工具的仓库级入口
├── CLAUDE.md                 # Claude Code 的仓库级入口
├── backend/
│   ├── AGENTS.md             # 后端模块局部规则
│   ├── go.mod
│   └── ...
└── services/order/
    └── README.md             # 领域事实和运行说明

规则文件应该写“可执行的约束”,例如:

markdown
## Verification
- Run `go test ./...` for Go changes.
- Run the narrowest Java test before the full Maven test.
- Include the exact command and result in the final report.

## Change scope
- Preserve unrelated working-tree changes.
- Do not change public API names without updating callers and tests.
- Prefer existing error types and logging conventions.

避免写成:

markdown
写出高质量代码,认真检查所有问题。

这类要求无法验证,也不能帮助 Agent 选择下一步。

渐进式加载

推荐的上下文预算顺序:

  1. 用户目标和验收标准;
  2. 当前分支、diff 和工作区状态;
  3. 最近邻模块的 README、接口和测试;
  4. 只读搜索得到的相关符号;
  5. 失败日志和审查意见;
  6. 必要时再加载全局设计文档。

可以把每次加载记录为一个短摘要:

json
{
  "task": "add idempotency key",
  "facts": [
    "HTTP handler is in internal/order/http.go",
    "repository uses PostgreSQL transactions",
    "integration tests require docker compose"
  ],
  "unknowns": [
    "whether old clients may omit the key"
  ]
}

事实和未知项分开,能减少模型把猜测当成结论。

长任务与上下文压缩

将长任务切成可恢复阶段:

text
discover -> plan -> implement -> verify -> review -> handoff

每个阶段保存:

  • 已完成的目标;
  • 修改过的文件;
  • 验证命令及结果;
  • 未决问题;
  • 下一阶段的入口。

压缩上下文时保留状态,不保留所有对话原文。一个好的摘要应该能让新的 Agent 继续执行,而不是只能复述过去发生了什么。

记忆的边界

适合保存:

  • 稳定的仓库工作方式;
  • 用户明确要求长期遵循的协作偏好;
  • 外部资料入口。

不适合保存:

  • Token、密码、个人隐私;
  • 某次任务的临时状态;
  • 可以直接从代码推导出的函数和目录;
  • 未经验证的模型猜测。

Go/Java 实践建议

Go 项目优先把 package 边界、go test、lint 和生成代码规则写清楚;Java 项目优先写 Maven/Gradle 命令、模块边界、Spring 配置和集成测试依赖。不要把两套语言的命令混在一张没有条件说明的清单里。

练习

  1. 为一个 Go 微服务写一份 20 行以内的仓库规则。
  2. 把一条“提交前要检查”的要求分别改写成模型建议和机器门禁。
  3. 设计一个包含 5 个字段的长任务检查点。

🚀 学习遇到瓶颈?想进大厂?

看完这篇技术文章,如果还是觉得不够系统,或者想在实战中快速提升?
王中阳的就业陪跑训练营,提供定制化学习路线 + 企业级实战项目 + 简历优化 + 模拟面试。