news 2026/9/24 23:42:09

dbskill 问题单元模板深度解析:从 YAML frontmatter 到 QST 内容单元的实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
dbskill 问题单元模板深度解析:从 YAML frontmatter 到 QST 内容单元的实战指南

dbskill 问题单元模板深度解析:从 YAML frontmatter 到 QST 内容单元的实战指南

【免费下载链接】dbskilldontbesilent 的商业诊断 Skills项目地址: https://gitcode.com/gh_mirrors/db/dbskill

导读

dbs-content-system 是 dontbesilent 内容结构化系统的核心 skill,它把本地大量文稿、推文、选题、案例和课程稿搭成一个可持续生长的内容工程,而**问题单元(QST)**是其中定义「内容要回答什么问题」的骨架单元。本篇以仓库中的 问题单元模板 为蓝本,结合同目录下的概念、观点、案例、方案四份模板、内容单元字段规范 与 generate-unit-draft.js 等源码,完整讲解 QST 单元的字段语义、手写/脚本生成两种落盘方式、与其他单元的关系建立,以及它在「审计 → 样本 → 批量 → 全量」四档工作流中的实际用途。读完你将能够独立创建一份合格的问题单元,并理解它如何支撑主题地图与选题装配。

一、问题单元在内容结构化系统中的定位

1.1 五类内容单元的最小语义对象

dbs-content-system的第四原则是「对象不是文件,而是内容单元」:内容不被当作文件夹来整理,而是被拆成可复用的最小语义对象。首期只保留 5 类:

前缀类型职责
QST问题单元记录一个值得回答的问题原句、问题类型与适用人群
CON概念单元固定一个概念的稳定定义与其功能
OPI观点单元固定核心判断、适用范围与重要性
CAS案例单元记录案例主体、摘要、过程与结果
SOL方案单元记录目标问题、方案摘要、动作步骤与预期结果

其中QST处于抽取链路的最前端:在 首批样本自动抽取协议 中,每篇样本文稿强制抽取的第一个单元就是「1 个主问题单元QST」,随后才是观点OPI、概念CON、案例CAS与方案SOL

1.2 QST 单元要回答的两个问题

从模板与字段规范看,问题单元回答两个问题:

  1. 内容在问什么——由question_text(问题原句)与question_type(问题类型)承载;
  2. 这个问题为谁、为哪些选题而存在——由user_stage(用户阶段)与applicable_topics(适用选题)承载。

二、问题单元模板逐字段解析

2.1 完整模板原文

仓库中的 问题单元模板 全文如下:

--- id: QST-YYYYMMDD-001 type: 问题单元 title: 标题 source_documents: - SRC-* source_authors: - 待补 themes: - 主题 keywords: - 关键词 status: 待核对 canonical: true version: 1 created_at: YYYY-MM-DD updated_at: YYYY-MM-DD question_text: 问题原句 question_type: 认知问题 user_stage: 起步期 applicable_topics: - 适用选题 relationships: [] --- ## 核心内容 ## 来源依据 ## 使用场景 ## 关联单元 ## 备注

2.2 通用字段(五类单元共用)

根据 内容单元字段规范,每个内容单元必须包含以下 13 个通用字段:

字段含义取值建议
id单元唯一标识QST-YYYYMMDD-001形式,日期+三位序号
type单元类型固定为问题单元
title标题一句话概括问题主题
source_documents来源文档 ID默认SRC-*,后替换为真实来源
source_authors来源作者默认待补
themes所属主题一个或多个主题词
keywords关键词供检索与聚类
status状态默认待核对
canonical是否主单元合并去重时true者为主单元
version版本号语义变化才递增
created_at/updated_at创建/更新时间YYYY-MM-DD
relationships关联关系空为[]

2.3 类型专属字段(问题单元独有)

除通用字段外,问题单元多出 4 个专属字段:

字段含义示例
question_text问题原句用户真实提出的问题,尽量保持原话
question_type问题类型认知问题/方法问题(见 2.4 判定规则)
user_stage用户所处阶段起步期、成长期等
applicable_topics适用选题该问题可以支撑的选题列表

2.4question_type的判定口径(来自抽取器源码)

虽然模板中question_type默认写认知问题,但 extract-sample-units.js 中的detectQuestionType函数给出了可操作的判定规则:

  • 命中为什么 / 本质 / 根本 / 误区 / 错在认知问题
  • 命中怎么 / 如何 / 怎样 / 步骤 / 路径 / 开始 / 落地方法问题
  • 两者都不命中 →待人工复核

这提醒我们:手工填写时也应遵循同一口径,保证全库判断一致。

三、从模板到真实单元:两种落盘方式

3.1 手工填写:最小合格样例

把模板中的占位符替换为真实内容即可:

--- id: QST-20260602-192 type: 问题单元 title: 什么样的兴趣能真正变现 source_documents: - SRC-20260602-011 source_authors: - dontbesilent themes: - 兴趣变现 keywords: - 生产型兴趣 - 变现 status: 待核对 canonical: true version: 1 created_at: 2026-06-02 updated_at: 2026-06-02 question_text: 什么样的兴趣属于可以变现的生产型兴趣,以及怎样把兴趣、能力和具体业务接起来,做成可持续增长? question_type: 认知问题 user_stage: 起步期 applicable_topics: - 年轻人怎么赚钱 relationships: [] --- ## 核心内容 什么样的兴趣可以变成钱,是内容库里反复出现的主问题。本单元将其固定为可复用问题节点,供主题地图与装配稿引用。 ## 来源依据 来源文稿《兴趣变现实操》核心段落;`SRC-20260602-011`。 ## 使用场景 - 兴趣变现主题地图的主问题 - 「年轻人怎么赚钱」选题装配稿的开场问题 ## 关联单元 - [[CON-20260602-190|生产型兴趣]](解释) - [[OPI-20260602-200|兴趣变现三要素]](回应) ## 备注 `question_type` 按规则命中「为什么/本质」判为认知问题;待人工核对 `user_stage` 是否覆盖成长期人群。

注意:模板中question_text: 问题原句question_type: 认知问题user_stage: 起步期等默认值应当被替换为真实内容;relationships: []在建立关系后要按 内容单元关系规则 的格式改写。

3.2 脚本生成:generate-unit-draft.js

手工从零写空文件容易出错。dbs-content-system自带 generate-unit-draft.js,它会读取模板并替换占位符。用法:

node 07-脚本与工具/generate-unit-draft.js <QST|CON|OPI|CAS|SOL> <YYYYMMDD> <序号3位> <标题> [sourceId] [theme] [keyword] [author]

生成 QST 单元的例子:

node 07-脚本与工具/generate-unit-draft.js QST 20260602 192 什么样的兴趣能真正变现 SRC-20260602-011 兴趣变现 生产型兴趣 dontbesilent

从源码看该脚本的核心行为:

  • id拼接规则为${prefix}-${date}-${seq},即QST-20260602-192
  • 类型前缀映射(typeMap)把QST指向问题单元/问题单元模板.md
  • 输出目录为02-内容单元库/问题单元/,文件名固定为ID_标题.md,例如QST-20260602-192_什么样的兴趣能真正变现.md
  • 通过正则替换模板中的QST-YYYYMMDD-001title: 标题SRC-*待补主题关键词created_atupdated_at等占位符;
  • 若目标文件已存在会直接报错退出,避免覆盖。

3.3 样本抽取:extract-sample-units.js 自动产出 QST

在首批样本阶段,推荐直接用 extract-sample-units.js 从样本文稿批量抽取:

node 07-脚本与工具/extract-sample-units.js --files '完整副本/兴趣变现.md,完整副本/找生意.md'

从源码可以推断,该脚本会:先对每个来源做分类(成稿、短稿、推文合集等),再从正文中提取问题原句(buildMainQuestion),调用detectQuestionType判定question_type,用inferTheme推断themes,并自动生成nextId序号(扫描02-内容单元库/问题单元/下已有QST-YYYYMMDD-前缀文件取最大值 +1),最后落盘到02-内容单元库/问题单元/并更新抽取日志与处理状态总览。脚本产出的仍是「草稿」,需要按 新增文稿进入系统流程 人工复核。

四、问题单元如何与其他单元建立关系

4.1 四种允许的关系类型

内容单元关系规则 规定第一期只允许 4 类关系:

关系语义典型方向
回应直接回应另一个问题、判断或方案回应方 → 被回应对象
解释概念解释问题、观点或方案概念单元 → 被解释对象
证明案例证明观点、方案或问题判断案例单元 → 被证明对象
冲突判断方向、适用边界或结论直接冲突建议双向建立并补note

4.2 relationships 的两种写法

空关系(模板默认):

relationships: []

存在关系时(内容单元字段规范 示例):

relationships: - type: 解释 target: CON-20260602-001 note: 用于定义判断边界

问题单元最常见的两种关系是:

  • 被解释:概念单元(CON)用解释指向问题单元,把问题中出现的术语边界固定下来;
  • 被回应:观点单元(OPI)用回应指向问题单元,表示该观点是对这个问题的直接回答。

4.3 正文中的链接纪律

SKILL.md 明确:frontmatter 中的idrelationships.target保留结构化 ID;正文里引用其他内容单元、主题地图、装配稿时统一写[[文件名]]。对应地,fill-obsidian-links.js 会把正文中的结构化 ID 补成[[文件名]],方便在 Obsidian 中看到节点关系。

五、问题单元在四档工作流中的用途

dbs-content-system固定分为审计、样本、批量、全量四个模式,默认永远从审计模式进入,闸门全过才升档。QST 单元在其中的角色:

阶段QST 的产出要求
审计模式不产出单元,只锁定边界与规模
样本模式每篇样本文稿至少强制抽取 1 个主 QST,并补齐source_documentsthemeskeywordsrelationships
批量模式按批次推进,来源分类器先分流,每批复盘字段/关系/去重是否变动
全量模式以既有规则滚动扩展覆盖率,不得重新发明字段、关系或去重类型

进入「样本模式 → 批量模式」的闸门中,明确要求「QST / CON / OPI / CAS / SOL的判断口径已经稳定」以及「回应 / 解释 / 证明 / 冲突的关系口径已经稳定」,因此问题单元的question_type判定规则与关系方向纪律,直接决定系统能否安全升档。

在 Phase 5 建立主题地图与选题装配稿时,QST 通常作为主题地图的主问题节点;在 assemble-topic-from-units.js 组装新选题时,问题单元通过--question 'QST-...,QST-...'参数被装配进新稿的骨架。

六、版本、去重与状态管理

6.1 canonical 与 version

内容单元去重与版本规则 规定:

  • 去重类型第一期只允许完全重复 / 同义重复 / 近似重复 / 重复讲述4 类;
  • 完全重复同义重复默认合并,合并时必须指定canonical: true的主单元作为当前有效对象;
  • 只有语义边界、适用范围、核心结论或关键步骤发生变化,才提升version

对问题单元而言,「问题原句」就是它的语义边界——如果两个 QST 的问题原句只是措辞不同而指向同一问题,应合并并保留一个canonical: true的主单元。

6.2 状态流转

status: 待核对是模板默认状态,配合03-处理状态/下的已处理清单、待处理清单与 处理状态总览 一起跟踪。新抽取的 QST 草稿在人工复核后,将status待核对提升为可用态,同时把version保持在当前有效版本,历史变化交给 Git 管理。

七、填写检查清单(自检)

新建或复核一份 QST 单元时,逐项确认:

  • id满足QST-YYYYMMDD-三位序号且不与库内已有 ID 重复
  • type: 问题单元未写错
  • question_text是问题原句,而不是一段结论
  • question_type按「为什么/本质→认知问题,怎么/如何→方法问题」口径判定
  • user_stage与目标读者阶段一致
  • source_documentssource_authors已替换SRC-*/待补占位符
  • themeskeywords可被检索与聚类
  • relationships为空则写[],非空则符合 4 类关系之一并保留结构化 ID
  • 正文引用一律用[[文件名]],不用裸 ID
  • created_at/updated_at格式为YYYY-MM-DD

八、相关文件速查

  • 模板:问题单元模板(本文主体)、概念单元模板、观点单元模板、案例单元模板、方案单元模板
  • 规则:内容单元字段规范、内容单元关系规则、内容单元去重与版本规则、处理流程
  • 工具:generate-unit-draft.js(单单元落盘)、extract-sample-units.js(批量抽取)、fill-obsidian-links.js(ID 转[[文件名]])、assemble-topic-from-units.js(选题装配)
  • 总览:SKILL.md、快速上手

掌握问题单元模板,等于掌握了整个内容结构化系统的入口语义:先锁定「问什么」,才能谈观点、概念、案例与方案的组装。

【免费下载链接】dbskilldontbesilent 的商业诊断 Skills项目地址: https://gitcode.com/gh_mirrors/db/dbskill

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 23:41:44

货拉拉AI Coding落地实践:从个人提效到组织提效的关键方法

AI Coding 喊了一年多&#xff0c;各种统计都在说“效率提升 30%”“代码采纳率 40%”&#xff0c;但我跟不少团队聊下来&#xff0c;发现大多数还停留在“个人爽”的阶段&#xff1a;某个开发自己装了插件&#xff0c;写单测、补注释确实快了不少&#xff0c;可一放到整个研发…

作者头像 李华
网站建设 2026/9/24 23:40:21

基于Vue2.6和.NetCore3.1的工业互联网CPS系统多租户架构实践

1. 面对工业现场的千奇百怪&#xff0c;先聊聊这套CPS系统的由来工业互联网喊了好几年&#xff0c;真正落到车间里&#xff0c;你会发现绝大多数项目根本不是技术不够花哨&#xff0c;而是“软件形态”压根没跟上现场节奏。有大厂直接从云端给你一个SaaS账号&#xff0c;说你们…

作者头像 李华
网站建设 2026/9/24 23:39:17

从对话到执行:WorkBuddy企业级办公自动化落地实战与踩坑盘点

WorkBuddy这个词&#xff0c;最近在我身边的技术群里出现的频率确实高。最开始我以为又是一个套壳的聊天机器人&#xff0c;真正在自己的办公环境里跑了一圈之后&#xff0c;才发现它和我之前用过的AI助手有本质差异——它不是“回答问题”的&#xff0c;而是“把事办完”的。这…

作者头像 李华
网站建设 2026/9/24 23:39:12

碳机制与需求响应下综合能源系统优化模型构建

1. 项目概述与总体思路1.1 背景&#xff1a;为什么现在都在谈“碳机制下的综合能源系统”做综合能源系统优化这几年&#xff0c;一个很明显的趋势是&#xff1a;单纯算“电费省了多少”已经不够了&#xff0c;越来越多的项目开始把“碳排放”直接折算成成本放进目标函数里。这背…

作者头像 李华
网站建设 2026/9/24 23:39:08

研发进度管理:从甘特图到约束建模的实战升级

研发项目进度管理这件事&#xff0c;我干了十多年&#xff0c;从最早用Excel画甘特图、手写依赖关系箭头&#xff0c;到后来上Jira配插件、搭DolphinScheduler跑任务流&#xff0c;再到最近半年帮三家公司落地自研轻量级进度协同平台——不是为了炫技&#xff0c;而是因为真踩过…

作者头像 李华