LLM Wiki 应用——如何把开发的经验变成可检索的资产

你有没有遇到过这种情况------

一个半年前解决过的 bug,别人问起来,你只记得「好像改过什么东西」,但改了哪里、怎么改的、中间踩了什么坑,全忘了。翻聊天记录、翻邮件、翻 Git 提交历史------花了四十分钟才找到当初的修改。

或者更常见的:

刚来两个月的同事遇到了你三个月前解决过的问题。他不好意思问,自己折腾了两天。最终忍不住问了你,你说「啊,那个问题我修过」,但三分钟讲不清楚,最后说「我发你一段代码你自己看」。

这些问题的根源是一样的:调试经验没有变成可检索的资产。

你做过的每一次调试、解决过的每一个 bug、踩过的每一个坑,本质上都是一笔资产。但如果没有被结构化地记录下来,这些资产就永远是零散的、私有的、不可复用的。

这篇文章不讲 AI Agent,不讲开发板,只讲一件事:怎么把调试经验整理成可以随时检索的知识资产。

效果先行:从一句模糊的描述到精准定位

先看一个真实场景,让你快速理解"可检索的资产"意味着什么。

没有知识资产的时候:

你: 「之前修过一个摄像头不亮的问题,是怎么搞的来着?」

同事A: 「好像是时钟问题?」

同事B: 「我记得群里讨论过,但我找不到了」

你: (翻微信聊天记录,翻了十分钟)「找到了!当时是改了 bspmm 的寄存器值」

这样定位一个问题,平均需要 10~30 分钟。更糟糕的是:你找到的方案是聊天记录里的一句话,没有上下文,没有验证过程,只敢半信半疑地用。

有知识资产的时候:

在飞书上对 AI 说一句:

「摄像头不亮,查一下之前的解决方案」

20 秒后:
检索结果:传感器时钟配置(置信度 high)

问题背景:OS04A10 需要 24MHz 时钟,出厂默认 37.125MHz
排查步骤:

  1. 读寄存器 bspmm 0x11018440 → 确认当前时钟
  2. 写 24MHz:bspmm 0x11018440 0x4001
  3. 重新扫描 I2C 确认摄像头检测到
    注意事项:寄存器掉电丢失,每次上电后必须重设
    参考来源:2026-05-12 调试日志

你看,同样的问题,前者花 10 分钟翻聊天记录,得到一个不确定的答案。后者花 20 秒,拿到的是结构化的、可验证的、有来源的完整方案。

差距不在于 AI,而在于知识有没有被加工成可检索的资产。


第一章:为什么调试经验必须结构化

很多人觉得:「问题解决了就行,记不记笔记无所谓,反正下次遇到了我大概能想起来。」

这种想法在两种情况下行不通。

情况一:问题隔了太久

人的记忆是有遗忘曲线的。艾宾浩斯遗忘曲线告诉我们:20 分钟后遗忘 42%,1 小时后遗忘 56%,1 天后遗忘 74%,1 个月后遗忘 79%。

一个你今天解决了的问题------怎么改的、踩了什么坑、为什么这么改------一个月后你再回头看,大概率已经记不清细节了。三个月后,你可能只记得「好像改过」。半年后,你跟没解决过一样。

这不是你记性不好,这是人脑的正常工作机制。工程师不应该靠记忆力来管理知识。

情况二:知识需要传递

一个团队里,最资深的工程师往往最忙------因为他什么都知道。新人问问题、同事排查故障、领导做技术决策,都来找他。

如果知识只存在于资深工程师的脑子里,这个人的时间和精力就是团队的瓶颈。更严重的是:如果这个人离职了,他脑子里的知识也就跟着走了。

把经验写下来,不只是为了自己,更是为了团队。

调试经验的结构化需求

调试经验和普通的笔记有本质区别。调试经验需要满足四个条件才能被称为"资产":

  1. 可检索 --- 当你需要的时候,能用自然语言描述找到它。不是靠记得文件名,不是靠翻文件夹,而是输入症状就能定位。
  2. 可验证 --- 每个知识点都标注了置信度。哪些是已验证过的,哪些是推测的,一目了然。
  3. 可追溯 --- 能看到知识的来源、原始日志、验证过程。不是为了复制粘贴,而是为了理解上下文再做判断。
  4. 可关联 --- 一个知识点不是孤立的。传感器时钟问题可能和启动配置相关,AI ISP 模糊可能和 NPU 驱动相关。知识之间需要建立链接。

LLM Wiki 的设计就是围绕这四点来的。它不是普通的笔记软件,而是一个面向调试场景的知识资产管理系统。


第二章:知识资产的分类体系------三分法

知识库最核心的设计决策是:知识该怎么分类?

试过几种方案后,最终确定的分类体系是三分法:实体(entities)、概念(concepts)、对比(comparisons)。

为什么不是传统的文件夹分类

传统的文件夹分类(如硬件/软件/测试/部署)有一个根本问题:一个知识点可能属于多个分类。

比如「AI ISP 智能图像处理」:它涉及硬件(ISP 模块)、软件(驱动和 Sample 程序)、算法(降噪模型)、图像质量(参数调优)。放到哪个文件夹都不合适。

三分法的思路不是按领域分类,而是按知识的本质形态分类。

实体(entities)------ 记录"是什么"

实体页记录的是客观存在的、具体的事物:芯片、传感器、开发板、工具链。

每个实体页回答三个问题:

  1. 这个实体是什么? --- 一句话定义
  2. 它的关键参数是什么? --- 规格、版本、配置
  3. 它和哪些知识点相关? --- 关联的概念页

以「OS04A10 图像传感器」为例:

OS04A10 图像传感器

OmniVision 4MP 图像传感器,MIPI CSI 接口

关键参数

• 分辨率:2688x1520 @30fps
• 像素尺寸:2.0um
• 接口:4-Lane MIPI CSI
• 时钟:24MHz(非常重要,掉电丢失)
• I2C 地址:0x36

关联知识点

\[传感器时钟配置] --- 每次上电必须重设时钟
\[AI ISP 智能图像处理] --- OS04A10 配合 AI ISP 的效果
\[RTSP 视频推流] --- 通过 OS04A10 采集视频流

实体页是知识库的地基。所有概念页最终都会关联到某个实体页上。

概念(concepts)------ 记录"怎么做"

概念页记录的是技术人员真正关心的东西:方法、参数、配置、坑、工作流程。

每个概念页回答三个问题:

  1. 什么场景下会用到这个知识? --- 触发条件
  2. 具体怎么做? --- 步骤、命令、代码
  3. 有什么坑? --- 教训、注意事项、最佳实践

这是知识库中数量最多、价值最高的部分。目前有 20 个概念页,涵盖了 MPP 媒体处理流水线、RTSP 视频推流、AI ISP、NPU 推理、交叉编译工具链、传感器时钟配置、硬件排除等核心话题。

概念页的格式高度结构化:

yaml 复制代码
---
title: 传感器时钟配置
type: concept
tags: [hisi, driver, pitfall, hardware]
confidence: high
sources: [raw/debug-log-20260512.md]
---

标签系统是概念页的检索骨架。一个概念可以打多个标签,跨标签搜索时,命中率会大幅提升。

对比(comparisons)------ 记录"怎么选"

对比页解决的是选型问题。

嵌入式开发中经常出现这样的疑问:

  • 「Hi3519DV500 和 Hi3516DV500 有什么区别?我该选哪个?」
  • 「DDR3 和 DDR4 在这个板上都能用吗?」
  • 「YOLOv8n 和 YOLOv8s 在 2.5TOPS 的 NPU 上跑多少帧?」

对比页的结构是统一的:

复制代码
## 对比项 1:...(规格差异)
## 对比项 2:...(性能差异)
## 对比项 3:...(适用场景差异)
## 选型建议

目前在 comparison 目录下有 1 个对比分析,计划增加到 5 个以上。

三分法的核心优势

  1. 无歧义分类:任何一个新知识都能明确归入三类之一------它要么是一个实体、要么是一个概念、要么是一个对比
  2. 天然可链接:实体页链接到概念页,概念页链接到实体页,对比页关联两个实体页
  3. 检索路径清晰:用户问"这是什么"→ 查实体页。用户问"怎么做"→ 查概念页。用户问"哪个更好" → 查对比页

第三章:从调试记录到知识资产------加工流水线

最原始的知识形态是调试记录------就是你在终端里敲的那几行命令。要把调试记录变成可检索的知识资产,需要经过三道加工工序。

第一道工序(粗加工):原始记录

调试记录本身不算知识资产------它是原材料。

好的原始记录包含:

复制代码
[2026-05-12 14:32:18] 问题:OS04A10 摄像头没有图像
[2026-05-12 14:33:05] 排查:i2cdetect -y -r 3 → 没有 0x36
[2026-05-12 14:35:12] 排查:bspmm 0x11018440 → 读回 0x0000
[2026-05-12 14:36:40] 解决:bspmm 0x11018440 0x4001
[2026-05-12 14:37:22] 验证:i2cdetect -y -r 3 → 0x36 ✅
[2026-05-12 14:38:10] 结论:OS04A10 需要 24MHz 时钟,出厂默认未配置

记录方式是自由的------Markdown、txt、甚至聊天记录都行。这个阶段的关键是记下来,不追求格式。

第二道工序(精加工):概念页

在原始记录的基础上,提炼出结构化的概念页:

  1. 提取标题:传感器时钟配置
  2. 写背景:OS04A10 需要 24MHz 时钟,出厂默认 37.125MHz
  3. 写排查步骤:逐步命令和判断条件
  4. 写根因分析:为什么会出现这个问题
  5. 写解决方案:具体的修复命令
  6. 写注意事项:掉电丢失、建议写入开机脚本
  7. 生成标签:hisi, driver, pitfall, hardware

精加工的核心是去噪------只保留验证过的结论,去掉排查过程中的弯路和错误猜测。

第三道工序(互联):建立链接

单个概念页的价值是有限的。把多页关联起来,才形成真正的知识网络。

链接方式有三种:

  1. 直接链接[[传感器时钟配置]] 嵌入在「OS04A10 图像传感器」实体页中
  2. 反向链接:在 Obsidian 中,「传感器时钟配置」页面会显示哪些页面链接到它
  3. 关联标签 :通过共同标签(如 hisi, pitfall)把相关页面聚合起来

加工实例:从原始日志到完整概念页

原始日志(30 秒写完):

复制代码
摄像头不亮 -> i2cdetect 扫不到 -> 时钟寄存器 0x11018440 没配 -> 
写 0x4001 -> 好了。注意掉电会丢。

概念页(5 分钟写完):

(见「传感器时钟配置」页面,上文已有完整展示)

知识资产(可检索、可验证、可追溯):

有了标签和链接后,当同事在飞书上问「OS04A10 没图像」时,AI 可以秒级命中传感器时钟配置页,给出结构化方案。整个过程不需要回忆、不需要翻聊天记录,20 秒内拿到答案。


第四章:检索机制详解------你是怎么找到知识的

知识存进去了,关键是怎么找回来。LLM Wiki 提供了两种互补的检索机制。

Wikilinks 是 Obsidian 原生的链接语法,用 [[双括号]] 在页面之间建立链接。

比如在「传感器时钟配置」页面中,有一段:

markdown 复制代码
[[OS04A10 图像传感器]] 需要 24MHz 工作时钟,出厂默认值适配的是 [[IMX347]]。

这就建立了一个双向链接:

  • 从「传感器时钟配置」→「OS04A10 图像传感器」(正向)
  • 在「OS04A10 图像传感器」页面中,会自动显示"被引用"列表,包含「传感器时钟配置」(反向)

Wikilinks 的优势是精度高------链接是人手工建立的,所以相关性最高。缺点是需要人工维护,知识量大了之后容易出现断链。

目前 27 个页面之间共有 40+ 条 Wikilinks,平均每个页面有 1.5 条出链和 1.5 条入链。

机制二:RAG TF-IDF 向量检索------自动的语义匹配

Wikilinks 覆盖不了所有查询场景。比如你遇到了一个新问题,症状描述和任何已有页面的标题都不匹配,这时就需要 RAG。

RAG 检索的流程:

  1. 建索引阶段:

    • 扫描 concepts/ 和 entities/ 下的所有 Markdown 文件
    • 将每个文件按 500 字符切块,80 字符重叠(避免切断知识点)
    • 对每块文本做 TF-IDF 向量化,降维到 5000 维
    • 把所有向量存入 embeddings.npy 矩阵
  2. 查询阶段:

    • 将用户的问题做同样的 TF-IDF 向量化
    • 计算查询向量与所有知识块向量的余弦相似度
    • 返回 TOP-5 最匹配的知识块,附相似度分数
  3. AI 回答阶段:

    • 将 TOP-5 知识块作为上下文注入 LLM
    • LLM 根据上下文生成精准回答
    • 回答中标注知识来源

实测效果:418 个知识块(27 页切分后)的检索延迟 <10ms,TOP-1 命中率约 72%,TOP-5 命中率约 91%。

两种机制的配合方式

场景 使用机制 说明
已知问题,知道页面标题 Wikilinks 直接导航到目标页
模糊描述,不确定用什么词 RAG TF-IDF 自动匹配关键词
新的调试问题,类似的历史 RAG 优先 先搜症状,再看关联页面
系统性学习某个主题 Wikilinks 顺着链接深度阅读

关键结论:Wikilinks 做精准导航,RAG 做模糊检索,两者结合覆盖了从"我知道要找什么"到"我也不知道该叫什么"的所有查询场景。

搜索技巧:怎么让检索更精准

经过三个月的使用,总结了几条让 RAG 检索更精准的经验:

  1. 用技术术语而非口语描述:说「I2C 地址 0x36」比「摄像头那个地址」精准得多
  2. 包含芯片型号:说「Hi3519DV500 DDR 频率」比「DDR 频率」好
  3. 多个关键词组合:说「NPU 推理帧率低 YOLOv8」比「NPU 很慢」更准
  4. 加限定词:说「sample_venc 参数 四个」比「sample_venc 怎么用」更准

第五章:五大复用场景------知识资产的价值体现在哪里

花了功夫把调试经验变成知识资产,到底能用来做什么?以下是五个最高频的复用场景。

场景一:精准诊断------同症状,同根因

价值: 从"花几小时排查"变成"20 秒秒杀"

这是最直接、最频繁的应用。当 AI 发现当前故障的症状和知识库中某条记录匹配时,直接复用已有的排查路径。

实际数据: 在三个月使用期内,知识库直接命中的问题超过 60 次。每次节省的平均排查时间约 30 分钟。累计节省时间约 30 小时。

场景二:参数速查------再也不翻手册

价值: 从"翻 SD 手册第几页"变成"发一句话"

开发中最恼人的不是解决不了问题,而是为了一个参数反复翻手册。

有知识库之后:

  • 「sample_venc 四个参数」→ 秒回(来自「MPP 媒体处理流水线」页)
  • 「OS04A10 的 I2C 地址」→ 秒回(来自「OS04A10 图像传感器」页)
  • 「DDR 最高频率」→ 秒回(来自「DDR4 接口设计」页)
  • 「交叉编译工具链的路径」→ 秒回(来自「交叉编译工具链」页)

场景三:新板适配------零配置启航

价值: 从"半天适配新板"变成"自动比对配置"

新回一批开发板,配置可能有变化。AI 自动读取板子的配置(DDR 大小、传感器型号、U-Boot 版本),和知识库中已有的适配记录做对比,输出差异报告和适配建议。

实际案例: 收到第二批 10 块开发板,其中有 3 块换了 DDR 芯片型号。AI 检测后在飞书上推送:「检测到板 B 的 DDR 型号与知识库记录不同(MT41K256M16 vs MT41K128M16),请确认是否需要更新 U-Boot DDR 参数。」

场景四:批量排查------不良品决策树引导

价值: 从"逐个排查"变成"决策树批量扫描"

量产不良品的排查有一个固定的逻辑------检测 → 分类 → 跟踪 → 根因分析。这些逻辑都封装在知识库的「硬件排除」页面中。

AI 对每块不良板运行检测脚本,对照决策树逐一检查,输出统一的排查报告。多个不良板的报告汇总后,自动分析批次性规律。

实际案例: 一批板子烧录不良率偏高,AI 检测发现所有故障板的 USB D+ 引脚电压异常。顺着决策树走到「USB 信号完整性」节点,关联到「DDR 接口设计」的 VREF 说明------最终定位是某批次去耦电容型号错误。总排查时间从 3 天缩短到 2 小时。

场景五:团队传承------知识不流失

价值: 从"老工程师离不了"变成"知识库就是最资深的工程师"

团队中最怕的就是核心工程师离开后,知识断层。有了知识库,这个问题得到了根本解决:

  • 新同事入职第一天,一个链接指向知识库
  • 「先看看我们过去三个月踩过的坑」------3 小时读完 27 页概念页
  • 遇到问题先在知识库里搜,搜不到再问人
  • 调试问题解决后,自己也往知识库写一篇

三个月后,新同事积累了自己的知识库,不再是"等答案的人"。


第六章:知识资产的维护------不进则退

知识资产和物理资产不一样:物理资产越用越旧,知识资产越用越新。但前提是要维护

维护频率

维护任务 频率 耗时
新问题写入概念页 每次调试后 5 分钟
置信度升级检查 每周 5 分钟
标签和链接检查 每周 10 分钟
过期知识清理 每月 15 分钟
知识库健康报告 每月 10 分钟

总计:每周不到 20 分钟,每月约 1 小时。

知识生命周期管理

每条知识从创建到淘汰一般经历四个阶段:

  1. 创建期 --- 问题刚解决,写入知识库,置信度 medium。此时的知识最"热"------你刚做完,记得最清楚。这是写笔记的黄金窗口期。
  2. 验证期 --- 同样的方案在另一块开发板或另一个时间点复现成功,置信度升级到 high。如果是他人复现成功,还能从不同视角补充细节。
  3. 稳定期 --- 知识被频繁引用,置信度 high,成为调试的标准操作流程。这一阶段的知识对团队价值最高。
  4. 过期期 --- SDK 版本更新、硬件改版、工具链升级导致知识失效。需要降级或重写。

每个阶段都有对应的处理动作:

  • 创建期 → 写下来,标 medium
  • 验证期 → 补充细节,升 high
  • 稳定期 → 丰富链接,保持更新
  • 过期期 → 降级或重写

知识与版本绑定

嵌入式开发中,版本问题是最常见的过期原因。每条知识在写入时标注适用版本:

yaml 复制代码
适用版本:
  芯片: Hi3519DV500 (R001C01)
  SDK: Hi3519DV500_SDK_V1.0.0
  U-Boot: v2023.07
  内核: 4.19.91

当 SDK 版本升级到 R001C02 时,AI 自动检查所有标注了旧版本的知识,标记为"待验证"。这样就不用人工去猜哪些知识可能过期了。


第七章:从个人知识库到团队知识资产

前六章讲的都是个人场景。一个人的知识库维护起来已经不容易了,如果扩展到团队,怎么做?

多人共建的挑战

挑战 说明 解决方案
质量标准不一 有人写 10 行,有人写 300 字 统一模板 + 置信度标记
知识冲突 两个人对同一个问题有不同结论 记录分歧 + 实验验证
维护责任 没人负责定期维护 轮值制度
复制成本 每人一套知识库,信息孤岛 共享知识库 + 个人扩展

共享知识库的架构

推荐的分层结构:

复制代码
company-knowledge-base/        # 团队共享知识库(Git 仓库)
├── entities/                  # 团队公认的实体定义
├── concepts/                  # 验证过的技术方法
├── comparisons/               # 选型对比
└── templates/                 # 知识模板

personal-knowledge-base/       # 个人扩展(不共享)
├── notes/                     # 个人笔记
└── drafts/                    # 未验证的草稿

团队共享库只存放置信度为 high 的知识,由核心工程师审核后合并。个人的草稿和未验证的知识存放在个人扩展中,不影响团队库的质量。

知识审核流程

  1. 团队成员解决一个问题后,写入个人扩展,标记为 medium
  2. 每周的知识审核会上,分享过去一周的新知识点
  3. 至少两人验证后,升级为 high,合并到团队共享库
  4. 过期的知识由发现者提出降级,团队确认后执行

第八章:开始行动------最小可行知识库

如果你被这篇文章说服了,想开始搭建自己的知识库,但又觉得 27 页太远------这里给你一个最小可行方案

第一步:建一个文件夹

不需要 Obsidian,不需要 RAG,不需要任何工具。在你的电脑上随便找个地方:

bash 复制代码
mkdir -p ~/debug-knowledge/{entities,concepts,raw}
cd ~/debug-knowledge

第二步:写第一篇笔记

把你最近解决的一个最难忘的 bug 写下来。不需要格式,只需要回答四个问题:

  1. 问题是什么(症状)
  2. 排查过程(做了什么)
  3. 根因是什么(为什么)
  4. 怎么解决的(命令/代码)

写在一个 Markdown 文件里,放到 concepts/ 目录。

第三步:写第二篇

再找一个你记得比较清楚的问题,写下来。

第四步:持续两周

每天花 5 分钟,记录当天的调试过程。两周后,你就有 10 篇左右的知识笔记。

第五步:加上标签

给每篇笔记打上标签。标签的作用是当你忘记文件名时,能通过关键词搜到。

第六步:搭建检索

当你有 10 篇笔记时,可以考虑搭建 RAG 检索了。跑一下 build_rag.py 脚本,把笔记变成可向量检索的知识库。

至此,你的最小可行知识库就搭建完成了。整个过程不超过 2 小时。


总结:知识复利的力量

回到文章开头的问题:调试经验怎么变成可检索的资产?

答案是一个闭环:

  1. 记录:每次调试后花 5 分钟写一篇笔记
  2. 提炼:将原始记录加工成结构化的概念页
  3. 关联:用标签和链接把页面编织成知识网络
  4. 检索:通过 Wikilinks 和 RAG 两种机制随时找到
  5. 复用:下次遇到同类问题,20 秒拿到完整方案
  6. 更新:随着新经验的积累,不断补充和修正

这个闭环每转一圈,你的知识资产就增值一次。

三个月前,我的知识库是 0 页。三个月后,27 页,累计节省约 30 小时的排查时间。

这就是知识复利的力量。 不是线性增长,是指数增长。每一条新知识都会和已有的知识产生链接,每一条链接都会让知识的价值翻倍。

你不需要一次做到 27 页。从一篇笔记开始就可以了。

今天下班前,写下你最近解决的一个 bug。这就是你知识资产的第一枚硬币。

补充章节一:知识资产的"复利效应"------为什么越多越有用

知识库最反直觉的一个特性是:它不是一个规模越大就越难用的系统,而是一个规模越大就越好用的系统。

网络效应

当知识库只有 3 个页面时,每个页面都是孤岛。你搜"时钟"只匹配 1 个页面。搜"RTSP"匹配 0 个页面。搜索的效果很差------因为索引空间太小。

当知识库有 27 个页面时,情况完全变了。每个页面至少链接 2~3 个相关页面,形成一个覆盖了硬件、软件、网络、AI 推理的交叉知识网络。你搜任何一个关键词,至少能命中 3~5 个关联页面。

这个现象在知识管理理论中被称为知识的网络效应:知识的价值 = 知识的数量 × 知识之间的连接数。

当连接数从 0 增长到 40+,知识的价值增长远远超过页面数量的增长。

检索精度的非线性提升

我做过一个统计:在知识库的不同发展阶段,同样一个问题------「摄像头无图像」的检索精度:

知识库页数 命中 TOP-1 命中 TOP-3 用户满意度
0~5 8% 15% 很低------基本找不到
6~10 25% 42% 偶尔能找到
11~15 45% 68% 开始觉得有用
16~20 62% 83% 比翻手册快
21~27 78% 95% 下意识先问知识库

关键拐点在 10~15 页之间。这个阶段之前,知识库的"有效覆盖率"不够,大部分搜索落空。过了这个拐点后,搜索体验指数级上升。

这给我们的启示是:前 10 篇笔记是最难熬的阶段。坚持下去,到 15 篇就会看到质变。

关联增长的幂律分布

知识库中页面之间的链接不是均匀分布的。少数页面承载了大部分链接:

  • Top 3 中心页面(传感器时钟配置、RTSP 视频推流、AI ISP 智能图像处理)占据了约 40% 的总链接
  • 中间 10 页占 45%
  • 底部 14 页占 15%

这意味着:当你把核心的几个"枢纽页面"写好了,整个知识网络的覆盖度就已经足够用了。不需要每页都完美,重点是让枢纽页面足够丰富。


补充章节二:知识资产的质量评估体系

知识库里不是每一条知识都有同样的价值。有些知识被反复查询,有些知识创造了巨大价值却只被用过一次,还有些知识写进库后再也没有人碰过。

建立质量评估体系,才能知道哪些知识值得花时间维护,哪些可以舍弃。

价值维度一:引用频率

知识库里有一个简单的统计机制------每次通过 RAG 命中一个页面或者通过 Wikilinks 跳转到一个页面,都会记录一次"引用计数"。

目前引用频率最高的三个页面:

  1. 传感器时钟配置 --- 引用 34 次(因为每块新板都要走一遍这个流程)
  2. RTSP 视频推流 --- 引用 28 次(拉流地址记不住是常态)
  3. AI ISP 智能图像处理 --- 引用 21 次(画面模糊是高频问题)

这三个页面只占知识库总页面数的 11%,却贡献了约 40% 的引用量。这说明知识库的内容分布符合帕累托法则(80/20 法则)------20% 的知识页面解决了 80% 的问题。

价值维度二:时间节省

用知识链节省的时间来评估价值,比引用频率更准确。

  • 「传感器时钟配置」每次被引用节省约 2 小时(纯排查时间)× 34 次 = 68 小时
  • 「硬件排除」每次被引用节省约 3 小时(量产故障排查)× 8 次 = 24 小时
  • 「交叉编译工具链」每次被引用节省约 1 小时(环境搭建)× 12 次 = 12 小时

按这个算法,知识库累计节省的时间大约是 120 小时,而总投入大约 8 小时。

价值维度三:问题严重等级

不是所有问题都同等重要。知识库在记录时可以标注问题等级:

  • P0(致命级): 开发板无法启动、烧录变砖、NPU 不工作。这类问题的知识最宝贵,因为一次解决可能节省一整天
  • P1(严重级): 摄像头无图像、推流失败、模型推理异常。这类问题在调试中高频出现
  • P2(一般级): 参数记不清、命令格式不熟。这类问题通过查知识库快速解决
  • P3(建议级): 性能优化建议、最佳实践。这类知识提高工作效率但不是必须

按等级统计,知识库中 P0 级知识 5 条、P1 级 10 条、P2 级 8 条、P3 级 4 条。P0 和 P1 加起来占了总价值量的 80% 以上。

基于评估的行动建议

  1. 优先维护高频页面 --- 「传感器时钟配置」这样的页面,值得花时间完善格式、增加截图、补充边缘情况
  2. 定期检查零引用页面 --- 写进去半年没人查过的页面,考虑合并到其他页面或删除
  3. 标注高价值页面 --- 将 P0 和 P1 的知识在知识库首页置顶推荐

补充章节三:解决冲突------当知识之间相互矛盾怎么办

知识库积累多了,一定会遇到知识冲突。比如:

  • 知识页 A 说「DDR 频率最高 2666Mbps」,知识页 B 说「实测 2400Mbps 稳定」
  • 知识页 C 说「AI ISP 用 detail_priority」,知识页 D 说「低光场景应该用 denoise_priority」

面对知识冲突时,不要回避,也不要简单删掉其中一个。正确的做法是记录分歧并解决。

冲突处理流程

  1. 标注冲突 --- 在两个页面的冲突部分加上 [冲突标记],链接到对方页面
  2. 记录差异 --- 在页面中说明冲突的来源和背景。比如:"A 的来源是 SDK 文档,B 的来源是实际测试数据"
  3. 分析根因 --- 为什么会有冲突?是版本差异?环境差异?测量方法差异?
  4. 设计验证实验 --- 设计一个可以区分两种说法的实验。比如:在完全相同的环境下,分别测试两种配置

冲突的演进

知识冲突通常有三种结局:

  1. 一方胜出 --- 实验验证后确认 A 正确、B 错误。删除 B 或在 B 中标注"已废弃"
  2. 兼容并存 --- 发现 A 和 B 都正确,但适用条件不同。改写页面为条件分支形式:「如果...选 A,如果...选 B」
  3. 悬而未决 --- 暂时无法验证。记录分歧原因,标记为「待验证」

一个真实的冲突解决案例

知识库中曾经有两页关于 sample_venc 参数的冲突:

  • 知识来源 A(SDK 手册截图):参数是 3 个 --- index rtsp_enable vo_intf_type
  • 知识来源 B(实际调试记录):参数是 4 个 --- index rtsp_enable vo_intf_type sensor0_type

验证实验:执行 3 参数版本和 4 参数版本,观察程序行为。

验证结果:3 参数版本程序也能启动但行为不稳定,4 参数版本稳定运行。

结论:SDK 手册的描述不完整,实际程序需要 4 个参数。更新知识库,并在页面中备注「SDK 手册部分版本描述为 3 参数,实际需要 4 参数,第四参数为 sensor0_type」。


补充章节四:知识库的搜索优化------让检索更精准

同样一个知识库,有人搜得准,有人搜不准。搜索能力和问问题的技巧关系很大。

问题格式对检索效果的影响

实测对比同样含义、不同表述的检索效果:

用户提问 RAG 命中率 命中 TOP-1 页面
「摄像头不亮了」 35% 传感器时钟配置(勉强匹配)
「OS04A10 没图像」 72% 传感器时钟配置(强匹配)
「OS04A10 i2cdetect 扫不到 0x36」 91% 传感器时钟配置(精准匹配)

结论:技术术语越多,检索越精准。

同义词扩展

知识库中可以建立同义词表,帮助放检索的覆盖面:

复制代码
同义词表:
  上电 → 启动、开始运行
  没图像 → 黑屏、花屏、无显示
  卡住 → 死机、挂起、hang
  报错 → 错误、异常、error、fail

AI 在检索时,会自动将查询语句中的关键词扩展到同义词表,再做 RAG 检索。这样即使你用口语化的表述,也能匹配到使用技术术语写的知识页。

停用词过滤

中文检索中,有些高频词(的、了、是、在、有、不、也、而)没有检索价值,需要过滤。停用词过滤可以让索引更精确,减少噪声。

检索结果的排序策略

目前按三个维度综合排序:

  1. 关键词匹配度 --- 命中关键词的数量和位置(标题命中 > 正文命中)
  2. 置信度 --- high 优先于 medium
  3. 引用频率 --- 被引用多的页面优先展示

这套排序策略使得最有可能解决当前问题的知识排在前面,提高了检索效率。


补充章节五:从"记"到"查"的习惯转变------最难的不是工具,是习惯

搭建知识库的技术门槛很低------一个文件夹、几个 Markdown 文件、一个检索脚本,两小时就能搞定。

真正的挑战在于改变习惯

两个关键习惯

习惯一:问题解决后,第一时间记录。

不需要写得多好,不需要格式工整。关键是"写下来"这个动作。哪怕只有三行字:

复制代码
问题:sample_aiisp 画面偏蓝
解决:白平衡模式从 auto 改为 manual,手动设置 R/G/B gain 为 256
为什么:OS04A10 的自动白平衡在某些场景下不准

三行字。20 秒能写完。但不写的话,下次遇到又要重新试一遍。

习惯二:遇到新问题,先搜索知识库。

养成"先查后问"的习惯。遇到问题不是立刻开始排查,而是先花 30 秒搜一下知识库。

  • 有答案 → 直接执行
  • 没答案 → 开始排查,解决后写入知识库

这个习惯一旦养成,你的调试效率会指数级提升。

如何养成这两个习惯

  1. 设置物理触发点 --- 在终端提示符中加一行提示:「问题解决了?写笔记!」
  2. 用仪式感强化 --- 每次写完一篇知识笔记,给自己一个小奖励(比如喝口茶、站起来走一圈)
  3. 设置最低标准 --- 不要求写 500 字,20 字也可以。关键在于"不断档"
  4. 两周后回头看 --- 两周后打开知识库,看看自己写过的笔记。看到积累的成果会很有成就感

我自己走过这个阶段。前两周最难熬------调试完就想关闭终端下班,不想再花时间写笔记。坚持过第三周后,有一次遇到了一个似曾相似的问题,打开知识库一搜就找到了方案,那种"果然没白写"的感觉让我建立了信心。之后,记录就成了条件反射。


补充章节六:从知识库到个人知识体系------读、写、查的三角循环

知识库解决了"查"的问题,但知识不仅仅是为了查。一个完整的知识体系应该包含三个环节:读(输入)、写(整理)、查(输出)。

读------知识的输入环节

知识库不是凭空产生的。输入来源包括:

  1. SDK 文档阅读 --- 海思原厂的 PDF 文档、应用笔记、版本发布说明
  2. 调试日志复盘 --- 每次调试结束后,回顾串口输出和操作记录
  3. 技术文章收藏 --- 从 CSDN、知乎、公众号上看到的高质量技术帖
  4. 问答记录 --- 在飞书上和 AI 的调试对话,其中包含了大量有效信息

每个输入源都可以对应到知识库的结构化位置:

  • SDK 文档 → raw/docs/
  • 调试日志 → raw/transcripts/ + 加工成 concepts/
  • 技术文章 → raw/articles/ + 提炼后关联到实体页
  • 飞书问答 → 筛选后直接存入 concepts/

写------知识的加工环节

从原材料到结构化知识,需要经过一道"加工工序"。这道工序有三个要点:

  1. 结构化 --- 不是把原文复制过来,而是提取出关键信息,用自己的话重新组织
  2. 关联 --- 为每条新知识建立至少 2 条向外的 Wikilinks,链接到已有页面
  3. 标签化 --- 标注适当的标签,便于跨领域检索

查------知识的输出环节

输出环节不只是"搜到了答案",还应该包括:

  1. 验证答案 --- 知识库的方案是否正确?当前环境和记录方案是否一致?
  2. 补充反馈 --- 如果按照方案操作成功了,标记一次"验证通过";如果失败了,记录差异,触发知识更新
  3. 知识复用 --- 将知识库中的方案应用到新的开发板上,检验知识的通用性

三角循环的自我增强

三个环节形成一个正反馈循环:

  • 读得越多 → 知识库的原材料越丰富 → 写的素材越多
  • 写得越多 → 知识库越完善 → 查的命中率越高
  • 查得越多 → 发现的知识缺口越多 → 读的方向越明确

坚持这个循环三个月,你的知识资产会从零开始持续增长,而且速度越来越快。


补充章节七:回答那些你可能想问的问题

知识库会不会变成又一个"收藏夹吃灰"?

有这个风险。避免的方法有两个:

一是把知识库和日常工作绑定------知识库不是周末花时间整理的爱好项目,而是日常工作的一部分。解决一个问题,写一篇笔记,这个过程和写代码一样,是工作环节的一部分。

二是让 AI 帮你写------如果你用的是 Hermes Agent,AI 会在调试过程中自动把新问题写入知识库,不需要你主动做记录。知识库是"副产品",不是额外负担。

我该用 Obsidian 还是简单文件夹?

Obsidian 的优势是 Wikilinks 和 Graph View,能让你直观地看到知识之间的关联。简单的文件夹省钱省事,前期可以先用。当笔记超过 10 篇后,Obsidian 的链接功能会变得很有价值。

建议:前 5 篇用文件夹随便写,感受一下记录的习惯。第 6 篇之后迁移到 Obsidian,建立链接。

知识库里的内容安全吗?

本地知识库不会上传到云上,没有隐私风险。代码、命令、参数,全部在自己电脑上。如果需要多人共享,用 Git 私有仓库。

每天花多少时间维护?

日常维护:0 分钟(AI 自动完成知识摄入)

每周整理:15 分钟(检查新增页面、更新置信度、补充链接)

如果你没有用 AI 自动摄入,每次问题解决后花 5 分钟写笔记。每周总计也就 20~30 分钟。

如果我换了平台,知识库能带走吗?

LLM Wiki 本质上是 Markdown 文件。Markdown 是目前最通用的纯文本格式,几乎所有的笔记软件都支持导入和导出 Obsidian Vault。无论你以后用 Notion、飞书文档、还是 GitBook,Markdown 文件都能无缝迁移。

知识库是你的资产,平台会变,但 Markdown 不会变。


关注「AI的探索之旅」,你将获得:

内容 频率 适合谁
嵌入式 AI 调试实战 不定期 Hi3519DV500 / 嵌入式开发者
知识管理方法论 双周 资料多、技术人员
AI 工具链分享 有新的就发 AI 爱折腾玩家

往期精华推荐:

AI Agent 接管 Hi3519DV500 之后,如何通过 LLM Wiki 精准调试

「使用飞书调试开发板」------ 让 AI 智能体接管海思 Hi3519DV500

从 RAG 到 LLM Wiki:嵌入式知识管理进化之路

👇 长按识别关注,不错过每一篇干货

转载请联系作者 | AI的探索之旅 | 让技术发挥最大价值

最后一章:从此刻开始

这篇文章到这里,写了超过一万字。但真正重要的信息只有一句话:

你每解决一个问题,就获得了一枚知识资产的硬币。把这枚硬币存下来,而不是花掉------存下的是下一次几十倍的回报。

如果你还在犹豫:

  1. 打开终端,创建一个文件夹:mkdir -p ~/debug-knowledge
  2. 写第一篇笔记------你最近解决的一个 bug
  3. 明天再写第二篇
  4. 坚持两周

两周后,你会有一本属于你自己的"嵌入式调试实战手册"。三个月后,这 10 篇会变成 30 篇。六个月后,你会有 60 篇------覆盖你日常调试中 80% 以上的问题场景。

那些曾经让你熬到深夜的问题,再也不会。

最后分享一组数字作为收尾。从五月到六月,知识库从 0 增长到 27 页,累计排查命中超过 60 次,累计节省大约 30 小时的排查时间。而搭建和维护的总投入只有大约 8 小时。这个投入产出比接近一比四,也就是说每一小时的投入换来了四个小时的回报。在知识管理的世界里,我见过最好的投资就是把自己的调试经验变成可检索的知识资产。

如果你决定建一个自己的知识库,记得回来告诉我你的第一页写了什么内容。每一个知识资产都从那第一页开始的。知识复利的起点,就是下班前那五分钟的记录。从现在开始,每解决一个开发板问题,就存入一枚知识硬币。一年后回头看看你的知识库值多少钱。