news 2026/10/12 5:47:11

你的项目不是一次性的:vibe-vibe 迭代思维实战指南——从“做完“到“好用“

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
你的项目不是一次性的:vibe-vibe 迭代思维实战指南——从“做完“到“好用“
  • 文档
  • 教程
  • Vibe Coding
  • 示例工程

【免费下载链接】vibe-vibe

The First Systematic Vibe Coding Open-Source Tutorial | From Zero to Full-Stack, Empowering Everyone to Build Products with AI | Live at: www.vibevibe.cn ;首个系统化 Vibe Coding 开源教程 | 零基础到全栈实战,让人人都能用 AI 开发产品 | 在线地址:www.vibevibe.cn

项目地址:https://gitcode.com/datawhalechina/vibe-vibe
点击查看免费下载

本篇指南基于 vibe-vibe 开源教程"5.4 再进化:项目的持续迭代与优化"第一节展开,核心回答一个问题:为什么做完第一版只是开始?你将理解"完成 ≠ 结束"的迭代逻辑、一次性作业心态与持续进化心态的本质区别,掌握"做 → 用 → 改 → 做"的迭代循环,并学会用第二章的"灵魂三问"为自己的待办清单项目找到下一步改进方向。文中所有原理都会落到本仓库demo-01-todo、demo-02-todo-auth的真实源码上,让你看到迭代思维在真实项目里留下的痕迹。

你可能有的困惑:为什么"完成"只是开始

"第四章做完的待办清单,已经能用了,还需要改吗?"

这个想法很正常。我们从小写作业,交了就完事了。但做工具不一样——好用的工具,都是用出来的,不是一次做出来的。

把"能用"当成终点,是典型的作业思维;而做产品的人都知道,第一版只是起点。教程 5.4 章的开篇说得更直接:"第四章,你完成了待办清单的第一版。但这不是终点。真正好用的工具,都是在使用中不断改进出来的。"(见 5.4 章节导航)

在本仓库中,这个"第一版"的真实形态就存放在 demos/demo-01-todo 里——一个具备添加、删除、标记完成等基础 CRUD 能力的 Next.js 待办应用。它确实"能用",但它并不是这个项目的终态。

看看那些你每天用的产品:没有产品是一步到位的

微信刚上线时是什么样子?

时间版本功能
2011年1月1.0只能发消息、发图片
2012年4月4.0加入朋友圈
2013年8月5.0加入微信支付
2017年1月小程序上线不用下载App就能用各种服务

微信用了6年,从一个简单的聊天工具变成了一个超级平台。

淘宝最早就是一个简陋的网页,连图片都模糊。你现在用的"猜你喜欢"、"直播购物",都是后来一点点加上去的。

没有哪个产品是一步到位的。你的待办清单也不需要。

一次性作业 vs 持续进化:两种心态的对照

一次性作业心态持续进化心态
"做完就不管了""做完是起点"
"要一次做到完美""先能用,再好用"
"功能越多越好""解决一个问题再说下一个"
"有bug说明我做错了""有bug说明我发现了改进点"

第二种心态,是创造者的心态。

注意对照表中的差异并不在于"做得多不多",而在于如何看待做完之后的阶段:前者把 bug 视为失败的证据,后者把 bug 视为改进的线索。心态一换,你的待办清单就从"作业"变成了"作品"。

迭代循环:做 → 用 → 改 → 做

┌─────────────┐ │ 做一版 │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ 用一用 │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ 发现问题 │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ 改进它 │ └──────┬──────┘ │ └──────────────┐ │ ┌──────────────┘ │ ▼ (回到"做一版")

每转一圈,你的工具就好用一点。

这不是因为你第一次做得不好,而是有些问题只有用了才会发现。自己写代码时觉得"显而易见"的操作,真正用起来可能处处别扭;只有把版本交付给使用场景,问题才会浮出水面。教程 5.4 章把这个循环浓缩成了一句话:"第一版完成 → 自己用用看 → 让朋友试试 → 收集反馈 → 改进 → 更好用"(见 5.4 章节导航),下一节 5.4.2 收集反馈 会专门讲如何拿到真实的反馈。

仓库实证:demo 项目就是"迭代"出来的

迭代思维不是抽象口号。打开本仓库的 demo 项目,你能在源码里直接看到"迭代"留下的痕迹——它们正是 5.4.3 节"功能扩展方向"里反复提到的那些功能。

表结构的演进痕迹

先看第一版 demo-01-todo 的表结构:

export const todos = pgTable('todos', { id: serial('id').primaryKey(), title: text('title').notNull(), completed: boolean('completed').default(false), category: text('category').default('inbox'), dueDate: timestamp('due_date'), order: integer('order').default(0), createdAt: timestamp('created_at').defaultNow(), })

从源码结构看,可以推断这张表不是"一次做出来的":category(分类)、dueDate(截止日期)、order(排序权重)这些字段,恰好对应 5.4.3 节里列出的"任务分类标签"(⭐⭐)、"截止日期提醒"(⭐⭐⭐)、"任务排序"(⭐⭐⭐)等扩展方向(见 5.4.3 功能扩展)。也就是说,这些字段本身就是"做一版 → 用一用 → 发现问题 → 改进"循环的产物。

而 demo-02-todo-auth 的表结构 又往前走了一步:在待办表上新增了priority(优先级)、note(备注)和userId(归属用户),并把用户拆成user、session、account、verification四张认证相关表。这正是"持续进化"的直观案例——同一个待办清单,从单机个人工具(demo-01)进化为带用户系统的多用户应用(demo-02),每一轮迭代只解决一个问题。

功能组件:把"改进"落成代码

迭代改进最终要落成代码,仓库里处处可见对应实现:

  • 分类筛选:CategoryFilter.tsx 定义了all / inbox / work / personal四个分类,用 URL 查询参数category与后端联动;
  • 搜索功能:SearchInput.tsx 使用 300ms 防抖(useDebouncedCallback),搜索词存入全局状态(app-store.ts),在 page.tsx 中对标题做不区分大小写的实时筛选——"任务多了之后能快速找到"正是 5.4.3 节搜索功能的核心诉求;
  • 截止日期高亮:TodoItem.tsx 用isToday/isPast区分"今天到期"、"已过期 · M月d日"两种状态并配不同颜色徽章——对应 5.4.3 节"过期任务标红、今天到期标黄"的设想;
  • 拖拽排序:TodoItem.tsx 基于useSortable实现,排序结果通过 queries.ts 中的 useReorderTodos 提交到/api/todos/reorder;
  • 服务端过滤:API 路由 支持按category和status(active/completed)组合查询。

测试:确保"改"不破坏"用"

迭代最怕的是新功能把旧功能改崩。仓库里的 todos.test.ts 正好演示了如何守住这条底线:测试覆盖GET /api/todos(含分类过滤)、POST /api/todos(正常创建、标题为空返回 400、缺字段返回 400)。这印证了 5.4.3 节测试检查清单的第一条——"原有功能(添加、删除、完成任务)仍然正常"。输入校验则由 validation.ts 中的 zod schema 兜底(标题 1~200 字、分类枚举、可选截止日期)。

体验层的"微迭代"

迭代不只发生在功能层面,也发生在体验层面。queries.ts 中新增待办的onMutate乐观更新(先本地立即显示新项,失败再回滚),以及 page.tsx 中进度达到 100% 时触发 confetti 彩带动画,都是"用起来觉得不顺手 → 改进"的典型产物。这类细节无法在设计阶段一次想全,只能靠真实使用来暴露。

回顾灵魂三问:你的改进方向

还记得第二章的"灵魂三问"吗?(见 2.5 灵魂拷问)

  • 用户是谁?→ 谁在用你的待办清单?你自己?家人?室友?
  • 痛点在哪?→ 用了一段时间后,什么地方让你不爽?
  • 为什么选你?→ 和手机自带的备忘录比,你的有什么特别之处?

这三个问题,在迭代阶段同样有用。

当你不知道下一步该改什么时,问自己:

  • 我用的时候,哪一步最麻烦?
  • 我希望它能做什么,但目前做不到?

这些答案,就是你的迭代方向。

仓库源码也印证了这套方法论的价值:demo-01 的分类设计成收件箱 / 工作 / 个人三个固定枚举(validation.ts),而不是随意的一堆标签,正是回答了"用户是谁"之后做出的取舍;5.4.2 节还会提醒你,面对相互矛盾的需求时,要"回到第二章的灵魂三问:你的工具到底是给谁用的?优先满足核心用户的需求"(见 5.4.2 收集反馈)。

本节要点

  • 完成第一版只是开始,不是终点
  • 好的工具都是在使用中慢慢进化出来的
  • 每次改进只需要解决一个问题
  • 第二章的灵魂三问,可以帮你找到改进方向

::: tip 一个好的心态 不要想着"一次做到完美"。

做出来 → 用起来 → 发现问题 → 改进它。

这就是创造者的日常。 :::

接下来做什么

迭代方向明确后,就该动手收集反馈、扩展功能、优化代码、整理作品了。教程按这个顺序安排了后续四节,你可以顺次深入:

  • 5.4.2 收集反馈:让使用者告诉你——三种零门槛的反馈收集方法与记录模板;
  • 5.4.3 功能扩展:让 AI 帮你添加新功能——用 S.C.A.F.F. 框架写功能扩展 Prompt,本文谈到的分类、搜索、深色模式、截止日期都有现成模板;
  • 5.4.4 代码优化:让 AI 帮你改进代码质量——功能稳定后再优化的 5 类优化方向;
  • 5.4.5 从项目到作品集——把迭代成果整理成可展示的 README 与作品。

动手迭代前,别忘了先做版本提交——这正是 5.4.3 节强调的"黄金法则":每次改动前先 Commit,改崩了才能随时恢复(版本管理的入门见 5.1 版本控制)。你的待办清单,将从"能用",一步步变成"好用"、"可展示"。

  • 文档
  • 教程
  • Vibe Coding
  • 示例工程

【免费下载链接】vibe-vibe

The First Systematic Vibe Coding Open-Source Tutorial | From Zero to Full-Stack, Empowering Everyone to Build Products with AI | Live at: www.vibevibe.cn ;首个系统化 Vibe Coding 开源教程 | 零基础到全栈实战,让人人都能用 AI 开发产品 | 在线地址:www.vibevibe.cn

项目地址:https://gitcode.com/datawhalechina/vibe-vibe
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/12 5:46:30

真开源还是伪开源:从爆火团队看代码开放与社区参与的核心逻辑

这几年开源圈有个特别有意思的现象:隔一段时间就会冒出一个团队,因为“真开源”三个字被推到风口浪尖,GitHub 上一夜涨几千星,Issue 区挤满各国语言,连我所在的技术群里都在刷屏讨论。很多不太了解开源生态的朋友会问&…

作者头像 李华
网站建设 2026/10/12 5:45:18

AnyPS5串流方案全解析:从架构设计到延迟优化实战

1. 项目缘起与核心定位AnyPS5 这个标题第一次出现在我视野里的时候,我下意识地把它拆成了两个部分来看——“Any”和“PS5”。前者代表通用、跨平台、不受限,后者则指向一个非常具体的软硬件生态。把这两个词拼在一起,背后想表达的东西其实很…

作者头像 李华
网站建设 2026/10/12 5:42:39

DynamoDB设计核心:分区键驱动的流量编排范式

1. 为什么 DynamoDB 不是“另一个数据库”,而是一套全新思维范式刚接触 Amazon DynamoDB 的人,十有八九会下意识把它当成“AWS 版 MySQL”或“云上的 MongoDB”——装好驱动、连上 endpoint、写个 CREATE TABLE,然后照着 SQL 或 JSON 查询语法…

作者头像 李华
网站建设 2026/10/12 5:42:23

纯Java打造企业级Agent Harness:BizBuddy架构设计与工程实践

1. 为什么我要用纯 Java 造一个 Agent Harness1.1 从一个真实的痛点说起去年下半年,我所在的团队接了一个内部效率工具的需求。背景很简单:公司内部有好几个业务系统,客服、运营、数据分析的同事每天要在这些系统之间来回切换,重复…

作者头像 李华
网站建设 2026/10/12 5:41:23

Oracle到GBase数据库迁移实战:DDL/DML/应用层全链路适配指南

1. 项目背景与真实痛点:为什么Oracle到GBase的迁移不是“换驱动”那么简单我做过不下二十个数据库迁移项目,从SQL Server到PostgreSQL,从MySQL到达梦,但Oracle到GBase这类国产分析型数据库的迁移,是真正让我在凌晨三点…

作者头像 李华
网站建设 2026/10/12 5:40:18

千问 LeetCode 309. 买卖股票的最佳时机含冷冻期 Java实现

这道题是经典的动态规划(状态机)问题。核心在于处理“冷冻期”:卖出股票后,你无法在第二天买入股票(即冷冻期为 1 天)。 我们可以通过维护三个状态来解决这个问题。 思路解析 我们可以定义三种状态&#xf…

作者头像 李华