深色模式
8 大类 / 27 主题域 / 311 技法簇的划分依据、边界约定与查询路径。
本页是分类设计的依据记录,不是实现说明。层级结构的唯一事实来源是 docs/kb/ 的目录树本身(由 kb-scan 递归扫描),本页解释这些目录 为什么这样划分。第 4、6、7 节描述的字段与聚合机制未实现, 已在各节开头标注;已实现的字段见 原子单元约定。
0. 三个正交面
v1 把三样不同性质的东西编码进了同一层域名,结果每两个域之间都要写一段边界说明来打补丁 (F1/E1 的语言重叠、K2/E2 的漏洞重叠、K7/K9 的网络重叠、K3/E7 的优化重叠……)。 补丁越多说明维度分错了。v2 把它们拆成三个正交面:
| 面 | 回答 | 取值 | 归属数 |
|---|---|---|---|
| 主题面 Subject | 讲的对象是什么 | 27 个主题域 → 簇 → 原子 | 唯一,构成主索引树 |
| 层次面 Layer | 回答哪一类问题 | found 基础 / theory 原理 / eng 工程 | 唯一,标注字段 |
| 类型面 Type | 内容是什么形态 | concept / mechanism / technique / … 9 种 | 唯一,标注字段 |
关键变化:层次不再是域。v1 的 F1 Java 语言基础 与 E1 Java 全栈 是两个域, 所以一份 Java 笔记要在两处之间选;v2 里它们是同一个域 lang.java 的两个 layer 取值, 不存在选择问题。同理消解了其余六处边界争议(见第 5 节对照表)。
主题域的划分依据统一为「对象」,不掺视角、不掺层次、不掺目的。 这是唯一能保证可区分性的依据——两个域如果讲的是同一个对象,它们就该合并。
1. 站点顶层分区
/ 首页
├── /kb/ 知识库 ← 27 个主题域,唯一的层级化索引
├── /demo/ 技术 Demo ← 可运行作品,引用 kb 原子 ID,不复制内容
├── /cv/ 个人简历
└── /life/ 生活随想 ← 独立页面,不进知识库、不进搜索索引三段式 ID 与目录结构一一对应——ID 的三段就是目录路径的后三段, 大类目录层不参与 ID:
域短码 簇 slug(= 叶子目录名)
crypto . hash-mac . length-extension
↓ ↓ ↓
docs/kb/cipher/crypto/hash-mac/length-extension/index.md
└────┘
大类,只决定 URL 与导航分组,不进 ID页面 URL 即目录路径 /kb/cipher/crypto/hash-mac/length-extension/; ID 只用于 requires 字段里的人读引用,不是一种 URL 形式。
簇用语义 slug,不用数字编号。v1 的 00 基础与数学 / 01 古典密码 编号在两次重排后 已经错位;语义 slug 不受重排影响,且能直接拼进原子 ID。
2. 主题域速查总表
八个大类只用于导航排版,不承载语义约束(不像 v1 的 F/K/E 会决定内容该放哪)。 判断一篇笔记归属时只需回答一个问题:它讲的对象是什么。
2.1 数学与理论
| 短码 | 域名 | 对象 | 不含 |
|---|---|---|---|
math | 数学基础 | 数学工具本身 | 用它建模 → model |
logic | 逻辑与形式化方法 | 证明、规约、验证 | 类型系统实现 → lang |
algo | 算法与数据结构 | 通用算法与复杂度 | 领域专用算法 → 各域 |
2.2 系统与底层
| 短码 | 域名 | 对象 | 不含 |
|---|---|---|---|
arch | 计算机体系结构 | CPU/内存/加速器硬件行为 | 汇编阅读技法 → re |
compiler | 编译与程序构造 | 源码到机器码的全过程 | 反编译还原 → re |
os | 操作系统 | 单机内核机制与平台实务 | 多机运维 → ops |
net | 计算机网络 | 网络层及以上的协议与架构 | 物理层调制 → comm |
comm | 通信原理 | 物理层信号与编码 | IP 及以上 → net |
2.3 语言与编程
| 短码 | 域名 | 对象 | 簇 |
|---|---|---|---|
lang | 编程语言 | 语言本体:语法、类型、内存、并发模型、工程化 | 每种语言一个簇 |
lang 是唯一以「语言」而非「主题」分簇的域,因为语言是最强的检索入口。 同一语言的入门语法与高级工程化同处一簇,靠 layer 区分。 用某语言实现某系统属于目标域(Rust 写内核 → sysdev,Java 写服务 → be)。
2.4 密码与隐私
| 短码 | 域名 | 对象 | 不含 |
|---|---|---|---|
crypto | 密码学 | 密码原语与协议的构造与破解 | 隐私系统 → priv |
priv | 隐私保护 | 在不泄露数据的前提下用数据 | 原语本身 → crypto |
crypto 定义 ZKP/FHE/MPC 这些原语「是什么、为什么安全」, priv 讲「用它们搭出什么系统、代价多少」。同一原语两处都有原子,靠 implements 边连接。
2.5 安全攻防
v1 在这里冗余最重:K2 网络安全 与 E2 逆向工程 各有一套漏洞、恶意代码、取证内容, 边界靠「K2 讲原理、E2 讲实操」这种主观标准维持,实际写起来每篇都要犹豫。 v2 按活动对象切分成六个互斥域,每个域的对象是一类具体的工作产物:
| 短码 | 域名 | 对象(工作产物) | 与邻域的硬边界 |
|---|---|---|---|
re | 逆向工程 | 从二进制读出结构与语义 | 产物是「理解」,不含利用与去壳 |
protect | 软件保护与对抗 | 保护机制与其解除 | 产物是「可分析的样本」 |
vuln | 漏洞与利用 | 缺陷的发现与利用 | 产物是「可控执行流」 |
malware | 恶意代码分析 | 恶意样本的行为与归因 | 产物是「报告与检测规则」 |
offsec | 渗透与红队 | 对目标环境的攻击链 | 产物是「权限与路径」 |
defsec | 防御检测与取证 | 发现并响应攻击 | 产物是「告警与结论」 |
ctf | CTF | 赛题与题解 | 活动而非知识,只放题解与套路 |
一条判定链,从上往下第一个命中即归属:
这篇笔记的产出是什么?
├─ 一份题解或比赛套路 → ctf
├─ 一条检测规则 / 一次调查结论 → defsec
├─ 一个样本的行为画像或家族归因 → malware
├─ 一条 exploit 或一个 crash 的根因 → vuln
├─ 一个脱壳后的干净样本 / 一种保护方案 → protect
├─ 对某目标环境的一条攻击路径 → offsec
└─ 对某二进制的结构理解与还原 → rere 被收窄为纯粹的「读懂二进制」能力:静态分析、动态调试、插桩、符号执行、 各平台的可执行格式与内核结构。它是 protect/vuln/malware 的共同前置, 三者通过 requires 边指向 re 的原子,而不再各自复制一份 IDA 用法。
2.6 人工智能
| 短码 | 域名 | 对象 | 硬边界 |
|---|---|---|---|
ml | 机器学习与大模型 | 模型:算法、训练、能力 | 对象是权重与损失 |
agent | Agent 工程 | 应用:把模型接入工具与环境 | 对象是 prompt、工具、流程 |
aiinfra | AI 基础设施 | 机器:算力、集群、服务 | 对象是 GPU、显存、吞吐 |
v1 中「推理优化」在 K3 和 E7 各出现一次。v2 的判据是对象: 改动模型本身(量化算法、投机采样的正确性)→ ml; 改动运行环境(PagedAttention 的显存管理、批调度)→ aiinfra。
2.7 软件工程
| 短码 | 域名 | 对象 | 硬边界 |
|---|---|---|---|
be | 服务端工程 | 服务进程内的设计与实现 | 语言中立,Java 只是主用栈 |
web | 前端工程 | 浏览器内的工程实践 | JS/TS 语言本体 → lang.ts |
sysdev | 系统开发 | 无标准库/裸机/内核态的程序 | 语言中立,Rust 只是主用语言 |
ops | 工程实践与运维 | 单机之外:部署、编排、观测 | 内核机制 → os |
be 与 sysdev 都去掉了 v1 的语言绑定(E1 Java 全栈 / E3 Rust 系统)。 理由:语言是可替换的实现手段,不是这两个域的对象。 用 Go 写微服务同样归 be,用 C 写驱动同样归 sysdev,不必新开域。
2.8 应用领域
| 短码 | 域名 | 对象 | 硬边界 |
|---|---|---|---|
model | 数学建模 | 用数学解决具体问题的完整流程 | 数学工具本身 → math |
web3 | Web3 与区块链 | 链、合约、去中心化应用 | P2P 网络机制 → net |
3. 域详表
每个域给出簇清单。簇是分类树的末级,原子挂在簇下。 簇的 slug 直接作为原子 ID 的第二段,也是 /kb/<域>/<簇>/ 的路径段。
3.1 math 数学基础 /kb/theory/math/
为其余各域提供数学工具。只放工具本身的定义、性质、计算方法。
| 簇 | 名称 | 覆盖 |
|---|---|---|
linalg | 线性代数 | 矩阵分解、特征值、SVD、张量运算 |
prob | 概率论 | 分布、期望方差、大数律、中心极限、马尔可夫链 |
stat | 数理统计 | 估计、假设检验、回归、贝叶斯推断 |
calculus | 微积分与分析 | 多元微积分、级数、泛函初步、变分法 |
discrete | 离散数学 | 组合、图论基础、递推、生成函数 |
numtheory | 数论与代数 | 同余、素性、群环域、有限域、椭圆曲线 |
optim | 最优化理论 | 凸优化、对偶、梯度法、约束优化、整数规划 |
infotheory | 信息论 | 熵、互信息、率失真、信道容量 |
numerical | 数值方法 | 误差分析、迭代求解、数值稳定性 |
3.2 logic 逻辑与形式化方法 /kb/theory/logic/
「怎么证明程序或协议是对的」。是 crypto、lang、vuln 的理论支撑。
| 簇 | 名称 | 覆盖 |
|---|---|---|
prop-pred | 命题与谓词逻辑 | 语法语义、自然演绎、完备性 |
model-theory | 模型论与集合论 | 结构、可满足性、基数 |
computability | 可计算性与复杂性 | 图灵机、不可判定、归约、复杂度类 |
type-theory | 类型论 | 简单类型、依赖类型、Curry-Howard、线性类型 |
spec | 规约语言 | TLA+、Alloy、B/Event-B、Z、契约式设计 |
model-check | 模型检验 | 时序逻辑 LTL/CTL、状态爆炸、符号模型检验、SPIN/NuSMV |
theorem-prove | 定理证明 | Coq、Isabelle/HOL、Lean、证明工程 |
abstract-interp | 抽象解释 | 抽象域、不动点、静态分析理论基础 |
smt | SMT 与约束求解 | SAT、DPLL(T)、Z3 建模技巧 |
program-verify | 程序验证 | Hoare 逻辑、分离逻辑、不变式、精化 |
proto-verify | 协议形式化验证 | ProVerif、Tamarin、符号模型与计算模型 |
verified-sys | 已验证系统 | seL4、CompCert、RustBelt、验证代价与收益 |
3.3 algo 算法与数据结构 /kb/theory/algo/
通用算法。领域专用算法归各自域(密码算法 → crypto,路由算法 → net)。
| 簇 | 名称 | 覆盖 |
|---|---|---|
complexity | 复杂度分析 | 渐进记号、均摊、势能法、下界 |
linear | 线性结构 | 数组、链表、栈队列、单调栈、双指针 |
tree | 树结构 | 二叉搜索树、平衡树、堆、并查集、树形 DP |
graph | 图算法 | 遍历、最短路、生成树、网络流、匹配、连通性 |
sort-search | 排序与查找 | 比较排序、非比较排序、二分、选择 |
dp | 动态规划 | 状态设计、区间/树/数位/状压、优化技巧 |
greedy-divide | 贪心与分治 | 交换论证、CDQ、分治优化 |
string | 字符串算法 | KMP、AC 自动机、后缀数组、SAM、回文 |
advanced-ds | 高级数据结构 | 线段树、树套树、可持久化、块状结构、LCT |
geometry | 计算几何 | 凸包、半平面交、扫描线、旋转卡壳 |
math-algo | 数学类算法 | 快速幂、筛法、FFT/NTT、线性基、矩阵加速 |
randomized | 随机与近似算法 | 随机化、哈希技巧、近似比、启发式 |
3.4 arch 计算机体系结构 /kb/system/arch/
v1 中 CPU 架构知识散在 re/core/00,同时被 sysdev、aiinfra、vuln 隐式依赖。 独立成域后一处定义、多处引用,消除三份重复。
| 簇 | 名称 | 覆盖 |
|---|---|---|
isa | 指令集架构 | x86/x64、ARM/AArch64、RISC-V、寄存器与寻址、调用约定 |
pipeline | 流水线与乱序 | 分支预测、乱序执行、推测执行、性能含义 |
cache | 缓存层次 | 组相联、一致性协议、伪共享、缓存友好设计 |
memory-model | 内存模型 | 内存序、屏障、TSO 与弱序、原子性 |
simd | 向量与并行扩展 | SSE/AVX、NEON、SVE、自动向量化 |
accel | 加速器架构 | GPU SM 模型、TPU/NPU、片上互联、HBM |
virt-hw | 硬件虚拟化 | VT-x/AMD-V、EPT、SR-IOV、嵌套虚拟化 |
sidechannel | 微架构侧信道 | Spectre/Meltdown 类、缓存计时、功耗与电磁 |
perf | 性能计数器与剖析 | PMU、perf 事件、Roofline 模型 |
3.5 compiler 编译与程序构造 /kb/system/compiler/
v1 中「编译产物形态」在 re/core/01 出现,「类型系统实现」在 lang 出现, 「混淆变换」在 protect 出现——三者其实共享同一套编译理论。独立成域。
| 簇 | 名称 | 覆盖 |
|---|---|---|
frontend | 词法与语法分析 | 正则/自动机、LL/LR、递归下降、错误恢复 |
semantic | 语义分析 | 符号表、类型检查与推导实现、作用域 |
ir | 中间表示 | AST、SSA、LLVM IR、MLIR、CFG/DFG |
optimize | 优化 | 数据流分析、内联、循环变换、别名分析、PGO |
codegen | 代码生成 | 指令选择、寄存器分配、指令调度、Peephole |
abi | ABI 与运行时布局 | 调用约定、名字修饰、异常展开、RTTI、虚表 |
link-load | 链接与加载 | 静态/动态链接、重定位、PLT/GOT、符号解析 |
jit | JIT 与解释器 | 字节码、分层编译、内联缓存、去优化 |
gc | 垃圾回收 | 标记清除、分代、并发 GC、写屏障 |
transform | 程序变换 | 混淆变换的编译原理、去优化还原、超优化 |
3.6 os 操作系统 /kb/system/os/
单机内核机制与主流平台实务。多机部署与编排归 ops。
| 簇 | 名称 | 覆盖 |
|---|---|---|
structure | 内核结构 | 宏内核/微内核/Unikernel、系统调用机制、特权级 |
process | 进程与调度 | 进程线程模型、上下文切换、CFS/EEVDF、实时调度、cgroup |
concurrency | 并发与同步 | 锁与无锁、RCU、条件变量、优先级反转、死锁 |
memory | 内存管理 | 虚拟内存、分页、TLB、页面置换、伙伴/slab、OOM |
filesystem | 文件系统 | VFS、ext4/XFS/Btrfs/ZFS、日志、页缓存、一致性 |
io | I/O 与设备 | 中断、DMA、块层、io_uring、epoll/kqueue、字符设备 |
ipc | 进程间通信 | 管道、共享内存、消息队列、信号、socket、Binder |
virt | 虚拟化 | Hypervisor 类型、KVM/QEMU、设备模拟、虚拟机逃逸面 |
container | 容器机制 | namespace、cgroup v2、OverlayFS、seccomp、Capabilities |
boot | 启动与固件 | BIOS/UEFI、引导流程、initramfs、Secure Boot |
linux | Linux 实务 | 内核编译与配置、/proc /sys、eBPF、systemd、调优 |
windows | Windows 实务 | 对象管理器、注册表、WinAPI、句柄与令牌、ETW、WSL |
sandbox | 隔离与沙箱 | Docker/gVisor/Firecracker 隔离强度对比、WASM 运行时隔离 |
3.7 net 计算机网络 /kb/system/net/
网络层及以上。物理层与调制归 comm,硬边界是「比特是否已经成帧」。
| 簇 | 名称 | 覆盖 |
|---|---|---|
architecture | 体系结构 | 分层模型、端到端原则、分组交换、命名与寻址 |
link | 链路层 | 以太网、VLAN、ARP、交换机转发、无线接入 |
ip | 网络层 | IPv4/IPv6、分片、ICMP、NAT、隧道 |
routing | 路由 | 距离向量/链路状态、OSPF、BGP、策略路由、路由安全 |
transport | 传输层 | TCP 状态机与拥塞控制、UDP、QUIC、BBR、多路径 |
app-proto | 应用层协议 | HTTP/1.1-3、DNS、TLS 握手、WebSocket、gRPC、邮件协议 |
forwarding | 数据平面 | 交换结构、队列管理、AQM、QoS、DPDK/XDP 高速转发 |
sdn | SDN 与可编程网络 | OpenFlow、P4、控制面分离、网络虚拟化 Overlay |
dcn | 数据中心网络 | Clos/Fat-Tree、RDMA/RoCE、无损网络、流量工程 |
cdn-edge | 内容分发与边缘 | 缓存策略、任播、负载均衡、边缘计算 |
measure | 网络测量与诊断 | 抓包分析、主动/被动测量、时延带宽推断、可观测性 |
p2p | 对等网络 | DHT、gossip、NAT 穿透、libp2p |
nextgen | 新一代互联网 | IPv6 演进、命名数据网络、卫星互联网、确定性网络 |
3.8 comm 通信原理 /kb/system/comm/
物理层:信号如何变成可靠的比特流。
| 簇 | 名称 | 覆盖 |
|---|---|---|
signal | 信号与系统 | 傅里叶变换、采样定理、滤波器、频谱分析 |
random-proc | 随机过程与噪声 | 平稳性、功率谱、高斯白噪声、匹配滤波 |
analog | 模拟调制 | AM/FM/PM、抗噪性能 |
digital | 数字调制 | ASK/PSK/QAM、星座图、误码率、同步与均衡 |
source-coding | 信源编码 | 量化、压缩、语音与图像编码 |
channel-coding | 信道编码 | 汉明码、卷积码、Turbo、LDPC、极化码 |
spread-mimo | 扩频与多天线 | CDMA、OFDM、MIMO、波束成形、信道估计 |
access | 多址接入 | FDMA/TDMA/CDMA/OFDMA、随机接入、调度 |
mobile | 移动通信系统 | 4G/5G 架构、切换、6G 方向、卫星通信 |
phy-sec | 物理层安全 | 保密容量、干扰与抗干扰、射频指纹 |
3.9 lang 编程语言 /kb/programming/lang/
每种语言一簇,从入门语法到高级工程化同处一簇,靠 layer 与 level 区分深浅。 判据:讲的是语言本身的规则与惯用法 → lang;讲的是用它构建的系统 → 目标域。
| 簇 | 名称 | 覆盖要点 |
|---|---|---|
c | C | 指针与内存、未定义行为、预处理、标准库、跨平台 |
cpp | C++ | 对象模型、模板与元编程、RAII、移动语义、STL、现代标准 |
java | Java | 类型系统、泛型擦除、集合、并发与 JMM、JVM 内存模型、字节码、GC 调优、反射与注解处理 |
python | Python | 数据模型、装饰器与元类、GIL、异步、包管理、C 扩展、性能陷阱 |
rust | Rust | 所有权与借用、生命周期、trait 与泛型、错误处理、unsafe 契约、宏、异步、Cargo 生态 |
go | Go | goroutine 与 channel、内存模型、接口设计、GC 行为、工程约定 |
ts | JavaScript / TypeScript | 原型与闭包、事件循环、模块系统、类型体操、类型安全边界 |
arkts | ArkTS | 与 TS 的差异约束、声明式 UI 范式、状态管理、鸿蒙运行时特性 |
compare | 语言横向对比 | 内存管理策略、并发模型、类型系统表达力、错误处理哲学、选型依据 |
compare 簇是特意保留的:跨语言对比笔记在 v1 无处安放, 落进任一语言簇都会造成两处重复。独立成簇后它通过 contrasts 边连接各语言原子。
3.10 crypto 密码学 /kb/cipher/crypto/
原语与协议的构造、安全性论证、破解。
| 簇 | 名称 | 覆盖 |
|---|---|---|
math-found | 数学基础 | 有限域、群论、离散对数、格、双线性对(引用 math.numtheory) |
classical | 古典密码 | 代换置换、维吉尼亚、频率分析、恩尼格玛 |
symmetric | 对称密码 | 分组密码结构、DES/AES、工作模式、流密码、填充 |
hash-mac | 哈希与 MAC | Merkle-Damgård、海绵结构、SHA 系列、HMAC、碰撞与长度扩展 |
asymmetric | 公钥密码 | RSA、ElGamal、ECC、密钥交换、陷门函数 |
signature | 签名与身份 | 数字签名、盲签名、门限签名、PKI 与证书链 |
protocol | 密码协议 | TLS、Kerberos、认证密钥交换、承诺与掷币 |
provable | 可证明安全 | 安全定义、归约证明、随机预言机、游戏跳跃 |
attack | 密码攻击 | 差分与线性分析、侧信道、故障注入、格攻击、随机数缺陷 |
advanced | 高级原语 | 同态加密、零知识证明、MPC 协议、属性加密、混淆 |
pqc | 后量子密码 | 格基/编码/多变量/哈希签名、NIST 标准化、迁移 |
guomi | 国密算法 | SM2/SM3/SM4/SM9、合规要求、工程实现 |
impl | 工程实现 | 恒定时间编程、密钥管理、随机数源、常见误用、库选型 |
advanced 只讲原语「是什么、为什么安全」;用它搭系统归 priv。
3.11 priv 隐私保护 /kb/cipher/priv/
在不暴露原始数据的前提下完成计算与共享。
| 簇 | 名称 | 覆盖 |
|---|---|---|
threat-model | 隐私威胁模型 | 攻击者能力、链接攻击、重识别、推断攻击分类 |
regulation | 合规与治理 | GDPR、个保法、数据分级、隐私影响评估、数据主体权利 |
anonymize | 匿名化 | k-匿名、l-多样性、t-接近、泛化与抑制、失效案例 |
dp | 差分隐私 | ε-DP、机制设计、组合定理、本地 DP、隐私预算工程 |
mpc-sys | 安全多方计算系统 | 秘密分享、混淆电路、OT、隐私求交、性能权衡 |
fhe-sys | 同态加密应用 | 参数选择、Bootstrapping 代价、密态推理可行性 |
zkp-sys | 零知识应用 | 电路设计、证明系统选型、可信设置、证明成本 |
fl | 联邦学习 | 横向/纵向/迁移、聚合协议、梯度泄露与防护、激励 |
tee | 可信执行环境 | SGX/TrustZone/SEV、远程认证、侧信道风险、TEE 落地 |
anon-comm | 匿名通信 | Tor、混淆网络、流量分析、匿名度量 |
ml-privacy | 机器学习隐私 | 成员推断、模型反演、数据提取、遗忘学习、去标识化训练 |
engineering | 隐私工程 | 隐私设计原则、数据最小化、日志脱敏、埋点治理 |
3.12 re 逆向工程 /kb/security/re/
唯一职责:从二进制读出结构与语义。 前六簇是技法(对象无关),后八簇是平台对象。 两组正交,一个原子只落一处:讲工具与方法 → 技法簇;讲某平台的具体结构 → 平台簇。
技法簇:
| 簇 | 名称 | 覆盖 |
|---|---|---|
static | 静态分析 | 反汇编与反编译原理、控制流恢复、类型与结构体还原、签名识别、交叉引用 |
dynamic | 动态调试 | 断点原理、硬件断点、内存/寄存器观察、时间旅行调试、内核态调试配置 |
instrument | 插桩与 Hook | Frida、DynamoRIO/Pin、inline hook、IAT/PLT hook、trace 采集 |
symbolic | 符号执行与约束求解 | angr、约束路径爆炸、混合执行、自动化求解题型 |
emulate | 模拟执行 | Unicorn、QEMU 用户态、指令级仿真、环境补齐 |
automation | 逆向自动化 | IDA/Ghidra/Binja 脚本、结构体批量恢复、差分脚本、工作流搭建 |
平台对象簇:
| 簇 | 名称 | 覆盖 |
|---|---|---|
pe-win | PE 与 Windows 用户态 | PE 结构、加载器行为、TLS 回调、SEH、进程注入面、COM |
win-kernel | Windows 内核 | 驱动模型、内核对象、SSDT/回调、PatchGuard、WDF、内核调试 |
elf-linux | ELF 与 Linux 用户态 | ELF 结构、动态链接细节、libc 内部、ptrace |
linux-kernel | Linux 内核 | 模块机制、内核数据结构、rootkit 面、kprobe、内核符号 |
dex-android | Android | DEX/OAT、ART 运行时、Native 层、Smali、加固与还原、Xposed/LSPosed |
macho-apple | Apple 平台 | Mach-O、dyld、Objective-C/Swift 运行时元数据、越狱环境 |
managed | 托管代码 | .NET IL、Java 字节码、Python 字节码、WASM 逆向 |
firmware | 固件与嵌入式 | 固件提取与解包、Bootloader、RTOS、MCU 架构(不含硬件改装) |
平台簇明确只覆盖软件与系统:不含 PCB 改板、芯片开盖、协议逆向中的射频部分, 也不含游戏外挂与反外挂对抗(按既定范围排除)。
3.13 protect 软件保护与对抗 /kb/security/protect/
保护机制的原理与解除。产物是「可分析的样本」或「一套保护方案」。
| 簇 | 名称 | 覆盖 |
|---|---|---|
packer | 加壳原理 | 压缩壳/加密壳结构、IAT 处理、重定位、Stub 设计 |
unpack | 脱壳 | 手动脱壳流程、OEP 定位、内存 dump、IAT 重建、通用脱壳器 |
vm-protect | 虚拟机保护 | VMProtect/Themida 架构、Handler 识别、VM 还原思路 |
obfuscate | 代码混淆 | 控制流平坦化、不透明谓词、指令替换、字符串加密、符号剥离 |
deobfuscate | 反混淆 | 平坦化还原、污点与切片、编译器优化辅助还原、自动化去混淆 |
antidebug | 反调试与反分析 | 检测手段全谱、反虚拟机、反插桩、时间检测与对抗 |
integrity | 完整性与防篡改 | 校验与自校验、签名验证、内存保护、Anti-tamper |
whitebox | 白盒密码 | 白盒 AES 结构、DFA 攻击、BGE 攻击、实际强度 |
license | 授权与激活 | 注册算法设计、硬件绑定、在线激活、Keygen 分析 |
hardening | 商业加固方案 | 移动端加固对比、加固检测、还原路径 |
3.14 vuln 漏洞与利用 /kb/security/vuln/
v1 中此内容在 K2/03 漏洞与利用 与 E2 逆向/vuln 各存一份,是最大的一处冗余。 v2 合并为单一域,产物是「crash 的根因」或「可控执行流」。
| 簇 | 名称 | 覆盖 |
|---|---|---|
taxonomy | 缺陷分类 | CWE 体系、内存安全 vs 逻辑缺陷、漏洞生命周期、CVSS 与实际风险 |
memory | 内存破坏 | 栈溢出、整数问题、格式化字符串、类型混淆、越界读写 |
heap | 堆利用 | glibc/ptmalloc、Windows 堆、tcache/fastbin 技法、堆布局操纵 |
uaf | 生命周期缺陷 | UAF、double free、竞态 TOCTOU、引用计数错误 |
mitigation | 缓解机制 | ASLR/DEP/Stack Guard/CFG/CET/PAC、指针混淆、堆加固原理 |
bypass | 缓解绕过 | 信息泄露、部分覆写、Brute force、CFI 绕过、JIT Spray |
rop | 代码复用攻击 | ROP/JOP/SROP、gadget 搜索、栈迁移、one-gadget |
fuzzing | 模糊测试 | 覆盖引导、变异策略、语法感知、内核与协议 fuzz、harness 编写 |
staticaudit | 静态审计 | 源码审计方法、数据流与污点分析工具、误报处理 |
patchdiff | 补丁比对 | 二进制 diff、补丁根因定位、1day 分析流程 |
kernel-exp | 内核提权 | 内核对象操纵、堆喷、SMEP/SMAP 绕过、条件竞争提权 |
browser-exp | 浏览器利用 | JS 引擎类型混淆、JIT 漏洞、渲染器沙箱逃逸链 |
disclosure | 报告与披露 | PoC 编写规范、复现环境、责任披露流程、赏金实践 |
3.15 malware 恶意代码分析 /kb/security/malware/
产物是「行为画像 / 家族归因 / 检测规则」。
| 簇 | 名称 | 覆盖 |
|---|---|---|
lab | 分析环境 | 隔离网络、快照策略、伪装痕迹、自动化沙箱搭建 |
triage | 快速定级 | 静态特征提取、熵与节区异常、导入表画像、批量筛选 |
behavior | 行为分析 | API 序列、文件注册表变更、网络行为、内存驻留 |
config | 配置提取 | 解密例程定位、字符串还原、自动化提取器编写 |
persist | 持久化技术 | 自启动位置、服务与计划任务、DLL 劫持、Bootkit |
evade-tech | 逃逸技术剖析 | 反沙箱、进程镂空、间接系统调用、AMSI/ETW 绕过原理 |
c2 | C2 通信 | 协议识别、域前置、DNS 隧道、流量特征提取 |
family | 家族与谱系 | 主流家族结构、代码复用度量、版本演化 |
attribution | 归因方法 | TTP 对齐 ATT&CK、基础设施关联、误导与假旗、置信度表达 |
detect-rule | 检测规则产出 | YARA、Sigma、Suricata 规则编写与调优 |
ransomware | 勒索软件 | 加密流程分析、密钥管理缺陷、可解密性评估 |
evade-tech 只做机制剖析与检测对策,用于写检测规则与防御; 不产出面向真实目标的规避实现。红队场景的对应内容同样限于原理与检测面(见 offsec)。
3.16 offsec 渗透与红队 /kb/security/offsec/
产物是「针对某类目标环境的攻击路径」。仅面向授权测试、靶场与 CTF 环境。
| 簇 | 名称 | 覆盖 |
|---|---|---|
methodology | 方法论与授权 | 测试流程、范围与规则、取证留痕、报告结构、合规边界 |
recon | 信息收集 | 资产测绘、指纹识别、子域与端口、OSINT、攻击面梳理 |
web | Web 安全 | 注入类、XSS、SSRF、反序列化、SSTI、文件上传与包含、认证会话缺陷、逻辑漏洞、API 与 GraphQL、客户端安全 |
netpen | 网络与服务 | 服务枚举与弱配置、中间人、中间件与数据库、协议滥用 |
ad | 域与身份 | Kerberos 攻击面、委派、ACL 滥用、票据、AD CS、云身份 |
lateral | 横向移动 | 凭据获取与传递、远程执行手段、跳板与代理链 |
privesc | 权限提升 | Linux/Windows 本地提权路径、配置错误、内核提权衔接 vuln |
cloud | 云与容器攻击面 | IAM 配置错误、元数据服务、容器逃逸、K8s 攻击路径、供应链风险面 |
mobile | 移动端测试 | 应用层配置、通信校验、本地存储、加固对抗衔接 protect |
infra | 基础设施与工具链 | C2 框架原理与部署(授权环境)、载荷生成、日志与操作安全 |
range | 靶场与复现 | 环境搭建、漏洞复现记录、CTF 与实战差异 |
web 簇内容量最大,细分由 slug 承载(如 offsec.web.ssrf-bypass),不再往下开层级: Web 安全的子类之间交叉极多(SSRF 与反序列化常组合成链), 强行分成子目录会让一半的笔记同时属于两个子目录。用 slug + keywords + 关系边更准确。
3.17 defsec 防御检测与取证 /kb/security/defsec/
产物是「告警规则 / 调查结论 / 加固方案」。
| 簇 | 名称 | 覆盖 |
|---|---|---|
architecture | 防御体系 | 纵深防御、零信任、分区隔离、资产与暴露面管理 |
logging | 日志与采集 | 系统与应用日志源、ETW/auditd、采集完整性、留存策略 |
siem | 日志分析平台 | ELK/Splunk 建模、关联规则、基线与异常、告警降噪 |
edr | 端点检测响应 | 检测原理、内核回调与用户态挂钩、绕过面与补强 |
detect-eng | 检测工程 | 检测即代码、ATT&CK 覆盖度、误报率权衡、检测有效性验证 |
netdefend | 网络侧防御 | IDS/IPS、流量分析、TLS 可见性、蜜罐与欺骗 |
forensics-mem | 内存取证 | Volatility 工作流、进程与网络重建、注入痕迹发现 |
forensics-disk | 磁盘与主机取证 | 文件系统时间线、痕迹项、日志残留、反取证识别 |
ir | 应急响应 | 响应流程、遏制与根除、取证保全、复盘与改进 |
intel | 威胁情报 | IOC 与 TTP 层级、情报生命周期、共享标准 STIX、情报落地 |
hardening | 系统加固 | 基线规范、最小权限、补丁管理、配置核查自动化 |
appsec | 安全开发 | 威胁建模、安全编码、SAST/DAST/SCA 集成、供应链安全 |
3.18 ctf CTF 竞赛 /kb/security/ctf/
CTF 是活动而不是知识域。独立后只放赛题相关内容, 知识本身仍写在各知识域,题解通过 applies 边引用它们。 这样避免了 v1 中每个域末尾都挂一个「CTF 专题」的散落状态。
| 簇 | 名称 | 覆盖 |
|---|---|---|
reverse | Reverse 题型 | 常见套路、出题模式、快速定位思路 |
pwn | Pwn 题型 | 版本对应技法、模板与工具链、常见题型库 |
web | Web 题型 | 语言特性型题目、沙箱逃逸类、非常规注入 |
crypto | Crypto 题型 | 数学题型识别、参数缺陷模式、常用求解脚本 |
misc | Misc 与取证 | 隐写、流量分析、编码识别、杂项套路 |
blockchain | 区块链题型 | 合约漏洞题、链上交互题 |
toolkit | 工具与模板 | 常用脚本库、环境镜像、解题工作流 |
writeup | 题解归档 | 按赛事归档,每篇引用所用知识原子 |
3.19 ml 机器学习与大模型 /kb/ai/ml/
对象是模型:算法、训练过程、能力与局限。
| 簇 | 名称 | 覆盖 |
|---|---|---|
foundation | 学习理论基础 | 偏差方差、泛化界、过拟合、优化与损失设计 |
classic | 经典机器学习 | 线性模型、SVM、树模型与集成、聚类降维、特征工程 |
dl-basics | 深度学习基础 | 反向传播、初始化与归一化、正则、优化器、训练技巧 |
arch | 网络架构 | CNN、RNN/LSTM、Transformer 结构细节、位置编码、注意力变体、MoE、状态空间模型 |
cv | 计算机视觉 | 检测分割、表征学习、扩散模型、视频理解 |
nlp | 自然语言处理 | 分词与表示、序列标注、机器翻译、传统 NLP 任务 |
pretrain | 大模型预训练 | 数据配比与清洗、scaling law、并行策略选择、训练稳定性、长上下文 |
posttrain | 后训练与对齐 | SFT、RLHF/DPO/GRPO、奖励建模、推理能力训练、蒸馏 |
reasoning | 推理与能力 | 思维链、测试时计算、工具使用能力、能力涌现与评测争议 |
efficiency | 模型效率 | 量化、剪枝、蒸馏、投机解码、KV Cache 结构优化、稀疏化 |
multimodal | 多模态 | 视觉语言模型、语音、统一表征、跨模态对齐 |
evaluation | 评测 | benchmark 设计、污染问题、人评与自动评、LLM-as-judge 偏差 |
ai-safety | 模型安全 | 提示注入与越狱机制、对抗样本、后门与投毒、幻觉成因、水印 |
rl | 强化学习 | MDP、值与策略方法、PPO、离线 RL、环境设计 |
efficiency 讲算法层面的效率(量化误差、投机解码正确性); 显存管理、批调度、集群吞吐归 aiinfra。判据:改的是模型还是运行它的机器。
3.20 agent Agent 工程 /kb/ai/agent/
对象是应用:把模型接进工具与环境,做成可靠系统。
| 簇 | 名称 | 覆盖 |
|---|---|---|
paradigm | 范式与架构 | ReAct、Plan-Execute、反思循环、工作流 vs 自主体、何时不用 Agent |
context | 上下文工程 | 提示结构、上下文预算、压缩与摘要、状态传递、缓存友好设计 |
tools | 工具调用 | 工具描述设计、参数校验、并行调用、错误恢复、MCP 协议 |
rag | 检索增强 | 切分与嵌入、混合检索、重排、图检索、检索质量评估 |
memory | 记忆系统 | 短期/长期记忆、记忆写入策略、知识更新与冲突消解 |
multi | 多 Agent | 角色分工、通信协议、编排与调度、共享状态、失败传播 |
sandbox | 执行环境 | 代码执行沙箱、文件系统与网络隔离、权限模型、副作用控制 |
eval | 评估与可观测 | 轨迹评估、离线回放、A/B、tracing、失败模式归类 |
security | Agent 安全 | 提示注入防护、权限最小化、越权操作防护、数据外泄面、审计 |
production | 生产化 | 成本与延迟控制、限流重试、降级、版本管理、灰度 |
framework | 框架与 SDK | 主流框架对比、Claude Agent SDK、自研取舍 |
vertical | 垂直场景 | 编码 Agent、检索问答、运维 Agent、浏览器与 GUI 操作 |
3.21 aiinfra AI 基础设施 /kb/ai/aiinfra/
对象是机器与集群:算力、显存、带宽、吞吐。
| 簇 | 名称 | 覆盖 |
|---|---|---|
hardware | 硬件与拓扑 | GPU/NPU 规格解读、NVLink/IB 拓扑、显存带宽、选型与成本 |
kernel | 算子与内核开发 | CUDA 编程模型、Tensor Core、FlashAttention 类算子、Triton、算子融合 |
dist-train | 分布式训练 | 数据/张量/流水/序列并行、ZeRO、检查点与容错、混合精度 |
collective | 集合通信 | NCCL 原语与算法、通信计算重叠、网络瓶颈定位 |
serving | 推理服务 | 连续批处理、PagedAttention、Prefill/Decode 分离、并行推理、SLA 保障 |
runtime | 编译与运行时 | 图优化、TensorRT/vLLM/SGLang 架构、算子调度、内存池 |
scheduler | 资源调度 | K8s GPU 调度、队列与抢占、多租户隔离、弹性伸缩 |
data | 数据与存储 | 训练数据管线、并行文件系统、缓存层、数据加载瓶颈 |
observability | 可观测与调优 | Profiling 工具链、MFU 计算、瓶颈定位方法、慢节点检测 |
cost | 成本工程 | 吞吐/成本模型、混部与抢占实例、量化部署的成本收益 |
edge | 端侧推理 | 移动与嵌入式部署、模型格式转换、NPU 适配 |
platform | 平台建设 | 实验管理、模型注册、CI 与回归、多集群管理 |
3.22 be 服务端工程 /kb/engineering/be/
对象是服务进程内的设计与实现。语言中立——Java 是主用栈,但 Go/Rust 服务同样归此。 语言语法与 JVM 机制归 lang.java,部署与编排归 ops。
| 簇 | 名称 | 覆盖 |
|---|---|---|
web-layer | Web 层 | HTTP 服务模型、路由与参数绑定、过滤器链、统一异常与响应、Servlet 与 Netty 模型 |
di-framework | 框架与容器 | IoC/DI 原理、Bean 生命周期、AOP、Spring Boot 自动配置、启动优化 |
persistence | 持久化 | 关系模型设计、索引与执行计划、事务与隔离级别、ORM 与 SQL 映射、连接池、分库分表 |
cache | 缓存 | 缓存模式、Redis 数据结构与场景、一致性策略、穿透击穿雪崩、本地缓存 |
messaging | 消息与异步 | Kafka/RocketMQ 模型、投递语义、顺序与积压、事务消息、事件驱动设计 |
search-store | 检索与其他存储 | Elasticsearch 建模与调优、时序库、对象存储、NoSQL 选型 |
microservice | 微服务 | 服务拆分、注册发现、配置中心、网关、熔断限流、链路追踪、Service Mesh |
api | 接口设计 | REST 规范、gRPC/Protobuf、GraphQL、版本兼容、幂等与重试语义 |
distributed | 分布式基础 | CAP 与一致性模型、共识算法应用、分布式事务、分布式锁、ID 生成、时钟问题 |
concurrency | 并发与高性能 | 线程池设计、异步编程模型、协程与虚拟线程、无锁结构应用、背压 |
security | 服务端安全 | 认证授权(OAuth2/JWT/RBAC)、越权防护、密钥管理、输入校验、安全审计 |
architecture | 架构与设计 | 分层与 DDD、设计模式落地、可测试性、重构策略、演进式架构 |
perf | 性能工程 | 压测方法、JVM 与运行时调优、慢查询定位、容量评估、故障复盘 |
3.23 web 前端工程 /kb/engineering/web/
对象是浏览器内的工程实践。JS/TS 语言本体归 lang.ts。
| 簇 | 名称 | 覆盖 |
|---|---|---|
html-css | 结构与样式 | 语义化、布局体系、响应式、CSS 架构与变量、动画 |
browser | 浏览器原理 | 渲染流程、事件循环与任务队列、存储机制、同源策略、Web API |
framework | 框架 | React/Vue 响应式与渲染机制、组件设计、状态管理、路由、SSR/SSG |
build | 构建与工程化 | 打包原理、Vite/Webpack、模块联邦、Monorepo、依赖治理 |
perf | 性能优化 | 核心指标、加载与渲染优化、代码分割、资源策略、内存泄漏排查 |
a11y | 可访问性 | 语义与 ARIA、键盘导航、对比度、屏幕阅读器验证边界 |
realtime | 实时与通信 | WebSocket、SSE、WebRTC、离线与同步策略 |
graphics | 图形与可视化 | Canvas、SVG、WebGL/WebGPU、数据可视化实现 |
wasm-web | WebAssembly 应用 | 编译产出、JS 互操作、性能边界、典型场景 |
frontend-sec | 前端安全 | CSP、XSS 防护实践、CSRF、依赖与供应链、敏感信息暴露 |
test | 测试 | 单测与组件测试、E2E、视觉回归、Mock 策略 |
blog-eng | 博客与站点工程 | Hexo/静态站点构建、主题定制、部署流水线、SEO 与索引 |
blog-eng 是本站自身的建设记录,与 ops.selfhost 的分界是: 改前端产物与构建 → blog-eng;改服务器、Nginx、证书 → ops。
3.24 sysdev 系统开发 /kb/engineering/sysdev/
对象是贴近硬件或无标准库运行的程序。语言中立,Rust 是主用语言。 语言本身的所有权规则归 lang.rust;内核的既有机制归 os;这里是「自己写」。
| 簇 | 名称 | 覆盖 |
|---|---|---|
bare-metal | 裸机与 no_std | 启动流程、链接脚本、内存布局、中断向量、交叉编译 |
os-dev | 自制操作系统 | 引导、特权级切换、系统调用实现、进程抽象、调度器实现 |
kernel-ds | 内核态数据结构 | 分配器实现、无锁结构、页表管理实现、同步原语实现 |
driver | 驱动开发 | 设备模型、MMIO/中断处理、DMA、Rust for Linux、用户态驱动 |
fs-impl | 文件系统实现 | 简单 FS 实现、日志与崩溃一致性实现、FUSE |
netstack | 网络栈实现 | 协议栈裁剪实现、用户态 TCP、smoltcp、零拷贝 |
hypervisor | 虚拟化实现 | 轻量 Hypervisor、虚拟设备实现、rust-vmm |
embedded | 嵌入式与实时 | RTOS 集成、嵌入式 HAL、实时性保证、资源受限优化 |
wasm-rt | WASM 与运行时 | WASM 运行时实现、WASI、沙箱化插件系统 |
ffi | 跨语言互操作 | C ABI 绑定、生命周期跨界、错误传递、绑定生成 |
perf-sys | 系统级性能 | 零拷贝、内存布局与缓存优化、系统调用开销、profiling |
cli-tool | 系统工具开发 | CLI 设计、进程与信号处理、日志与配置、发布分发 |
3.25 ops 工程实践与运维 /kb/engineering/ops/
对象是单机之外:部署、编排、观测、协作。内核机制归 os。
| 簇 | 名称 | 覆盖 |
|---|---|---|
linux-admin | 服务器管理 | 用户与权限、包管理、systemd 服务、磁盘与网络配置、排障命令集 |
shell | Shell 与自动化 | Bash/PowerShell 实用模式、文本处理、脚本健壮性、定时任务 |
git | 版本控制 | 分支策略、rebase 与冲突、子模块、大仓实践、提交规范、代码评审 |
gateway | 网关与反向代理 | Nginx/Caddy 配置、TLS 证书、限流与缓存、负载均衡、HTTPS 加固 |
container-ops | 容器实践 | 镜像构建与瘦身、Compose、镜像安全、注册表管理 |
k8s | 编排 | 核心对象、网络与存储、Helm、Operator、资源限额、故障排查 |
cicd | 持续集成交付 | 流水线设计、GitHub Actions、缓存与并行、发布策略、回滚 |
iac | 基础设施即代码 | Terraform/Ansible、环境一致性、状态管理、密钥注入 |
observability | 可观测性 | 指标日志链路三支柱、Prometheus/Grafana、告警设计、SLO |
db-ops | 数据库运维 | 备份恢复、主从与高可用、迁移演进、监控与容量 |
selfhost | 自建服务 | 站点部署、域名与 DNS、内网穿透、备份策略、成本控制 |
reliability | 可靠性工程 | 故障演练、容量规划、变更管理、事故复盘 |
3.26 model 数学建模 /kb/applied/model/
对象是用数学解决具体问题的完整流程。数学工具本身归 math。
| 簇 | 名称 | 覆盖 |
|---|---|---|
methodology | 建模方法论 | 问题界定、假设设定与检验、模型选择、结果解释、论文结构 |
optim-model | 优化建模 | 线性/整数/非线性规划、多目标、鲁棒优化、求解器使用 |
dynamic | 动态与微分方程 | ODE/PDE 建模、稳定性分析、数值求解、种群与传播模型 |
stat-model | 统计建模 | 回归族、时间序列、生存分析、因果推断 |
graph-model | 网络与图模型 | 复杂网络指标、传播模型、社群发现、网络鲁棒性 |
decision | 评价与决策 | AHP、TOPSIS、熵权、模糊综合评价、灰色关联、指标体系设计 |
predict | 预测方法 | 灰色预测、ARIMA、机器学习预测、组合预测与误差评估 |
simulation | 仿真 | 蒙特卡洛、离散事件、系统动力学、Agent-based 模型 |
heuristic | 启发式算法应用 | 遗传算法、粒子群、模拟退火、参数调试实务 |
data-prep | 数据处理 | 缺失异常处理、降维、归一化、可视化呈现 |
contest | 竞赛实务 | 赛题类型、分工与时间管理、写作与图表规范、复盘 |
3.27 web3 Web3 与区块链 /kb/applied/web3/
对象是链、合约与去中心化应用。P2P 网络机制归 net.p2p,密码原语归 crypto。
| 簇 | 名称 | 覆盖 |
|---|---|---|
foundation | 基础模型 | 账本模型、UTXO vs 账户、区块结构、默克尔树、去中心化含义与代价 |
consensus | 共识机制 | PoW、PoS 与变体、BFT 族、最终性、分叉与重组、经济安全 |
evm | 虚拟机与执行 | EVM 架构、Gas 模型、存储布局、opcode、账户抽象、其他 VM 对比 |
contract-dev | 合约开发 | Solidity/Move/Rust 合约、设计模式、可升级性、测试与 Foundry、部署 |
contract-sec | 合约安全 | 重入、权限缺陷、预言机操纵、经济攻击、审计流程、形式化验证应用 |
layer2 | 扩容与二层 | Rollup 原理、数据可用性、跨链桥与风险、分片 |
zk-app | 零知识应用 | zkEVM、电路开发、证明成本、隐私交易(原语见 crypto.advanced) |
defi | 金融应用 | AMM 机制、借贷与清算、稳定币机制、MEV 与排序 |
dapp | 应用开发 | 钱包交互、签名与授权、索引与查询、前端集成、账户体验 |
infra-node | 节点与基础设施 | 客户端架构、同步模式、RPC 服务、链上数据分析 |
identity | 身份与存储 | DID、可验证凭证、IPFS/Arweave、命名系统 |
governance | 治理与合规 | DAO 机制、投票攻击面、监管与合规约束 |
4. 层次面与类型面
未实现。layer 与 type 字段不被 kb-scan 读取,写入 frontmatter 无效果。本节保留为写作时的自我提示: 同一主题按「读者想要什么」可以有三种写法,选定一种再动笔。
主题面决定「放哪」,这两个面决定「怎么读」。
4.1 层次面 layer
| 值 | 回答的问题 | 同一主题(Rust 所有权)的三种写法 |
|---|---|---|
found | 这东西怎么用 | 借用检查器报什么错、怎么改 → lang.rust.borrow-rules |
theory | 为什么这样是对的 | 线性类型与仿射类型的形式语义 → logic.type-theory.linear |
eng | 怎么用它做出系统 | 无锁队列里 unsafe 的安全性论证 → sysdev.kernel-ds.lockfree-queue |
三者可以是三个不同域的原子,用 requires / proves / implements 边串起来。 v1 会把这三篇塞进 F1/K8/E3 三个域并纠结边界;v2 里它们各归其主题, 层次只是标注,读者顺着边就能从「怎么用」走到「为什么」。
判据:看这篇笔记的读者想要什么。要能跑起来 → found; 要能证明或反驳 → theory;要能落地到系统 → eng。
4.2 类型面 type
九种,决定原子的写法模板与最小完成标准:
| 值 | 内容形态 | 必须包含 |
|---|---|---|
concept | 概念定义 | 定义、边界、与近邻概念的区别 |
mechanism | 机制原理 | 流程或结构、关键不变量、失效条件 |
technique | 可操作技法 | 前置条件、步骤、判断成功的标志 |
pattern | 设计模式与惯用法 | 适用场景、代价、反例 |
pitfall | 坑与误区 | 错误现象、根因、正确做法 |
recipe | 速查配方 | 可直接复制的命令/代码 + 适用版本 |
case | 案例复盘 | 背景、过程、结论、可迁移的部分 |
reference | 参照表 | 结构化数据,允许只有表格 |
map | 领域导览 | 子主题地图 + 推荐顺序,不含实质内容 |
map 类型是目录页专用:每个域一个 map 原子作为入口, 它只列结构与顺序,实质内容全在被引用的原子里。这样避免了目录页与内容页互相抄。
5. 冗余消解对照
v1 的第 3、4 节写了九段「边界说明」,每段都在解释两个域为什么看起来重叠。 这些说明本身就是分错维度的症状。下表逐条对照 v2 如何从结构上消除它们:
| v1 的重叠 | v1 的处理 | v2 的处理 | 消除方式 |
|---|---|---|---|
F1 Java 基础 ↔ E1/00 Java 语言核心 | 写一段说明「F1 讲语法、E1 讲工程」 | 合为 lang.java 一簇 | 层次降为字段 |
F1 Rust ↔ E3 Rust 系统 | 说明「E3 只放系统方向」 | lang.rust + sysdev.*(去语言绑定) | 域按对象重划 |
K2/03 漏洞与利用 ↔ E2/vuln | 说明「K2 讲原理、E2 讲实操」 | 合为 vuln 域 | 同对象即合并 |
K2/05 恶意代码 ↔ E2/malware | 说明「K2 概览、E2 深入」 | 合为 malware 域 | 同上 |
K2/08-09 取证与防御 ↔ 散落各处 | 无明确说明 | 独立 defsec 域 | 按产物定域 |
K7 通信原理 ↔ K9 计算机网络 | 说明「K7 物理层、K9 网络层」 | 保留两域,边界改为客观判据「比特是否成帧」 | 判据客观化 |
K3/07 推理优化 ↔ E7/05 推理服务 | 说明「K3 算法、E7 系统」 | ml.efficiency ↔ aiinfra.serving,判据「改模型还是改机器」 | 判据客观化 |
F2/08-11 平台实务 ↔ E5 运维 | 说明「F2 单机、E5 集群」 | os ↔ ops,判据「单机之内还是之外」 | 判据客观化 |
K9/11 P2P ↔ F3 Web3 | 说明「K9 网络机制、F3 应用」 | net.p2p ↔ web3.* | 判据客观化 |
E2/core/00 CPU 架构 被多域隐式依赖 | 各域各写一份 | 独立 arch 域,其他域用 requires 引用 | 提取公共前置 |
E2/core/01 编译产物 ↔ protect 混淆 ↔ lang 类型实现 | 三处各写一份 | 独立 compiler 域 | 提取公共前置 |
E1/08-09 构建部署 ↔ E5 CI/CD | 说明「E1 只讲 Java 相关」 | 统一到 ops.cicd | 同对象即合并 |
| 各域末尾的「CTF 专题」 | 每域一个,共 5 处 | 独立 ctf 域,题解引用知识原子 | 活动与知识分离 |
净效果:边界说明从九段降到零段。剩下的四条「判据」都是可客观回答的二元问题 (成帧了吗 / 改的是模型还是机器 / 单机内外 / 是链还是网络),不依赖主观程度判断。
5.1 唯一归属检查表
新建原子时按序回答,第一个命中即确定归属:
1. 产物是题解或比赛套路? → ctf.<题型>
2. 讲的是某种语言本身的规则或惯用法? → lang.<语言>
3. 讲的是硬件行为 / 编译过程 / 内核既有机制? → arch / compiler / os
4. 属于安全六域之一?(用 2.5 的判定链) → re/protect/vuln/malware/offsec/defsec
5. 对象是模型 / Agent 应用 / 算力设施? → ml / agent / aiinfra
6. 讲的是数学工具本身还是用它解问题? → math / model
7. 其余按 2.1-2.8 的「对象」列匹配如果两个域都像,说明这两个域的对象没分清——改域定义,不要写边界说明。 这是 v2 唯一允许的修正方式。
6. 技能分级与掌握度
未实现。level 与 status 字段不被读取, 加权中位数聚合也没有实现。站点实际只有一个二值维度 complete, 父页进度显示 done/total——见 原子单元约定 第 4 节。
否决理由:细分等级需要全局校准才有可比性,单人维护下 level 与 status 的取值会随时间漂移,据此算出的掌握度不可靠。本节保留为 自我评估时的参考量表。
分级挂在原子上(level 字段),簇与域的掌握度由原子聚合算出,不手写。
| 级 | 名称 | 客观判据 |
|---|---|---|
| L1 | 认知 | 能说清它是什么、解决什么问题,不能动手 |
| L2 | 应用 | 照文档能完成典型任务,遇到偏离会卡住 |
| L3 | 熟练 | 能独立处理常见变体,能定位一般问题 |
| L4 | 精通 | 理解内部机制,能改造或从零实现,能处理疑难 |
| L5 | 研究 | 能发现新问题、给出新方法,有可复现的产出 |
6.1 聚合规则
簇掌握度 = 该簇下 status ∈ {solid, verified} 的原子的 level 加权中位数
权重 = level 值(高级原子权重更大,避免大量 L1 拉高观感)
域掌握度 = 各簇掌握度的加权平均,权重 = 簇内 solid+ 原子数
覆盖率 = 已有原子的簇数 / 该域簇总数域页展示两个数:掌握度(深度)与覆盖率(广度)。 只有覆盖率没有掌握度说明泛而不精,反之说明偏窄,两个数放一起才有意义。
6.2 status 与 level 的分工
level 描述内容的难度,status 描述我掌握的程度:
| status | 含义 | 是否计入掌握度 |
|---|---|---|
stub | 只有标题与占位,标记待写 | 否 |
draft | 有内容但未验证,可能有错 | 否 |
solid | 内容可靠,check 字段能通过 | 是 |
verified | 有实操验证记录或已复现 | 是,权重 ×1.2 |
两者分开的好处:可以先建一批 stub 原子把知识地图铺满(用于识别空白), 而不会虚增掌握度。空白识别是这套体系的主要用途之一。
7. 知识图谱
未实现。关系边(除 requires 仅做展示外)均未被读取, 图谱自动生成脚本不存在。本节保留域级依赖图作为写作时的参考:新建原子时可用它判断 requires 应指向哪个域。
图谱由原子的关系边自动生成,本节给出域级的粗粒度视图作为导航骨架。
7.1 域间依赖
箭头方向为「依赖」:A --> B 读作 A 需要 B 打底。 这张图的作用是排学习顺序与判断某个空白值不值得补: 被指向次数多的域(math、os、arch、compiler)优先补,收益扩散到多个下游。
7.2 安全六域的协作关系
这张图说明为什么把安全拆成六个域不会割裂内容——它们靠边连接,而不是靠目录嵌套。
attacks / mitigates 是一对反向边,用来自动生成攻防对照页: 给定一项攻击技术,列出所有指向它的缓解措施与检测规则,反之亦然。 这是 v1 做不到的——因为攻与防散落在 K2 的不同格子里,没有可计算的关联。
7.3 三类视图
同一批原子和边,渲染三种图,各自解决不同问题:
| 视图 | 内容 | 用途 |
|---|---|---|
| 依赖树 | 只取 requires 边,从某原子回溯 | 「学这个之前要会什么」 |
| 领域全景 | 单域内所有原子 + 全部边,按簇分组着色 | 「这个域我缺哪块」 |
| 攻防对照 | 只取 attacks / mitigates 边 | 「这个攻击怎么防、这个防御能被怎么绕」 |
依赖树必须是 DAG。生成时检测环,发现环说明两个原子互为前置—— 这是拆分粒度不对的信号,应合并或提取出第三个更基础的原子。
8. 查询路径
「便于快速查询」不靠目录深度,靠多入口。同一个原子有五条到达路径:
| 入口 | 形式 | 适合的问法 |
|---|---|---|
| 主题树 | /kb/<域>/<簇>/ | 「密码学的哈希部分有什么」 |
| 关键词 | 全站搜索 keywords 字段 | 「长度扩展攻击」「HashPump」 |
| 标签交叉 | /kb/tag/<tag>/ | 「所有跟 PE 格式相关的」 |
| 面筛选 | ?layer=theory&level=L4 | 「所有 L4 以上的原理类」 |
| 图谱游走 | 原子页的关系边 | 「这个的前置 / 反例 / 对抗手段」 |
8.1 关键词字段的规范
keywords 是查询命中率的主要来源,写法要求:
- 收录别名与缩写:
length extension/长度扩展/hash 长度扩展 - 收录具体标识符:函数名、CVE 号、工具名、opcode、配置项名
- 收录症状与报错:
borrow checker类原子写上典型报错文本 - 不重复 title 与 tags 已有的词,不写上位词(
crypto这种域名不必写)
判断标准:半年后忘了术语名、只记得症状,能不能搜到。 如果搜不到,补 keywords 而不是新建原子——这是防止重复建原子的主要手段。
8.2 标签与簇的分工
簇 view | 标签 tags | |
|---|---|---|
| 数量 | 每原子 1 个主位置(可加次要位置) | 不限 |
| 语义 | 「它属于什么」 | 「它涉及什么」 |
| 是否成树 | 是,构成 URL | 否,扁平 |
| 例 | crypto/hash-mac | SHA-1、MD5、windows、CVE-2024-xxxx |
标签承担跨域串联:windows 标签能同时聚起 os.windows、re.pe-win、 vuln.kernel-exp、malware.persist 的原子。这是 v1 靠目录嵌套做不到的横切视图, 也是不需要为「Windows 安全」单开一个域的原因。
8.3 次要位置的使用限制
view 数组允许第二、三项,但有硬约束:
- 首项决定 URL,改首项等于改链接,需要留重定向
- 次要位置只进索引页,不产生第二份内容,也不计入掌握度统计
- 上限 2 个次要位置。需要第三个说明这个原子讲了太多东西,应拆分
次要位置的正当用途只有一种:原子天然处在两个簇的交界 (长度扩展攻击既是 crypto.attack 也属 crypto.hash-mac)。 不要用它来「多挂几处方便找」——那是 keywords 和 tags 的职责。
9. 现有内容映射
现有 12 篇文章按 v2 的域重新归位。v1 里有四篇归属「依赖 E4/E5 确认」, v2 中 web 与 ops 已定为正式域,这些悬挂项全部落地。
| 现有文章 | v2 归属 | 说明 |
|---|---|---|
| 数学建模笔记.md | model.methodology | 内容偏方法论综述,建议拆成若干原子后归各簇 |
| 加密通信系统.md | crypto.protocol | 若侧重实现细节,改 crypto.impl |
| javascripts教程.md | lang.ts | 语言本体,不进 web |
| websocket协议.md | net.app-proto | 协议本身归 net;前端用法另写原子归 web.realtime |
| CAM前后端阅读指南.md | web.framework | 项目阅读记录,type 定为 case |
| hexo插件.md | web.blog-eng | |
| git自建远程服务器.md | ops.git | 涉及服务器配置的部分拆到 ops.selfhost |
| thoughts.md / 威海.md / 生活琐记.md / dailytips.md / hello-world.md | /life/ | 移出知识库,不进搜索索引 |
两处需要拆分的信号已在表中标出:一篇文章横跨两个域时, 拆成两个原子并用 part_of 边关联,而不是给它加次要位置。 次要位置是给「本身处在交界」的原子用的,不是给「内容太杂」的文章用的。
10. VitePress 落地约定
10.1 目录结构
站点使用 VitePress 1.6.4,srcDir: '../docs',outDir: '../dist'。 知识库根目录为 docs/kb/,kb-scan.ts 递归扫描并驱动侧栏、导航与进度统计。
目录层次与域 ID 的对应关系:
docs/kb/<大类>/<域>/<簇>/<可选子目录>/index.md
└──┘ └──┘
域短码 簇 slug → 构成原子 ID 的前两段大类目录(cipher/、security/ 等)只影响 URL 与导航分组,不参与原子 ID。
10.2 原子页 frontmatter
已实现字段(kb-scan 实际读取):
yaml
---
title: 长度扩展攻击
summary: Merkle-Damgård 的可延长性漏洞
order: 4
complete: true
atomic: true
claim: >
对 Merkle-Damgård 结构的哈希,已知 H(m) 与 len(m)
即可计算 H(m‖pad‖ext) 而无需知道 m。
keywords: [length extension, 长度扩展, hashpump, secret-prefix MAC]
requires: [crypto.hash-mac.merkle-damgard]
---详见 原子单元约定 第 2 节。
10.3 新建目录的注意事项
- 叶子目录:有内容直接写,
complete: true计入父页进度,atomic: true启用面板 - 非叶子目录:需加
tree: true才会渲染子目录表格 - 目录名:全小写连字符,同时是原子 ID 第三段,命名即定 ID
- 扩展:在任意位置新建目录即自动扩展,无需修改配置文件
10.4 check 命令
bash
npm run check # 检测裸 {{ }} 插值、未闭合标签、裸尖括号(在 site/ 下执行)
npm run build # 全站构建,同时输出 dist/kb-tree.jsoncheck 不是 build 的子集,两者应分别运行。
11. 待决策项
v1 有 8 条待决策,其中 6 条已在 v2 中通过结构改动消解,剩余 2 条加上 v2 新增的 3 条:
已消解(不再需要决策)
| v1 待决项 | 消解方式 |
|---|---|
| E4 Web 前端是否独立建域 | 独立为 web,语言部分归 lang.ts |
| E5 运维是否独立建域 | 独立为 ops,与 os 用「单机内外」划界 |
| K2 与 E2 的边界 | 拆成六个按产物划分的域,边界消失 |
| F1 切分幅度 | 按语言分簇,深浅用 layer/level 表达 |
| E6/E7 与 K3 的三方边界 | 判据改为「模型 / 应用 / 机器」三个对象 |
| F2 与 E5 的边界 | 同上,os ↔ ops |
仍需决策
macho-apple与firmware的投入优先级。两簇都建了,但如果短期不碰, 保留为空簇(覆盖率会显示为缺口)还是先不建簇?倾向保留——空缺口是有信息的。- F3 Web3 的定位。v2 把它作为独立应用域
web3。如果实际只做合约安全, 可考虑降为vuln或offsec的一个簇,但那会丢掉共识与经济机制的位置。
v2 新增待决
arch与compiler是否会长期空置。这两个域是为消除重复而提取的公共前置, 若半年内原子数不足 10 个,说明提取过早,应退回为其他域的簇。math域的边界。数学工具无穷多,是否只收「其他域实际引用到的」? 倾向是——math只作为被引用的支撑域增长,不主动铺全。offsec.web是否需要往下开一层。当前决定用 slug 承载细分(第 3.16 节末说明)。 若 Web 安全原子超过 60 个,需重新评估。
附:域清单速查
理论 math logic algo
基础 arch compiler lang
系统 os net comm
密码 crypto priv
安全 re protect vuln malware offsec defsec ctf
智能 ml agent aiinfra
工程 be web sysdev ops
应用 model web327 个域,311 个簇。原子 ID 格式 <域>.<簇>.<slug>, 三段全部为语义 slug,不含数字编号。