mirror of
https://github.com/kuaifan/dootask.git
synced 2026-07-29 17:35:56 +00:00
5.2 KiB
5.2 KiB
Frontmatter 规范
每个 chunk 文件必须以 YAML frontmatter 开头,被 --- 包围,紧接正文。
完整字段表
---
id: app.approve # 必填,全局唯一,kebab.dot 格式
title: 审批中心 # 必填,单行
type: howto # 必填,枚举:concept | howto | faq | menu-map | glossary | shortcut
feature: approve # 必填,受控词表(见下)
scope: end-user # 必填,枚举:end-user | admin | super-admin
locale: zh # 必填,枚举:zh | en
aliases: # 必填,≥1 条;用户可能怎么问
- 审批
- 走流程
- 报销审批
related_tools: [] # 可空;关联的 MCP 工具名(来自 dootask-mcp)
related_pages: [application] # 可空;与页面弱提示词联动的 page id
prerequisites: # 可空;前置条件
- 应用市场已安装 approve 插件
negative: [] # 可空但鼓励 ≥1 条;显式列出不支持项
last_verified: v1.7.90 # 必填,当前主程序版本号
---
字段详解
| 字段 | 类型 | 必填 | 约束 |
|---|---|---|---|
id |
string | 是 | 全局唯一;小写 + . 分隔;与 _meta/feature-map.yaml 中条目对应;推荐格式 <feature>.<sub>.<type> 如 task.create.howto |
title |
string | 是 | 单行,不超过 60 字符;用作 chunk 检索时的展示标题 |
type |
enum | 是 | concept(是什么)/ howto(怎么做)/ faq(为什么/出错怎么办)/ menu-map(在哪里)/ glossary(术语)/ shortcut(快捷键) |
feature |
enum | 是 | 受控词表见下;新增 feature 需先改 feature-map.yaml |
scope |
enum | 是 | end-user(普通成员)/ admin(管理员)/ super-admin(超管) |
locale |
enum | 是 | zh / en;与文件所在子目录一致 |
aliases |
list[string] | 是(≥1) | 用户可能怎么提问;用于 dense 检索 + 同义词桥接;用自然口语,不要堆关键词 |
related_tools |
list[string] | 否 | 关联的 MCP 工具名(来自 _meta/tool-binding.yaml),便于检索时联动工具调用 |
related_pages |
list[string] | 否 | 当用户在哪个页面提问最相关;与前端 page-context 系统联动 |
prerequisites |
list[string] | 否 | 前置条件,如"需要管理员权限"、"插件已安装" |
negative |
list[string] | 否(鼓励) | 显式列出不支持的能力,如"暂不支持嵌套子审批" |
last_verified |
string | 是 | 当前主程序版本号,如 v1.7.90;改了 chunk 必须同步刷新 |
受控词表
type 全集
| type | 用途 | 示例 id |
|---|---|---|
concept |
解释「是什么」 | task.subtask.concept |
howto |
教「怎么做」 | task.create.howto |
faq |
「为什么 / 出错怎么办」 | auth.permission-denied.faq |
menu-map |
「X 入口在哪」 | approve.entry.menu-map |
glossary |
术语 + 别名表(通常一个 feature 一篇) | task.glossary |
shortcut |
快捷键、移动端手势 | global.shortcut |
scope 全集
end-user— 所有登录用户都能用admin— 系统管理员(userIsAdmin)super-admin— 超级管理员(只有第一个用户)
feature 全集
由 _meta/feature-map.yaml 的顶层 features: 列表定义。新增 feature 必须先改 feature-map.yaml 再写 chunk,否则 lint 失败。
related_tools 取值
必须是 _meta/tool-binding.yaml 已定义的工具名,否则 lint 失败。
lint 强制规则
由 dootask-plugins/system-plugins/ai/src/helper/kb/lint.py 强制执行:
- frontmatter 必填字段非空
id全局唯一id与文件路径匹配规则:zh/<type>/<feature-path>/<id-tail>.mdfeature在_meta/feature-map.yaml的受控词表内type/scope/locale在各自枚举内aliases至少 1 条且每条 ≥ 2 字符related_tools中每条都在_meta/tool-binding.yaml已声明last_verified匹配v\d+\.\d+\.\d+模式- 正文(去掉 frontmatter 后)长度 200-1500 字符
- 正文不含跨 chunk 指代词:
如上图、如上所述、如前文、在前面的、参见上节 - 引用其他 chunk 用
[[id]]语法;id 必须存在于本仓库 - frontmatter 与正文之间必须有一个空行
示例(最简骨架)
---
id: task.create.howto.quick
title: 快速创建任务
type: howto
feature: task
scope: end-user
locale: zh
aliases:
- 怎么建任务
- 新建待办
- 加一条 todo
related_tools: [create_task]
related_pages: [project_detail, task_list]
prerequisites: []
negative:
- 快速创建不支持设置截止时间,需用完整创建
last_verified: v1.7.90
---
# 快速创建任务
## 入口
- 桌面端:项目详情页右上角「+」→「快速添加任务」
- 移动端:底部 Tabbar「+」按钮
## 操作步骤
1. 在输入框输入任务名(必填,≤ 200 字)
2. 回车提交
## 字段默认值
- 负责人:当前用户
- 状态:列表第一列(未开始)
- 优先级:普通
- 截止时间:无
## 想设置更多字段
切到完整创建模式:[[task.create.howto.full]]