散落的知识碎片
三年前的一个周一早晨,李昊(化名)打开电脑,面对一个新同事的提问:"我们的订单系统为什么用事件驱动架构而不是同步调用?"
他知道自己知道答案——这个架构决策是两年前团队讨论过的,他当时还写了一篇内部博客。但那篇博客在哪里?语雀?钉钉文档?还是他本地的 Markdown 文件里?
翻了 20 分钟,终于在一个几乎被遗忘的语雀知识库里找到了。但那篇文档最后更新时间是两年前,里面提到的几个中间件已经换了,架构也做了调整。
"这个答案是对的,但文档已经过期了。"他给新同事回了一句。
这不是李昊一个人的问题。他团队有 15 个工程师,日常产出大量知识,但散落在各处:50 多个钉钉群里的讨论记录,有些技术决策就是在群里聊出来的;200 多份文档分散在语雀、钉钉文档、Confluence 三个平台上;每个人的本地笔记,存在 IDE 的 scratch 文件里或者 Notion 的私人页面中;代码仓库里的 README 和 comment,有些关键的架构决策只存在于 PR 的 comment 中。
最珍贵的知识往往在团队成员的脑子里,也最容易丢。
这就是大多数技术团队的现状。知识不少,但没法被组织有效利用。新人入职要"拜师"才能搞明白系统,老人离职后留下一堆别人看不懂的"遗产"。
从群聊总结开始
李昊团队的知识管理进化,是从一个很小的事情开始的。
有一天他在群里讨论 Redis 缓存一致性的问题,一个同事说了一句:"这个讨论很有价值,我们记一下。"
这句话让他想了一个问题:为什么知识总是停留在"被提到"的瞬间,却没法持续积累?
他开始有意识地在群里做总结。每次重要的技术讨论结束后,发一段总结。方法很原始,但至少讨论不再是阅后即焚了。
问题很快暴露出来。群消息太多,总结很快就被淹没了。不同讨论涉及同一个主题时没法自动关联。新同事加入后没法快速浏览历史讨论中的知识精华。有些讨论是在私聊中进行的,总结发不出来。
群聊记录比个人笔记进了一步——从"个人可见"变成了"群组可见"。但它仍然是一个扁平的、无序的、难以检索的信息流。
Agent 对话里藏着大量知识
转折出现在团队开始大规模用 AI Agent 辅助编码之后。
李昊发现一个有意思的现象:他和 Agent 的对话中包含了大量业务知识。
"这段代码为什么要用乐观锁而不是悲观锁?因为我们的订单场景是高并发低冲突,乐观锁的性能更好。"
"这个接口为什么要返回一个 list 而不是 single object?因为我们支持一个用户绑定多个收货地址。"
"这个配置项的含义是什么?它是控制灰度发布的流量比例的,取值范围 0-100。"
这些对话就是知识。但它们随着对话窗口的关闭消失了。
他想:如果有个系统能从这些对话中自动提取知识并沉淀下来呢?这就是他们接触 RDS ContextDB 的契机。
结构化沉淀的思路
接入之后,团队的知识管理变了个样。
每当团队成员和 Agent 对话,系统自动从对话中提取原子事实(Atomic Fact)。上面那段关于乐观锁的讨论,被提取为:
原子事实: - 内容:订单场景使用乐观锁而非悲观锁 - 原因:高并发低冲突场景下乐观锁性能更优 - 置信度:0.92 - 来源:开发者对话 - 时间戳:2024-11-15
这些原子事实是最小的知识单元,带置信度分数和时间戳,可以被精确检索和引用。
随着原子事实积累,系统自动将相关事实聚合为实体卡片(Entity Card)。"订单服务"这个实体卡片会包含:架构决策(事件驱动、乐观锁、最终一致性)、性能指标(TPS 上限 5000、P99 延迟 200ms)、依赖关系(库存服务、支付服务、通知服务)、配置要点(超时时间 3 秒、重试次数 3 次)。这些信息来自不同的对话、不同的文档、不同的时间点,最终都聚合到了同一个实体画像中。
实体之间的关联关系形成了记忆图谱(Memory Graph)。新人问"为什么订单系统用事件驱动架构"时,Agent 不仅找到了两年前的架构决策,还能关联到后续的相关变更——哪些中间件被替换了、哪些接口做了调整、当前架构状态是什么。
自动提取不意味着放任。这套系统的治理方式是"AI 筛选 + 人工拍板":高置信度的事实(比如从正式文档中提取的)自动入库,中等置信度的进入待审核队列,低置信度的被标记但不自动入库。李昊每周五下午花 20 分钟审核一下待审队列,确认或修正 AI 的提取结果。这个工作量远小于手动维护知识库。
知识开始发挥实际作用
经过一年左右的积累,团队的知识库初具规模:1,200 多条原子事实,覆盖系统各个模块;85 个实体卡片,每个核心模块都有完整画像;200 多条关联关系,构成知识网络。
更实在的变化发生在日常工作中。
新人入职不再需要花两周"拜师"。Agent 已经掌握了团队的大部分知识体系,可以随时回答"这个模块是怎么工作的""为什么要这样设计"。李昊说新人的上手周期从原来的大概两周缩短到了几天,虽然这个数字不太好精确衡量。
线上出问题时,工程师直接问 Agent"上次这个服务出现类似问题是什么原因",Agent 能在不到 2 秒内检索到历史故障记录和解决方案。故障排查时间有了明显缩短,虽然具体缩短多少取决于问题的复杂度。
做架构决策时,Agent 可以回顾相关的历史决策、当前技术约束和依赖关系,帮团队避免重复犯错。代码审查时,Agent 自动检索相关编码规范和架构约定,给出贴合项目实际的意见,不是泛泛的"通用建议"。
不过也要说实话,这套方案不是万能的。有些隐性的知识——比如"这个接口虽然文档上写的是返回最多 100 条,但实际上如果你传了某个特殊参数它会返回全量数据"——这类知识很难被自动提取,仍然依赖团队成员主动补充。另外,AI 提取的知识偶尔会有误判,审核环节不能省。
知识生命周期的完整流程
李昊团队的知识管理最终形成了一个流程。
启动阶段,从 200 多份已有文档中导入核心知识,同时从日常对话中持续积累新知识。准入阶段,AI 自动筛选加人工评审,确保入库知识的质量。演进阶段,系统自动处理重复内容、消解矛盾信息、衰减过时知识的置信度——一条两年前提到的中间件配置如果后续从未被引用或更新,置信度会逐渐降低,最终被标记为"可能过时"。分发阶段,不同的 Agent 根据权限获取相关知识子集。
那些"消失"的知识回来了
现在当新同事问"我们的订单系统为什么用事件驱动架构",Agent 能在不到 2 秒内返回一个比较完整的回答:最初的架构决策背景(两年前从同步调用迁移到事件驱动)、关键理由(解耦、异步处理、容错性)、后续演进(中间件从 RocketMQ 迁移到了 Kafka)、当前架构状态(包含最新的服务拓扑和依赖关系)。
这些信息来自 50 多个群聊讨论、200 多份文档、无数次的 Agent 对话。它们曾经散落在各个角落,现在被结构化地组织在一起。
这件事的本质
这个故事的本质不是"引入了一个新工具"。传统知识管理的问题不在于人们不产生知识——每一次技术讨论、每一个架构决策、每一段调试经验都是知识。问题在于这些知识没法被自动捕获、结构化、维护和分发。
ContextDB 提供的思路是让知识积累变成日常工作的副产品。你不需要专门抽时间"写文档",正常和 Agent 对话、正常在群里讨论技术、正常做代码审查——知识在这个过程中自动沉淀、自动组织、自动演进。
当然,"自动"这个词需要打个折扣。实际使用中,AI 提取的知识并不总是准确的,审核和修正仍然需要人力投入。而且这套方案目前只在 RDS MySQL 环境下可用,对于用其他数据库的团队来说暂时用不上。但方向我觉得是对的:不靠人去管理知识,让知识在日常工作中自然长出来——哪怕现在长出来的过程还需要人工修剪。
参考链接