1. 先搞清楚这套组合究竟解决什么问题
先说个场景,看看是不是你:我在培训机构带了几年的技术类课程,每次开新课都要面对三座大山——公式讲义排版费劲、课后习题要手动编写、不同班型的教材还得反复微调。白天上课已经消耗了大量精力,晚上回家再对着Word和公式编辑器熬到凌晨,第二天还得顶着黑眼圈继续站上讲台。这种日复一日的循环,最直接的感受就是“人肉降本增效”:成本全是自己,效率全靠硬扛。
后来我花了两周时间,把WorkBuddy和Obsidian组合成一套半自动化的教材生产流水线,情况才真正改观。WorkBuddy负责内容生成、公式讲解、批量出题这类AI工作,Obsidian负责知识沉淀、公式笔记管理、题库标签整理,两者打通后,从零开始写一门新课的公式教材,加上配套题库,只用原来三分之一左右的时间。这篇文章就把这套方案的完整思路和操作细节拆开讲透,包括我怎么配置工具、怎么写提示词、怎么维护题库,以及期间踩过的坑。
谁适合看这套内容?如果你是需要频繁出教材、出习题的培训讲师、教研老师、课程开发人员,或者你在做知识付费课程、企业内部培训课件,这篇文章的实践路径可以直接抄作业。就算你不是讲师,只要需要批量处理“知识点+练习题”类的内容,这套思路同样有参考价值——因为核心不是某两个具体软件,而是“结构化的知识库配合AI流水线”的生产方式。
2. 教材和题库的结构化设计,是整个方案的隐藏地基
很多人一开始就走偏了:拿到WorkBuddy和Obsidian之后,急着一股脑把教材丢进去,让AI帮忙改写、出题,结果生成的题目要么重复,要么知识覆盖不均衡,要么难度分布一塌糊涂。问题不在AI,而在你的内容根本没有结构。
2.1 把教材拆成“知识点最小单元”
我做过一次实验:把同一章内容分别用“整章一连”和“知识点拆解”两种方式输入给WorkBuddy出题。整章共出20道题,其中直接重复的就有6道,剩下的大多集中在第一小节,后面的公式几乎没覆盖到。拆解成知识点后,每个知识点单独出题,重复直接归零,覆盖也均匀得多。
所以教材设计的起点不是“写一本教材”,而是“写一堆知识点笔记”。我在Obsidian里把所有公式类内容拆成一个个原子化笔记,每张笔记只讲一个知识点。拆解粒度是这样的:独立性优先,这个知识点不依赖另一段长推导就能讲清楚;单一目的,要么解释一个公式、要么推导一个性质、要么说明一个应用场景;可验证,读完这条笔记,读者能立刻判断自己是否弄懂了。
以“傅里叶变换的性质”为例,我不会写一整篇“傅里叶变换详解”,而是分成“线性性质”“时移性质”“频移性质”“尺度变换”“帕塞瓦尔定理”等独立笔记。每张笔记内部再固定格式:前置知识、公式主体、推导要点、物理/工程含义、典型例题。这套格式一旦固定,AI之后不管是按格式扩写、改写成不同难度版本,还是按知识点出题,都有清晰的抓手。
2.2 Obsidian里的笔记结构:全局一致的优先级
Obsidian是这套流程的存储中枢。选它而不是Notion或其他云端笔记,原因是三个字:本地化。教材和题库都是高频修改的内容,本地MD文件不会有网络延迟,不依赖服务器,Git还能做版本管理。更关键的是,Markdown配合LaTeX公式的渲染方案非常成熟,Obsidian的数学公式支持度够好,既能做输入工具,也能直接导出为教材底稿。
我的库结构长期保持五类:
- 00-收件箱:临时收集的素材、灵感、从PDF里摘出来的公式
- 10-讲义:按课程分章整理的知识点笔记,是教材的主体部分
- 20-题库:按题型和知识点维度存放题目文件
- 30-模板:知识点笔记模板、题目模板、试卷模板
- 90-归档:已经定稿、不再频繁改动的版本
这套结构有两条硬规矩。第一,建笔记必须从模板里创建,正文格式严格遵守模板的节标题顺序;第二,笔记必须打标签,标签统一用“知识领域+具体知识点编号”的方式,例如“#电路分析/傅里叶变换/时移性质”。这两条规矩决定了后面自动化出题能跑得多顺。
2.3 定义知识点笔记的标准格式
每张知识点笔记的YAML头信息,决定了WorkBuddy能否正确识别内容边界。我常用的格式如下:
--- type: concept domain: 信号与系统 chapter: 03-傅里叶变换 knowledge_id: FT-01-03 tags: [傅里叶变换, 时移性质, 信号与系统] difficulty: 2 dependencies: [FT-01-01, FT-01-02] ---字段含义:type区分笔记类型(concept、example、exercise);domain和chapter用来筛课程范围;knowledge_id是知识点的唯一编号,在公式上做交叉引用和题目对应时非常重要;dependencies用来记录前置依赖,AI在生成讲解时就会自动带上“要理解本节,先掌握XX”的衔接。
正文部分固定五个二级小节:
- 一句话概括(定义性质的一句话外延)
- 公式表达(LaTeX)
- 推理论证(适合给有一定基础学员的自学内容)
- 工程含义(这个性质在实际系统里用来做什么)
- 典型例题(一个,带完整解题步骤)
为什么一定要在笔记里写“工程含义”?因为纯公式类的知识点太干,学员记不住,AI出题也只能出公式默写类题目。一旦加上应用场景,AI才有依据生成理解型和应用型题目,题目质量会上一个台阶。
3. Obsidian侧的功能配置:让公式写作和题库管理进入快车道
3.1 关键插件清单与职责划分
Obsidian的插件生态是它最强的部分,但插件不是越多越好。我保留的插件是真正每天都会用到的这几个。
第一个是Latex Suite。这个插件极大提升了公式输入速度。在Obsidian里直接写LaTeX时,长公式输入的体验其实一般,但Latex Suite提供了快捷字符替换和代码片段补全。比如输入\to自动转成$\to$,敲lr(自动补全\left( \right)。我用它把高频命令简化成了三个字符的组合,编写公式教材时基本告别了反复打长命令符的日子。
第二个是Templater,用于強制笔记格式统一。我在30-模板里配置了知识点模板,每次新建知识点笔记,Templater会问章节编号和知识点编号,然后自动生成带YAML头、带五个固定小节的空文件。这样即使我状态不好、随手写内容,最终格式化仍然统一。格式统一之后,WorkBuddy在处理时就不需要I guess你的结构,直接按固定位置取值。
第三个是Dataview。它做题库管理非常爽。所有题目分散在20-题库里,Dataview可以按“难度大于2且属于第3章”这种条件自动生成表格。我每次组卷之前先跑一遍Dataview查询,看看当前题库有哪些知识点缺口,再针对性让AI补齐。这种“数据仪表盘式”的管理方式比单纯翻文件夹高效太多。
第四个是Excalidraw,用来画公式推导的辅助图。纯公式教材很容易变成文字流,Excalidraw可以手写画信号流图、框图,配合公式笔记一起存储,对学员的理解帮助很大。
3.2 主题和渲染问题的最常见坑
看到很多人在网上问Obsidian主题Anuppuccin安装失败的问题。这个挺常见的,原因基本是两处。一是网络原因,Obsidian社区插件和主题大多要从GitHub下载,国内网络访问不稳定,下载到一半就失败。这种情况可以去Obsidian官方主题市场页面手动下载安装包,再放到库目录下的.obsidian/themes/文件夹里。二是版本不兼容,少数主题对新版本Obsidian的支持不完善,装完语法高亮错乱。建议先确认自己的Obsidian版本,再选兼容列表里的主题版本。
我自己实际用的主题是Minimal,配合Minimal Theme Settings插件。它默认对数学公式渲染的支持很好,界面干净,不会在公式周边出现奇怪边框。对编辑公式教材来说,干扰越少越好。
3.3 同步与备份策略
Obsidian的同步分成两级。第一级是库内笔记的版本管理,我用Git,每次改完一批教材就提交一次,这样万一改坏了能随时回滚。第二级是多设备同步,用Syncthing把库目录同步到笔记本和家里台式机。有一点要特别注意:Obsidian正在运行的时候,Syncthing同步偶尔会产生冲突文件,所以我的习惯是同步前先退出Obsidian。
没有用官方付费同步方案的原因很简单:价格不划算,且本地文件用开源同步方案完全够用。至于移动端查看,我偶尔用手机上的Obsidian客户端只读模式翻一下讲义,不做编辑,因为手机上编辑MD文件的体验始终不太好。
4. WorkBuddy环境准备与接入Obsidian知识库
4.1 WorkBuddy是什么,以及我为什么选它
简单说,WorkBuddy是一个本地化的AI工作台,核心特点是三样:模型可切换、数据可管理、技能可定制。你可以在这个工作台里调用不同的大语言模型,把常用任务写成自定义指令或技能,并且有独立的会话记忆和历史管理。对我来说它更像“AI操作系统的前端面板”,而不是一个单纯的聊天机器人。
我选中它的主要原因是可以把数据处理和模型调度集中在一个工作台里,并且“技能”机制让重复性任务变成一键执行。我试过直接用各家模型的原生网页版,用来聊天、写零散内容没问题,但批量出题时会被限制住:不能统一上下文窗口、不能方便导入导出文件、自定义指令的保存也不统一。WorkBuddy把这些统一起来了。
4.2 初始配置流程
安装和初始配置有几步是必须认真做的。下载安装包后,首次启动会要求配置模型API信息。我同时配置了两条通道:一条是通用对话模型,适合日常问答和公式讲解;另一条是偏推理的模型,适合数学推导和难题生成。如果你只用单一模型也没关系,WorkBuddy里可以在不同技能下绑定不同模型,我的经验是:出题任务用推理能力强一些的模型,教材润色任务用表达能力强一些的模型,这样质量更均衡。
接下来建议把你所有的个人设定写进去。比如你是什么学科的培训讲师、学员基础如何、课程的风格是偏应试还是偏实践、出题的语言风格偏好等。这些背景信息会成为模型回答的默认视角,直接减少“AI味”——如果你希望教材读起来不那么像AI生成的内容,这一步一定要做。
另外,默认缓存目录默认在系统盘用户目录下,时间长了会积累大量临时文件。这个目录可以改到非系统盘,具体做法是进WorkBuddy的设置界面,找到存储或者缓存相关选项,手动指定到数据盘的一个文件夹。我改到D盘之后,一是系统盘的占用确实下降了,二是迁移项目时直接复制整个目录即可,重装系统后配置也不丢。
4.3 把Obsidian库接进WorkBuddy的三种方式
最重要的环节就是让WorkBuddy能“读到”Obsidian里的内容。这里有三条路,你可以根据实际情况选择。
第一种方式是直接读取MD文件。WorkBuddy技能里可以设置“读取指定目录下的文件”,直接把Obsidian库的路径填进去。这个方案最简单,但问题是Obsidian里的MD文件通常带YAML头、双链、标签等格式,直接塞给AI会产生噪声。我的处理方式是写一个预处理步骤:提取正文部分、剥离YAML头、只保留大小节标题和内容。
第二种方式是通过API接口对接。Obsidian有社区插件能够提供本地API服务,启动后第三方程序可以按笔记路径、标签来读取内容。这个适合需要频繁动态拉取笔记内容的场景。不过配置成本高一些,要装插件、管理API密钥,还要处理跨应用鉴权。我只有在批量处理大量笔记的自动化脚本里才用这种方式。
第三种方式是复制粘贴快照。别小看这个土办法,对于单章内容的编辑、微调、出题,它反而是我平时用得最多的方式。直接在Obsidian里选中某个文件夹的所有笔记,复制为Markdown格式,粘贴给WorkBuddy,然后执行技能。它的好处是所见即所得,不会因为API同步问题导致内容缺失。
我现在的实际工作流是混用:日常单节出题用复制粘贴,全课程批量出题用文件读取,极少部分自动化流程用API。三种方式各有适用场景,不必强求一种方案走天下。
4.4 自定义指令与技能面板的搭建
WorkBuddy的核心生产力在自定义指令。我第一次用的时候没认真写指令,出来的教材内容大而全但全不落地——好像什么知识点都讲到了,但拿给学员看又觉得没有重点。后来我把指令当成“给实习生写需求文档”来对待,把指令拆成四块:身份与目标(你是XX课程的培训讲师,现在要编写XX教材)、内容约束(公式必须用LaTeX,每个公式必须配一个实际案例)、格式约束(严格按给定模板输出)、禁忌约束(禁止空泛总结,禁止出现“综上所述”这类废话)。
举一个我实际用的“公式讲解撰写”指令:
你是电子技术培训讲师,面向高职学员编写教材。 任务:根据给定知识点笔记,扩写为适合课堂讲解的完整章节。 内容要求: 1. 每一条公式用LaTeX书写,并在公式下方给出2-3句“人话版解释”。 2. 每个公式至少配一个现实工程案例。 3. 每节结尾给出“本节重点”和“常见理解误区”。 4. 语言口语化,短句为主,避免长定语。 严禁: 1. 输出“需要注意的是”“综上所述”这类空泛表述。 2. 堆砌不相关的背景知识。这套指令写完之后,输出的质量明显上了一个台阶。你可以在WorkBuddy里把它保存为“技能”,下次直接点技能名称就能调用,不需要重新复制粘贴提示词。
5. 自动出题的完整方法论与实操流水线
5.1 出题前先想清楚题目结构
很多人的出题流程是:选中一篇笔记,复制给AI,说“给我出10道题”。出来的题目大概率是填空、选择、判断这种浅层题,覆盖的也大多是概念的表面信息。问题是公式类课程考试要的是学员能算、能推、能应用,不是背公式。所以我在出题之前,先建立了一个“题目要素模板”,要求AI按模板输出。
每个题目必须包含以下字段:
- 题号与题型(单选、多选、填空、计算、简答)
- 考核知识点编号(必须对应Obsidian笔记里的knowledge_id)
- 认知层级(记忆、理解、应用、分析)
- 难度系数(1-5)
- 题干(含完整数据或场景)
- 标准答案
- 解答过程(计算题必须有)
- 常见错解(写出学员可能犯的错误,并解释原因)
这个模板最关键的字段是“知识点编号”和“认知层级”。知识点编号用来保证覆盖度,认知层级用来控制题目梯度。
5.2 按批次生成题目的操作细节
批量出题时,我会把任务拆成“一批只做一个章节”。批次太大会导致模型上下文混乱,生成的题目风格偏离。每批的输入包括四个部分:章节内所有知识点笔记、学员画像、出题指令、上次已出题目的编号列表(用来避免重复)。
我实际的单批操作步骤是:
- 在Obsidian里筛选该章节的所有知识点笔记,复制为一个MD文档。
- 打开WorkBuddy,选择预先保存的“知识章节出题”技能。
- 在对话中粘贴笔记内容,附上“请基于以上内容,生成15道题,其中记忆类3道、理解类4道、应用类5道、分析类3道”。
- 检查生成结果,按题目模板逐条校对。
- 批量写入Obsidian题库目录,每个题目存成独立MD文件。
第4步的校对很关键。AI生成的题目里有几个高频问题:题干数据不自洽、“正确答案”明显错、选项之间存在包含关系、难度判断与题目实际不匹配。我一般会保留10%-20%的人工修改率,不追求AI全自动,追求“AI出初稿、人工做品控”,这才是提效的正确姿势。
5.3 题库文件怎么在Obsidian里管理
每个题目独立存成MD文件,YAML头记录元数据:
--- type: exercise domain: 信号与系统 chapter: 03-傅里叶变换 knowledge_id: FT-01-03 difficulty: 3 cognitive: application answer: B ---这一步很多人觉得麻烦,觉得题目直接堆在一个文件里不就行了。但一旦题库量过百,堆在一起就没法筛了。独立文件配合Dataview,我可以随时跑出“第3章难度4级以上的计算题有哪些”“时移性质一共出过几道题”这类查询。组卷时直接按条件筛选,效率极高。
Dataview查询示例:
TABLE difficulty, cognitive, chapter FROM "20-题库" WHERE domain = "信号与系统" AND difficulty >= 3 SORT chapter ASC可以用“知识领域+难度+认知层级”作为筛选条件,两三秒就得到一份可用的组卷素材清单。相比以前翻Word文档里零零散散的题目,这个体验是质变。
5.4 防止题目重复和擦边的两个技巧
AI出题刷多了以后,最大的烦恼不是题目不够,而是“看起来很不一样、其实考的是同一个东西”。比如时移性质,题干从“求f(t-2)的傅里叶变换”改成“求f(t-3)的傅里叶变换”,这种题重复了没有任何价值。
我做了两层防护。第一层是在出题指令里明确“考核点差异化”要求,要求每个题目对应唯一的knowledge_id,并且同一knowledge_id下的多道题必须分别考核公式的记忆、理解、应用、分析中的不同层级。第二层是建了一个“题目特征表”。每道题写入题库时,我会额外记录它的“考核方式摘要”,例如“给时域表达式求频域相位”“给幅度谱求时移后的变化”等,用一句话概括这道题本质上考了什么。组卷前跑Dataview看这个字段,一眼就能看出哪些题本质相同。
5.5 让AI出题少一点“AI味”的提示词写法
公式类课程的内容很容易写得刻板。AI生成的题目往往会带一种标准化的“端庄感”,比如“请计算下列函数的傅里叶变换”,每题都长这样,学员做起来感觉很机械,老师阅卷也无聊。
我试过在指令里加风格约束,比较管用的是这几条:用具体的工程场景包装题干,而不是直接叫“函数”;题干加入情境化的数字、设备、系统描述;选项的干扰项要来自真实学员的典型错误,而不是随意编造。举个例子,改进后的题目长这样:
“某通信系统接收端对信号做3秒延迟补偿,已知输入信号为x(t),若要分析补偿后信号的频谱变化,以下哪个性质可以直接用来求解?”
同样的考点,只是把场景放在接收端延迟补偿里,学员读题时就要先做模型映射。这种题目既考了公式应用,又考了实际问题分析,深度完全不一样。要让AI做到这个程度,指令里必须明确写“题干中必须出现实际应用场景,禁止直接使用‘已知函数’这种空白句式”。
6. 常见问题与排查技巧实录
6.1 WorkBuddy输出公式时LaTeX渲染不对
遇到最多的一个坑:AI在回答公式时输出的是普通文本格式,比如把\frac{a}{b}显示成了\frac字符串,或者用/表示分式,直接贴进Obsidian后无法正常渲染为公式。
出现这种情况主要是模型没有收到“必须输出LaTeX”的明确指令。我在所有涉及公式的技能面板顶部都加了一行:所有数学公式一律使用LaTeX语法,行内公式放在两个美元符号之间,行间公式放在$$之间。这行约束必须在指令的最前面,因为大模型对指令开头的权重更高。
如果已经生成了不规范的公式,可以用WorkBuddy的“重新生成”功能,让它按规范重输出,不要手动一个个改,改起来既慢又容易出错。
6.2 打不开Obsidian或者插件市场连不上
Obsidian打不开一般就两种原因。一种是插件加载冲突,个别第三方插件会在启动时卡死主进程,这种情况重装/删除最近新增的插件即可。另一种是库目录所在的磁盘有问题,比如移动硬盘断开连接,导致路径失效。
插件市场连不上是网络原因,换镜像源或者手动下载插件安装包放进.obsidian/plugins/目录。不要反复刷新重试,浪费时间还容易触发限流。
6.3 自动出题的知识点覆盖不均衡
在批量出题后,发现某些章节题目特别多,另一些章节几乎没有题目。这通常不是模型偷懒,而是输入的知识点笔记在篇幅和详细度上差异太大。详细度高的章节,AI可生成的题目必然多;笔记薄的章节,AI没有足够上下文可出题。
解决方法是先跑一遍Dataview统计各章节知识点笔记数量和平均字数,把明显偏薄的知识点笔记补充完整,再执行出题。先补内容,后出题,顺序不能反。
6.4 WorkBuddy回答没有输出完整内容
遇到过两次。一次是模型上下文长度限制导致后半段被截断,解决方法是把单批输入的笔记数量缩小,分更小的批次出题。另一次是用户在自己的自定义指令里加了输出长度限制,比如设置了“每次最多输出800字”,导致所有长内容都被切断。检查一下技能面板里的输出限制,这是新手最容易忽略的选项。
6.5 同一章节题目之间答案互相透露
AI出题有时候会出现A题的题干里直接包含了B题的答案信息,特别是同一章节内的题目。这是因为模型在连续生成时受到前文影响,不自觉泄露了未考知识点。我在指令里加了一条“严禁在题干中出现本批次其他题目的答案信息”,并且在校对时把同一批次的题目放在一起通读一遍,排查题干间的互透。这个检查虽然简单,但非常重要,尤其在正式考试中使用AI出题时,不能出现这种硬伤。
7. 实操总结与个人经验补充
我现在跑通的最终流程是四个动作的循环:在Obsidian里写知识点笔记、用WorkBuddy把笔记扩写成教材、用WorkBuddy按模板批量出题、回写Obsidian题库。四个动作覆盖了从“有知识”到“有教材有题库”的全部产出路径。
再分享一个我踩过多次坑之后最深的体会:整套方案最花时间的不是AI配置,也不是插件安装,而是最初把知识点拆好、把笔记格式定好的那一步。格式标准化是自动化的前提,你笔记越规范,AI出题越准,后面的人工校对量就越少。反过来,如果笔记内容乱成一团,AI再怎么聪明也无从下手。
给刚开始尝试的人一个建议:不要一上来就铺开做全套,先从一门你最熟的课程开始,挑一章,按模板建好十来个知识点笔记,然后跑一次“教材扩写+自动出题”的完整流程,感受一下这中间哪些环节最顺、哪些环节需要调整。跑完一章再逐步铺开,风险和返工成本都最小。工具只是手段,真正的降本增效来自你对内容结构的把握。