Vibe Coding 4天开发AI知识管理App,我是如何做到的
4天、1个人、19000行代码、52个Tauri命令、190个自动化测试------这不是爽文,而是一个真实的Vibe Coding实战记录。本文将完整复盘整个开发过程,展示如何用AI辅助编程的全新方式,从零构建一个完整的AI知识管理桌面应用。
一、先说结论:什么是Vibe Coding
2025年初,Andrej Karpathy提出了一个概念------Vibe Coding:你只需要"感受"代码的风格,AI就能帮你完成具体的编码工作。
但"感受"这个词太模糊了。经过这次4天19000行代码的实战,我对Vibe Coding有了更落地的理解:
Vibe Coding = 文档先行 + AI编码 + 人把关
它不是让AI乱写代码,而是一种全新的开发范式:
- 人负责:产品定义、架构设计、技术决策、质量把控
- AI负责:代码实现、Bug修复、测试编写、文档同步
传统开发中,程序员70%的时间花在"把想法变成代码"上。Vibe Coding把这部分工作交给AI,人类程序员的角色从"代码工人"升级为"架构师+产品经理"。
二、4天做了什么:简库产品全貌
我开发的这个应用叫**「简库」**,是一个完全本地运行的AI驱动知识管理桌面工具。它的核心能力是一条完整的知识处理流水线:
文件导入 → 文档解析 → AI素材提取 → AI摘要生成 → AI问答生成 → RAG智能检索
核心功能清单
| 功能模块 | 说明 | 状态 |
|---|---|---|
| 文件导入 | 支持16种文档格式(PDF/Word/PPT/Excel/MD/TXT等),多选批量导入 | 已完成 |
| 文档分类 | 纯规则引擎,16类自动分类(专利/论文/合同/标书/标准/会议纪要等) | 已完成 |
| AI素材提取 | 从文档中提取5类结构化知识单元(case/data/method/framework/conclusion) | 已完成 |
| AI摘要生成 | 基于素材自动生成文档摘要 | 已完成 |
| AI问答生成 | 4维度学习问答(概念/方法/应用/洞察),支持AI评分 | 已完成 |
| RAG智能问答 | 多轮对话,素材级混合检索(BM25+语义向量),来源引用 | 已完成 |
| 子知识库 | 一层平铺管理,搜索/问答按知识库范围过滤 | 已完成 |
| 系统托盘 | 最小化到托盘、单实例锁、双击唤醒 | 已完成 |
成果数据
先看一组数字:
| 指标 | 数据 |
|---|---|
| 总代码量 | 约19,000行 |
| Tauri命令数 | 52个 |
| 自动化测试 | 190个(100%通过) |
| 数据库迁移 | 13个SQL文件 |
| 支持文件格式 | 16种 |
| Bug修复 | 30个(全部记录在案) |
| 设计文档 | 20+篇 |
| Git提交 | 17个 |
这不是一个玩具项目,而是一个有完整架构、测试覆盖、故障排查体系的生产级应用。
三、技术选型:每个选择都有理由
技术选型是Vibe Coding中人必须亲自把关的环节。AI可以帮你写代码,但选型决策需要人的经验判断。
为什么选Tauri 2而非Electron?
对比维度 Tauri 2 Electron
打包大小 ~10MB(Rust原生) ~150MB(Chromium)
内存占用 ~50MB ~300MB
启动速度 即时 3-5秒
安全模型 Rust内存安全 V8沙箱
API能力 系统级API直接调用 Node.js桥接
对于一个本地知识管理工具,用户可能全天开着它。50MB vs 300MB的内存差异,意味着是否会影响用户其他工作。Tauri 2的Rust后端还能直接调用系统API,这对文件解析、进程管理(Ollama Sidecar)至关重要。
为什么Rust而非Go?
核心原因:Tauri 2的默认后端就是Rust。如果选Go,就需要通过sidecar方式调用Go程序,增加了进程间通信的复杂度。
Rust的另一个优势是内存安全和零成本抽象。在处理PDF解析、文本分段、向量计算等密集操作时,Rust的性能表现优秀。
为什么SQLite而非PostgreSQL?
这是一个桌面应用,不是Web服务。SQLite的优势:
- 零配置:无需安装数据库服务,双击即用
- 单文件:整个数据库就是一个.db文件,备份/迁移/分享都是复制文件
- FTS5:内置全文搜索引擎,支持中文分词
- WAL模式:读写不冲突,适合前端查询+后台Pipeline同时操作
为什么不用专用向量数据库(Milvus/Qdrant)?
桌面场景下,数据量通常在几百到几千条素材。SQLite BLOB存储向量 + Rust原生余弦相似度计算,完全够用。引入Milvus/Qdrant意味着用户需要额外安装和配置服务,违背了"开箱即用"的产品定位。
四、4天开发时间线
通过git log可以看到完整的开发节奏:
Day 0 项目初始化提交(基础架构+文件导入+Pipeline骨架)
Day 1 核心Pipeline实现(素材提取→摘要→问答,完整4阶段)
Day 2 质量优化批次(P0-P2共19项优化任务)
Day 3 Excel支持+检索精度优化+远程LLM集成+子知识库
Day 4 发布准备(11项必须修复+8项应该修复+5项锦上添花)
关键洞察:Day 0的初始化提交已经包含了完整的架构设计。这不是边写边想,而是先花时间把架构想清楚,然后AI在这个清晰的架构上快速实现。
五、项目架构一览
knowledge-app/
├── src/ # React 前端(16个文件)
│ ├── components/ # 9个UI组件
│ └── lib/api.ts # 33个前端API封装
└── src-tauri/ # Rust 后端
├── src/
│ ├── commands/ # 52个Tauri命令(10个模块)
│ ├── pipeline/ # 4阶段处理Pipeline
│ ├── ai_service/ # Ollama客户端+进程管理
│ ├── db/ # 数据库层(13个文件)
│ ├── qa/ # RAG问答引擎
│ ├── parser/ # 文件解析(6种格式)
│ └── models/ # Rust数据模型
└── migrations/ # 13个SQL迁移文件
核心架构是经典的分层设计:
React前端 → Tauri Bridge(ipc) → Commands(API层) → Pipeline(业务层) → DB(数据层)
↕
AiService(LLM集成)
六、系列预告
本系列共5篇,后续内容安排:
| 篇 | 标题 | 核心内容 |
|---|---|---|
| 第2篇 | 架构先行------用AI对话式完成产品定义到技术架构 | CLAUDE.md的核心作用、产品定义方法、数据库设计演进、API接口分层 |
| 第3篇 | 核心实现------Rust后端AI处理Pipeline与Ollama集成实战 | 4阶段Pipeline状态机、素材提取策略、Prompt工程、错误处理与容错 |
| 第4篇 | RAG检索精度优化------从零命中到精准回答的三次迭代 | CJK分词困境、三阶段检索策略、混合检索分数融合、向量存储方案 |
| 第5篇 | 方法论总结------CLAUDE.md驱动的人机协作与Vibe Coding最佳实践 | 30个Bug精选教训、测试策略、Vibe Coding边界、适合的项目特征 |
总结与互动
这篇开篇我们建立了一个基本认知:Vibe Coding不是让AI乱写代码,而是一种"人定义架构、AI实现细节"的高效协作模式。它的核心前提是------你必须先想清楚要做什么。
下一篇,我们将深入CLAUDE.md这个"项目大脑",看看如何在Vibe Coding中完成产品定义到技术架构的全流程设计。
💬 讨论话题:
- 你在日常开发中使用AI辅助编码吗?效率提升有多大?
- 对于Tauri vs Electron的选型,你有什么不同看法?
- 你认为Vibe Coding适合什么规模的项目?
👍 觉得有用请点赞收藏,关注我获取更多Vibe Coding实战内容!
系列导航:
- 第1篇:Vibe Coding 4天开发AI知识管理App,我是如何做到的(本文)
- 第2篇:架构先行------用AI对话式完成产品定义到技术架构(即将发布)
- 第3篇:核心实现------Rust后端AI处理Pipeline与Ollama集成实战(即将发布)
- 第4篇:RAG检索精度优化------从零命中到精准回答的三次迭代(即将发布)
- 第5篇:方法论总结------CLAUDE.md驱动的人机协作与Vibe Coding最佳实践(即将发布)