feat: persist system constraints in root CONTEXT.md

This commit is contained in:
mujing
2026-09-10 10:45:20 +08:00
parent c0ec550309
commit 4171713a9c
3 changed files with 39 additions and 6 deletions
+16 -3
View File
@@ -11,7 +11,7 @@ description: 通过代码调查和每轮 1–3 个问题对齐工程目标,纠
1. 先读取项目约束、Git 状态和项目根目录的 `.agent/MEMORY.md`。优先采用用户本次明确指定的资产目录,否则复用 MEMORY 中的 `讨论资产目录`;已有会话中明确指定的位置也有效,不重复询问。
2. 没有位置时,在首轮 1–3 个问题中询问外部资产根目录。等待期间可只读调查,不自行选择目录或把讨论写进项目代码目录。
3. 用户给出位置后,解析为绝对路径,确认不在当前代码库内;若用户明确要求例外,遵从其选择。确认目录可用后记录到 MEMORY,保留其中其他内容。不可写或路径失效时说明具体问题,请用户提供可用位置,不静默回退。
3. 用户给出位置后,解析为绝对路径,确认不在当前代码库内;若用户明确要求例外,遵从其选择。确认目录可用后记录到 MEMORY,保留其中其他内容。区分系统资产根目录与本次计划目录;只指定计划目录时保留已知根目录,未知则询问,不把计划目录当根目录或推断其父目录。不可写或路径失效时说明具体问题,请用户提供可用位置,不静默回退。
4. MEMORY 只保存必要定位信息,例如:
```markdown
@@ -21,7 +21,7 @@ description: 通过代码调查和每轮 1–3 个问题对齐工程目标,纠
目标: 保存讨论资产位置
---
## 讨论资产
- 讨论资产目录:/用户指定的绝对路径
- 讨论资产目录:/用户指定的系统资产根目录
```
写入前检查 MEMORY 是否被 Git 跟踪;已跟踪则说明与“不提交本地记忆”的冲突,先解决冲突,不自行取消跟踪。未跟踪时在 `git rev-parse --git-path info/exclude` 指向的本地排除文件中幂等加入 `/.agent/MEMORY.md`,不改共享 `.gitignore`。非 Git 项目仍保留本地记忆,并说明当前无法设置 Git 排除。
@@ -31,6 +31,17 @@ description: 通过代码调查和每轮 1–3 个问题对齐工程目标,纠
宿主限制写入时,遵从限制,在对话中维护当前状态并明确尚未落盘;不要把未保存资产说成已保存。资产维护是规划阶段唯一的写入范围,不能开始项目实现。
## 跨计划系统约束
确定资产根目录后,先读取 `<资产根目录>/CONTEXT.md`,再针对当前目标调查代码。新会话及上下文恢复时同样读取,不通过遍历历史计划恢复系统约束。文档不能替代对本次相关代码的核实。默认一个根目录对应一个系统;已有 CONTEXT 属于其他系统时先澄清,不混写或另建项目层级。
- 没有 CONTEXT 时可继续调查,在首次有已确认的长期约束时创建,不扫描历史计划补齐、不凭推测编写。
- 用户确认长期业务决策、业务约束或设计约束后立即更新,不等整份计划结束。未确认建议、假设和当前任务的问题留在 `current.md`。
- 正文按“业务约束”和“设计约束”组织;每条记录约束、适用范围、简短原因及状态。无需实施即可成立的规则标为“当前有效”;依赖尚未完成改造的规则标为“已确认待生效”,可附对应计划位置。
- 待生效的新规则不替代当前有效规则。新决策与现有约束冲突时,展示差异和影响,由用户确认保留、修订或替代;决策真正生效后再移除失效规则,避免并存矛盾。
- CONTEXT 自身必须可独立理解,不放聊天、任务清单、详细代码、测试日志或完整决策历史。仅保留当前需要的约束与原因,不能把局部实现偏好提升为系统规则。
- 顶部沿用 `系统`、`时间`、`目标` YAML 元数据;目标为“保存系统长期有效的业务与设计约束”。时间记录最近一次确认系统决策的日期,仅更新生效状态时不改日期。
## 调查与问答
- 先读相关代码、调用链、现有测试与项目约束,再提出问题。需要外部证据时,针对影响当前决策的开源实现或官方资料查证,记录链接、版本或提交以及相关结论;不进行无边界的生态调研。无法查证的内容标记为待验证。
@@ -49,7 +60,7 @@ description: 通过代码调查和每轮 1–3 个问题对齐工程目标,纠
- 已查明事实及来源;尚待确认的建议或假设单独列出。
- 约束、保留行为、不做事项、未决问题。
用新决定替换已失效决定;被否决方案只保留防止重提所需的一句原因,不累积聊天全文。用户未回答、沉默或模型自己的推荐都不算确认。恢复会话、上下文压缩或出现矛盾时,重新读取当前决策和相关代码;不能从压缩摘要猜测确认状态。
用新决定替换已失效决定;被否决方案只保留防止重提所需的一句原因,不累积聊天全文。用户未回答、沉默或模型自己的推荐都不算确认。恢复会话、上下文压缩或出现矛盾时,重新读取 CONTEXT、当前决策和相关代码;不能从压缩摘要猜测确认状态。
## 收敛、确认与交接
@@ -69,6 +80,7 @@ description: 通过代码调查和每轮 1–3 个问题对齐工程目标,纠
## 定位与确认
- 项目:仓库绝对路径;有远程时附仓库标识
- 资产根目录与 CONTEXT.md 的绝对路径
- 基线:分支、提交;无初始提交则明确注明
- 工作区:与计划相关的未提交变化
- 版本:v1;状态:待确认 / 已确认;确认日期与确认依据
@@ -79,6 +91,7 @@ description: 通过代码调查和每轮 1–3 个问题对齐工程目标,纠
## 决策与影响
已确认选择及原因;业务行为、公共接口、架构的前后变化。
无变化的类别明确注明;必要事实来源;已确认的假设。
保留本次相关的系统约束快照及生效状态,不能只给 CONTEXT 链接。
## 文件与步骤
预计新增、修改、删除的仓库相对路径、修改目标与原因。