eo-project-record
功能
项目记忆的统一写入口,两种记录类型、两个目录、各自 INDEX:
| 类型 | 目录 | 记什么 | 谁消费 |
|---|---|---|---|
| lesson | <project_root>/lessons/ |
踩坑、最佳实践、意外收获 | eo-change / eo-implement / eo-fix 启动时按 trigger 自动消费 |
| decision | <project_root>/decisions/ |
关键决策:背景、候选、裁定、理由 | eo-recall 缘由瀑布(以及一切「当初为什么」的场景) |
分不清类型时的判据:教训回答「下次怎么做」,决策回答「当时为什么这么定」。一次对话产出两者都有 → 各记一条,互相 [[链接]]。
前置
必须能找到 .eo-project.json。同目录存在 .eo-project.local.json 时顶层字段覆盖合并(local 优先)。找不到 → 报错退出,提示运行 /eo-project-init。从中读取 project_root / project_name。
执行步骤
1. 判型与提炼
从用户输入判定类型(lesson / decision),提炼标题与核心内容。两个目录均 lazy 创建。
2a. lesson 类型
格式严格按 ../eo-shared/lessons.md §2(结论前置:规则 → 适用条件 → 背景;frontmatter 必填 trigger 与 summary 检索锚点);文件 lessons/<YYYY-MM-DD>-<slug>.md;同步维护 lessons/INDEX.md(格式见 lessons.md §3)。
2b. decision 类型
按 references/decision-template.md 写入 decisions/<YYYY-MM-DD>-<slug>.md;同步维护 decisions/INDEX.md(表格:日期 / 标题链接 / status / summary)。
注意分工:流程内的决策不用进来——change 起草的已钉决策落 change.md §1、brainstorming 的落其记录「关键决策」表。本类型只收流程外的重大决策(方向取舍、架构选型、规则变更这类会被将来反复问「当时为什么」的)。
3. 收尾
- 输出:文件路径 + 一句话摘要 + 该目录累计条数
- 内容涉及已有记录的修正 → 旧文件
status改superseded并在顶部指向新条目(正文不改)
reindex(存量迁移动作)
用户说「reindex lessons / reindex decisions / 迁移旧记录」时:扫描对应目录全部文件——缺 trigger(仅 lesson)/summary/status 的,读正文提炼后只回填 frontmatter(正文一字不动);重建该目录 INDEX.md。幂等,可重复跑。
约束
- 记录文件正文创建后不改,补充走新建;唯一例外是
status: superseded标注 - 每次写入必须同步对应 INDEX——没进索引的记录等于没写(消费方只扫 INDEX)
- 记录按项目隔离;仅用户明确要求时写入,不做关键词嗅探