你有没有遇到过这种情况------
一个半年前解决过的 bug,别人问起来,你只记得「好像改过什么东西」,但改了哪里、怎么改的、中间踩了什么坑,全忘了。翻聊天记录、翻邮件、翻 Git 提交历史------花了四十分钟才找到当初的修改。
或者更常见的:
刚来两个月的同事遇到了你三个月前解决过的问题。他不好意思问,自己折腾了两天。最终忍不住问了你,你说「啊,那个问题我修过」,但三分钟讲不清楚,最后说「我发你一段代码你自己看」。
这些问题的根源是一样的:调试经验没有变成可检索的资产。
你做过的每一次调试、解决过的每一个 bug、踩过的每一个坑,本质上都是一笔资产。但如果没有被结构化地记录下来,这些资产就永远是零散的、私有的、不可复用的。
这篇文章不讲 AI Agent,不讲开发板,只讲一件事:怎么把调试经验整理成可以随时检索的知识资产。
效果先行:从一句模糊的描述到精准定位
先看一个真实场景,让你快速理解"可检索的资产"意味着什么。
没有知识资产的时候:
你: 「之前修过一个摄像头不亮的问题,是怎么搞的来着?」
同事A: 「好像是时钟问题?」
同事B: 「我记得群里讨论过,但我找不到了」
你: (翻微信聊天记录,翻了十分钟)「找到了!当时是改了 bspmm 的寄存器值」
这样定位一个问题,平均需要 10~30 分钟。更糟糕的是:你找到的方案是聊天记录里的一句话,没有上下文,没有验证过程,只敢半信半疑地用。
有知识资产的时候:
在飞书上对 AI 说一句:
「摄像头不亮,查一下之前的解决方案」
20 秒后:
检索结果:传感器时钟配置(置信度 high)
问题背景:OS04A10 需要 24MHz 时钟,出厂默认 37.125MHz
排查步骤:
- 读寄存器 bspmm 0x11018440 → 确认当前时钟
- 写 24MHz:bspmm 0x11018440 0x4001
- 重新扫描 I2C 确认摄像头检测到
注意事项:寄存器掉电丢失,每次上电后必须重设
参考来源:2026-05-12 调试日志
你看,同样的问题,前者花 10 分钟翻聊天记录,得到一个不确定的答案。后者花 20 秒,拿到的是结构化的、可验证的、有来源的完整方案。
差距不在于 AI,而在于知识有没有被加工成可检索的资产。
第一章:为什么调试经验必须结构化
很多人觉得:「问题解决了就行,记不记笔记无所谓,反正下次遇到了我大概能想起来。」
这种想法在两种情况下行不通。
情况一:问题隔了太久
人的记忆是有遗忘曲线的。艾宾浩斯遗忘曲线告诉我们:20 分钟后遗忘 42%,1 小时后遗忘 56%,1 天后遗忘 74%,1 个月后遗忘 79%。
一个你今天解决了的问题------怎么改的、踩了什么坑、为什么这么改------一个月后你再回头看,大概率已经记不清细节了。三个月后,你可能只记得「好像改过」。半年后,你跟没解决过一样。
这不是你记性不好,这是人脑的正常工作机制。工程师不应该靠记忆力来管理知识。
情况二:知识需要传递
一个团队里,最资深的工程师往往最忙------因为他什么都知道。新人问问题、同事排查故障、领导做技术决策,都来找他。
如果知识只存在于资深工程师的脑子里,这个人的时间和精力就是团队的瓶颈。更严重的是:如果这个人离职了,他脑子里的知识也就跟着走了。
把经验写下来,不只是为了自己,更是为了团队。
调试经验的结构化需求
调试经验和普通的笔记有本质区别。调试经验需要满足四个条件才能被称为"资产":
- 可检索 --- 当你需要的时候,能用自然语言描述找到它。不是靠记得文件名,不是靠翻文件夹,而是输入症状就能定位。
- 可验证 --- 每个知识点都标注了置信度。哪些是已验证过的,哪些是推测的,一目了然。
- 可追溯 --- 能看到知识的来源、原始日志、验证过程。不是为了复制粘贴,而是为了理解上下文再做判断。
- 可关联 --- 一个知识点不是孤立的。传感器时钟问题可能和启动配置相关,AI ISP 模糊可能和 NPU 驱动相关。知识之间需要建立链接。
LLM Wiki 的设计就是围绕这四点来的。它不是普通的笔记软件,而是一个面向调试场景的知识资产管理系统。
第二章:知识资产的分类体系------三分法
知识库最核心的设计决策是:知识该怎么分类?
试过几种方案后,最终确定的分类体系是三分法:实体(entities)、概念(concepts)、对比(comparisons)。
为什么不是传统的文件夹分类
传统的文件夹分类(如硬件/软件/测试/部署)有一个根本问题:一个知识点可能属于多个分类。
比如「AI ISP 智能图像处理」:它涉及硬件(ISP 模块)、软件(驱动和 Sample 程序)、算法(降噪模型)、图像质量(参数调优)。放到哪个文件夹都不合适。
三分法的思路不是按领域分类,而是按知识的本质形态分类。
实体(entities)------ 记录"是什么"
实体页记录的是客观存在的、具体的事物:芯片、传感器、开发板、工具链。
每个实体页回答三个问题:
- 这个实体是什么? --- 一句话定义
- 它的关键参数是什么? --- 规格、版本、配置
- 它和哪些知识点相关? --- 关联的概念页
以「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)------ 记录"怎么做"
概念页记录的是技术人员真正关心的东西:方法、参数、配置、坑、工作流程。
每个概念页回答三个问题:
- 什么场景下会用到这个知识? --- 触发条件
- 具体怎么做? --- 步骤、命令、代码
- 有什么坑? --- 教训、注意事项、最佳实践
这是知识库中数量最多、价值最高的部分。目前有 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 个以上。
三分法的核心优势
- 无歧义分类:任何一个新知识都能明确归入三类之一------它要么是一个实体、要么是一个概念、要么是一个对比
- 天然可链接:实体页链接到概念页,概念页链接到实体页,对比页关联两个实体页
- 检索路径清晰:用户问"这是什么"→ 查实体页。用户问"怎么做"→ 查概念页。用户问"哪个更好" → 查对比页
第三章:从调试记录到知识资产------加工流水线
最原始的知识形态是调试记录------就是你在终端里敲的那几行命令。要把调试记录变成可检索的知识资产,需要经过三道加工工序。
第一道工序(粗加工):原始记录
调试记录本身不算知识资产------它是原材料。
好的原始记录包含:
[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、甚至聊天记录都行。这个阶段的关键是记下来,不追求格式。
第二道工序(精加工):概念页
在原始记录的基础上,提炼出结构化的概念页:
- 提取标题:传感器时钟配置
- 写背景:OS04A10 需要 24MHz 时钟,出厂默认 37.125MHz
- 写排查步骤:逐步命令和判断条件
- 写根因分析:为什么会出现这个问题
- 写解决方案:具体的修复命令
- 写注意事项:掉电丢失、建议写入开机脚本
- 生成标签:hisi, driver, pitfall, hardware
精加工的核心是去噪------只保留验证过的结论,去掉排查过程中的弯路和错误猜测。
第三道工序(互联):建立链接
单个概念页的价值是有限的。把多页关联起来,才形成真正的知识网络。
链接方式有三种:
- 直接链接 :
[[传感器时钟配置]]嵌入在「OS04A10 图像传感器」实体页中 - 反向链接:在 Obsidian 中,「传感器时钟配置」页面会显示哪些页面链接到它
- 关联标签 :通过共同标签(如
hisi,pitfall)把相关页面聚合起来
加工实例:从原始日志到完整概念页
原始日志(30 秒写完):
摄像头不亮 -> i2cdetect 扫不到 -> 时钟寄存器 0x11018440 没配 ->
写 0x4001 -> 好了。注意掉电会丢。
概念页(5 分钟写完):
(见「传感器时钟配置」页面,上文已有完整展示)
知识资产(可检索、可验证、可追溯):
有了标签和链接后,当同事在飞书上问「OS04A10 没图像」时,AI 可以秒级命中传感器时钟配置页,给出结构化方案。整个过程不需要回忆、不需要翻聊天记录,20 秒内拿到答案。
第四章:检索机制详解------你是怎么找到知识的
知识存进去了,关键是怎么找回来。LLM Wiki 提供了两种互补的检索机制。
机制一:Wikilinks 双向链接------人工构建的知识网络
Wikilinks 是 Obsidian 原生的链接语法,用 [[双括号]] 在页面之间建立链接。
比如在「传感器时钟配置」页面中,有一段:
markdown
[[OS04A10 图像传感器]] 需要 24MHz 工作时钟,出厂默认值适配的是 [[IMX347]]。
这就建立了一个双向链接:
- 从「传感器时钟配置」→「OS04A10 图像传感器」(正向)
- 在「OS04A10 图像传感器」页面中,会自动显示"被引用"列表,包含「传感器时钟配置」(反向)
Wikilinks 的优势是精度高------链接是人手工建立的,所以相关性最高。缺点是需要人工维护,知识量大了之后容易出现断链。
目前 27 个页面之间共有 40+ 条 Wikilinks,平均每个页面有 1.5 条出链和 1.5 条入链。
机制二:RAG TF-IDF 向量检索------自动的语义匹配
Wikilinks 覆盖不了所有查询场景。比如你遇到了一个新问题,症状描述和任何已有页面的标题都不匹配,这时就需要 RAG。
RAG 检索的流程:
-
建索引阶段:
- 扫描 concepts/ 和 entities/ 下的所有 Markdown 文件
- 将每个文件按 500 字符切块,80 字符重叠(避免切断知识点)
- 对每块文本做 TF-IDF 向量化,降维到 5000 维
- 把所有向量存入 embeddings.npy 矩阵
-
查询阶段:
- 将用户的问题做同样的 TF-IDF 向量化
- 计算查询向量与所有知识块向量的余弦相似度
- 返回 TOP-5 最匹配的知识块,附相似度分数
-
AI 回答阶段:
- 将 TOP-5 知识块作为上下文注入 LLM
- LLM 根据上下文生成精准回答
- 回答中标注知识来源
实测效果:418 个知识块(27 页切分后)的检索延迟 <10ms,TOP-1 命中率约 72%,TOP-5 命中率约 91%。
两种机制的配合方式
| 场景 | 使用机制 | 说明 |
|---|---|---|
| 已知问题,知道页面标题 | Wikilinks | 直接导航到目标页 |
| 模糊描述,不确定用什么词 | RAG | TF-IDF 自动匹配关键词 |
| 新的调试问题,类似的历史 | RAG 优先 | 先搜症状,再看关联页面 |
| 系统性学习某个主题 | Wikilinks | 顺着链接深度阅读 |
关键结论:Wikilinks 做精准导航,RAG 做模糊检索,两者结合覆盖了从"我知道要找什么"到"我也不知道该叫什么"的所有查询场景。
搜索技巧:怎么让检索更精准
经过三个月的使用,总结了几条让 RAG 检索更精准的经验:
- 用技术术语而非口语描述:说「I2C 地址 0x36」比「摄像头那个地址」精准得多
- 包含芯片型号:说「Hi3519DV500 DDR 频率」比「DDR 频率」好
- 多个关键词组合:说「NPU 推理帧率低 YOLOv8」比「NPU 很慢」更准
- 加限定词:说「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 小时。
知识生命周期管理
每条知识从创建到淘汰一般经历四个阶段:
- 创建期 --- 问题刚解决,写入知识库,置信度 medium。此时的知识最"热"------你刚做完,记得最清楚。这是写笔记的黄金窗口期。
- 验证期 --- 同样的方案在另一块开发板或另一个时间点复现成功,置信度升级到 high。如果是他人复现成功,还能从不同视角补充细节。
- 稳定期 --- 知识被频繁引用,置信度 high,成为调试的标准操作流程。这一阶段的知识对团队价值最高。
- 过期期 --- 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 的知识,由核心工程师审核后合并。个人的草稿和未验证的知识存放在个人扩展中,不影响团队库的质量。
知识审核流程
- 团队成员解决一个问题后,写入个人扩展,标记为 medium
- 每周的知识审核会上,分享过去一周的新知识点
- 至少两人验证后,升级为 high,合并到团队共享库
- 过期的知识由发现者提出降级,团队确认后执行
第八章:开始行动------最小可行知识库
如果你被这篇文章说服了,想开始搭建自己的知识库,但又觉得 27 页太远------这里给你一个最小可行方案。
第一步:建一个文件夹
不需要 Obsidian,不需要 RAG,不需要任何工具。在你的电脑上随便找个地方:
bash
mkdir -p ~/debug-knowledge/{entities,concepts,raw}
cd ~/debug-knowledge
第二步:写第一篇笔记
把你最近解决的一个最难忘的 bug 写下来。不需要格式,只需要回答四个问题:
- 问题是什么(症状)
- 排查过程(做了什么)
- 根因是什么(为什么)
- 怎么解决的(命令/代码)
写在一个 Markdown 文件里,放到 concepts/ 目录。
第三步:写第二篇
再找一个你记得比较清楚的问题,写下来。
第四步:持续两周
每天花 5 分钟,记录当天的调试过程。两周后,你就有 10 篇左右的知识笔记。
第五步:加上标签
给每篇笔记打上标签。标签的作用是当你忘记文件名时,能通过关键词搜到。
第六步:搭建检索
当你有 10 篇笔记时,可以考虑搭建 RAG 检索了。跑一下 build_rag.py 脚本,把笔记变成可向量检索的知识库。
至此,你的最小可行知识库就搭建完成了。整个过程不超过 2 小时。
总结:知识复利的力量
回到文章开头的问题:调试经验怎么变成可检索的资产?
答案是一个闭环:
- 记录:每次调试后花 5 分钟写一篇笔记
- 提炼:将原始记录加工成结构化的概念页
- 关联:用标签和链接把页面编织成知识网络
- 检索:通过 Wikilinks 和 RAG 两种机制随时找到
- 复用:下次遇到同类问题,20 秒拿到完整方案
- 更新:随着新经验的积累,不断补充和修正
这个闭环每转一圈,你的知识资产就增值一次。
三个月前,我的知识库是 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 跳转到一个页面,都会记录一次"引用计数"。
目前引用频率最高的三个页面:
- 传感器时钟配置 --- 引用 34 次(因为每块新板都要走一遍这个流程)
- RTSP 视频推流 --- 引用 28 次(拉流地址记不住是常态)
- 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% 以上。
基于评估的行动建议
- 优先维护高频页面 --- 「传感器时钟配置」这样的页面,值得花时间完善格式、增加截图、补充边缘情况
- 定期检查零引用页面 --- 写进去半年没人查过的页面,考虑合并到其他页面或删除
- 标注高价值页面 --- 将 P0 和 P1 的知识在知识库首页置顶推荐
补充章节三:解决冲突------当知识之间相互矛盾怎么办
知识库积累多了,一定会遇到知识冲突。比如:
- 知识页 A 说「DDR 频率最高 2666Mbps」,知识页 B 说「实测 2400Mbps 稳定」
- 知识页 C 说「AI ISP 用 detail_priority」,知识页 D 说「低光场景应该用 denoise_priority」
面对知识冲突时,不要回避,也不要简单删掉其中一个。正确的做法是记录分歧并解决。
冲突处理流程
- 标注冲突 --- 在两个页面的冲突部分加上
[冲突标记],链接到对方页面 - 记录差异 --- 在页面中说明冲突的来源和背景。比如:"A 的来源是 SDK 文档,B 的来源是实际测试数据"
- 分析根因 --- 为什么会有冲突?是版本差异?环境差异?测量方法差异?
- 设计验证实验 --- 设计一个可以区分两种说法的实验。比如:在完全相同的环境下,分别测试两种配置
冲突的演进
知识冲突通常有三种结局:
- 一方胜出 --- 实验验证后确认 A 正确、B 错误。删除 B 或在 B 中标注"已废弃"
- 兼容并存 --- 发现 A 和 B 都正确,但适用条件不同。改写页面为条件分支形式:「如果...选 A,如果...选 B」
- 悬而未决 --- 暂时无法验证。记录分歧原因,标记为「待验证」
一个真实的冲突解决案例
知识库中曾经有两页关于 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 检索。这样即使你用口语化的表述,也能匹配到使用技术术语写的知识页。
停用词过滤
中文检索中,有些高频词(的、了、是、在、有、不、也、而)没有检索价值,需要过滤。停用词过滤可以让索引更精确,减少噪声。
检索结果的排序策略
目前按三个维度综合排序:
- 关键词匹配度 --- 命中关键词的数量和位置(标题命中 > 正文命中)
- 置信度 --- high 优先于 medium
- 引用频率 --- 被引用多的页面优先展示
这套排序策略使得最有可能解决当前问题的知识排在前面,提高了检索效率。
补充章节五:从"记"到"查"的习惯转变------最难的不是工具,是习惯
搭建知识库的技术门槛很低------一个文件夹、几个 Markdown 文件、一个检索脚本,两小时就能搞定。
真正的挑战在于改变习惯。
两个关键习惯
习惯一:问题解决后,第一时间记录。
不需要写得多好,不需要格式工整。关键是"写下来"这个动作。哪怕只有三行字:
问题:sample_aiisp 画面偏蓝
解决:白平衡模式从 auto 改为 manual,手动设置 R/G/B gain 为 256
为什么:OS04A10 的自动白平衡在某些场景下不准
三行字。20 秒能写完。但不写的话,下次遇到又要重新试一遍。
习惯二:遇到新问题,先搜索知识库。
养成"先查后问"的习惯。遇到问题不是立刻开始排查,而是先花 30 秒搜一下知识库。
- 有答案 → 直接执行
- 没答案 → 开始排查,解决后写入知识库
这个习惯一旦养成,你的调试效率会指数级提升。
如何养成这两个习惯
- 设置物理触发点 --- 在终端提示符中加一行提示:「问题解决了?写笔记!」
- 用仪式感强化 --- 每次写完一篇知识笔记,给自己一个小奖励(比如喝口茶、站起来走一圈)
- 设置最低标准 --- 不要求写 500 字,20 字也可以。关键在于"不断档"
- 两周后回头看 --- 两周后打开知识库,看看自己写过的笔记。看到积累的成果会很有成就感
我自己走过这个阶段。前两周最难熬------调试完就想关闭终端下班,不想再花时间写笔记。坚持过第三周后,有一次遇到了一个似曾相似的问题,打开知识库一搜就找到了方案,那种"果然没白写"的感觉让我建立了信心。之后,记录就成了条件反射。
补充章节六:从知识库到个人知识体系------读、写、查的三角循环
知识库解决了"查"的问题,但知识不仅仅是为了查。一个完整的知识体系应该包含三个环节:读(输入)、写(整理)、查(输出)。
读------知识的输入环节
知识库不是凭空产生的。输入来源包括:
- SDK 文档阅读 --- 海思原厂的 PDF 文档、应用笔记、版本发布说明
- 调试日志复盘 --- 每次调试结束后,回顾串口输出和操作记录
- 技术文章收藏 --- 从 CSDN、知乎、公众号上看到的高质量技术帖
- 问答记录 --- 在飞书上和 AI 的调试对话,其中包含了大量有效信息
每个输入源都可以对应到知识库的结构化位置:
- SDK 文档 → raw/docs/
- 调试日志 → raw/transcripts/ + 加工成 concepts/
- 技术文章 → raw/articles/ + 提炼后关联到实体页
- 飞书问答 → 筛选后直接存入 concepts/
写------知识的加工环节
从原材料到结构化知识,需要经过一道"加工工序"。这道工序有三个要点:
- 结构化 --- 不是把原文复制过来,而是提取出关键信息,用自己的话重新组织
- 关联 --- 为每条新知识建立至少 2 条向外的 Wikilinks,链接到已有页面
- 标签化 --- 标注适当的标签,便于跨领域检索
查------知识的输出环节
输出环节不只是"搜到了答案",还应该包括:
- 验证答案 --- 知识库的方案是否正确?当前环境和记录方案是否一致?
- 补充反馈 --- 如果按照方案操作成功了,标记一次"验证通过";如果失败了,记录差异,触发知识更新
- 知识复用 --- 将知识库中的方案应用到新的开发板上,检验知识的通用性
三角循环的自我增强
三个环节形成一个正反馈循环:
- 读得越多 → 知识库的原材料越丰富 → 写的素材越多
- 写得越多 → 知识库越完善 → 查的命中率越高
- 查得越多 → 发现的知识缺口越多 → 读的方向越明确
坚持这个循环三个月,你的知识资产会从零开始持续增长,而且速度越来越快。
补充章节七:回答那些你可能想问的问题
知识库会不会变成又一个"收藏夹吃灰"?
有这个风险。避免的方法有两个:
一是把知识库和日常工作绑定------知识库不是周末花时间整理的爱好项目,而是日常工作的一部分。解决一个问题,写一篇笔记,这个过程和写代码一样,是工作环节的一部分。
二是让 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的探索之旅 | 让技术发挥最大价值
最后一章:从此刻开始
这篇文章到这里,写了超过一万字。但真正重要的信息只有一句话:
你每解决一个问题,就获得了一枚知识资产的硬币。把这枚硬币存下来,而不是花掉------存下的是下一次几十倍的回报。
如果你还在犹豫:
- 打开终端,创建一个文件夹:
mkdir -p ~/debug-knowledge - 写第一篇笔记------你最近解决的一个 bug
- 明天再写第二篇
- 坚持两周
两周后,你会有一本属于你自己的"嵌入式调试实战手册"。三个月后,这 10 篇会变成 30 篇。六个月后,你会有 60 篇------覆盖你日常调试中 80% 以上的问题场景。
那些曾经让你熬到深夜的问题,再也不会。
最后分享一组数字作为收尾。从五月到六月,知识库从 0 增长到 27 页,累计排查命中超过 60 次,累计节省大约 30 小时的排查时间。而搭建和维护的总投入只有大约 8 小时。这个投入产出比接近一比四,也就是说每一小时的投入换来了四个小时的回报。在知识管理的世界里,我见过最好的投资就是把自己的调试经验变成可检索的知识资产。
如果你决定建一个自己的知识库,记得回来告诉我你的第一页写了什么内容。每一个知识资产都从那第一页开始的。知识复利的起点,就是下班前那五分钟的记录。从现在开始,每解决一个开发板问题,就存入一枚知识硬币。一年后回头看看你的知识库值多少钱。