|
|
il y a 15 heures | |
|---|---|---|
| 10-知识库 | il y a 15 heures | |
| 30-技能 | il y a 15 heures | |
| 90-工具 | il y a 15 heures | |
| _assets | il y a 15 heures | |
| .gitattributes | il y a 15 heures | |
| .gitignore | il y a 15 heures | |
| AGENTS.md | il y a 15 heures | |
| GIT.md | il y a 15 heures | |
| README.md | il y a 15 heures | |
| 设计说明.html | il y a 15 heures |
一个用 llm-wiki 思路管理的课程开发知识库。 原料丢进来 → LLM 整理成结构化 md → 从库里取材做课。 库里所有东西都能追回原始文件,源文件删了会自动回滚。
| 你的痛点 | 这个系统的答案 |
|---|---|
| 资料散在微信、桌面、网盘,做课时找不到 | 唯一输入区 00-原材料/,全部分类归档 |
| 每次做课都要重新翻一遍全部资料 | 一次整理成 md 知识库,下次直接检索 |
| 不知道哪些资料已经整理过、哪些是新的 | manifest.json 记指纹,kb.py scan 精确算出增量 |
| 整理过一次就过期了,没人知道 | 源自带 hash,源变了页面自动标 stale |
| 删了源文件,知识库里留一堆僵尸内容 | kb.py retract 三档回滚(归档/降级/级联) |
| 新人接手,不知道从哪看起 | 三层索引:业务地图 → 目录索引 → 页面摘要 |
| 做出来的课是"AI 编的",经不起追问 | 每个模块必须标素材出处,缺料就明说 |
| 课上被问"这个数据哪来的"答不上 | 每页标证据等级 A/B/C/D,做课按等级配比,B 级不许说成 A 级 |
| 知识库越写越像 AI 生成的垃圾 | 独立的内容检查器查 AI 腔、长句、没出处的数字 |
做课系统/
├─ 00-原材料/ 【唯一输入区】只进不改,不限文件类型
│ ├─ _inbox/ 随手丢,同步时再分流
│ ├─ 01-行业资料/
│ ├─ 02-客户与需求/
│ ├─ 03-课程素材/
│ └─ 04-竞品与参考/
│
├─ 10-知识库/ 【管理目录】全 md,LLM 维护,人可读
│ ├─ index.md 业务地图(路由入口)
│ ├─ _meta/ manifest / 关系图 / 日志 / 约定
│ ├─ _archive/ 因源删除而归档的页(可回溯)
│ ├─ sources/ 一源一页
│ ├─ topics/ 多源合成的主题结论
│ ├─ entities/ 人/机构/工具/政策/术语
│ └─ modules/ 可进课表的课程模块
│
├─ 20-课程产出/ 【交付区】按课程分目录
├─ 30-技能/ 【方法区】8 个 skill
└─ 90-工具/kb.py 【引擎】管结构,不管语义
00-原材料/ 每个文件在 _meta/manifest.json 里有一条记录(size + mtime + sha256)。
scan → 分类
NEW manifest 没有,磁盘有 → 整理成页面
CHANGED hash 变了 → 重读、更新页面
DELETED manifest 有,磁盘没了 → 回滚
MOVED hash 相同但路径变了 → 只改引用,不重做
UNCHANGED 都没变 → 跳过
大文件用 size + mtime 短路,不变就不重算 hash —— 200 页的库扫描一次 1 秒内。
为什么不能靠 LLM 记忆判断增量:上下文会丢、会话会断、多人协作时互相不知道。指纹存在磁盘上,谁来跑结果都一样。
页面 frontmatter 里的 sources: 就是回滚依据。删一个源:
| 页面类型 | 判据 | 处理 |
|---|---|---|
| 独占页 | sources 只有这一个 |
移入 _archive/,原位置删除(不物理销毁) |
| 共享页 | sources 有多个 |
移除该源,标 stale,进 rebuild_queue 等重合成 |
| 级联页 | 引用了被归档的页 | 标 stale,提示人工复核 |
为什么不直接删:一个 topic 页可能综合了 5 份资料。删其中 1 份就删整页,等于把另外 4 份的成果也扔了。
L1 index.md 业务地图 按业务问题分区(市场/客户/内容/交付)
L2 */_index.md 目录索引 自动生成,一行一页带摘要
L3 frontmatter.summary 写页时顺手写
查东西从上往下走,命中即停。不许一上来全文 grep。
| 等级 | 什么内容 | 课上怎么讲 |
|---|---|---|
| A | 一手数据,口径明确可核对 | 直接讲,标出处 |
| B | 有报告支撑但口径不明/样本小 | 说「某机构测算」 |
| C | 从业者经验、行业共识 | 说「我们的经验是」,不当结论 |
| D | 推断、假设、未验证 | 不上课件 |
木桶规则:页面的等级取它所有内容里最弱的那条。topic 页不得高于它来源的最低级——合成不会提高证据强度。
做课配比:讲授内容 A+B 不低于 60%。低于 40% 就得改定位,别包装成有数据支撑的课。
这条是"课经不经得起追问"的唯一量化保证。学员里总有一个人会问"这个 42% 哪来的"。
cd 做课系统
python 90-工具/kb.py status # 应该显示全 0
把第一批资料丢进 00-原材料/01-行业资料/,然后对 AI 说:
同步知识库
丢文件 → 说"同步" → 增量整理
删文件 → 说"同步" → 自动回滚
找东西 → 说"查 XX" → 路由检索
做课 → 说"做一门 XX 课" → 取材出大纲
体检 → 说"检查知识库" → lint 修复
python 90-工具/kb.py status # 总览
python 90-工具/kb.py scan # 差异
python 90-工具/kb.py scan --json # 差异(给程序用)
python 90-工具/kb.py mark <源> --pages a.md,b.md # 登记已整理
python 90-工具/kb.py retract <源> # 回滚
python 90-工具/kb.py move <旧> <新> # 登记移动
python 90-工具/kb.py graph # 重建索引与关系图
python 90-工具/kb.py lint [--json] # 结构检查(死链/孤儿/缺字段/等级虚高)
python 90-工具/check-content.py # 内容检查(AI 腔/长句/没出处的数字)
python 90-工具/kb.py check # 上面两个一起跑,提交前用
| 技能 | 管什么 |
|---|---|
course-factory |
总入口:激活、诊断、分流、维护编排 |
kb-sync |
增量同步编排(新增/变更/删除/移动) |
kb-ingest |
单源精读与原子化(一文件拆几页、怎么命名) |
kb-query |
五级检索路由 |
kb-lint |
健康检查与分派修复 |
kb-index |
索引与业务地图维护、合并/拆分 |
course-outline |
需求澄清 → 取材 → 大纲 → 模块详案 → 缺口 |
course-slides |
大纲 → 授课 PPT + 讲师备注 |
仓库已经 git init 并完成首次提交。一次同步对应一个 commit,提交前跑 kb.py check。
python 90-工具/kb.py check # 先过检查
git add -A
git commit -m "sync: 入库 3 份行业报告,派生 9 页"
三条要知道的:
manifest.json 冲突不要手解,跑 git checkout --ours ... && python 90-工具/kb.py repair。_index.md 冲突直接重生成,git checkout --theirs ... && python 90-工具/kb.py graph。完整工作流(含提交信息规范、多人分工、冲突处理、用 git 撤销糟糕的同步)见 GIT.md。
kb.py mark 漏一次,下次白干一遍。EVIDENCE_INFLATED 只能查"比来源高",查不出"来源本身标错了"。00-原材料/ 下建目录即可,kb.py 自动纳入扫描。30-技能/ 下建目录写 SKILL.md,然后在 course-factory 的分流表里加一行。10-知识库/_meta/约定.md,同时改 kb.py 里 dump_fm 的字段顺序,并在约定.md 文末「规则变更记录」登记日期和起因。kb.py lint,内容问题进 check-content.py,互不掺和。新规则先想清楚:误报率多高?高的就别进退出码,做成 --xxx 手动开关。误报多了大家就不看报告了,等于没有检查。git init 后,原材料目录天然适合并行(只增不删),知识库靠 kb-sync 收敛。冲突时以 manifest 为准。提交前跑 kb.py check。约定.md 文末的变更记录不是形式主义。没有起因的规则,三个月后会被当成官僚条款删掉,然后同一个坑再踩一次。