--- name: align-plan description: 通过调查和多轮问答对齐工程目标,生成待审阅计划。用于实施前明确需求、约束与范围;不实施代码。 --- # 对齐目标并生成计划 先调查、再决策;产出新会话仅凭计划和代码库即可执行的文件。 ## 定位与资产 - 读取项目约束、Git 状态和 `.agent/MEMORY.md`。资产根目录优先用用户本次明确指定位置,否则复用已有定位;没有则在首轮询问,期间可只读调查。 - 根目录默认在代码库外,一目录对应一系统。计划可存于根目录下的 `<日期-计划主题>/`,不插入项目层;已指定计划目录则直接使用。根目录未知时询问,不推断父目录;系统不符或位置冲突先澄清。复用同一计划目录,新计划避免覆盖同名目录。 - MEMORY 仅记录 `讨论资产目录:<绝对根目录>` 等定位,保留其他内容。写入前检查是否已被 Git 跟踪:已跟踪则先解决冲突,不自行取消跟踪;否则在 `git rev-parse --git-path info/exclude` 中幂等加入 `/.agent/MEMORY.md`,不改共享忽略规则。非 Git 项目说明无法排除。 - 规划只写讨论资产及必要定位信息。目录不可用或宿主禁止写入时报告,不回退代码目录、不宣称已保存。 所有生成资产(含 MEMORY)以此 YAML 开头,未知字段留空,特殊值加引号: ```yaml --- 系统: 系统名称 时间: YYYY-MM-DD 目标: 资产对应目标 --- ``` 时间使用用户当地决策日期;草稿先记创建日期、确认后更新,进度与排版不改日期。 ## 系统约束与讨论状态 先读根目录 `CONTEXT.md`,再调查相关代码;不扫描历史计划。首次无 CONTEXT 时,从首条已确认长期约束开始创建。 - `CONTEXT.md`:只按业务约束、技术约束记录当前有效规则,可注明适用模块及必要原因。确认且无需实施的约束直接更新;尚未生效的改造只留在当前讨论和计划中。冲突先确认,替换时删除废弃内容,不保留决策过程、历史计划路径、任务、代码、日志或局部实现偏好。目标为“保存系统当前业务与技术约束”,时间为最近确认决策日期。 - `<计划目录>/current.md`:每轮更新目标、验收、确认决策与原因、事实来源、约束、不做事项、未确认假设和问题;删除失效内容,不累计讨论历史。 - 新会话、压缩恢复或出现矛盾时重读 CONTEXT、当前状态和相关代码;其余时候复用无变化内容。确认状态以真实回答为准,沉默和推荐都不算批准。 ## 调查与提问 - 先查相关代码、调用链和测试。仅为当前决策查证开源实现或官方资料,保留来源和必要版本;无法查证的事实标为待验证。 - 每轮共 1–3 个影响目标、验收或取舍的问题,不能用子问题变相扩充。可查事实不问用户,依赖未决答案的问题后置;有提问工具则使用,否则直接问。 - 简述证据与推荐理由,不用装饰性 emoji。纠正错误事实,区分假设与偏好;用户提出想法不等于确认方案。 - 优先复用现有能力,选择满足目标的最小方案。出现独立子目标或明显扩大的改造时,说明扩大点、建议分阶段,由用户选择;未确认前保持原范围。 - 设计遵循最小改动、单一职责和开闭原则,按实际变化点采用合适设计模式;隔离功能模块,通用架构能力不耦合具体业务规则。以降低扩展和审查复杂度为准,不为套模式新增无必要抽象或扩大重构。 - 目标、边界、关键取舍和验收明确后停止提问。 ## 写入、审阅与交接 只维护 `<计划目录>/plan.md`,先写入并标为“待确认”;修订覆盖同一文件,只描述最新方案,不保留版本副本、旧方案或变更历史。正文自包含,可合并章节,但须有: 1. **定位**:项目及必要仓库标识、资产根目录与 CONTEXT 绝对路径、Git 基线(无提交则注明)、相关工作区变化、确认状态/依据。 2. **目标与决策**:原始目标、当前/目标行为、保留行为、不做事项;决策理由、业务/接口/架构变化或不变;相关系统约束快照及状态、已确认假设。 3. **修改范围**:新增/修改/删除的文件、各自目标和原因、必要依赖顺序及对应验收。允许必要测试/配置配套文件并记录,其他范围变化重新确认。 4. **验证**:验收条件、对应测试、运行目录/命令/预期结果与必要环境。 5. **兼容与上线**:评估受影响的接口、数据、配置及新旧版本兼容性;明确是否需要迁移、特殊上线步骤或先后顺序,必要时说明回退限制。无特殊要求则注明,未知项列为待核实。 不预写详细实现代码;仅核心算法可附少量审查片段,执行 agent 可自主选择满足已批准约束的实现。 写完重读,检查遗漏、矛盾及隐含决策;缺关键决定则继续提问。确认文件可读后,对话只给目标、范围、重要影响与验证摘要,以及文件绝对路径链接,供用户阅读确认;除非用户要求,不贴全文。 用户确认当前文件内容后记录批准依据与日期。实质修订直接更新 plan.md,清除旧批准依据并重置为待确认,再给摘要与链接;重新确认前不执行变化。写入或摘要不代表批准。 确认后给出新会话提示:`使用 execute-plan 执行 /绝对路径/plan.md`,结束规划。不要自动实施或声称已清空上下文。