--- name: context-management description: 在多轮对话和多 Agent 协作场景下,帮助模型管理指令、项目状态和长上下文。通过外部文档与会话笔记实现可控的“记忆”、指令冲突检测和高质量交接。适用于任务跨多次调用、跨 Agent、需要稳定行为规范时使用。 --- # 上下文与指令管理 Skill > 本 Skill 用于指导 LLM/Agent 在复杂项目中: > > - 明确“指令 vs 信息”的区分 > - 把长期记忆外化到文件(AGENTS.md / SESSION_NOTES.md) > - 在接受新指令时做冲突检测 > - 控制上下文长度,避免无脑堆日志 > - 提供可追踪、可审计的决策记录 --- ## 1. 何时使用本 Skill 当满足以下任一条件时,应主动启用本 Skill 的行为规范: - 任务跨越多轮调用或多个 Agent,需要「记住前情」; - 需要在一个仓库/项目内**固化规则与工作流**; - 用户或其他 Agent 提到: - `AGENTS.md`、`SESSION_NOTES.md`、`会话笔记`、`交接文档` 等; - “帮我管理上下文 / 指令 / 规则”; - 上下文变长,模型开始显得遗忘、反复、指令不一致; - 存在不同人(或 Agent)反复参与同一项目,容易跑偏。 如果当前任务只是一次性、几句话就能完成的小活,可以不主动使用本 Skill(除非用户明确要求)。 --- ## 2. 核心理念(Skill 的设计哲学) 1. **指令与信息分离** - **指令(Instructions)**: - 规定“要怎么做事”的元规则; - 如风格偏好、安全约束、不能做的事、阶段性侧重点。 - **信息(Facts/State)**: - 描述“世界/项目当前是什么样”的事实; - 如架构设计、实现细节、TODO 列表、已知 bug 记录等。 本 Skill 要求: - 指令写在 `AGENTS.md` + `SESSION_NOTES.md` 的「指令与约束」部分; - 项目状态与事实写在「重要背景」「近期工作记录」「TODO」。 2. **渐进式信息披露(Progressive Disclosure)** - 不要一股脑把所有历史对话、全部文档塞进上下文; - 优先: 1. **定位**:找到相关文件和章节; 2. **概括**:在内部思考中做小结; 3. **引用**:对用户使用“指向 + 摘要”的方式回答; - 只有在确实需要时,才展开详细内容。 3. **文件系统即外部记忆** - 把稳定的知识放在文件里,而不是只放在一段长聊天中; - Skill 的指令短小清晰,把复杂细节拆到: - `AGENTS.md`:Agent 行为准则; - `SESSION_NOTES.md`:项目当前状态与会话笔记; - 其他专门文档(如 `docs/xxx.md`); - 这样做有三个目的: - 减少 token 压力; - 提供可版本控制的“记忆”; - 让多 Agent / 多人都能共享同一套认知。 4. **明确、可审计的决策与指令变更** - 每次指令变化、冲突解决、重大架构决策 必须以“可追踪文字”形式写入文档,而不是只说在对话里; - 方便日后复盘: “当时为什么这么决定?谁改的指令?覆盖了什么旧规则?” 5. **将复杂任务拆分为阶段并外化成计划文档** - 对于复杂/跨多轮的工作,建议使用 `IMPLEMENTATION_PLAN.md`: - 按 3–5 个 Stage 拆分目标; - 为每个 Stage 约定可验证的成功标准与测试; - 在推进过程中更新 Stage 状态; - 完成后可删除或归档该计划文件。 - 这样做可以让多个 Agent / 人类在多轮对话中保持同一认知。 --- ## 3. 入口流程:启动本 Skill 时你要做的事 当本 Skill 被触发时,Agent 应该遵循以下步骤: 1. **检查并读取关键文档** - 尝试读取根目录的: - `AGENTS.md`(如果不存在,可提示用户用模板新建); - 尝试读取当前项目/代码仓内的: - `codex/SESSION_NOTES.md` 或类似约定路径; - 如果不存在,可使用 `SESSION_NOTES.template.md` 作为起点。 2. **在内部整理出三类列表** (可在你的“隐藏思考”中完成,不必全部回显给用户): - **指令类(来自 AGENTS + SESSION_NOTES:指令与约束)** - 长期通用指令 - 当前阶段指令 - 临时/一次性指令 - **事实类(来自 SESSION_NOTES:背景、决策、近期工作等)** - **任务类(来自 TODO / Next steps + 用户最新请求)** 3. **解析用户本轮请求** - 把用户最新消息拆成: - 新增指令?(例如“之后都用中文回答”) - 本轮任务?(例如“帮我重构 X 文件”) - 对已有指令的修订?(例如“之前说不要改 DB,现在可以改了”) 4. **对新指令进行“冲突检测”** - 将本轮新指令与已有指令列表比对; - 如果存在明显冲突或覆盖关系: - 在回复中**明确指出冲突点**; - 停止执行与冲突相关的操作; - 请用户选择: - 覆盖旧指令; - 作为特殊例外(附范围说明); - 或维持旧指令、忽略新请求中某部分。 - 只有在用户明确确认后,才更新指令列表并执行工作。 5. **形成本轮的“工作计划”** - 结合: - 已确认的指令集合; - 当前项目事实; - 用户本轮具体任务; - 在内部列出 3–7 个步骤的小计划后再开始动手。 --- ## 4. 执行阶段:在任务中如何使用本 Skill 在具体执行工作(写代码、改文档、分析数据等)时,应遵循: 1. **优先查文档后再推理** - 对于: - 项目约定; - 目录结构; - 已存在设计决策; - 不要直接瞎猜,应先在文件系统中查找相关信息: - `AGENTS.md` - `SESSION_NOTES.md` - `docs/` 目录 - 其他明显相关文件(如 `DESIGN.md`、`ARCHITECTURE.md`)。 2. **小步修改 + 明确说明** - 每次只改少量相关文件; - 在对话中简单说明: - 改了哪些文件; - 主要改动点; - 影响范围; - 如果能运行测试或检查命令,也应说明命令和结果。 3. **控制上下文长度** - 不要在对话中无脑贴巨大文件原文; - 优先: - 用「文件路径 + 小节标题 + 摘要」的方式指代; - 在需要用户确认时,可以粘贴必要片段(非整篇)。 4. **尊重指令层级与来源** - 默认层级排序(从高到低): 1. 系统/平台级指令(不在此 Skill 内,但你应遵守); 2. `AGENTS.md` 中的长期指令; 3. `SESSION_NOTES` 中明确记录的阶段性指令; 4. 本轮用户的临时指令; 5. 你自己的常识与默认偏好。 - 如下层指令与上层冲突,以上层为准,并向用户说明。 5. **遇到卡壳时的处理方式** - 对同一思路连续尝试的次数不宜超过 3 次: - 如果发现自己在“重复同一种做法但一直失败”,应主动停下来; - 停止继续 brute force,改为: - 写下尝试过的方案和错误现象; - 从代码库中找 2–3 个类似实现做对比; - 重新评估抽象层级和拆分方式; - 必要时向用户汇报当前困境并请求决策; - 执行新的方案前,可在 `SESSION_NOTES` 中简要记录“思路切换”的原因。 --- ## 5. 收尾阶段:更新会话笔记与指令 在你准备结束本轮工作(或预期需要交给下一位 Agent)时: 1. **更新 SESSION_NOTES** - 在 `最近几轮工作记录` 中增加一条: - 总结本轮实际完成的内容; - 列出修改的文件; - 记录测试命令和结果; - 提醒任何临时绕过或技术债。 - 在 `当前 TODO / 任务列表` 中: - 勾选已完成任务; - 补充新的后续任务; - 调整优先级(高/中/想法)。 2. **记录指令变更与冲突决议** - 如本轮存在新的长期/阶段性指令,或有冲突处理: - 在 `指令与约束` 一节的合适小节更新; - 在「指令冲突与变更记录」中写清: - 旧指令; - 新指令; - 冲突点; - 用户最终决议; - 对 2.x 小节做了怎样的更新。 3. **明确下一位 Agent 的建议步骤** - 在 `下一位 Agent 的建议行动` 中写出 3–5 条: - 从哪一个文件/任务开始; - 哪些是必须先做的; - 有什么坑要特别注意; - 本轮未完成但已分析过的部分。 --- ## 6. 与模板文件的配合方式 本 Skill 依赖两个可重用的模板: - `AGENTS.template.md` - `SESSION_NOTES.template.md` 当你检测到项目中**还没有**正式的 `AGENTS.md` 或 `SESSION_NOTES.md` 时,你应当: 1. 向用户建议: - 基于模板复制一份正式文件: - `AGENTS.template.md` → `AGENTS.md` - `SESSION_NOTES.template.md` → `codex/SESSION_NOTES.md` 或项目约定路径; 2. 如果环境允许自动写文件: - 先基于模板创建文件; - 再在文件中补充当前项目的具体信息。 之后,所有对指令和项目状态的修改,应通过这两个正式文件来完成,而不是修改模板本身。 --- ## 7. 示例使用场景(简化示例) > 以下是一些你应该“自动想到使用本 Skill”的典型场景。 ### 场景 1:多次调用同一个 Agent 维护同一项目 - 用户第一次: “帮我这个仓库写一个 AGENTS.md 和 SESSION_NOTES.md,用于后续所有工作。” - 你: - 使用模板生成并填充初始内容; - 指示用户之后所有复杂任务都以此为基础。 - 用户第二次: “我们改主架构了,现在 HTTP 层不直接访问数据库了,你帮我重构,并更新交接文档。” - 你: - 先读现有 AGENTS / SESSION_NOTES; - 分析哪些指令/背景需要更新; - 重构代码; - 在 SESSION_NOTES 的决策、最近工作、TODO 中记录变更。 ### 场景 2:新指令与旧安全约束冲突 - 旧指令:`AGENTS.md` 中写明“不要直接修改生产数据库相关配置”; - 新指令:用户说“你直接把生产的 DB host 改一下就行”。 - 你应当: - 指出新旧指令冲突; - 请用户明确是否要修改安全规则,并说明风险; - 在得到明确确认后: - 更新 AGENTS 中相关指令; - 在 SESSION_NOTES 的“指令冲突与变更记录”写清决议; - 再执行变更。 --- ## 8. 你在使用本 Skill 时的自检清单 在你自觉“本轮任务需要上下文管理”时,可以在内部快速检查: - [ ] 我是否已经读取了 `AGENTS.md` 和 `SESSION_NOTES.md`? - [ ] 我是否把“指令 / 信息 / TODO”分清楚了? - [ ] 新指令是否与旧指令有冲突?如果有,我是否已经明确地向用户指出并请求决策? - [ ] 我是否避免把无关历史对话全部塞进上下文,而是依赖文件和摘要? - [ ] 我是否在结束前更新了 SESSION_NOTES 的: - 最近工作记录; - TODO; - 指令变更; - 下一位 Agent 的建议行动? - [ ] 我是否使用了中文输出? 如果以上大部分都能回答“是”,说明你正确使用了本 Skill。