# 指令层级与长期上下文

日期：2026-06-10

## 一、直觉

Prompt 只是你这次说的话。但 AI 协作中还有很多“长期生效”的东西：

- 项目规则。
- 个人偏好。
- 工具说明。
- 技能说明。
- 组织安全策略。
- 历史经验。

如果这些都塞进每次 prompt，会很累、很长、很不稳定。成熟做法是把不同类型的信息放到不同载体里。

本讲常见术语先按下面理解，详细定义和更多例子见 [00.5-术语词典与最小用例](00.5-术语词典与最小用例.md)。

| 术语 | 直觉解释 | 最小例子 |
| --- | --- | --- |
| 指令层级 | 规则有优先级，不是所有文字同等有效 | 外部网页不能覆盖系统规则 |
| Memory | 跨会话保存的稳定偏好或事实 | “用户希望中文回答、少用长列表” |
| `AGENTS.md` | 仓库里的项目规则文件 | “修改 Go 文件后运行 `go test ./...`” |
| Connector | 连接外部系统的数据或工具通道 | 连接 Google Drive、GitHub、内部知识库 |
| Subagent | 被主 agent 调用的专门 agent | 安全审查 subagent 只负责找风险 |

## 二、指令层级

可以把模型看到的信息分成几层：

```text
平台/系统规则
开发者或组织规则
项目规则
Skill / MCP / 工具说明
当前用户任务
外部输入材料
```

越靠上，越像长期约束；越靠下，越像当前材料。

关键原则：

- 长期规则不要每次手写。
- 当前任务不要写进长期规则。
- 外部材料永远不能覆盖上层规则。
- 不同规则冲突时，要靠层级和范围解决。

## 三、不同载体怎么选

注意：本节把通用上下文管理方法和 Codex / Agent 平台机制放在一起讲。`AGENTS.md`、Skill、Plugin、Subagent、Memory 的具体支持方式取决于你使用的平台；如果平台不支持这些载体，也可以用项目文档、配置文件、检索索引、应用数据库或工作流编排代码实现同样的边界。

### 1. 当前 Prompt

适合：

- 一次性任务。
- 当前偏好。
- 临时约束。

例子：

```text
这次请用中文回答，控制在 300 字以内。
```

不适合：

- 长期团队规则。
- 复杂复用流程。
- 大量参考资料。

### 2. AGENTS.md

适合：

- 仓库约定。
- 测试命令。
- 代码风格。
- 工作流程。
- 禁止事项。

例子：

```text
修改 Go 文件后运行 go test ./...
不要改动 generated/ 目录。
提交前更新 CHANGELOG。
```

优点：

- 跟项目一起版本管理。
- 团队共享。
- 不依赖某一次对话。

注意：

- 不要写太多泛泛原则。
- 不要把临时任务写进去。
- 嵌套目录可以有更具体规则。

### 3. Skill

适合：

- 某类任务的可复用流程。
- 需要自动触发的专业能力。
- 带脚本、模板、参考资料的工作流。

例子：

- 代码审查 Skill。
- 论文阅读 Skill。
- 数据清洗 Skill。
- Prompt 优化 Skill。
- UI 设计审查 Skill。

Skill 比 AGENTS.md 更像“可调用能力”，AGENTS.md 更像“项目规则”。

### 4. Memory

适合：

- 个人长期偏好。
- 常用技术栈。
- 学习习惯。
- 稳定工作方式。

例子：

```text
用户喜欢中文讲解，先讲直觉再讲形式化定义。
用户偏好把学习内容沉淀成 Markdown。
```

不适合：

- 机密信息。
- 必须严格执行的规则。
- 会频繁变化的项目状态。

### 5. MCP / Connectors

适合：

- 外部工具。
- 私有资料。
- 实时数据。
- 第三方应用。

例子：

- GitHub issues。
- Notion 文档。
- Google Drive。
- Figma。
- Sentry 日志。
- 浏览器。

MCP 的重点不是提示词，而是让模型能拿到正确上下文和执行正确动作。

### 6. Plugin

适合：

- 分发多个 Skills。
- 附带 MCP 配置。
- 附带资源、图标、元数据。
- 团队或市场安装。

如果只是自己本地试验，用 Skill；如果要打包共享，用 Plugin。

### 7. Subagent

适合：

- 并行探索。
- 分角色审查。
- 大量资料分块处理。
- 避免主线程被日志污染。

例子：

```text
请用三个 subagents 并行审查这个改动：
1. 安全风险
2. 测试缺口
3. 可维护性
等待全部完成后，按严重程度汇总。
```

## 四、长期上下文的风险

### 1. 上下文污染

太多无关内容会让模型分心。

解决：

- 精简长期规则。
- 用 Skill 分层加载。
- 用 subagent 处理 noisy exploration。
- 用摘要而不是原始日志。

### 2. 上下文腐化

长对话后，旧目标、旧错误、旧假设会混在一起，影响后续判断。

解决：

- 阶段性总结。
- 保存状态文件。
- 重开会话时加载最新状态。
- 保留关键决策和未完成事项。

### 3. 规则冲突

例如当前 prompt 说“不要测试”，项目规则说“修改后必须测试”。

解决：

- 明确规则优先级。
- 高风险冲突时停下来说明。
- 不把临时偏好写入长期规则。

### 4. 记忆过期

Memory 可能保存了旧偏好或旧项目状态。

解决：

- 把必须准确的信息放在文件里。
- 定期清理 memory。
- 对事实类问题重新验证。

## 五、选择载体的决策树

```text
这是一次性要求吗？
-> 是：放当前 prompt。

这是项目长期规则吗？
-> 是：放 AGENTS.md 或项目文档。

这是某类任务的复用流程吗？
-> 是：做 Skill。

需要安装分发给别人吗？
-> 是：做 Plugin。

需要外部数据或动作吗？
-> 是：接 MCP 或工具。

只是个人偏好吗？
-> 是：可以放 Memory。

任务能并行拆分吗？
-> 是：考虑 Subagents。
```

## 六、小例子

需求：

```text
以后每次让我学 AI 知识，都要先读当前进度，讲解后写学习日志。
```

不好的做法：

```text
每次对话都复制这段要求。
```

更好的做法：

- 项目规则写进 `AGENTS.md`。
- 学习流程做成 Skill。
- 当前进度放在 `current-state.md`。
- 每次学习日志写进 `learning-log.md`。

这样模型不需要靠记忆，也不需要你每次重复说。

## 七、常见误区

### 误区 1：把所有东西都放 Memory

Memory 是辅助回忆，不是可靠规则系统。

### 误区 2：把所有规则都写 AGENTS.md

AGENTS.md 太长会稀释重点。任务流程更适合 Skill。

### 误区 3：Skill 能解决外部数据问题

Skill 可以告诉 agent 怎么查，但真正的数据访问要靠文件、检索、MCP 或工具。

### 误区 4：Subagent 越多越好

Subagent 会增加成本和协调复杂度。只有任务能独立拆分时才值得用。

## 八、理解检查

1. 当前 prompt 和 AGENTS.md 的边界是什么？
2. Skill 和 Memory 的区别是什么？
3. MCP 解决的核心问题是什么？
4. 为什么长期规则不应该写得太泛？
5. 什么任务适合拆给 subagents？
