一个由 LLM 持续编写与维护的、可复利的个人 Wiki 知识库。Wiki 不是 RAG —— 知识只编译一次,此后持续保鲜。
打个比方:Obsidian 是 IDE,LLM 是程序员,Wiki 是代码库。
每加入一个新来源,LLM 不是索引它,而是读它、提炼它、整合进已有 Wiki——更新实体页、修订摘要、标注矛盾。知识库因此是一个持续复利的制品,而不是每次提问都从零拼图的检索管道。
先看清整套系统怎么运作:系统如何运作——三层架构 / 双库布局 / 编译流水线 / 四道防腐门禁 / 隐私边界,一页看完。
本公开仓提供 Vault-only 安装器,可初始化本地第二大脑 Vault;飞书授权与同步连接器属于完整发行包,不随公开仓发布。 完整操作见 Workbuddy 专用指南。
# macOS / Linux
./install-second-brain# Windows 原生 PowerShell(不需要 WSL)
powershell -ExecutionPolicy Bypass -File .\install-second-brain.ps1安装器只监听 127.0.0.1,在公开包中仅初始化本地 Vault,不请求、不存储任何飞书
凭证;凭证和飞书内容不会进入本仓。完整发行包的申请方式见文档站「服务」页。
本仓只含代码/工具/文档,不含任何个人内容。 你的知识内容放在你自己的另一个私有仓里,经符号链接挂进工作目录:
second-brain/
├── mind-kit/ ← 本仓(代码)
└── my-vault/ ← 你的私有内容库(自建)
所以克隆后不会有 _wiki/、material/、raw/ 这些目录——这是设计如此。一条命令建好自己的:
bash scripts/init-vault.sh --dry-run # 先看计划
bash scripts/init-vault.sh # 建内容库 + 软链 + git init
bash scripts/vault.sh repo # 验证:应打印你的内容库路径Windows 用户由 install-second-brain.ps1 自动调用跨平台初始化器并使用目录 Junction,
不要求管理员权限或 Developer Mode。
# 1. 依赖
pip install -r requirements.txt
pip install -r requirements-dev.txt # 参与开发时
bash scripts/install-hooks.sh # pre-push 自动跑 pytest
# 2. 建自己的内容库(见上)
bash scripts/init-vault.sh
# 3. 配后端 API Key(别写进任何文件)
export GLM_API_KEY=... # 默认 GLM;或 KIMI_API_KEY 切 Kimi
bash scripts/sage-backend.sh kimi # 切后端(可选)
sage-wiki doctor # 诊断连接
# 4. 首次编译
cp 你的文章.md ../my-vault/raw/clippings/
bash scripts/compile.sh # 编译 → 索引 → lint → 保鲜 → 浏览站 → 提交Windows 原生 PowerShell 对应命令:
.\compile-second-brain.ps1 -DryRun # 先估算,不写入
.\compile-second-brain.ps1 # 确认后正式编译外部依赖:编译引擎 sage-wiki(Go 实现,MIT,本仓不含)需自行安装并置于 PATH;
pandoc 用于生成文档站(可选)。
未安装 sage-wiki 时,本地检索、写集校验、决策队列、保鲜复核、报表等能力仍可用,仅编译链路不可用。
在 Linux 服务器上从零部署,见服务器部署指南。
贡献者的 Windows 原生测试由 GitLab CI/CD 执行,见
GitLab Windows Runner 配置;不要为此新增 GitHub
Actions windows-latest job。
mind-kit/
├── config.yaml # 编译引擎活动配置(默认 GLM 后端)
├── config.glm.yaml # GLM profile(glm-4.5-flash)
├── config.kimi.yaml # Kimi profile(kimi-for-coding)
├── CLAUDE.md # Schema:各角色权责边界与工作流(系统"宪法")
├── prompts/ # 提示模板(概念/摘要/文章/捕获/配图)
├── scripts/ # 自动化(见下)
├── tests/ # pytest(脚本改动强制测试先行)
├── evaluation/ # 检索与质量回归基线(合成语料)
├── docs/{prd,guide}/ # 设计文档与指南(.md 为权威版本)
├── site/ # 文档站静态页(build-site.sh 生成)
│
│ ── 以下为软链,真实内容在你的私有内容库 ──
├── raw/ # {clippings,todo,archive,pdfs,assets}/ 原始来源,只读
├── _wiki/ # {summaries,concepts,entities}/ 编译产出 + outputs/ 查询产出
├── material/ # {quotes,stories,references,cases,frameworks,data}/ 六类素材
├── writing/ # 写作成稿
└── reports/ # {daily,weekly,lint}/ 工作日志与健检记账
| 脚本 | 作用 |
|---|---|
init-vault.sh |
建内容库骨架 + 双库软链(新用户从这开始) |
vault_init.py |
macOS / Linux / Windows 共用的非覆盖式 Vault 初始化核心 |
compile.sh |
编译全流水线:编译 → 索引 → lint → 保鲜 → 决策校验 → 提交 |
compile_second_brain.py |
Windows PowerShell 使用的跨平台编译流水线 |
update-all.sh |
一键全量更新(日报 → 编译 → 门户 → 文档站);支持网页按钮与定时 |
vault.sh |
内容库提交/推送(个人内容唯一提交漏斗,带写集校验门禁) |
searchlib.py |
本地检索:BM25 + CJK bigram + RRF 多通道 + 同义扩展 |
brain-server.py |
本地服务:静态门户 + /api/search + /api/query |
decision.py |
待确认决策队列(状态机,审批与执行分离) |
freshness.py |
半衰期保鲜复核(只提示不自动改) |
validate_write_set.py |
写集校验(提交前拦住 frontmatter 损坏等) |
daily-report.py / weekly-report.py |
日报 / 周报自动盘点 |
知识库越大越怕漂移与静默腐化。除理念外,系统落了四道确定性可执行的机制——不是提示词里的软约束,而是脚本、测试与门禁:
- 本地检索栈 —— BM25 + 中文 bigram 分词 + RRF 多通道融合 + 双语同义扩展,秒级、不走 LLM,索引按输入指纹自动刷新
- 评测与回归 —— 检索 golden case(MRR/Top-1)与质量 required/forbidden token 断言锁住认知边界;基线只增不减
- 决策队列 + 保鲜 —— 须先确认的动作走状态机(审批与执行分离);重要页按半衰期到点提示复核
- 写集校验门禁 —— 提交前对变更页跑确定性校验,坏页拦在入库前
开发纪律遵循 Superpowers:测试先行 · 系统化优于拍脑袋 · 简单为第一目标 · 用证据而非声称。脚本改动强制先写会失败的测试,push 前钩子跑全量 pytest(细则见 tests/README.md)。
_wiki/summaries|concepts|entities是编译引擎的领地,LLM 只读;产出写到_wiki/outputs/- 原始来源只读不写;笔记类原始导出永不修改,只编译其增量目录
- 处理完的
todo移入archive/,不要移回clippings/(会重复编译) - 先有写作/决策任务,再让 AI 从积累里挖宝 —— 不为整理而整理
MIT。本仓不含任何个人知识内容;你的内容属于你自己的私有库。