用途
grove-glossary 用于维护 CocoGrove 的通用语言词汇表(ubiquitous language glossary)。它扫描项目产物,找出可能属于领域词汇的候选术语,并向 .cocoplus/grove/language/glossary.md 提议新增条目。每个提议条目都需要开发者审阅并确认后才会写入。
主要能力
- 验证 .cocoplus/ 是否已初始化。
- 确保 .cocoplus/grove/language/ 目录存在,不存在则创建。
- 读取已有词汇表,提取已定义术语和别名,并进行大小写不敏感归一化(去除首尾空白、合并重复空格、小写比较术语文本、将别名作为规范术语的重复键比较)。
- 扫描项目产物中的候选术语,来源包括:
- lifecycle/spec.md:函数名、能力描述、领域名词
- .cocoplus/flow.json:阶段名称和描述
- lifecycle/plan.md:决策术语、评估引用
- lifecycle/discuss.md:阈值名称、方法论术语
- .cocoplus/prompts/*.md:AI 函数输入/输出描述
- .cocoplus/grove/cupper-findings.md:模式名称、反模式术语
- .cocoplus/map/coco-map.json:领域部分的能力名称(如果存在)
- 提取候选术语:寻找作为关键概念出现的多词名词短语,例如用作领域概念的函数名(如 "sentiment score"、"churn propensity")、指标和阈值名称(如 "accuracy baseline"、"gold standard dataset")、在多个产物中出现的流程术语(如 "evaluation harness"、"prompt iteration")。排除通用技术术语(SQL 关键字、标准 Snowflake 函数名)。
- 过滤已知术语:移除已作为规范术语或别名出现在词汇表中的候选。如果候选与某个别名重复但增加了有用上下文,则提议更新现有条目而非新增术语。
- 将候选逐个(或编号列表批量)呈现给开发者,包含:术语、出现位置、AI 推断的简要定义、可选别名、关联函数,以及接受/跳过/编辑定义的选项。
- 对每个被接受的条目或更新,按指定格式写入 glossary.md:术语标题、定义、别名、关联函数、添加日期(ISO8601)。更新现有术语时,除非开发者明确接受编辑后的定义,否则保留当前定义;追加新别名/函数时不重复已有值。
- 所有被接受的条目写入后创建 git 提交:feat(grove): add [N] glossary terms。
- 向开发者确认结果,并提示可通过 $grove glossary view 查看词汇表;词汇表可供 CocoScout 用于上下文加载。
使用方式
命令为 $grove glossary。
前置条件:
- .cocoplus/ 必须已初始化。
- 至少存在以下之一:lifecycle/spec.md、flow.json、lifecycle/plan.md、prompts/*.md 或 CocoCupper findings。
执行流程:
- 验证初始化:检查 .cocoplus/ 是否存在。若不存在,输出 "CocoPlus not initialized. Run $pod init first." 并退出。
- 创建词汇表目录:确保 .cocoplus/grove/language/ 存在,缺失则创建。
- 读取已有词汇表。
- 扫描项目产物中的候选术语。
- 提取候选术语。
- 过滤已知术语。
- 向开发者逐个或批量呈现候选。
- 对每个被接受的条目或更新写入 glossary.md。
- 写入后创建 git 提交。
- 向开发者确认。
适用场景
- 项目已初始化 CocoPlus,并存在 spec、flow、plan、prompts 或 CocoCupper findings 等产物。
- 需要从项目产物中识别并沉淀领域词汇,维护通用语言词汇表。
- 希望由开发者逐条审阅确认后再写入词汇表,而非自动写入。
限制
- 不会在未经开发者确认的情况下自动写入任何术语。
- 不添加通用 SQL/Snowflake 技术术语(如 SELECT、CREATE、无领域上下文的 AI_CLASSIFY)。
- 找不到产物时不会静默失败,始终报告扫描了什么。
- 当术语已作为别名或仅大小写变体存在时,不会创建新的词汇表条目。
- 无法写入词汇表文件时输出文件系统错误,不提交部分条目。
- 开发者跳过所有候选时输出 "No terms added. Run again after adding more project artifacts."。
- 未找到新候选时输出 "No new domain terms found." 及已在词汇表中的术语数量。
- 未找到源产物时输出警告并列出缺失的产物,建议先运行 $spec。
完成标准
- 候选术语已呈现给开发者审阅。
- 被接受的术语已写入 glossary.md。
- 若至少添加了一个术语,则已创建 git 提交。