mirror of
https://github.com/wahyd4/kb.git
synced 2026-08-08 21:06:27 +10:00
549cc7550e6da60240617f81ad592150ca8fbb80
KB — Personal Knowledge Base
LLM 驱动的第二大脑。原则:默认全存,人类筛选,Agent 编译。
不再依赖 Obsidian,不再需要 Notion。就是一堆 markdown 文件 + git。
这是什么
KB 是一个三层知识管理系统:
你分享的任何东西 → raw/ (自动保存) → wiki/ (编译后的知识)
↑ ↑
Agent 即时写入 Agent + 你一起消化
- raw/ — 源材料。你看过的每篇文章、分享的每个链接、聊过的每个话题,都存在这里。按月分桶,永久保留。
- wiki/ — 编译后的知识。从 raw 中提炼出的结构化笔记:投资 thesis、技术 runbook、决策日志。
- SCHEMA.md — 约定和规范。告诉 Agent(和你)怎么写页面、用什么 tag。
目录结构
kb/
├── README.md # 你正在看的
├── SCHEMA.md # 约定:tag、frontmatter、模板
├── log.md # 操作日志(谁在什么时候做了什么)
│
├── raw/ # 层1 — 不可变源材料
│ ├── links/ # 从 Links App 每日自动同步的新闻
│ └── YYYY-MM/ # 手动分享的文章、网页、对话提取
│
├── wiki/ # 层2 — 编译后的知识
│ ├── investing/ # 投资:thesis、分析、税务
│ ├── tech/ # 技术:K3s、Cloudflare、部署笔记
│ ├── life/ # 生活:钢琴、健身、墨尔本
│ └── decisions/ # 决策日志:为什么选了 A 不选 B
│
├── scripts/ # 实用脚本
└── _archive/ # 已被取代的旧页面
不需要 Hermes Agent 也能用
KB 就是 markdown 文件 + git。你可以:
- 用 VS Code 打开 → 直接浏览、搜索、编辑
- 用 rg/grep 搜索 →
rg "NVIDIA" wiki/ raw/ - 用 GitHub 看 → github.com/wahyd4/kb
- 用 Obsidian 打开(可选)→ 直接作为 vault,
[[wikilinks]]即点即用
核心操作
Ingest(采集)— Agent 自动做
你分享 URL 或粘贴内容给 Hermes → Agent 抓取 → 存 raw/YYYY-MM/YYYY-MM-DD-slug.md
raw 文件的 frontmatter:
---
source_url: https://example.com
ingested: 2026-07-13
status: inbox # inbox → absorbed → skipped
---
Absorb(消化)— Agent + 你
把 raw 里的源材料编译成 wiki 页面:
- Agent 读 raw 源
- Agent 搜 wiki/ 找相关已有页面
- 优先更新已有页面(不铺新页)
- 必要时建新页面
- 改 status →
absorbed
# 手动 absorb 辅助:列出所有 inbox 条目
./scripts/inbox.sh
# 手动 absorb 辅助:搜索 raw 中相关内容
./scripts/search.sh "NVIDIA" raw/
# 用 Hermes: "absorb raw/2026-07/2026-07-13-nvidia-article.md"
Query(查询)
# 搜索所有 KB 内容
./scripts/search.sh "关键词"
# 或直接用 ripgrep
rg "NVIDIA" ~/Code/kb/wiki/ ~/Code/kb/raw/
结果会标注来源类型:wiki 页面是 已编译,raw 条目是 源材料待编译。
Lint(健康检查)
# 检查断链
./scripts/lint.sh
Agent 会检查:断链 wikilinks、过期投资页面、孤儿页面。
Frontmatter 规范
Wiki 页面
---
title: "页面标题"
created: 2026-07-13
updated: 2026-07-13
tags: [domain/subtag]
sources: [raw/YYYY-MM/file.md] # 来源 raw 文件
---
Raw 文件
---
source_url: https://...
ingested: 2026-07-13
status: inbox | absorbed | skipped | failed_fetch
---
Tag 系统
开放前缀制 — 新 tag 直接用,不审批:
| 前缀 | 示例 |
|---|---|
tech/ |
infra, k3s, cf-workers, llm, agent, homelab |
inv/ |
semi, cloud, ai, thesis, earnings, tax, valuation |
life/ |
music, piano, health, family, melbourne |
页面模板
投资 Thesis
# [Company] Thesis
- Conviction: high/medium/low
- Thesis: 3-5 个核心理由
- Risks: 什么会打破 thesis
- Catalysts: 近期催化剂
技术 Runbook
# [Component] Runbook
- Purpose: 干什么的
- Location: repo/namespace
- Common issues: 常见问题 + 修复
决策日志
# [Decision]
- Date: YYYY-MM-DD
- Context: 背景
- Options: 考虑过哪些方案
- Decision: 选了哪个 + 为什么
搜索技巧
# 找所有 inbox 待处理
rg "status: inbox" raw/
# 找所有 NVIDIA 相关内容
rg -l "NVIDIA" wiki/ raw/
# 找所有投资 thesis
rg "tags:.*inv/thesis" wiki/
# 统计
./scripts/stats.sh
自动化
| 时间 | 做什么 |
|---|---|
| 每天 06:30 | Links App → raw/links/YYYY-MM/ 同步 |
| 每天 22:00 | Hermes 对话扫描 → raw/YYYY-MM/ 提取知识 |
| 每周日 | Review inbox → 决定 absorb 哪些 |
脚本参考
# 查看 inbox
./scripts/inbox.sh # 列出所有待处理
./scripts/inbox.sh --count # 只看数量
./scripts/inbox.sh --recent 10 # 最近 10 条
./scripts/inbox.sh --month 2026-07 # 只看某月
# 搜索
./scripts/search.sh "NVIDIA" # 全文搜索(固定字符串)
./scripts/search.sh "k3s" --wiki-only # 只搜 wiki
./scripts/search.sh "earnings" --raw-only # 只搜 raw
./scripts/search.sh "C\+\+" --regex # 使用正则
./scripts/search.sh "NVIDIA" --files-only # 只列文件名
# 标记状态
./scripts/status.sh absorb raw/2026-07/article.md # 标记为已吸收
./scripts/status.sh skip raw/2026-07/old-news.md # 跳过
./scripts/status.sh inbox raw/2026-07/file.md # 重置为待处理
# 统计
./scripts/stats.sh
# 健康检查(退出码非零 = 有问题)
./scripts/lint.sh
前置依赖
bash4+ripgrep(rg) —apt install ripgrep或brew install ripgrepgit
不依赖 Hermes 的手动操作
手动 Ingest(你自己加一篇文章)
- 创建文件
raw/YYYY-MM/YYYY-MM-DD-slug.md - 写 frontmatter:
---
source_url: https://example.com/article
ingested: 2026-07-13
status: inbox
---
- 正文放下面
git add+git commit
手动 Absorb(从 raw 编译到 wiki)
./scripts/inbox.sh看看有哪些待处理- 读 raw 文件,理解内容
- 搜 wiki 找相关页面:
./scripts/search.sh "关键词" --wiki-only - 编辑或创建 wiki 页面
./scripts/status.sh absorb raw/路径标记已完成- 更新页面
[[wikilinks]]交叉引用
Status 生命周期
inbox → absorbed (内容已编译到 wiki/)
inbox → skipped (看过但不值得编译)
inbox → failed_fetch (链接打不开/抓取失败)
raw 文件标记 absorbed/skipped 后不会再出现在 inbox,但文件保留在 raw/ 中可搜索。
隐私
- GitHub repo = private
- 不含具体持仓金额、家庭隐私
- 投资页面只记录 thesis/分析框架
与旧 one-knowledge 的关系
~/junv/one-knowledge 是旧版知识库。2,815 篇 links-posts 和 19 篇 tech notes 已迁移到 KB。旧 repo 保留但不再主动更新。
Languages
Shell
57.9%
Python
42.1%