首页 / 产品需求文档(PRD)

《第二大脑》个人知识库 · 产品需求文档(PRD)

一句话定位:一个由 LLM 持续编写与维护的、可复利的个人 Wiki 知识库 —— 把”每次提问都从零检索”的 RAG 模式,升级为”知识只编译一次、此后持续保鲜”的永久 Wiki 模式。

项目 内容
文档名称 《第二大脑》个人知识库 产品需求文档(PRD)
版本 v1.3
状态 定稿
日期 2026-07-14
文档定位 自用施工蓝图 —— 我按此文档亲自落地搭建
需求策略 需求优先、工具中立;四件套(Obsidian × sage-wiki × Claudian × Flomo)作为推荐参考实现
产品负责人 / 使用者 本人(单人知识工作者 / 科技创业者 / 内容创作者)
理论来源 Karpathy「LLM Wiki(Wiki 不是 RAG)」方案;Tiago Forte《Building a Second Brain》(PARA / CODE)
依据文档 《第二大脑建设行动计划》(2026-04)

修订历史

版本 日期 修改人 说明
v1.0 2026-07-13 本人 首版:在《行动计划》基础上,结合深度调研,形成需求优先、工具中立的完整 PRD
v1.1 2026-07-13 本人 一致性修订:优先级清单与 §5 各表对齐(FR-ING-06 提升为 P0,§5.9 补 P1 遗漏项);权责表述统一(entities / writing / outputs);log 分隔符统一为全角”|“;附录 B/C/D/E 与仓库实际文件同步并声明以仓库为准
v1.2 2026-07-14 本人 实施核对:新增附录 J(实现状态与引擎偏差)记录首轮真实编译/查询/归档验证结果、sage-wiki dev build 与 PRD 假设的差距(index.md 不自动维护、auto_lint 不触发、entities 入 ontology DB、–config 未接线、auto_commit 贪婪),及 GLM/Kimi 双后端接入;施工侧待办清单移入独立开发计划文档活文档
v1.3 2026-07-23 本人 吸收外部同类项目的评测与规模化机制(评测基线、索引指纹、决策队列、保鲜模型、写集校验)。

版本权威性:本 .md 文件是 PRD 的唯一权威版本;同目录下的 .docx / .html 是由此导出的分发副本,每次修订 .md 后需重新导出,阅读以 .md 为准。

如何阅读本文档

本 PRD 面向”我自己按图施工”,因此在传统 PRD 结构(目标 / 用户 / 需求 / 指标 / 风险)之外,额外强化了可落地要素:目录结构、配置模板、脚本、逐阶段验收清单(见第 10 章与附录)。阅读顺序建议:


1. 概述与背景

1.1 问题陈述:为什么需要”第二大脑”

作为高强度的知识工作者,我的信息处理长期存在四个结构性痛点:

  1. 知识不复利。 大多数 AI 用法是 RAG(检索增强生成):上传文件,提问时临时检索相关片段作答。每次提问都在”从零拼图”,读过的东西没有沉淀成资产,洞见散落在聊天记录里随对话消失。
  2. 输入与产出脱节。 flomo 里多年的手写笔记、剪藏的文章、本地 PDF 各成孤岛;真正要写文章或做决策时,无法快速调用这些积累。
  3. 整理即负担。 传统笔记法要求人来分类、打标签、建立链接,维护成本随规模上升,最终”整理知识库”本身变成一件永远做不完、也不产生价值的事。
  4. 随规模腐化。 库越大,矛盾、重复、孤立页面越多,却没有机制去发现和修复,知识库逐渐失去可信度。

1.2 核心理念:Wiki 不是 RAG(Karpathy 方案)

本项目采用 Andrej Karpathy 提出的「LLM Wiki」范式,与主流 RAG 形成根本区别:

RAG:在查询时从原始文档里检索片段,临时拼答案,不留积累。 LLM Wiki:LLM 持续编写并维护一个永久性、结构化、互联的 Markdown 文件集合。每加入一个新来源,LLM 不是索引它,而是读它、提炼它、整合进已有 Wiki —— 更新实体页、修订摘要、标注矛盾。知识只需编译一次,此后持续保鲜。

其价值可以用一句话概括:“知识库是一个持续复利的制品(compounding artifact)。交叉引用已经建好,矛盾已经被标注,综述已经反映了你读过的一切。” 打个比方:Obsidian 是 IDE,LLM 是程序员,Wiki 是代码库。

调研佐证(来自 Karpathy 原文及行业分析):

同时清醒认识其边界与代价(见 §8、§11):不适合百万级文档的场景;需要一定的 LLM 调用成本用于持续编译与健检;实现上需要一套自动化工具与纪律(Schema)来防止 LLM 越权或”漂移”。

1.3 方法论融合:CODE 与 PARA(Building a Second Brain)

Karpathy 方案解决”AI 如何维护知识”,Tiago Forte 的《Building a Second Brain》解决”人如何组织知识与产出”。两者在本项目中互补:

1.4 产品定位与范围

产品定位:一个单人、本地优先、LLM 驱动、写作与决策双场景的个人知识库系统。它不是一个”更好的笔记软件”,而是一条”来源 → 编译 → 调用 → 复利”的知识流水线。

本期(v1)范围内:个人知识的摄入、编译、查询、健检、素材提取、写作回写六大能力,及其自动化与治理(Schema)。

本期明确不做(详见 §2.2):多人协作、云端 SaaS 化、移动端原生 App、公开发布/分享站点、非文本(音视频)来源的自动转写。

1.5 设计原则

  1. 需求优先、工具可换:本文档以”能力”定义系统,具体工具是可替换的实现选项(§4.4 给出选型标准)。
  2. 来源不可变,唯一真相:原始来源只读不写,任何时候可回溯核对。
  3. LLM 干脏活,人做判断:摘要、交叉引用、归档、簿记交给 LLM;选题、探索、提好问题由人负责。
  4. 任务驱动整理,而非为整理而整理:“先有写作/决策任务,再让 AI 从积累里挖宝”,绝不先花几周整理再开工。
  5. 纪律高于自由:用 Schema(CLAUDE.md)明确工具与 LLM 的权责边界,防止越权与漂移。
  6. 一切复利:有价值的查询分析要存回知识库,让探索和摄入一样持续复利。
  7. 本地优先、可移植:数据以纯文本 Markdown 存放在本地,不锁定任何厂商,随时可迁移/备份/版本化。

1.6 名词表(速览,完整见附录 H)

术语 含义
Raw Sources 原始来源 文章、笔记、PDF、剪藏等不可修改的一手资料(LLM 只读)
Wiki LLM 生成并维护的结构化 Markdown 文件集合(摘要 / 实体 / 概念 / 综述)
Schema 告诉 LLM 库结构、规范与工作流的配置文件(如 CLAUDE.md)
Ingest 摄入 加入新来源:读取→提炼→更新相关 Wiki 页
Query 查询 从 Wiki 检索并综合答案,附来源引用;有价值的产出存回库
Lint 健检 定期检查库健康:矛盾、孤立页、缺失交叉引用等
双轨框架 写作轨(六类素材)+ 决策轨(五维工作框架)并行
delta flomo 全量导出之间的”增量”文件,只编译增量以避免重复

2. 目标与成功指标

2.1 目标(Goals / Objectives)

编号 目标 说明
G1 让知识复利 每一次摄入/查询/健检都使知识库更丰富,读过的内容沉淀为可调用资产而非一次性对话
G2 打通输入到产出 flomo、文章库、PDF、剪藏统一进入流水线,写作/决策时可一键调用素材
G3 整理成本降到接近零 分类、摘要、交叉引用、归档由 LLM 自动完成,人只负责阅读与导航
G4 服务写作 + 决策双场景 双轨框架:写作用六类素材,产品决策用五维工作框架
G5 抗腐化 通过月度健检发现并修复矛盾、孤立页、重复,随规模增长保持可信
G6 本地、可移植、低锁定 纯文本 + Git 版本化,不依赖任何单一厂商,可随时迁移

2.2 非目标(Non-Goals / 明确不做)

明确划定边界,避免范围蔓延:

2.3 成功指标(Success Metrics)

北极星指标:“调用率” —— 每周有多少次写作/决策实际从知识库里调用了素材或答案。知识库的价值在于被”用”,而非被”存”。

类别 指标 v1 目标(建立节奏后 4–8 周)
北极星 每周知识库调用次数(写作素材提取 + Query) ≥ 5 次/周
复利 Wiki 页面总数、页面间链接密度(平均入链数) 页面持续增长;平均入链 ≥ 2
复利 查询产出回写率(有价值 Query 存回 _wiki/outputs/ 的比例) ≥ 50%
效率 单篇来源摄入到可调用的时间 自动来源分钟级;深度摄入 < 15 分钟/篇
效率 一次写作的素材准备时间(对比无库时) 缩短 ≥ 50%
健康 月度健检发现的问题数与修复率 修复率 ≥ 80%
健康 孤立页面占比 < 10% 并持续下降
成本 每月 LLM 调用成本 控制在预算内(见 §8.1,高频任务用小模型)
可靠 数据零丢失(Git 可回溯) 100% 关键操作有版本记录

指标以”轻量可自查”为原则:大多可用 _wiki/log.md、Obsidian 图谱视图、Dataview 查询或简单脚本统计得到,不额外引入埋点系统。


3. 用户画像与使用场景

3.1 用户画像(单人多角色)

本系统只有一个用户 —— ,但我在不同时刻扮演三种角色,系统需同时服务:

角色 核心诉求 高频动作
科技创业者 做产品判断、竞品分析、融资准备、招聘决策时,快速调取”市场/技术/产品/人/框架”五维信息 Query、决策轨素材调用
内容创作者 写文章/做分享时,快速调用可直接嵌入的金句、案例、数据、框架 写作前素材提取、写作后回写
终身学习者 持续摄入 AI/科技领域的文章、报告、笔记,并让它们互相连接、持续增值 Ingest、Lint、图谱浏览

用户特征:技术背景(能安装 CLI、跑脚本、用 Git);已有存量资产(flomo 多年笔记、文章剪藏库、本地 PDF);重度使用 Claude / LLM;偏好本地、纯文本、低锁定;时间稀缺,厌恶”为整理而整理”。

3.2 核心使用场景(Scenarios)

场景 A:写作驱动(“从积累里挖宝”) > 我要写一篇关于「AI 对创作者经济的影响」的文章。我在侧栏用六类框架 prompt 让系统在整个知识库里搜集素材,几分钟后得到一份结构化素材库(我的金句、亲历复盘、外部权威、真实案例、框架、数据),直接开写;写完把新产生的金句和判断回写进库。

场景 B:决策驱动(五维查询) > 我在评估一个新方向。我问系统:“这个方向现在谁在做?最近有什么融资信号?有哪些工程陷阱和前车之鉴?”系统先读索引,再深入相关实体/概念页,给出带来源引用的综合答案,并把这次分析存回 _wiki/outputs/,下次直接复用。

场景 C:增量摄入(自动 + 深度) > 平时用 Web Clipper 剪藏的文章自动落地并被自动编译进 Wiki;遇到特别重要的文章,我标记为 todo,在侧栏和 AI 逐段讨论后做深度摄入,并按六类框架抽取素材。

场景 D:flomo 存量激活 > 我把 flomo 最新全量导出放进库,增量脚本自动比对出”新增笔记”,只对增量做编译与六类提取,多年笔记逐步被激活为可调用素材,而原始导出永远原样保留。

场景 E:定期健检 > 每月跑一次健检,系统列出:相互矛盾的页面、被新来源推翻的旧判断、无人链接的孤立页、被反复提及却没有独立页面的重要概念、以及”下一步值得深挖的问题”。我据此做一次维护。

3.3 用户故事(User Stories)

以”作为使用者,我希望……以便……“表述,均可追溯到 §5 的功能需求。


4. 系统架构与能力模型(需求优先、工具中立)

本章先用”能力”描述系统应该做什么(与工具无关),再给出推荐参考实现(四件套)与选型标准。这样即使未来更换某个工具,需求依然成立。

4.1 三层架构(逻辑架构,不依赖具体工具)

系统在逻辑上分为三层,权责清晰:

名称 职责与所有权 谁可写
第一层 原始来源 Raw Sources 文章、笔记、PDF、剪藏。不可修改,唯一真相来源 人(放入);LLM 只读
第二层 Wiki LLM 生成并维护的 Markdown:摘要、实体页、概念页、综述、查询产出 编译引擎 / LLM 全权;人只读与导航
第三层 Schema 告诉 LLM 库结构、规范、工作流与权责边界的配置(CLAUDE.md 等) 人与 LLM 共同进化
┌─────────────────────────────────────────────┐
│  第三层 Schema(CLAUDE.md)——"宪法/规范"      │
│  规定各角色权责边界、目录规范、工作流           │
└───────────────┬─────────────────────────────┘
                │ 约束
        ┌───────▼────────┐        读       ┌──────────────┐
        │  第二层 Wiki    │◄───────────────│  第一层 Raw   │
        │ 摘要/实体/概念/ │   编译(只读源)  │  文章/笔记/   │
        │ 综述/查询产出   │─────────────►  │  PDF/剪藏     │
        └───────┬────────┘   (不回写源)    └──────────────┘
                │ 人只读、导航、调用
        ┌───────▼────────┐
        │      人         │  选题 / 探索 / 提问 / 写作 / 决策
        └────────────────┘

4.2 能力域(Capability Domains)—— 系统必须具备的六大能力 + 两项支撑

功能需求(§5)围绕以下能力域组织。每个能力域是”与工具无关”的需求单元。

编号 能力域 系统必须能够……
C1 摄入 Ingest 接收多源输入(剪藏/文章/PDF/flomo),自动或半自动地读取、提炼并整合进 Wiki
C2 编译与维护 Compile 将来源编译为结构化、互联的 Wiki 页(摘要/实体/概念/综述),并在新来源加入时增量更新相关页
C3 查询与综合 Query 基于全库检索并综合出带来源引用的答案;支持把有价值的产出回写为新页
C4 健检 Lint 定期检查库健康(矛盾/孤立页/缺失交叉引用/数据缺口),产出报告并支持部分自动修复
C5 素材与框架 Material 支持双轨框架:六类写作素材抽取 + 五维决策检索
C6 写作与回写 Express 支持”写作前提取→写作中调用→写作后回写”的闭环
S1 治理与 Schema 用可版本化的配置约束各角色权责边界,防止越权与漂移
S2 自动化与调度 目录监听、增量检测、编译后归档、定期节奏等可脚本化/自动化

4.3 参考实现:能力 → 工具映射(四件套)

以下为推荐参考实现。它满足全部能力需求,且本地、低成本、低锁定。具体工具可按 §4.4 标准替换。

能力域 推荐实现 角色
存储 / 写作界面 / 浏览 Obsidian 笔记存储、Markdown 编辑、图谱视图、Dataview、Web Clipper 剪藏
主交互界面 Claudian(Obsidian 内置 Claude Code 插件) 在 Obsidian 侧栏直接驱动 LLM,消除”终端↔︎笔记”切换;通过 MCP 直连编译引擎
编译引擎 sage-wiki(Karpathy 方案的 Go 实现) 自动把来源编译为 Wiki;提供 CLI、MCP server、watch 监听
存量笔记来源 Flomo(导出 + 增量脚本) 提供多年个人笔记作为知识来源与偏好校准层
备用批处理 Claude Code(CLI) 终端里跑复杂批处理任务;Claudian 底层即 Claude Code,CLAUDE.md 通用

关键 UX 判断:Claudian 是这套方案的体验核心 —— 把”打开终端→输命令→切回 Obsidian”缩短为”打开 Obsidian 侧栏”。这决定了日常使用是否顺手,是选型时的高权重项。

4.4 选型标准与备选方案(工具可换的判据)

由于本 PRD 采用”需求优先、工具可换”,这里给出替换任一组件时必须满足的硬性标准,以及主流备选(详细对比见附录 G)。

通用硬标准(任何实现都必须满足)

  1. 本地优先 / 纯文本:数据以 Markdown 存于本地,可被 Git 版本化,不锁定厂商。
  2. LLM 可编程访问:LLM 能读来源、能按规范读写指定目录(最好经 MCP 或 CLI)。
  3. 权责可约束:能通过配置(Schema)限定 LLM 只读/可写的范围。
  4. 增量与幂等:重复运行不产生重复页;只处理新增/变化。
  5. 配置语义明确:sources 显式声明的目录必须优先于其父目录的 ignore 匹配(本方案依赖 ignore: raw/flomo + sources: raw/flomo/delta 的组合;若引擎按 ignore 优先解析,flomo 增量管线会静默失效——验收见 §10.2)。
  6. 可观测:每次操作可追溯(日志 + 版本记录)。

分组件备选

组件 推荐 备选 选型要点
存储/编辑器 Obsidian Logseq、Cursor+文件夹、纯文件夹+VS Code 是否本地 Markdown、有无图谱/Dataview、插件生态
编译引擎 sage-wiki 自建脚本(Claude Code 直接维护 Wiki)、其他 Karpathy 方案实现 是否支持 watch、MCP、按任务分模型、增量编译
LLM 交互界面 Claudian Claude Code CLI、Cursor、其他 Obsidian AI 插件 是否消除上下文切换、是否复用 CLAUDE.md/MCP
存量来源 Flomo Notion 导出、Apple Notes 导出、Readwise 能否导出为 Markdown、能否做增量
版本/备份 Git(本地) Git + 私有远端、同步盘(iCloud/Dropbox) 是否可回溯、是否加密、是否跨端

结论:v1 直接采用四件套作为参考实现开工;本节标准用于未来任一组件出现更优替代时,快速判断是否可平滑替换。


5. 功能需求(Functional Requirements)

说明:需求以”系统应……“表述,工具中立;每条含优先级(P0=MVP 必备 / P1=重要 / P2=增强)与验收标准。ID 前缀对应 §4.2 能力域。

5.1 摄入 Ingest(C1)

ID 优先级 需求描述 验收标准
FR-ING-01 P0 自动来源落地:系统应支持将剪藏文章自动落入指定输入目录(如 raw/clippings/),无需人工搬运 在浏览器用 Web Clipper 剪藏一篇文章,文件出现在 raw/clippings/ 且格式为带 frontmatter 的 Markdown
FR-ING-02 P0 多源接入:系统应支持至少四类来源 —— 剪藏、文章库、本地 PDF、flomo 导出 —— 进入统一流水线 四类来源各放入对应目录后,均可被后续编译流程识别
FR-ING-03 P0 深度对话式摄入:对标记为 todo 的重要来源,系统应支持”先与人讨论关键要点→再写摘要→按框架抽素材→记日志”的深度流程 对一篇 todo 文章执行深度摄入,产出:讨论纪要 + _wiki/outputs/ 摘要页 + material/ 素材 + log.md 追加一行
FR-ING-04 P0 flomo 增量摄入:flomo 每次为全量快照,系统应只识别并处理新增笔记(delta),不重复、不遗漏,且不修改原始导出 连续两次导入 flomo,第二次仅新增笔记被编译;原始导出目录字节不变
FR-ING-05 P1 一源多页更新:摄入一个来源时,系统应更新其触及的所有相关 Wiki 页(实体、概念、摘要、索引),典型一篇触及 10–15 页 摄入一篇跨多主题文章后,相关实体/概念页均出现新增内容或链接
FR-ING-06 P0 摄入即记账:每次摄入后,系统应在时序日志 log.md 追加一条 ## [日期] ingest | 标题 每次摄入后 log.md 新增对应条目
FR-ING-07 P2 摄入前预览/去重提示:摄入疑似重复来源时给出提示 摄入与既有来源高度相似的内容时,系统提示可能重复
FR-ING-08 P1 附件安全入箱:对话中收到的附件应先安全复制进 raw/todo/(同名同内容复用、同名异内容改名不覆盖),再走标准摄入;不得把宿主临时上传路径当作长期来源引用(临时路径会失效,破坏证据链) 摄入一个对话附件后,raw/todo/ 出现该文件;产出中引用的是 vault 内路径而非 uploads 临时路径;重复上传同一文件不产生第二份

5.2 编译与 Wiki 维护 Compile(C2)

ID 优先级 需求描述 验收标准
FR-CMP-01 P0 自动编译:系统应能将输入目录中的来源自动编译为结构化 Wiki 页(摘要 / 实体 / 概念 / 综述) 运行编译后,_wiki/ 下生成对应分类页面
FR-CMP-02 P0 目录监听(watch):系统应支持监听指定目录,文件变化时自动(去抖后)触发编译 开启 watch 后向 raw/clippings/ 放入新文件,数秒内自动编译
FR-CMP-03 P0 增量与幂等:系统应只编译新增/变化的来源;已处理来源移入归档后不再重复编译 重复运行编译不产生重复 Wiki 条目
FR-CMP-04 P0 索引维护:每次编译后,系统应自动更新内容导航 index.md(页面 + 单行摘要 + 来源数量,按分类组织) 编译后 index.md 反映最新页面清单
FR-CMP-05 P1 按任务分模型:系统应支持对不同编译子任务配置不同模型(高频的摘要/抽取用小模型省钱,写作/查询用强模型) 配置中可分别指定 summarize/extract/write/lint/query 的模型且生效
FR-CMP-06 P1 编译后自动动作:系统应支持编译后自动执行 Git 提交、自动健检、自动归档等钩子 开启后,一次编译触发自动 commit 与自动 lint
FR-CMP-07 P1 忽略清单:系统应支持配置不发送给 LLM 的忽略目录(归档、素材、写作产出、脚本、配置等) 忽略目录中的文件不参与编译、不消耗调用
FR-CMP-08 P2 混合检索权重可调:系统应支持关键词(BM25)+ 向量的混合检索权重配置 可调整 bm25/vector 权重并影响检索结果

5.3 查询与综合 Query(C3)

ID 优先级 需求描述 验收标准
FR-QRY-01 P0 索引优先检索:查询时系统应先读 index.md 定位相关页,再深入具体页,而非扫描全部原始来源 查询日志显示先命中索引再展开相关页
FR-QRY-02 P0 带来源引用的综合答案:系统应综合多页信息作答,并附 Wiki 内部链接/来源引用 任一查询回答均包含指向具体 Wiki 页或来源的引用
FR-QRY-03 P0 产出回写(探索复利):有价值的查询分析应能一键存入 _wiki/outputs/ 并在 log.md 追加记录 一次比较分析被存为 _wiki/outputs/ 新页且日志记录
FR-QRY-04 P1 五维决策检索:系统应支持按”市场与竞争 / 技术判断 / 产品与用户 / 人与组织 / 框架与心智模型”检索(决策轨) 用五维中任一维度提问,答案聚焦该维度并跨来源综合
FR-QRY-05 P2 联网补充:当库内数据存在缺口时,系统应能(在人确认下)联网检索补充并注明来源 对库内缺失的数据点,系统提示并可联网补齐
FR-QRY-06 P1(已落地) 检索栈升级:本地检索应支持 CJK bigram 索引级分词、多通道 RRF 融合(引擎+grep+索引)、中英同义组查询扩展;检索类改动必须让 §5.9 评测基线跑出可量化提升才可合并;隐含语义查询失败时先改扩展与索引、再考虑向量检索 升级后 fixture MRR 与真实 case 通过率有量化提升记录;评测未提升的检索改动不被合并。落地记录(2026-07-23):searchlib(bigram 索引/14 同义组/三通道 RRF)+ brain-server /api/search;难基线旧 3/6(MRR 0.4)→ 新 6/6(MRR 1.0),旧冒烟 8 条不回退

5.4 健检 Lint(C4)

ID 优先级 需求描述 验收标准
FR-LNT-01 P0 矛盾检测:系统应能发现页面间矛盾、被新来源推翻的旧声明 健检报告能列出至少此类问题项
FR-LNT-02 P0 孤立页/缺失交叉引用检测:系统应能发现无入链的孤立页、应链接却未链接的关系 报告列出孤立页清单与建议链接
FR-LNT-03 P1 概念缺页检测:被多处提及却无独立页面的重要概念,系统应建议新建页面 报告给出”建议新建概念页”清单
FR-LNT-04 P1 数据缺口 / 新问题建议:系统应建议可联网补充的数据缺口、以及下一步值得深挖的问题与来源 报告含”下一步”建议区块
FR-LNT-05 P1 部分自动修复:系统应支持对安全的问题(如补链接)执行自动修复 运行”修复模式”后,可自动补齐的链接被修复,并记录变更
FR-LNT-06 P2 健检记账:每次健检在 log.md 追加 ## [日期] lint | 摘要 健检后日志新增条目
FR-LNT-07 P1(已落地) 轻量保鲜模型:LLM 领地页面(outputs/material/)的 frontmatter 应支持 volatility / last_confirmed / half_life_days,健检时按 0.5^(距上次确认天数/半衰期) 提示过期风险,只提示不自动改内容 lint 报告含”值得复核(过期风险)“清单;字段缺失的页面不报错、仅不参与保鲜计算。落地记录(2026-07-23):scripts/freshness.py(三档 30/90/365,–confirm 显式确认)+ compile.sh lint 步接入

5.5 素材与双轨框架 Material(C5)

ID 优先级 需求描述 验收标准
FR-MAT-01 P0 六类写作素材抽取(写作轨):系统应能按①原创金句 ②亲身经历与决策复盘 ③外部权威与市场信号 ④真实案例 ⑤框架与心智模型 ⑥数据、研究与趋势,把素材抽取/追加到 material/ 对应子目录 对一批来源执行抽取,六类文件各自被追加对应素材,原始来源不被修改
FR-MAT-02 P0 五维决策框架(决策轨):Wiki 的标签/分类体系应支持”市场与竞争/技术判断/产品与用户/人与组织/框架与心智模型”五维检索 五维标签存在且可用于检索/Dataview
FR-MAT-03 P1 来源偏好加权:处理 flomo 等个人来源时,系统应侧重①②⑤,弱化③⑥;处理文章库时相反 抽取结果体现来源相关的类别偏好
FR-MAT-04 P1 主题素材库生成:给定写作主题与结构,系统应在全库按六类搜集,输出 material/[主题]-素材库.md 输入主题后得到按六类组织、带来源的素材库文件
FR-MAT-05 P2 框架与心智模型沉淀:系统应把反复出现的思维框架沉淀为 material/frameworks/ 或概念页 高频框架被建为独立可复用条目

5.6 写作与回写 Express(C6)

ID 优先级 需求描述 验收标准
FR-WRT-01 P0 写作前:素材提取:系统应支持一键从库中生成主题素材库(见 FR-MAT-04) 写作前得到可直接取用的素材库
FR-WRT-02 P1 写作中:深挖查询:写作过程中系统应支持即时 Query 深挖某点 写作中可随时发起查询并得到带引用的答案
FR-WRT-03 P0 写作后:回写复利:新产生的金句/判断/案例应回写至 material/ 对应目录;值得留存的分析存入 _wiki/outputs/ 写作后至少完成一次回写并被日志记录
FR-WRT-04 P1 写作产出存档:成稿存入 writing/,作为①原创金句与②亲历复盘的未来来源 成稿归档且可被后续素材抽取引用

5.7 治理与 Schema(S1)

ID 优先级 需求描述 验收标准
FR-SCH-01 P0 权责边界配置:系统应有一份可版本化的 Schema(如 CLAUDE.md),明确各角色对各目录的读/写权限 CLAUDE.md 存在且明确:编译引擎全权 _wiki/;LLM 对 _wiki/summaries_wiki/concepts_wiki/entities 只读、可写 _wiki/outputs/;LLM 全权 material/;writing/ LLM 可写、人主导(与 §9 RACI 一致)
FR-SCH-02 P0 防越权:LLM 不得直接创建/修改编译引擎管辖的文件(_wiki/summaries/_wiki/concepts/_wiki/entities/) 在规范约束下,LLM 拒绝或避免写入受保护目录
FR-SCH-03 P0 共同维护文件规则:index.mdlog.md 允许追加不允许删除 LLM 仅追加这两个文件,不删除历史
FR-SCH-04 P1 工作流内置:Schema 应写明 Ingest/Query/Lint/flomo/写作 的标准步骤,供 LLM 遵循 CLAUDE.md 含各工作流步骤;LLM 行为与之一致
FR-SCH-05 P1 Schema 可进化:Schema 应随使用持续迭代,并被版本化记录 CLAUDE.md 的修改进入 Git 历史
FR-SCH-06 P1(已落地) 待确认决策队列:需要人工裁决的事项(提升入库/删除/合并/Schema 变更)应各成一条决策记录,状态机 pending→approved→applied,approved 只代表授权、执行完才置 applied;用户只看一个入口页(Dataview 聚合),机器记录退后台——同一事实不双写 _wiki/under_review 流程升级后:每件待裁决事项有独立记录与状态;入口页自动聚合 pending/approved;审批与执行分离可追溯。落地记录(2026-07-23):scripts/decision.py(new/approve/reject/defer/apply/check/board,状态机 CLI 硬保证)+ Dataview 看板;check 并入 lint

5.8 自动化与调度(S2)

ID 优先级 需求描述 验收标准
FR-AUT-01 P0 编译后自动归档:已编译的剪藏文件应能自动移入 raw/archive/,避免重复编译 归档脚本运行后,已处理文件移入 archive,不再触发编译
FR-AUT-02 P0 flomo 增量脚本:提供脚本比对两次导出、生成 delta 文件、记录已处理指纹 运行脚本后仅新增笔记进入 raw/flomo/delta/,指纹状态更新
FR-AUT-03 P1 周期节奏:支持每周(摄入/归档/健检)、每月(深度健检)的固定节奏,可手动或半自动执行 存在明确的每周/每月 checklist(见 §7.6);watch 模式可自动化 clippings
FR-AUT-04 P1 版本化:关键操作后自动/半自动 Git 提交,保证可回溯 编译/摄入后有对应 commit
FR-AUT-05 P2 图片本地化:剪藏/摄入的图片应能落入本地附件目录,避免外链失效 附件保存在 raw/assets/ 且引用为本地路径
FR-AUT-06 P1 工作日志(日报/周报):系统应能自动盘点前一天的工作(git 提交 + log.md + flomo 增量)生成日报并持续记录,并支持把一周日报合成周报;人/LLM 补写的手记与综述在重生成时保留 运行日报脚本后 reports/daily/ 出现当日报告且每条可回溯来源;运行周报脚本得到聚合周报;手记区内容重生成后不丢失
FR-AUT-07 P1(已落地) 浏览站新鲜度自检:浏览站构建时记录输入指纹(browse/wiki/.build-manifest.json),服务端 /api/ping 按需比对并返回 browse_stale,门户显示过期提示——“结构可解析 ≠ 站点新鲜” 改动 _wiki/material 后不重建浏览站,/api/ping 返回 browse_stale=true 且门户出现重建提示;重建后转 false

5.9 评测与回归 Evaluation(S3,2026-07 新增能力域)

golden-case 评测体系,已全部落地并接入 pytest → pre-push → CI。

ID 优先级 需求描述 验收标准
FR-EVA-01 P0(已落地) 检索回归基线:系统应维护 golden case(检索 case:问题→期望页/期望被引用),支持自包含 fixture 后端(Top-1/Top-3/MRR≥0.75)与真实引擎后端(引用断言);基线只增不减,冒烟基线接入 CI scripts/evaluate_search.pyevaluation/fixtures/retrieval_smoke.json 全过且 MRR≥0.75;pytest 锁定基线条数,静默删 case 即红
FR-EVA-02 P0(已落地) 质量断言锁认知边界:系统应支持对知识页断言 required_tokens(含限定语原文如「不据此推断…」)与 forbidden_tokens(过度推断句)——LLM 是否过度声明变成 grep 可检;forbidden 检查前遮蔽 required 出现位置(限定语内子串不算违规) scripts/evaluate_quality.py 通过合成样例;「required=限定语全句 + forbidden=其中断言子串」的 case 可正常使用
FR-EVA-03 P0(已落地) 评测流量不掺水:评测请求应显式声明(eval:true),服务端对评测流量不写调用记账——回归跑批不污染北极星指标(调用率) eval:true/api/query 不追加 _wiki/log.md 记账;evaluate_search 的 brain 后端默认带该标记
FR-EVA-04 P0(约定) 摄入即沉淀:每轮真实摄入应沉淀 1-2 条回归 case 到 mind-vault/evaluation/(命名 round<N>_<材料名>_{retrieval,quality}_cases.json);确无可沉淀时说明即可 CLAUDE.md Ingest 工作流含此步;mind-vault/evaluation/ 随摄入轮次增长

5.10 需求优先级汇总(MVP 边界)

P0(MVP,第 1–2 周必须跑通):FR-ING-01/02/03/04/06、FR-CMP-01/02/03/04、FR-QRY-01/02/03、FR-LNT-01/02、FR-MAT-01/02、FR-WRT-01/03、FR-SCH-01/02/03、FR-AUT-01/02。

P1(第 3 周起完善):一源多页、按任务分模型、编译后钩子、忽略清单、五维检索、概念缺页与部分自动修复、数据缺口与新问题建议、来源偏好加权、主题素材库、写作中查询与产出存档、工作流内置与 Schema 进化、周期节奏与版本化、工作日志(日报/周报)。

2026-07 新增:已落地 —— FR-EVA-01/02/03(评测基线,接入 CI)、FR-AUT-07(浏览站新鲜度)、FR-EVA-04(摄入即沉淀,约定);已落地 —— FR-QRY-06(检索栈升级:searchlib + /api/search,难基线 3/6→6/6);已落地 —— FR-SCH-06(决策队列:decision.py 状态机 + 待确认看板);已落地 —— FR-LNT-07(轻量保鲜)、写集校验 P1-4(validate_write_set.py + vault.sh 提交门禁);规划(P1)—— FR-ING-08(附件入箱脚本化;宪法条款已生效)。

P2(增强,按需):去重提示、混合检索权重、联网补充、框架沉淀、健检记账、图片本地化。


6. 数据模型与信息架构

6.1 Vault 目录结构(唯一物理约定)

整个系统的”数据库”就是一个本地 Markdown 目录树(Obsidian Vault)。这是所有工具协作的物理约定。

Obsidian Vault/
├── config.yaml            ← 编译引擎配置(sage-wiki init --vault 生成)
├── .mcp.json              ← 编译引擎 MCP 接入 Claudian / Claude Code
├── CLAUDE.md              ← Schema:各角色权责边界与工作流(系统"宪法")
│
├── raw/                   ← 原始来源(LLM 只读不写)
│   ├── clippings/         ← Web Clipper 自动落地;编译引擎 watch 自动编译
│   ├── todo/              ← 待深度处理;不在 watch 范围内
│   ├── archive/           ← 已处理存档(两类来源都往这里放);不再编译
│   ├── flomo/             ← flomo 导出(原始保留)
│   │   ├── 2026-03-15/    ← 某次全量导出(不直接编译)
│   │   └── delta/         ← 增量脚本生成的差量文件(仅此被编译)
│   ├── pdfs/              ← 本地 PDF
│   └── assets/            ← 图片等本地附件
│
├── _wiki/                 ← 编译输出(编译引擎/LLM 全权维护)
│   ├── index.md           ← 内容导航目录(页面 + 单行摘要 + 来源数)
│   ├── log.md             ← 时序日志(只追加)
│   ├── concepts/          ← 概念页
│   ├── entities/          ← 实体页(人 / 公司 / 产品 / 模型)
│   ├── summaries/         ← 来源摘要页
│   └── outputs/           ← Query 产出与深度摄入摘要(分析、比较表、摘要页)——LLM 可写
│
├── material/              ← 六类写作素材(LLM 生成)
│   ├── quotes/            ← ① 原创金句
│   ├── stories/           ← ② 亲身经历与决策复盘
│   ├── references/        ← ③ 外部权威与市场信号
│   ├── cases/             ← ④ 真实案例(成功与失败)
│   ├── frameworks/        ← ⑤ 框架与心智模型
│   └── data/              ← ⑥ 数据、研究与趋势
│
├── writing/              ← 写作产出存档
├── reports/              ← 工作日志:daily/ 日报 + weekly/ 周报(脚本自动盘点,见 §7.7)
├── scripts/             ← 自动化脚本(见附录 E)
└── .obsidian/           ← Obsidian 配置(编译引擎忽略)

6.2 三个流转目录的分工(clippings / todo / archive)

目录 是否 watch 用途 处理完后
raw/clippings/ ✅ 监听 Web Clipper 自动落地的文章;走自动编译 移入 raw/archive/(可脚本自动化)
raw/todo/ ❌ 不监听 需要深度对话式摄入的文章 LLM 处理完后移入 raw/archive/
raw/archive/ ❌ 不监听 所有已处理内容的永久存档 不再触发任何编译

关键坑位:处理完的 todo 文件要移入 archive/不是 clippings/。若移回 clippings/,编译引擎会当成新文件再次编译,产生重复的 Wiki 条目。直接进 archive/ 可完全规避。

6.3 页面类型与 Frontmatter 规范

每个 Wiki/来源页建议带 YAML frontmatter,便于 Dataview 动态检索与五维标签。

通用 frontmatter 模板

---
title: 页面标题
type: summary | entity | concept | output | note   # 页面类型
source: 来源标识(URL / 文件名 / flomo-export)
date: 2026-07-13
tags: [ai, 五维标签, 主题标签]
dimension: [市场与竞争, 技术判断, 产品与用户, 人与组织, 框架与心智模型]  # 决策轨五维,可多选
status: draft | stable
links: 2            # 入链数(可由脚本/Dataview 计算)
---

页面类型定义

type 目录 内容 谁维护
summary _wiki/summaries/ 单一来源的摘要 编译引擎(LLM 只读)
entity _wiki/entities/ 人/公司/产品/模型等实体的聚合页 编译引擎
concept _wiki/concepts/ 概念/方法/框架的聚合页 编译引擎
output _wiki/outputs/ 查询产出与深度摄入摘要:比较分析、决策备忘、todo 来源摘要页(见 §7.1) LLM 可写
note raw/… / material/… 原始笔记 / 抽取的素材 人(raw)/ LLM(material)

6.4 标签体系(双轨)

两套框架互不干扰:写作前用六类框架提取素材;决策时用五维框架查询。CLAUDE.md 同时定义两套,并说明何时用哪套。

6.5 两个特殊导航文件

文件 用途 更新时机 格式
_wiki/index.md 内容目录:所有页面 + 单行摘要 + 来源数量,按分类组织。查询时先读这里 每次 ingest 后自动更新 分类小标题下逐页列出 - [[页面]] — 摘要(N 源)
_wiki/log.md 时序日志:只追加,记录每次操作 每次操作后追加 ## [日期] 类型 | 标题

log.md 示例

## [2026-04-08] ingest | 《GPT-4o 技术报告》
## [2026-04-09] query | AI 对创作者经济的影响有哪些实证研究?
## [2026-04-10] lint | 第一次全库健检,发现 12 个孤立页面

7. 核心工作流

7.1 Ingest 工作流(针对 raw/todo/ 的深度处理)

1. 读取来源 → 与人讨论关键要点(不跳过这步)
2. 在 _wiki/outputs/ 写简要摘要页(不写 summaries/,那是编译引擎的领地)
3. 按六类框架抽取素材 → 存入 material/ 对应子目录
4. 在 _wiki/log.md 追加:## [日期] ingest | 标题
5. 提示人可将该文件移入 raw/archive/

自动来源(raw/clippings/)则无需人工:落地 → watch 触发编译 → 更新 _wiki/index.md → 归档脚本移入 archive。

7.2 Query 工作流

1. 先读 _wiki/index.md 找相关页
2. 深入相关页 → 综合答案 → 附 Wiki 内链接 / 来源引用
3. 有价值的分析存入 _wiki/outputs/,并在 log.md 追加

7.3 Lint 工作流(定期)

检查项:
- 页面间矛盾 / 被新来源推翻的旧声明
- 孤立页面(有内容但无入链)/ 缺失的交叉引用
- 被多处提及却无独立页面的重要概念
- 可通过联网补充的数据缺口
- 建议下一步值得深挖的问题与来源
可选:对安全项(补链接等)执行自动修复,变更进入 Git

7.4 flomo 增量(delta)工作流

1. 把 flomo 最新全量导出放入 raw/flomo/<日期>/(原样保留)
2. 运行增量脚本:比对指纹 → 仅新增笔记 → 生成 raw/flomo/delta/delta-<日期-时分秒>.md
   (文件名带时间到秒,同日多次运行互不覆盖)
3. 编译引擎编译 delta(不碰原始导出)
4. 在侧栏用六类提取 prompt 处理 delta → 写入 material/
   偏好:重点①原创金句 ②自我反思与复盘 ⑤框架;弱化③外部引用 ⑥数据

7.5 写作驱动的使用节奏(先任务,再挖宝)

“先有任务框架,再让 AI 帮你从积累里挖宝。知识库不是用来整理的,是用来调用的。”

阶段 操作 产出
写作前 用六类框架 prompt 让 LLM 在全库提取素材 material/[主题]-素材库.md
写作中 打开素材库取用金句/案例/数据;需深挖时即时 Query 成稿草稿
写作后 新金句/判断/案例回写 material/;值得留存的分析存 _wiki/outputs/;成稿存 writing/ 库复利 + 存档

7.6 周期节奏(每周 / 每月)

每周

每月

7.7 工作日志(日报 / 周报)

持续记录在库上做过的工作,并方便合成周报。报告存 reports/(daily/ 与 weekly/),不参与编译。

日报(每日,可 cron):
1. python3 scripts/daily-report.py           # 默认盘点“昨天”
   自动盘点:git 提交(作者日期) + _wiki/log.md 条目 + 当天 flomo 增量
   每条结论挂 sha / log 条目,可回溯;生成 reports/daily/YYYY-MM-DD.md
2. 在日报“手记”区补写反思 / 决策复盘 / 库外工作(可由 LLM 填)
   —— 该区在 <!-- 手记开始 -->…<!-- 手记结束 --> 之间,重生成时原样保留

周报(每周):
3. python3 scripts/weekly-report.py          # 默认上一个完整 ISO 周
   聚合该周日报:汇总数字 + 每日要点(缺日报会标注) + 分类小结 + 手记汇编
4. 在周报“周度综述”区让 LLM 读本周日报写叙事(主线 / 进展 / 问题 / 下步)
   —— 同样在标记之间,重生成保留

设计要点:机械骨架(脚本自动盘点,准确、可 cron、零 API 成本)+ 叙述层(手记/综述由人或 LLM 补写并被保留)。呼应 §1.5 原则”LLM 干脏活、人做判断”与 Fable 级模型”进度断言须对齐工具结果”的取向——报告里每条自动结论都可回溯到 git 或 log。


8. 非功能需求(Non-Functional Requirements)

维度 需求 具体标准
成本 LLM 调用成本可控 按任务分模型:高频的 summarize/extract/lint 用小模型(如 Haiku 级),低频高价值的 write/query 用强模型(如 Sonnet 级);设定每月预算上限并可通过 log.md 粗估用量
性能 编译与查询延迟可接受 自动来源分钟级完成编译;单次查询秒级返回;watch 去抖(如 2 秒)避免频繁触发;编译并发可配置(如 max_parallel=4)
规模 运行在方案甜点区 目标 100–10,000 篇高信号来源;超过数百页时启用混合检索(BM25+向量);不追求百万级
隐私与安全 个人数据不外泄 数据本地存储;仅”发送给 LLM 的目录”经过 API,敏感目录纳入 ignore;API Key 用环境变量注入,不写入版本库;.gitignore 排除密钥与缓存
可靠性与备份 数据零丢失、可回溯 Git 版本化关键操作;原始来源永不被改写;建议叠加远端私有仓库或加密同步盘做异地备份
可移植性 低锁定、可迁移 纯 Markdown + YAML,任何编辑器可读;工具可按 §4.4 标准替换;迁移 = 拷贝目录
可维护性 抗腐化 月度健检制度化;Schema 随用迭代;log.md 保留完整操作史
可观测性 操作可追溯 每次 ingest/query/lint 有日志与(可选)commit;可用 Dataview/图谱自查健康度
易用性 低摩擦日常使用 主交互集中在 Obsidian 侧栏,消除”终端↔︎笔记”切换;常用操作固化为 prompt 模板与脚本
可扩展性 能力可增量增强 新增来源类型/新增自动化脚本不影响既有数据;P2 能力可后续叠加

8.1 成本模型(参考)


9. 权责边界与治理(RACI)

系统的稳定运行取决于明确的权责边界——这是 CLAUDE.md(Schema)的核心职责,防止 LLM 越权或”漂移”。

目录 / 资产 编译引擎(sage-wiki) LLM(Claudian / Claude Code) 人(我)
raw/** 原始来源 只读(用于编译) 只读 放入 / 组织(A)
_wiki/summaries/_wiki/concepts/_wiki/entities/ 全权写(R/A) 只读 只读、导航
_wiki/outputs/ 可写(R/A) 只读
_wiki/index.md_wiki/log.md 可写 可追加不可删 只读
material/** 素材 忽略 全权写(R/A) 使用
writing/** 写作产出 忽略 可写 主导(A)
CLAUDE.md Schema 只读 可建议修改 共同维护(A)
config.yaml.mcp.json 读取 只读 维护(A)

R=负责执行,A=最终问责。核心红线:LLM 绝不直接改写编译引擎管辖的 summaries/concepts/entities/(只能读,产出写到 outputs/)。


10. 分阶段路线图与验收清单

三阶段渐进落地。每阶段附可勾选的验收清单(Definition of Done),便于自查。

10.1 第一周:搭骨架

任务

  1. 安装运行环境(Node.js / Go / Git)。
  2. 安装编译引擎(sage-wiki)、LLM CLI(Claude Code)、主界面插件(Claudian,建议 BRAT 方式自动更新)。
  3. 在 Vault 根目录初始化编译引擎(sage-wiki init --vault),运行 doctor 验证 API 连接。
  4. 编辑 config.yaml:配置来源目录、ignore 列表、按任务分模型(附录 B)。
  5. 创建 .mcp.json 接入 MCP(附录 D);创建 CLAUDE.md(附录 C)。
  6. 建立 raw/ 目录结构,将文章库复制入 raw/clippings/,flomo 最新导出放入 raw/flomo/
  7. 安装 Obsidian 插件:Web Clipper、Templater、Dataview、BRAT;配置附件目录 raw/assets/
  8. git init + .gitignore(排除密钥/缓存)+ 首次 commit。必须在首次编译前完成:config.yaml 开启了 auto_commit,归档脚本也依赖 git 记录判断哪些文件已编译。

✅ 验收清单(第一周)

10.2 第二周:跑通主流程

任务

  1. 运行首次编译,浏览生成质量(TUI / 图谱)。
  2. 运行 flomo 增量脚本,检查 raw/flomo/delta/ 的 delta 文件。
  3. 在侧栏用六类提取 prompt 处理 flomo delta → material/
  4. 找一个真实写作任务,完整走一遍:素材提取 → 写作 → 产出回写。
  5. raw/todo/ 挑一篇重要文章做深度对话式摄入。
  6. 运行第一次健检,查看报告。

✅ 验收清单(第二周)

10.3 第三周起:建立节奏

任务

  1. 固定每周 Ingest 节奏(或开启 --watch 自动化 clippings)。
  2. 每次新 flomo 导出 → 增量脚本 + 六类提取。
  3. 每次写作前用六类框架调用 Wiki,写作后产出回写。
  4. 根据使用反馈持续迭代 CLAUDE.md(最值得投入时间之处)。
  5. 每月深度健检;用图谱视图观察连接质量成长。

✅ 验收清单(进入稳态)

10.4 里程碑

里程碑 时间 完成标志
M1 骨架就绪 第 1 周末 环境/配置/Schema/目录/插件全部就位
M2 主流程贯通 第 2 周末 编译/摄入/查询/素材/健检/版本化各跑通一次
M3 进入稳态 第 4–8 周 每周节奏固化,北极星指标达标,库开始复利

11. 风险与避坑

# 风险 / 易踩的坑 影响 正确做法 / 缓解
R1 先整理知识库再干活 陷入无止境整理,永不产出 任务驱动:先有写作/决策任务,再让 AI 从积累里挖宝
R2 把 todo 文件移入 clippings/ 存档 编译引擎重复编译 → 重复 Wiki 条目 统一移入 raw/archive/
R3 把 flomo 原始导出直接扔进编译范围 全量重复、笔记被反复处理 只编译 raw/flomo/delta/ 增量;原始导出永久原样保留
R4 忽略 CLAUDE.md,让 LLM 自由发挥 LLM 越权改 Wiki、结构漂移 先写好 Schema,明确编译引擎与 LLM 的权责边界
R5 用 LLM 直接改 _wiki/summaries/ 破坏编译引擎的领地、产生冲突 LLM 只读该目录,产出写到 _wiki/outputs/
R6 Query 答案留在聊天记录里 洞见流失、探索不复利 有价值的分析存入 _wiki/outputs/ 并记日志
R7 永不健检 库随规模腐化:矛盾、孤立页堆积 月度健检制度化,lint --fix 处理安全项
R8 六类框架用于所有场景 写作与决策混淆、检索低效 写作用六类框架;产品决策用五维框架;各司其职
R9 API Key 写入版本库 / 配置 密钥泄露 用环境变量注入;.gitignore 排除密钥与缓存
R10 无异地备份 本地损坏即全失 Git + 远端私有仓库 / 加密同步盘做异地备份
R11 LLM 调用成本失控 月度账单超预算 分层模型 + 忽略清单 + 增量编译 + 预算护栏
R12 规模超出甜点区 检索噪声上升、成本陡增 控制在 ≤ ~1 万篇高信号来源;超出则启用混合检索或分库

12. 开放问题(Open Questions)

以下问题在施工中边做边定,不阻塞开工:

  1. 同步与多端:是否叠加加密同步盘或私有 Git 远端做跨设备访问?(v1 可先纯本地)
  2. flomo 切分粒度:flomo 笔记以何种分隔符切分为”一条”最稳?(增量脚本目前按行首 - 切段、## 视为结构标题,需按实际导出格式微调;若导出中每条 memo 以时间戳标题行开头,可改为锚定时间戳正则切分,能同时消除头部元信息与 memo 内部 bullet 被误切的问题)
  3. PDF 处理深度:本地 PDF 是否需要 OCR / 表格抽取?学术类 PDF 的图表如何进库?
  4. 健检频率:月度是否足够?高摄入期是否需要双周健检?
  5. 模型版本策略:随模型迭代,config.yaml 的分层模型如何定期复评性价比?
  6. 素材去重:六类素材长期追加,是否需要定期去重/合并 prompt?
  7. 图谱可视化利用:除观察外,是否用图谱指标(如中心度)驱动”下一步深挖”选题?

13. 附录

附录 A:目录结构速查

见 §6.1。核心记忆点:raw/(只读来源)· _wiki/(编译引擎领地;LLM 对 summaries/concepts/entities 只读、可写 outputs)· material/(六类素材,LLM 全权)· writing/(成稿,人主导)· scripts/(自动化)· 根目录三件套 config.yaml / .mcp.json / CLAUDE.md

附录 B:config.yaml 模板(编译引擎)

本模板与仓库根目录的 config.yaml 保持一致(漂移时以仓库文件为准);全部使用 vault 内相对路径,无需按机器修改。当前后端为 GLM(OpenAI 兼容编码端点),可用 scripts/sage-backend.sh kimi 一键切 Kimi;GLM_API_KEY / KIMI_API_KEY 用环境变量注入,不写进任何文件。

version: 1
project: my-second-brain
description: "我的第二大脑 — AI/科技知识库"

sources:
  - path: raw/clippings      # Web Clip 和文章库(自动 watch)
    type: auto
    watch: true
  - path: raw/flomo/delta    # flomo 增量文件(watch)
    type: auto
    watch: true
  - path: raw/pdfs           # 本地 PDF(不 watch)
    type: auto
    watch: false

# 忽略目录:不发送给 API
ignore:
  - raw/archive              # 已处理存档,不重复编译
  - raw/todo                 # 手动处理,不自动触发
  - raw/flomo                # 原始导出;delta/ 子目录已在 sources 显式声明,
                             # sources 优先于 ignore(引擎须满足 PRD §4.4 硬标准 5)
  - raw/assets               # 图片等附件,不参与文本编译
  - material                 # 素材库
  - writing                  # 写作产出
  - reports                  # 工作日志(日报/周报),不是知识来源
  - docs                     # PRD 等设计文档,不是知识来源
  - site                     # 文档站静态产物,不是知识来源
  - scripts                  # 脚本目录
  - .obsidian
  - .claudian
  - .claude

output: _wiki

api:
  provider: openai-compatible
  base_url: https://open.bigmodel.cn/api/coding/paas/v4   # GLM 编码端点(切 Kimi:api.kimi.com/coding/v1)
  api_key: ${GLM_API_KEY}                                 # 环境变量注入,不入库;Kimi 用 ${KIMI_API_KEY}
  extra_params:
    thinking:
      type: disabled                                      # 关 GLM-4.5 思维链:CoT 会吃爆 token 预算(finish_reason=length)

# 模型:当前全部用 GLM 的 glm-4.5-flash(单一模型,不分层)。切后端用 scripts/sage-backend.sh。
# (模型版本随迭代定期复评,见 PRD §12 问题 5)
models:
  summarize: glm-4.5-flash
  extract:   glm-4.5-flash
  write:     glm-4.5-flash
  lint:      glm-4.5-flash
  query:     glm-4.5-flash

compiler:
  max_parallel: 2                  # GLM 限流较紧(HTTP 429 code 1302);4 并发会部分写入失败,降到 2
  debounce_seconds: 2
  summary_max_tokens: 1500
  extract_batch_size: 1            # 概念抽取按单摘要小批(叠加引擎 120s 硬超时,大批必败)
  extract_max_tokens: 8000         # flash 是推理模型,CoT 也计入,给足避免 length 截断
  article_max_tokens: 3000
  auto_commit: false               # 拆库后关:个人目录已 gitignore(软链 mind-vault),收尾提交走 scripts/vault.sh
  auto_lint: true                  # 编译后自动 lint

search:
  hybrid_weight_bm25: 0.7
  hybrid_weight_vector: 0.3

附录 C:CLAUDE.md 模板(Schema —— 系统”宪法”)

# CLAUDE.md — 第二大脑 Schema

## 工具权责边界(最重要)
- 编译引擎(sage-wiki)全权负责:_wiki/ 下的 summaries/ concepts/ entities/
  → 你(LLM)不要直接创建或修改这些文件
  → 你可以读取它们用于 Query,可以在 _wiki/outputs/ 创建分析报告
- 你(LLM)全权负责:material/ 目录
- 你(LLM)可写 writing/ 目录,但以用户为主导(存放用户成稿)
- 共同维护:_wiki/index.md 和 _wiki/log.md(你可以追加,不要删除)

## 目录结构
raw/clippings/ → 自动编译(不需要你处理)
raw/todo/      → 等待你做深度对话式 ingest 的文章
raw/archive/   → 已处理存档,不要碰
raw/flomo/     → flomo 原始导出(不要修改),delta/ 子目录是增量文件
_wiki/         → 编译引擎领地,你只读不写(outputs/ 除外)
material/      → 你的领地,按六类框架存放素材

## Ingest 工作流(针对 raw/todo/)
1. 读取文章,与用户讨论关键要点(不要跳过这步)
2. 在 _wiki/outputs/ 写简要摘要页(不要写到 summaries/)
3. 按六类框架提取素材存入 material/ 对应子目录
4. 在 _wiki/log.md 追加:## [日期] ingest | 文章标题
5. 告知用户可把文件移入 raw/archive/

## Query 工作流
1. 先读 _wiki/index.md 找相关页面
2. 深入相关页面,综合答案,附 Wiki 内链接
3. 有价值的分析存入 _wiki/outputs/,在 log.md 追加

## flomo 处理偏好(raw/flomo/delta/)
- 重点提取:① 原创金句 ② 自我反思与决策复盘 ⑤ 框架与心智模型
- 弱化权重:③ 外部引用 ⑥ 数据(除非 flomo 笔记本身包含)

## 两套框架何时用
- 写作任务 → 六类素材框架(material/)
- 产品/竞品/融资/招聘决策 → 五维工作框架(_wiki/ 五维标签检索)

## Lint 检查项
- 页面间矛盾 / 被新来源推翻的旧声明
- 孤立页面(无入链)/ 缺失交叉引用
- 重要概念被多处提及但没有独立页面
- 可联网补充的数据缺口 / 下一步值得深挖的问题

附录 D:.mcp.json 模板(MCP 接入)

{
  "mcpServers": {
    "sage-wiki": {
      "command": "sage-wiki",
      "args": ["serve", "--project", "."]
    }
  }
}

使用相对路径 .:Claude Code / Claudian 从项目根目录启动 MCP server,工作目录即 vault 根,换机器、换路径无需修改(硬编码绝对路径是踩过的坑)。若你的客户端不以 vault 为工作目录启动,再改为绝对路径。

附录 E:自动化脚本清单

以仓库为准:脚本的权威版本是仓库 scripts/ 目录下的实际文件,本附录只描述设计要点,不再内嵌代码副本(内嵌副本会随脚本迭代而漂移)。

E.1 scripts/auto-archive.sh —— 在 sage-wiki compile 完成后运行,把 clippings/ 中已编译文件移入 archive/。设计要点:

E.2 scripts/flomo-delta.py —— 比对两次 flomo 全量导出,提取新增笔记生成 delta 文件(用法:python scripts/flomo-delta.py raw/flomo/<最新导出目录>)。设计要点:

E.3 scripts/daily-report.py / scripts/weekly-report.py(共用 scripts/reportlib.py) —— 工作日志:盘点前一天工作生成日报,并把一周日报合成周报(见 §7.7)。设计要点:

E.4 scripts/build-site.sh(配 scripts/site-template.html) —— 从 docs/ 下 Markdown 重建文档站 site/(需 pandoc),详见发布指南。

附录 F:素材提取 Prompt 模板

F.1 flomo 六类提取(处理 raw/flomo/delta/)

读取 raw/flomo/delta/ 中今天生成的 delta 文件。
这些内容来自我多年的个人笔记,请按以下六类提取素材,
分别追加到 material/ 对应子目录的 Markdown 文件中。原始 delta 文件不要修改。

① 原创金句 → material/quotes/flomo-quotes.md(我写的、可直接引用的句子)
② 自我反思与决策复盘 → material/stories/flomo-stories.md(我的亲历、判断过程与反思)
③ 外部引用 → material/references/flomo-refs.md(他人观点/名言,注明来源)
④ 案例记录 → material/cases/flomo-cases.md(外部案例,成功或失败)
⑤ 框架与心智模型 → material/frameworks/flomo-frameworks.md(思维工具、判断框架)
⑥ 数据与趋势 → material/data/flomo-data.md(数据点、市场信号、研究结论)

注意:flomo 内容偏个人,①②⑤ 会更多,其余类若无相关内容不必强行分类。

F.2 写作主题素材库(有写作任务时)

我正在写关于「[主题]」的文章,框架是:[你的文章结构]。
请在 _wiki/ 和 raw/ 中按以下六类搜索素材,输出到 material/[主题]-素材库.md。

① 我的原创金句(material/quotes/ 和 writing/ 存档)
② 我的亲身经历和决策复盘(material/stories/)
③ 外部权威和市场信号(_wiki/entities/ 和 summaries/)
④ 真实案例(_wiki/summaries/)
⑤ 框架与心智模型(_wiki/concepts/ 和 material/frameworks/)
⑥ 数据、研究与趋势(_wiki/summaries/ 中含数据的页面)

附录 G:选型对比(需求优先下的备选评估)

组件 推荐 主要备选 取舍要点
存储/编辑器 Obsidian Logseq / Cursor+文件夹 / VS Code+文件夹 Obsidian:本地 Markdown、图谱、Dataview、插件生态成熟;Logseq 大纲式更适合原子笔记;纯文件夹最轻但缺图谱
编译引擎 sage-wiki 自建脚本让 Claude Code 直接维护 Wiki / 其他 Karpathy 方案实现 sage-wiki:开箱即用的 watch / MCP / 分模型 / 增量;自建更灵活但需自己维护幂等与调度
LLM 交互界面 Claudian Claude Code CLI / Cursor / 其他 Obsidian AI 插件 Claudian:侧栏直用、复用 CLAUDE.md 与 MCP、消除切换;CLI 适合批处理
存量来源 Flomo Notion / Apple Notes / Readwise 导出 关键是能导出 Markdown 且能做增量;Flomo 卡片式贴合个人金句/复盘
版本/备份 Git(本地) Git+私有远端 / iCloud / Dropbox(加密) Git 可回溯 diff;叠加远端/同步盘做异地备份

判据统一回到 §4.4 硬标准:本地纯文本、LLM 可编程访问、权责可约束、增量幂等、可观测。任何备选满足这些即可平滑替换。

附录 H:术语表

术语 含义
RAG 检索增强生成:查询时临时检索原始文档片段作答,不留积累
LLM Wiki Karpathy 方案:LLM 持续编写维护的永久性、结构化、互联 Markdown 库
Raw Sources 原始来源:不可修改的一手资料(LLM 只读)
Wiki 编译产物:摘要 / 实体 / 概念 / 综述 / 查询产出
Schema 规范配置(CLAUDE.md):权责边界 + 工作流
Ingest / Query / Lint 三种核心操作:摄入 / 查询 / 健检
Compile 编译 把来源转成结构化 Wiki 页的过程
delta flomo 全量导出之间的增量文件(仅此被编译)
watch 监听目录变化自动触发编译
MCP Model Context Protocol:让 LLM 把外部工具当原生工具调用
六类框架(写作轨) 金句/复盘/外部权威/案例/框架/数据
五维框架(决策轨) 市场与竞争/技术判断/产品与用户/人与组织/框架与心智模型
PARA / CODE Building a Second Brain 的组织法与信息生命周期
Intermediate Packet 中间产物:可复用的半成品(对应 material/ 与 outputs/)
复利制品 compounding artifact:越用越丰富、价值累积的知识库

附录 I:参考资料

附录 J:实现状态与引擎偏差(2026-07-14 核对)

本附录是 PRD 与真实施工之间的对账;动态待办与开发计划见同目录开发计划文档(活文档),本附录只做定版快照。

里程碑快照:M1 骨架 ✅ 基本完成(缺 Obsidian 4 辅助插件)· M2 主流程 🟢 大部分已在真实内容上验证(编译/查询/归档/深度 ingest/版本化)· M3 稳态 ❌ 未进入。

已验证(附证据):自动编译(FR-CMP-01,2 源→2 摘要+25 概念页)· 增量幂等(FR-CMP-03)· 自动归档(FR-AUT-01,auto-archive.sh 实测)· 编译后 auto_commit(FR-AUT-04)· 深度 ingest(FR-ING-03,6 文档→素材+摘要+log)· 六类素材(FR-MAT-01,12 文件)· 查询带引用(FR-QRY-02,答案含 [[wiki 内链]])· 查询回写(FR-QRY-03,存 _wiki/under_review/)· 治理边界(FR-SCH,CLAUDE.md 生效)· lint 可跑(FR-LNT,🟡 内容少未喂出真问题)。

引擎偏差(sage-wiki dev build 与本 PRD 假设不符,须知晓):

# 偏差 波及 处置
G1 _wiki/index.md 不自动维护(引擎用 .sage/ DB + _wiki/CHANGELOG.md) FR-CMP-04(P0)、FR-QRY-01 待定:脚本重建 index vs 认定引擎 query 为检索入口
G2 auto_lint: true 编译后不触发 FR-CMP-06、FR-LNT 待办:编译后串一步 sage-wiki lint
G3 entities 不写独立页,入 concepts/ + ontology DB §6.1/§6.3 待定:接受 ontology DB vs 导出实体页
G4 --config flag 未接线(永远读 config.yaml) 多后端切换 已缓解:scripts/sage-backend.sh 换 config.yaml
G5 auto_commit 贪婪 git add -A(卷入无关改动) 版本卫生 缓解:compile 前先 commit/stash
G6 无 embedding,向量检索关闭(仅 BM25) FR-CMP-08(P2) 低优:装 Ollama

编译后端:PRD 附录 B 模板默认 anthropic/haiku+sonnet;实际接 GLM 编码端点,并因 GLM flaky(429/120s 超时)于 2026-07-14 增接 Kimi Coding 后端(kimi-for-coding,实测 12/12 全成、更快、中文输出),默认已切 Kimi。两后端 profile + scripts/sage-backend.sh 切换。以仓库 config.yaml / config.glm.yaml / config.kimi.yaml 为准。


“知识库越用越值钱。” Ingest 一篇,Query 一次,Lint 一回 —— 每次操作都让它更丰富。

—— 本 PRD v1.2 · 2026-07-14 · 自用施工蓝图

本页由 docs/ 下的 Markdown 生成(以 Markdown 为准) 回到顶部 ↑