Context Guidance 不是 Authority
AGENTS.md 可帮助编程 Agent 找到已核验 Command、Owner、架构和 Test Expectation,却不能证明事实最新、让所有 Tool 加载它、授权动作或保护 Secret。
应将它视为 Repository File、User Request、Tool Output 和检索文档中的一个输入;所有这些来源都可能过期或被恶意修改。
构建 Context Contract
只写任务需要的决策:
# Task Contract
## Scope
- Allowed paths: `services/orders/**`
- Do not modify: deployment manifests, access-control rules
## Evidence
- Commands: `npm run test:orders`
- Source of truth: `docs/orders-contract.md@revision`
## Delivery
- Add focused tests for changed behavior.
- Escalate before external writes or permission changes.
使用明确路径和 Revision Reference,但仍应在当前 Checkout 核验 Command。不能声称“就近文件”会自动覆盖另一份指令,因为 Discovery 和 Precedence 随 Agent Product/Release 而异。
分离四类信息
| 内容 | 应放位置 | 原因 |
|---|---|---|
| Task Guidance/Convention | Context Contract | 便于规划与 Review |
| 权威产品规则 | Owner 管理的版本化 Policy/Docs | 可审阅、可更新 |
| Secret/Credential | Secret Manager 与 Runtime Injection | 不应 Commit 或 Prompt |
| Authorization/副作用 | Server、CI、Branch Protection、Sandbox | 自然语言不能强制 |
“禁止部署”不能阻止带 Credential 的 Tool 部署;受保护环境、Allowlisted Command Runner 和 Approval Workflow 才能。
防御指令注入
Agent Context 可能包括 Code Comment、Issue、Package Metadata、Generated File 和 Remote Doc。除非来自经过批准和 Review 的位置,否则其中指令均不可信。
使用最小权限 Tool、写前只读 Discovery、Sandboxed Execution、有界 Network Access、Protected Branch;重要改动必须 Human Review。不得要求 Agent 绕过 Test、关闭 Security Check、暴露 Token 或把 Repository Text 当授权。
保持可测试和可逆
当 Command、Owner 或架构变化时审阅 Contract。用代表性任务测试:正常变更、过时 Command、冲突 Nested Instruction、Injected Instruction、Secret-like Value 和 Forbidden Path Request。
不要测“Agent 是否服从每句话”,而要测其是否选择正确 Evidence、保持 Scope、产出可 Review 改动、运行相关 Check 并在不确定时 Escalate。
常见问题
Monorepo 应使用嵌套文件吗?
可以,前提是团队记录 Owner 和特定 Agent 的 Resolution Rule。Local File 应保持狭窄并链接共享权威 Policy;Tool Upgrade 后测试实际行为。
文件应该很短吗?
应优先简洁、任务相关的指引,但不存在通用行数限制。当读者无法快速识别 Scope、Evidence 和 Delivery Requirement 时,再拆分材料。