Skip to content
imshengli blog
Go back

让 AI 复用过去的经验,把代码写得更好

AI 写代码最大的问题是重复踩坑。通过文档编程明确目标,再用向量索引让 AI 自动翻阅历史经验,返工率大幅降低。

· 7 min

先说结论

AI 写代码有两个致命问题:忘了自己要干啥,以及同样的坑反复踩

我的解决方案是两步走:

  1. 文档编程——动手写代码之前,先让 AI 把方案、设计、影响面写成文档,相当于给 AI 一张”施工蓝图”
  2. 向量索引工作日志——用 Qdrant 把每天的工作记录变成可搜索的”经验库”,AI 执行时能自动翻出相关的历史踩坑记录

效果:返工明显减少,一晚上跑完代码只消耗不到 3% 的 Copilot 额度。

核心概念

什么是文档编程?

文档编程不是写文档,而是把”想清楚”这件事前置

打个比方:盖房子之前要画施工图,不能让工人边盖边想。AI 写代码也是一样——如果你直接甩一句”帮我重构这个模块”,AI 大概率会走弯路。但如果先把方案、设计决策、影响范围、执行步骤都写清楚,AI 就像拿着导航开车,不会跑偏。

具体来说,文档编程包含:

什么是向量索引?

向量索引(Vector Index)是一种让计算机理解”语义相似度”的技术。

举个例子:传统搜索只能精确匹配关键词——你搜”登录报错”,只能找到包含这四个字的记录。但向量索引能理解语义,搜”登录报错”也能找到”用户认证失败”、“token 过期”这类相关内容。

我用的是 Qdrant(一个开源的向量数据库),把每天的工作日志——包括遇到的问题、解决方案、踩过的坑——全部转化为向量存储起来。

工作原理

整个流程像是给 AI 装了两个器官:大脑(文档)记忆(向量索引)

┌──────────────────────────────────────────┐
│  开始新任务                               │
│    ↓                                     │
│  文档编程:明确目标、方案、步骤(大脑)      │
│    ↓                                     │
│  AI 执行时,自动检索相关历史经验(记忆)     │
│    ↓                                     │
│  写代码 → 完成后记录本次经验 → 回到经验库   │
└──────────────────────────────────────────┘

关键点在于:AI 在执行每一步时,都会根据当前正在做的事情,去向量数据库里搜索”最近一个月有没有类似的坑”。如果搜到了,它会先看看之前是怎么解决的,再动手写代码。

这套方案借鉴了 OpenClaw 的记忆设计和 OpenSpec 的最佳实践,核心思想是:经验不应该只存在人脑里,应该变成 AI 可检索的资产

经验复用架构

实际效果

返工减少

以前 AI 写代码经常出现”改了 A 又忘了 B”的情况。有了文档编程之后,AI 始终知道全局目标是什么,不会顾此失彼。

自动避坑

比如上周 AI 在处理一个并发问题时,向量检索自动拉出了两周前一条类似的踩坑日志——当时因为锁粒度太粗导致死锁。这次 AI 直接用了细粒度锁,一次通过。

成本极低

文档编程还有个意外收获:因为方案提前写好了,执行阶段可以交给 GitHub Copilot(按 Request 计费,不按 Token 计费)。一晚上自动跑完,才消耗不到 3% 的月度额度。

向量索引工作日志 复用效果

常见误区

误区一:“工作日志随便记记就行”

向量检索的质量完全取决于日志质量。如果日志只写了”修了个 bug”,AI 根本搜不到有用信息。好的日志应该包含:问题现象 + 根因分析 + 解决方案 + 教训总结

误区二:“文档编程就是写 PRD”

文档编程的核心不是文档格式,而是让 AI 和你对齐认知。它不需要多正式,但一定要把”为什么这样做”和”边界在哪里”说清楚。

误区三:“向量索引能替代人的判断”

向量索引只是帮 AI 找到相关经验,但经验是否适用于当前场景,仍然需要设计合理的 prompt 来引导 AI 做判断。不能盲信历史方案。

总结

手段解决的问题类比
文档编程AI 执行中跑偏、忘记目标施工蓝图
向量索引工作日志重复踩坑、经验流失老师傅的笔记本
两者结合返工多、效率低有地图 + 有经验的司机

核心思路就一句话:先让 AI 知道往哪走(文档),再让它记住路上哪里有坑(向量索引)。

FAQ

Q:Qdrant 部署复杂吗?

不复杂。Qdrant 支持 Docker 一键部署,本地跑一个实例就够了。数据量不大的情况下(几千条日志),单机完全能撑住。

Q:工作日志需要手动写吗?

前期需要手动记录,但可以逐步自动化——比如让 AI 在每次完成任务后自动生成一条结构化的经验总结,直接入库。

Q:这套方案适合小项目吗?

小项目(几百行代码的改动)不需要。这套方案主要解决的是大需求、大重构场景下的经验复用问题。小改动直接让 AI 写就行。

Q:除了 Qdrant,还能用什么?

任何支持向量检索的数据库都行,比如 Milvus、Pinecone、Weaviate,甚至用 SQLite + 向量扩展也可以。关键不是工具,而是持续沉淀高质量的经验日志


Share this post on:

Previous Post
Harness:让 Agent 持续跑长程任务
Next Post
Vibe Coding 的宪法:给项目立规矩再动手