学习个人目录规范
当用户要求“学习我的目录习惯”“以这些项目为模板”“以后按我的文档规范建档”,或明确提供本地目录让 new-case 更新个人规则时,使用本流程。普通的单次建档或材料整理不得暗中学习或持久化。
配置位置与优先级
- 公开样例:
config/local-conventions.example.yaml - 个人配置:
config/local-conventions.local.yaml - 合并优先级:用户本次明确指令 > 个人配置 >
assets/*.yaml内置预设
个人配置是本地运行数据,不是公开 Skill 源码。在本仓库中,根目录 .gitignore 的 **/config/*.yaml 会忽略它,*.example.yaml 例外。分发后用户无需使用 Git,仍可在 Skill 目录内创建和读取个人配置。
学习流程
- 确认学习意图:只有用户明确要求记住、学习或更新个人规范时,才进入本流程。
- 确定样本范围:接收用户的自然语言规则,或一个至多个已有案件目录。有多个样本时,优先识别重复出现的结构,不把单个项目的偶发目录当作通用习惯。
- 只读盘点:默认只读取目录名、层级、文件名和类型,不打开文件内容,不移动、重命名或生成案件文件。只有目录名无法判断且用户同意时,才读取最小必要的文档内容。
- 区分三类结论:
- 明示规则:用户直接说明的习惯;
- 稳定规律:在多个样本中重复出现的目录、顺序或命名方式;
- 候选规则:只出现一次、样本相互冲突或无法确定适用案件类型的内容。
- 生成变更草案:展示规则、适用预设、样本依据、与当前个人配置的差异,以及将被整段替换的字段。候选规则不写入配置。
- 确认后写入:得到用户确认后,再创建或更新
config/local-conventions.local.yaml。保留与本次无关的已有字段,不修改assets/*.yaml。 - 验证并回报:确认 YAML 可解析、预设 ID 存在、目录 ID 不重复、管理文件模板路径可达。回报已学习规则、未采纳候选及适用范围。
覆盖语义
presets 下的键对应内置预设 meta.id。同一预设中:
- 未在个人配置出现的字段,继承内置预设。
- 映射对象递归合并,标量值替换同名内置值。例如只写
management_files.case_info.output时,同一管理文件的enabled和template继承内置值。 - 列表整段替换,不做猜测式合并。例如写入
directories时,必须提供该个人预设所需的完整目录列表。 global仅表达跨预设的命名习惯;与个别预设冲突时,以个别预设为准。- 不用
null表示删除。需要关闭管理文件时,显式写enabled: false。
加载与失败回退
每次创建或整理案件前:
- 若
config/local-conventions.local.yaml存在,先读取并验证,再与选定的内置预设按上述规则合并。 - 将本次用户明确指令叠加在合并结果之上,仅影响本次执行;除非用户要求“记住”或“更新规范”,否则不回写个人配置。
- 个人配置无法解析、引用不存在的预设或不满足验证要求时,停止使用个人覆盖,报告具体问题并回退到内置预设;不得带病创建目录。
隐私与边界
- 不把真实客户名、案号、目录绝对路径或材料内容写入公开的
SKILL.md、references/、CHANGELOG.md或示例配置。 - 个人配置可记录使用所需的本地习惯,但应遵循最小必要原则,优先保留泛化规则而不是原始路径和具名业务信息。
- 学习流程只更新个人配置;如用户要求改公共默认,转为 Skill 开发任务,单独审查
assets/*.yaml。