从0到1落地AI知识问答系统(一):AI结对协作实战技巧
我用 AI 从零搭了一个可用的个人知识库问答系统。过程中 AI 写了大量代码,几乎是 100% 的 AI 实现。这篇文章就是把这个过程记录下来,并提炼了一套我用下来很顺手的 AI 协作方式分享给大家
项目地址:xuxchao/knowledge-quiz: AI 知识问答系统
本项目会分很多期更新,后续还有:
从0到1落地AI知识问答系统(二):架构选型与演进心得从0到1落地AI知识问答系统(三):文档切片与召回优化
欢迎点赞收藏进群唠嗑(联系方式文章底部)
1. 效果演示
1.1 页面预览

默认的首页,可以从这里发起会话

查看已经上传的文档

可以把个人知识资料上传进来

可以查看切片效果如何,实际上都是看的数据库
1.2 有无资料的回答对比

这里我把九渊秘境的小说从知识库里删掉了,可以看到他查不出来⬆️

上传了之后,这里可以看到已经检索到了,回答的很准确⬆️

可以通过 langfuse 去查看对应的提示词信息。

也能够通过 mem0 看到对应的长期记忆
2. 如何借助 AI 不手写代码,把整个项目跑通
2.1 实现项目的对话流程
一开始,我用计划模式帮我生成个人AI知识库问答系统,ai 就会有一个 spec.md 让我看看是否执行,这里我重点是看技术选型,功能是否符合我预期,像提到的登录,注册,账号权限我觉得都没必要。这个时候 ai 生成了整个项目的初始架构,然后我开始读代码看看有没有哪些地方跑偏了。虽然 spec.md 能达到上千字看着特别详细,但是落地到这个项目里上千字也是不够详细的。例如
- md文档切片这里他自己实现了,但是有开源的 MarkdownTextSplitter 可以使用,我就需要让他修改。
- nestjs 的项目他的目录结构不是最佳规范我引入了 nestjs-best-practices skill 来约束重新生成了代码结构,类似的技能还有 vue-best-practices,eslint-prettier-config, javascript-typescript-jest。这些技能都可以去网站skills.sh/ 搜索到
- langfuse 他可以直接配合 langchain 直接自主跟踪,但是他写了整个过程
还有就是文档里面写了的,但是实际上他跑偏了。例如:
- 切片入库这里 neo4j 有向量生成,但是 postgres 却没有,但是实体类里面有这个字段。也属于 bug,严重的是 es 他压根就漏掉了
- 还有记忆存储这里我提到了要有 mem0 他也没处理
- 我提到了使用 vercel sdk 的格式来处理流式 ai 回复他也没有用到
我花费了一定的时间让整个架构不跑偏,接下来就是各种各样的 bug 了:
POST /api/documents在写入 Neo4j 时失败。错误明确指出,节点属性不能保存嵌套 Map。修完这个问题后,我又发现文档列表里的chunkCount已经是 2,GET /api/chunks却一条数据也查不到:向量数据写进去了 neo4j,PostgreSQL 的分块表却没有同步落库。- 聊天接口把 assistant 消息保存成了
[object AsyncGenerator]。页面上的流式输出和数据库里的最终消息并不是同一件事,日志装饰器在包装异步生成器时改变了返回语义。
这些问题决定了当前项目的演进方式:ai 帮我加快了整个流程的开发,但是我还是需要去主动排查问题,一次次把断开的数据链路接起来。
随后几天的会话记录基本沿着这条路线推进:
- 修复 RustFS 中文文件名经过 multipart、URL 编码和对象 Key 后不一致的问题。
- 把自定义聊天 GET/SSE 协议改成 Vercel AI SDK 默认的 POST UI Message Stream。
- 让会话标题、历史消息和 Langfuse Trace 真正工作。
- 给语音播放增加暂停与继续,并排查 Langfuse 没有上报的问题。
- 把 Langfuse 的对象存储统一到 RustFS,补齐文档引用和原文件下载。
- 分析 Redis Key 来源,将业务 Redis 与 Langfuse 使用不同逻辑 DB 隔离。
- 审查整个项目的数据一致性、生产部署、性能、日志和模块边界。
- 将同步文档处理改成 BullMQ 后台摄取,并补齐迁移、校验和失败补偿。
- 分析不同文件类型的 RAG 流程,处理扫描 PDF、向量索引和记忆系统问题。
这些历史比"AI 一次生成了整个系统"更有价值。它证明 AI 编程在真实项目里更常见的形态,是围绕日志、接口和运行状态持续迭代。
例如,一次文档上传只有同时满足下面这些条件,才算真正完成:
- 原始文件已经进入对象存储;
- PostgreSQL 中存在文档记录和状态;
- 后台任务能够读取文件并完成解析;
- 分块保留了页码、标题路径、Sheet、幻灯片等来源信息;
- Embedding 已经生成;
- PostgreSQL、Neo4j 和 Elasticsearch 中的数据相互对应;
- 失败时能够看到失败阶段,并清理部分写入的数据;
- 前端能查询处理进度,而不是让一次 HTTP 请求一直等待。
这套验收标准不是 AI 第一次生成代码时自动给出的,而是在多次真实运行、报错和返工以后逐渐形成的。
这里也不否认更高级的大模型会把这个处理时间变短很多,我一开始用的 trae cn 出现问题我需要读代码定位到特别清晰的 prompt 才能解决问题,换了 codex 之后就成了给日志和部分信息即可解决
2.2 AI 使用技巧梳理
-
让 AI 思考方案,我来优化:像我一开始先出 spec.md 文档就是这个流程,虽然我脑海里对于这个项目的接口有多少,数据库如何设计,上传流程,rag 设计都有一定的想法,但是要写出来这一步还是十分耗费时间的。所以让 AI 生成这个会给我节约不少时间而且我也可以查看 AI 的设计方案有没有更合理的地方,属于互相弥补。
这个计划设计不仅仅是初始阶段可以使用,包括后续都可以用,比如后面我要将整个代码流程从目前的方式切换到 graph 他也给我提供了很大的帮助
-
根据会话记录让 AI 把重复失败的东西整理成 skill: 对应项目里面的就是 project-permission-guard 这个 skill,我当时给 AI 的权限是替我审批,然后我每次都会阅读 AI 的思考,他总是会重复使用 volta 的 node 执行代码,然后没有权限,接着思考如何处理这个问题白白浪费了我很多 token。我就让 ai 根据往期会话查看哪些总是重复失败的的东西总结成一个 skill,他就帮我实现了 project-permission-guard。 有了这个 skill 指导就好了很多。
-
AI 解决问题的时候把遗漏的内容整理成 skill:这里举几个例子:
3.1 每次新增代码需要补全日志
3.2 每次有代码修改确保测试用例完整,已有测试用例无问题
3.3 确保项目能够正常启动,而不是每次修改完了项目启动都报错,需要解决一个 bug 然后他又引入了其他的 bug 3.4 每次的代码都能够过一下 lint
我把这些整理成了 code-log-check 之后有代码的改动 Agent 就会调用这个 skill 确保有符合我需要的 log,覆盖率足够高的测试用例,确保项目打包启动无问题。使得我的开发效率成倍提高
-
遇到 bug 给予合适的提示信息: 不要说上传文件的时候报错了,帮我修复一下。而是把 log 日志的 error 给到 Agent,有堆栈信息他就能够根据堆栈信息快速定位问题,没有堆栈信息的情况实际上你的问题也会更加具体,这种就可以分情况看看要不要帮 AI 锁定某个文件的某个方法
-
让 AI 自动检查项目是否有 bug,是否有需要优化的地方:问这种问题一般是项目写的差不多了会用到这个技巧。这里 AI 会找出来一些防御的边界情况,也会给出一些新的设计方案,这种方案上就需要根据业务场景来考虑了,没有明显的对错。对于发散思维非常的有好处
-
给自己的项目安装对应语言的最佳实践 skill: 像我这个项目就是:nestjs-best-practices, vue-best-practices,eslint-prettier-config, javascript-typescript-jest
3. 总结
-
我刚系统的学习了 Agent 相关的知识,但只是理论层面。这个项目让我把理论付诸于实践,实现了具体的业务。让理论灵活运用了起来,也得到了满满的成就感
-
对于 AI 的使用越发娴熟,实际上我使用 AI 已经很久了,但是看到一些文章说 AI 独自跑多久多久实现一个数据库,AI 怎么怎么厉害我是存疑的,这个项目是我对 AI 祛魅的一个过程和对 AI 协作有了更深刻的理解。
-
回忆一下我的 AI 使用过程:
3.1 第一阶段我在 23, 24 年的时候(忘记具体是啥时候了)就已经 AI 编程了,当时用的是 cursor ,那个时候对中文不是很友好,大模型解决问题的能力也偏弱就跟小孩子的玩具一样,基本上体验了一下就放弃了
3.2 到后面 24 年底 25 年初左右。 AI 编程越演越烈,我又进行了尝试这个时候我已经离不开 CUE(就是写代码的时候会给你预测写什么然后 TAB 使用这段代码) 了,但是对话解决问题实现需求还是不行。
3.3 再到 25 年底,26 年初。AI 相比起之前对我最有用的两件事情就是新需求喂给他 figma 设计稿和产品需求在这个基础上再打磨细节,另外一件就是很多的功能型函数脚本都让 AI 实现。往往是跟 AI 对话完了我就可以接杯水,上个厕所休息一下等等结果。效率得到了很大的提升
3.4 到现在 26 年中旬用 AI 从 0-1 搭建出来的这个项目。
短短几年深刻体验到了 AI 的快速发展对于原有的编码方式的冲击。也明白了现在正是机遇与挑战并存的时候,例如企业业务上大部分的事情是重复的,比如后端的 CRUD,前端的各种表单搜索页面,复杂度不高但是重复度极高而且极其耗费时间,之前的编码精力基本上都被这部分牵扯住了。有了 AI 这一部分就可以快速实现,转而专注更深层次的学习。掌握更多处理问题的技巧渐渐的不是护城河了,能够跨领域解决问题提供切实可行的方案才是
交流沟通
如果你想跟我跟更多的人讨论 AI ,全栈相关的知识欢迎加我入群沟通, 记得备注 AI交流 让我知道你的来意

另外找一份 ai 相关的全栈工作,欢迎有意向的来沟通