技术架构与开发心得

📌 最新更新(v1.5.1)

严重 知识库卡片点击无反应 → app.min.js 被截断,// 注释吃掉闭合括号
严重 首页 roadmap 完全不显示 → roadmap.min.js 头注释污染单行代码
新功能 知识库阅读器新增 🗂️ 知识库导航面板 — 阅读中可快速切换其他文章
新功能 管理面板 v2 — 全功能 Web CMS(主页/导航/知识库/留言/同步 6 Tab)
优化 三页 nav ☰ 移动端菜单补全 + 首页链接改为 / 而非 #hero
优化 端口迁移至 5000,server.js 内置管理 API
修复 minify.js 残余注释导致 app.min.js 语法错误 — 新增安全清除步骤
修复 watch.js 补全 build-guestbook + build-homepage + build-nav 全流程
修复 导航编辑从直接写 HTML 改为 content/nav.json 统一数据源
修复 AGENTS.md / RULES.md / SESSION_INSTRUCTIONS.md 全部同步到 v1.5.0 状态
修复 知识库卡片点击后打开为空 → minify.js 导致的闭包截断

🛠️ 技术栈详情

点击任意技术展开查看完整引入历史和版本演进。

语言 HTML5 / CSS3 / JavaScript (ES5) v1.0

v1.0 (2026-06-03): 全站使用原生技术构建,无 React/Vue/Webpack。

决策:知识库交互模式是"浏览→点击→阅读",不需要 SPA 的实时协作能力。多页面架构(MPA)更适合内容密集型网站。零 npm 依赖消除版本冲突和供应链攻击风险。

约束:浏览器端 JS 使用 ES5 语法(var+function),确保不依赖转译器也能在所有浏览器运行。

运行时 Node.js 24 v1.0

v1.0 (2026-06-03): 51 行原生 http 模块实现静态文件服务器。不使用 Express/Koa。

决策:需求极简(静态文件+MIME映射+路径安全),不需要路由/REST API/中间件。原生模块零依赖,部署就是一个 `node server.js`。

v1.4 (2026-06-04): 添加 Cache-Control 头部:JS/CSS max-age=86400,HTML no-cache,图片 max-age=604800。

数学渲染 KaTeX 0.16 v1.0v1.4

v1.0 (2026-06-03): 引入 KaTeX CDN。选择 KaTeX 而非 MathJax——KaTeX 渲染速度约 10× 快、无 DOM 操作次数少、对内容密集型页面更友好。初始为同步 <script> 加载。

v1.4 (2026-06-04): 改为 <script> defer。问题:之前同步加载阻塞 FCP 约 300ms。改名后首屏不再等待 276KB 的 katex.min.js 下载。

v1.5 (2026-06-04): Katex CSS 改为 media="print" onload 异步加载,不阻塞渲染。

图表 Mermaid 10 v1.0v1.4

v1.0 (2026-06-03): 引入 Mermaid CDN 渲染流程图、时序图。初始为同步 <script>

v1.4 (2026-06-04): 改为 <script> defer。仅文章阅读器需要流程图,首屏不需要。defer 后不阻塞渲染。

v1.5 (2026-06-04): index.html 补充 mermaid defer(之前仅 knowledge.html 有 deferred)。

内容管理 Obsidian v1.2

v1.2 (2026-06-04): 引入 Obsidian 作为内容管理系统。Markdown ↔ {t,v} JSON 双向转换。

决策:比 WordPress 轻量、比直接写 JSON 直观。内容创作(Obsidian)和代码(VS Code)完全分离。通过 import-from-md.js / export-to-md.js 双向转换。

v1.5 (2026-06-04): content/ 目录重组为 homepage/knowledge/tech 三层,Obsidian 打开直观对应三网页。

AI 助手 opencode (DeepSeek) v1.0

v1.0 (2026-06-03): 使用 opencode + DeepSeek 作为 AI 编程助手。负责:写知识库文章内容(L1-L5 分层)、编写和调试脚本、代码审查和优化。

v1.2 (2026-06-04): 引入多 session 协作模式,编程主控+内容创作分工。AGENTS.md + RULES.md 分离上下文和规范。

v1.5 (2026-06-04): 建立防退化规则(上下文同步+板块状态同步+单一信息源),确保 AI session 始终基于最新项目状态。

部署 Cloudflare Pages v1.0

v1.0 (2026-06-03): Git push → Cloudflare Pages 自动构建部署。Output dir = public/。同时预配 Vercel vercel.json 作为备选方案。

版本控制 Git + GitHub v1.0

v1.0 (2026-06-03): 每完成一组改动 commit。版本号通过语义化版本管理。

v1.5 (2026-06-04): sync 后自动 commit + push。git-auto-commit.js 分析 git diff 生成 vX.Y.Z | 北京时间 | 类型: 描述 格式的 commit message。

CSS 架构 CSS Variables + BEM v1.0

v1.0 (2026-06-03): 全部颜色通过 :root CSS 变量定义,支持亮/暗双主题。类名用 BEM 约定(knowledge-card--soon、kc-icon)。

v1.4 (2026-06-04): Critical CSS 内联到 <style> 消除外部 CSS 渲染阻塞。style.css 转为 async 加载。

v1.5 (2026-06-04): Dark mode 配色从 slate 蓝灰改为暖灰 (#1a1a1a)。[data-theme="dark"] 块内联到所有页面确保即时生效。

JS 压缩 自定 minify.js v1.4

v1.4 (2026-06-04): 创建 minify.js:sync 时自动压缩所有 JS 文件。先保存字符串和正则字面量→去注释→压缩空白→还原。

决策:不引入 terser/uglify(零 npm 依赖原则)。自定 60 行 minifier 足够处理 ES5 代码。

结果:6 个 JS 文件总体从 1085KB → 779KB(-28%)。

缓存 Cache-Control v1.4

v1.4 (2026-06-04): server.js 响应头:JS/CSS max-age=86400(1天),HTML no-cache,图片 max-age=604800(1周)。

缓存穿透 ?v= query string v1.4.1

v1.4.1 (2026-06-04): 所有静态资源 URL 加 ?v=1.4.1。版本号变化→浏览器视为新资源→自动重新下载。

决策:选 query string 而非文件名 hash(如 app.a3f2.js)因为文件名 hash 需要构建工具,违反零依赖原则。query string 是纯 HTML 层面的改动,bump-version.js 用正则替换即可。

技术细节:bump-version.js 批量替换所有 HTML 中的 ?v=\d+\.\d+\.\d+ 为新版本号。

文章分层 L1-L5 五层递进 v1.0

v1.0 (2026-06-03): L1 初级(纯文字无公式)→ L2 中级(协议机制)→ L3 高级(算法数学)→ L4 专家(端到端工程)→ L5 世界顶尖(形式化证明)。

决策:同一主题同时服务初学者和研究者。每层独立 Markdown 文件,{t, v} JSON 格式存储。12 种内容块类型(p/h3/h4/code/note/list/table/math/viz/mermaid)。

内容块格式 {t, v} JSON v1.0

v1.0 (2026-06-03): 文章内容块用 {t: 'type', v: 'value'} JSON 格式存储为 JS 变量。浏览器直接读取无需 fetch/parse。

决策:避免运行时 JSON.parse 开销(1.3MB 数据直接以 JS 变量形式加载)。12 种块类型覆盖段落/标题/代码/公式/表格/图表/柱状图。

构建自动化 10 个 Node.js 脚本 v1.2v1.5

内容管道(Markdown → 网页):

Obsidian 写 .md → import-from-md.js 解析 Markdown → {t,v} JSON → articles*.js
                                                         ↓
content/messages/*.md → build-guestbook.js 读标题+正文+mtime → guestbook-data.js
                                                         ↓
                                            index.html 加载 .js → 浏览器渲染

v1.2 (2026-06-04): import-from-md, sync-cards, export-to-md, watch, bump-version, write-build-time。

v1.4 (2026-06-04): 新增 minify.js(去注释+压缩空白,总体 -28%);sync-cards.js 加 </html> 截断+div 平衡防护。

v1.5 (2026-06-04): 新增 build-site-config.js、git-auto-commit.js。sync 顺序修正(write-build-time 在 minify 前)。watch.js 补全 build-guestbook + minify + git-auto-commit,实现改完 3 秒自动同步→部署全流程。

npm run sync 完整流水线(10 步):

import-from-md      → Markdown → articles*.js(文章数据)
sync-cards         → meta.json → knowledge.html(卡片 HTML)
build-guestbook    → 留言 .md → guestbook-data.js(留言板)
build-homepage     → hero.json → hero-data.js(首页 Hero)
build-nav          → nav.json → 三页 HTML 导航注入
build-site-config  → 站点配置 JSON
write-build-time   → 写入构建时间戳
minify             → 压缩所有 JS(~28% 体积缩减)
git-auto-commit    → git add -A → commit → push → Cloudflare 自动部署

npm run watch 自动监听:递归监听 content/ 目录 → 文件变化 3 秒防抖 → 自动跑上面完整流水线 → 边写边预览 → 自动推送到 GitHub → Cloudflare 自动上线。零手动操作。

整体架构:纯文件转换、零数据库、零 API。内容创作(Obsidian)和代码(VS Code)完全分离,12 种内容块类型覆盖段落/标题/代码/公式/表格/图表。

📋 版本摘要

版本类型发布时间摘要
v1.5.1严重2026-06-04 11:00卡片点击修复 + 管理面板 v2 + 知识库导航 + roadmap 修复
v1.5.0优化2026-06-04 05:09全面审查修复 + tech 页面 dark mode、统一导航
v1.4.1修复2026-06-04 04:45主页加载失败 + cache-busting
v1.4.0新功能2026-06-04 ~04:07技术页面、4篇补L5、知识库独立页、性能优化
v1.3.0新功能2026-06-04 ~01:55独立知识库页、搜索/PDF/进度/留言、9篇新文
v1.2.0修复2026-06-04 01:08修复重复level、统一标题、Obsidian工作流
v1.1.0优化2026-06-03 09:297篇补全层级、版本自动化
v1.0.0新功能2026-06-03 05:50初始版本 22 篇文章

📝 完整变更日志

v1.5.0 — 2026-06-04 05:09 北京时间

✨ 新功能
新功能 tech.html dark mode 支持 + 主题切换按钮
新功能 tech.html 进度条、回顶按钮、完整下拉导航栏
新功能 RULES.md 新增防退化规则 3 条
⚡ 优化
优化 AGENTS.md 重写为实际状态(44 篇、11 板块)
优化 变更日志技术细节可折叠(每版本一个 <details class="tech-details">
优化 技术栈详情改为可展开列表(每项一个 <details class="ts-item">
优化 Roadmap 内联脚本提取到独立 roadmap.js 文件
优化 知识库 TOC 自动覆盖所有板块分组
🐛 修复
修复 tech.html 版本摘要表列数对齐 + dark mode 缺失
修复 Roadmap 重复 probability-theory 条目删除
修复 Roadmap 点击无效 → 跳转到 knowledge.html
修复 RULES.md 底部残留碎片、双页面→三页面、板块表全部校正
修复 主题切换失效:inline dark CSS 恢复为页面底部内联脚本(非 DOMContentLoaded)
📋 技术细节

问题:AGENTS.md 严重过时(文章数 17 vs 实际 44、结构图缺 10+ 文件);主题切换代码从页面底部内联脚本移入 app.js 的 DOMContentLoaded 后闭包行为不一致导致手动切换失效。

方案:主题切换恢复为页面底部内联脚本(git 验证 v1.5 build 05:40 版本可用),app.js 不再处理主题;防退化规则用「上下文同步 + 板块状态同步 + 单一信息源」三条规则从源头防止文件过期。

技术细节:content/ 目录重组为 homepage/knowledge/tech 三层结构;4 个脚本路径更新(import-from-md.js, sync-cards.js, build-guestbook.js, build-site-config.js);RULES.md 新增 80+ 行(主题系统设计规范含架构图+18变量表+JS逻辑+调试指南);AGENTS.md 完全重写(131→215 行);sync-cards.js 加 </html> 截断 + div 平衡检查 + 主题代码一致性检查;git-auto-commit.js 自动生成版本号+北京时间+类型标签的 commit message;变更日志每版本加 <details class="tech-details"> 可折叠四要素;技术栈详情从 <table> 改为 <details class="ts-item"> 可展开列表。

结果:AGENTS.md 与实际状态一致(44 篇/11 板块);主题切换恢复手动+系统双模式;content/ 三文件夹对应三页面;sync 后自动 commit/push 到 GitHub。

v1.5.1 — 2026-06-04 10:00 北京时间

🔴 严重修复
严重 知识库卡片点击无反应 — app.min.js 被截断,minify.js 未彻底去除 // 注释导致闭合括号被注释掉
严重 首页 roadmap 完全不显示 — roadmap.min.js 头注释污染单行代码,function 从未执行
✨ 新功能
新功能 管理面板 v2 — 纯静态 Web CMS,6 Tab:概述/主页/导航/知识库/留言/同步。零数据库,全通过 server.js API 读写 content/ 文件
新功能 知识库阅读器 🗂️ 知识库导航面板 — 左侧边栏按板块列出全部 43 张卡片,点击即可切换到其他文章,无需关闭阅读器
新功能 构建流水线新增 build-homepage.js(hero.json → hero-data.js)和 build-nav.js(nav.json → 三页 HTML 导航)
新功能 server.js 内置管理 API — __api/stats, __api/articles, __api/article/save/new/delete, __api/nav/save, __api/hero/save
⚡ 优化
优化 端口迁移至 5000,server.js 从 71 行重写为支持完整 API 的架构
优化 三页 nav ☰ 移动端菜单补全,首页链接从 #hero(锚点)改为 /(首页 URL)
优化 技术页面更新构建流水线说明(7 步 → 10 步),与 package.json sync 脚本一致
🐛 修复
修复 导航编辑架构重构 — 从直接修改 public/ HTML 改为 content/nav.json 统一数据源,build-nav.js 注入三页
修复 watch.js 补全 build-guestbook + build-homepage + build-nav + minify + git-auto-commit 完整流水线
修复 AGENTS.md / RULES.md / SESSION_INSTRUCTIONS.md 全部同步到 v1.5.0 实际状态(版本号、端口、脚本数、内容路径)
修复 minify.js 新增安全步骤:恢复字符串后再次清除残留 // 注释,防止复发
修复 CSS 变量值同步 — RULES.md 中 --code-lang-bg、--hero-gradient、--shadow 的 dark 值与 style.css 一致
修复 .gitignore 添加 .DS_Store,清理仓库中的 macOS 元数据文件
📋 技术细节

问题:用户点击知识库卡片无反应(Console 报 SyntaxError: Unexpected end of input),首页 roadmap 完全空白。两者根因一致:minify.js 的 // 注释清除不彻底,残留注释在压缩后的单行 JS 中吞噬所有后续代码。

方案:1) minify.js 在恢复字符串后增加二次清除补救;2) roadmap.js 移除文件头注释避免被 minify 误处理;3) 重新生成所有 .min.js 文件。

技术细节:管理面板 v2 全部功能通过 server.js 内置 REST API 实现(GET/POST/DELETE),操作 content/ 目录文件和触发 npm run sync。知识库导航侧边栏在 app.js 的 DOMContentLoaded 中新增 readerCardsSidebar 组件,通过遍历 ARTICLES 数组按 section 分组渲染 43 张卡片,点击调用 switchToArticle() 关闭当前阅读器并打开目标文章。

结果:知识库卡片点击、首页 roadmap 恢复正常。管理面板可实现全部内容管理功能,无需离开浏览器。构建流水线从 7 步扩展到 10 步,覆盖主页 Hero 和导航注入。

📢 发布说明
v1.5.1 修复了知识库卡片点击失效和首页学习路线空白两个严重 Bug(minify.js 注释残留导致 JS 被截断)。同时上线了管理面板 v2,现在可以直接在浏览器里管理文章、导航、留言和首页内容,不用手动编辑文件。
新增 🗂️ 知识库导航面板,阅读文章时左侧可查看全部 43 张卡片,无需关闭阅读器即可快速跳转。构建流水线从 7 步扩展到 10 步(新增 hero.json 和 nav.json 构建),server.js 内置 REST API 驱动管理面板。所有内容编辑统一走 content/ 目录 → sync → GitHub → Cloudflare 自动部署。
🔜 社区平台开发中,基于 P2P 技术(PeerJS + WebRTC),支持文字群聊和 1v1 语音/视频通话,全部免费,即将上线。
43 篇文章覆盖 11 个板块:从硬件存储、ZFS、RAID 到 C++、Python、Go、Rust、算法、网络、数据库 —— 每一篇都试图回答「为什么」。

v1.4.1 — 2026-06-04 04:45 北京时间

🐛 修复
修复 主页加载失败——恢复 articles*.min.js 脚本引用
修复 hero 版本号不显示——build-info.js 未填充 heroVersion
修复 浏览器缓存过期——添加 ?v= cache-busting 到所有静态资源
📋 技术细节

问题:主页 hero 显示"⚠️ 内容加载失败",因为 articles*.min.js 脚本引用在代码重构中丢失;浏览器缓存旧版 JS/CSS 导致更新滞后。

方案:Cache-busting 用 URL query string ?v=X.Y.Z(而非 Service Worker 或 ETag),浏览器将不同版本视为独立资源自动重新下载。

技术细节:三页 HTML 的 JS/CSS URL 加 ?v=1.4.1 参数;bump-version.js 用正则批量替换所有 HTML 中的版本查询串;server.js 设 Cache-Control: max-age=86400 配合 cache-busting。

结果:用户无需手动清除缓存,版本更新后自动加载新代码。

v1.4.0 — 2026-06-04 ~04:07 北京时间(近似)

✨ 新功能
新功能 /tech.html 技术心得页面
新功能 4 篇文章补全 L5 层
新功能 知识库左侧固定 TOC、知识卡片独立为 /knowledge.html
⚡ 优化
优化 Critical CSS 内联 + JS 压缩 28% + Cache-Control 头
📋 技术细节

问题:首屏渲染等待外部 CSS 下载(FCP 慢);JS 体积 1085KB 拖慢 TTI;无缓存策略导致重复访问慢。

方案:Critical CSS 内联到 <style> 消除渲染阻塞;minify.js 去注释+压缩空白实现 28% 压缩;server.js 按文件类型设 Cache-Control。

技术细节:style.css 用 media="print" onload="this.media='all'" 异步加载;minify.js 保留字符串+正则后去注释压缩;Cache 分层: .css/.js 1天, .html no-cache, 图片 1周。

结果:FCP 从 ~800ms 降至 ~200ms;JS 体积从 1085KB 降至 779KB。

v1.3.0 — 2026-06-04 ~01:55 北京时间(近似)

✨ 新功能
新功能 知识库独立页、全局搜索框、PDF 打印按钮
新功能 阅读进度条 + 回顶按钮、L1-L5 阅读记录(localStorage)
新功能 交叉引用 [[article-id]] 语法、留言板系统
⚡ 优化
优化 6 个新板块目录 + 9 篇新增文章
📋 技术细节

问题:知识卡太多首页过长;跨文章引用只能手动复制链接;无用户反馈渠道。

方案:拆分为 /knowledge.html 独立页;[[id]] 在 Markdown import 时自动转为链接;留言板用 mtime 自动提取时间。

技术细节:import-from-md.js 正则 \[\[([a-z0-9-]+)\]\] 替换为 <a class="xref-link">;build-guestbook.js 从 content/_messages/ 读 .md 并用文件 mtime 生成北京时间。

结果:首页简洁化;跨文章引用自动可点击;留言板支持 Obsidian 编辑。

v1.2.0 — 2026-06-04 01:08 北京时间

🐛 修复
修复 多篇文章重复 level(hardware-storage 的 L1-L5 各两次)——脚本检测并合并
修复 文章标题不统一——统一为"中文 — English"格式
⚡ 优化
优化 拆分 AGENTS.md + RULES.md + Obsidian 工作流 + 8 个脚本
📋 技术细节

问题:多篇文章的 layers 数组中有重复 level(同一 level 出现两个 layer 对象),导致阅读器显示混乱;文章标题混乱(模板占位符、错误层级标签)。

方案:编写 Node.js 脚本遍历所有文章,检测重复 level 并合并 content 数组为单一 layer;用"中文 — English"格式统一 133 个层标题。

技术细节:合并策略: 同 level 的 content 拼接到第一个 layer,标题用 | 连接后选较长的去除模板标签。引入 AGENTS.md+RULES.md 分离项目上下文和规范约束。

结果:所有文章 L1-L5 唯一无重复;标题格式统一可读。

v1.1.0 — 2026-06-03 09:29 北京时间

⚡ 优化
优化 7 篇文章补全 L3-L5 缺失层级
优化 版本号自动化 bump + 构建时间改为 build-time.js 写入固定时间戳
📋 技术细节

问题:7 篇文章(Proxmox、UPS、ZFS DMU、数据生命周期、混沌工程、SPDK、下一代存储)只有 L1-L3 或 L1-L2,缺 L4 和 L5 层。

方案:补写 14 个 L4/L5 层,每层约 8-25KB 内容。引入 bump-version.js 实现 semver 版本号自动化。

技术细节:bump-version.js 同时更新 package.json 和 index.html 版本字符串;构建时间从浏览器 Date() 改为服务器端 write-build-time.js 写入北京时间。

结果:7 篇文章达到完整 L1-L5;版本号可一键升级(major/minor/patch)。

v1.0.0 — 2026-06-03 05:50 北京时间

✨ 新功能
新功能 22 篇存储与硬件知识库上线 + L1-L5 阅读器 + 主题切换
📋 技术细节

设计决策:选择原生 HTML/CSS/JS 无框架构建。不做 SPA 因为知识库交互模式是"浏览→点击→阅读"而非实时协作;零 npm 依赖消除维护负担和供应链攻击风险。

技术栈:Node.js 原生 http 模块 51 行实现文件服务器(含 MIME 映射、路径遍历防护);KaTeX CDN 数学公式渲染;Mermaid CDN 流程图;CSS 自定义属性实现亮暗主题切换。

文章系统:L1-L5 五层递进(初级→世界顶尖),每层独立 Markdown 文件,{t, v} JSON 格式存储为 JS 变量供浏览器直接读取。

结果:22 篇文章上线,覆盖 NAS、ZFS、RAID、硬件介质、文件系统 5 个主题领域。