mdbase 是一套面向 markdown 文件的规范与助手能力:把带有 YAML frontmatter 的 markdown 文件夹视为有类型、可查询的数据集合。当项目根目录存在 mdbase.yaml 时,即视为一个 mdbase 集合,后续所有 markdown 文件操作都适用 mdbase 规则。
用途与主要能力:初始化集合、创建与编辑类型定义、创建记录文件、构造查询、校验集合一致性、处理链接与模式演进。完整规范见 references/spec.md,其中包含精确语法与规则。
初始化:创建至少含 spec_version: "0.1.0" 的 mdbase.yaml,建立 _types/ 目录,按需或按上下文推断并生成类型定义文件。
类型定义:位于 _types/,文件名须与 name 字段一致(如 _types/task.md 中 name: task);字段类型语法须符合规范;可在正文写文档;需校验无循环继承、字段类型合法、enum 值为字符串等,extends 的父类型须存在。
创建记录:frontmatter 中写明 type: typename,补齐必填字段,使用正确取值格式(日期 YYYY-MM-DD、链接 "[[target]]" 等);仅在用户提供时套用可选字段默认值;绝不写裸 field:,用 field: null 或省略;链接值需加引号;正文前闭合 ---。
查询:按规范的查询模型构造,例如 query: types: [task],where: 'status == "open" && priority >= 3',order_by 指定字段与方向,limit 限制条数;where 可为字符串表达式或结构化 and/or/not 对象。
校验:检查 mdbase.yaml 存在且合法,加载 _types/ 全部类型;逐个记录检查 frontmatter 是否为合法 YAML 映射、类型是否声明或匹配 match 规则、必填字段是否存在且非 null、取值是否符合类型、约束(min/max、pattern、enum 等)是否满足、链接是否可解析(validate_exists: true 时)、strict 模式下是否含未知字段;报告需给出文件路径、字段名、错误码与信息。
链接:支持 wikilink 形式 "[[target]]"、"[[target|alias]]"、"[[folder/target]]"、"[[./relative]]" 与 markdown 链接;YAML frontmatter 中链接值必须加引号;重命名文件时同步更新 frontmatter 与正文中的引用,并保持原链接格式。
模式演进:新增可选字段不破坏既有文件;新增必填字段会导致既有文件校验失败,应提示用户;改变字段类型可能使既有值失败;建议模式变更后运行校验。
关键规则:文件是唯一事实来源,不假设文件中没有的状态;不写裸 null;更新 frontmatter 时保留正文;尽量保留字段顺序、引号风格、换行符等格式;YAML 中 wikilink 必须加引号;默认值只作用于缺失字段而非 null 字段;now_on_write 每次写入都更新;空字符串 "" 与 null 不同需保留区别;类型名小写,读取时归一化并对非规范大小写给出警告。
限制:未提供安装命令、收费、价格或平台信息;除规范文件所述外,未提供具体实现细节。