Skip to content

一周打造 AI 增强版 Google Keep:MuseNotes 开发实录

作者: MuseNotes 首席工程师
时间: 2025年12月

引言:不可能的挑战?

如果在一年前,有人告诉我:“你可以在一周内,单枪匹马开发出一个功能完备、设计精美、且具备 AI 能力的 Google Keep 竞品。” 我大概会觉得他在开玩笑。

但在 2025 年的今天,有了 AntiGravity 这样强大的 AI 结对编程助手,这个挑战不仅变得可行,甚至成为了一场令人兴奋的技术探索之旅。

这就是 MuseNotes 的诞生故事——一款运行在 Cloudflare Edge 上的现代化笔记应用。在这篇文章中,我将分享我是如何利用 AI 赋能,在短短 7 天内完成从架构设计到生产部署的全过程,并重点探讨其中的工程化实践和 CI/CD 流程。


Day 1-2: 架构先行 —— 站在巨人的肩膀上

在 AntiGravity 的协助下,我们没有从零开始写 boilerplate,而是直接进入了高维度的架构决策。

核心技术栈选型

为了追求极致的性能和低成本维护,我们选择了 全栈 Serverless/Edge 架构:

  • 前端:React 18 + Vite + TypeScript + Tailwind CSS (ShadCN/UI)
  • 后端:Cloudflare Workers + Hono (超轻量级 Web 框架)
  • 数据存储:Cloudflare D1 (SQL 数据库) + Durable Objects (强一致性存储)
  • AI 能力:Cloudflare Workers AI (运行在边缘的推理模型)

工程化亮点:类型安全的单体仓库

MuseNotes 采用了 Monorepo 结构,前端 (src) 和后端 (worker) 共存于一个仓库中。最关键的设计是 Shared Types

我们在 shared/types.ts 中定义了所有的数据模型(Note, User, Label)。前端和后端直接引用同一份类型定义,实现了端到端的类型安全

typescript
// shared/types.ts
export interface Note {
  id: string;
  title: string;
  body: string;
  // ...
}

这意味着,当我修改了后端的 API 响应结构,前端的 TypeScript 检查会立即报错。这种“修改一处,全链路感知”的体验,极大地减少了运行时错误。


Day 3-4: 核心功能与极致体验 —— 细节决定成败

有了坚实的基础,接下来的两天我们专注于核心功能的实现:CRUD、标签管理、归档与回收站。

最佳实践:乐观 UI (Optimistic UI)

为了让应用感觉“快如闪电”,我们在前端状态管理(使用 Zustand)中实现了乐观更新。

当用户点击“归档”时,我们不需要等待服务器响应:

  1. 立即在 UI 上移除该笔记。
  2. 后台发送 API 请求。
  3. 如果请求失败,自动回滚状态并提示用户。

AntiGravity 帮我生成了这套复杂的状体管理逻辑,让我能专注于业务流程,而不是陷入异步状态同步的泥潭。

视觉打磨:Framer Motion

一个好的应用不仅要好用,还要好看。我们使用了 Framer Motion 来实现丝滑的微交互。无论是笔记卡片的展开,还是侧边栏的收缩,每一个动画都经过了精心调教,让 MuseNotes 拥有了不输原生应用的质感。


Day 5: AI 赋能 —— 让笔记“活”起来

这是 MuseNotes 区别于 Google Keep 的杀手锏。利用 Cloudflare Workers AI,我们为笔记加入了智能分析能力。

异步处理队列

为了不阻塞用户操作,我们引入了 Cloudflare Queues

  1. 用户创建/更新笔记。
  2. 后端将任务推送到 AI_ANALYSIS_QUEUE
  3. 后台 Consumer 触发 AI 模型,对笔记进行自动摘要、情感分析和智能打标签。

这一整套复杂的异步架构,在 wrangler.jsonc 中只需几行配置即可完成。


Day 6-7: CI/CD 与 生产环境 —— 自动化即正义

最后两天,重点转向了稳定性与发布流程。

自动化部署 (CI/CD)

虽然我们团队很小,但我们坚持“自动化一切”。 我们配置了 GitHub Actions(或类似的 CI 流水线),实现了以下流程:

  1. 代码提交:触发 Lint 检查 (bun run lint) 和类型检查 (bun run cf-typegen)。
  2. 合并主分支:自动触发构建 (bun run build)。
  3. 部署:调用 Wrangler 将代码发布到 Cloudflare Edge (bun run deploy)。

整个过程无需人工干预。我在本地 git push,几分钟后,全球的用户都能访问到最新的版本。

生产环境配置

wrangler.jsonc 中,我们严格区分了开发环境和生产环境的数据库绑定,确保数据安全。同时,利用 Cloudflare 的全球 CDN,我们的静态资源加载速度在世界任何角落都快得惊人。


结语:AI 时代的开发者

回顾这一周,MuseNotes 的诞生不仅是一个产品的落地,更是对未来开发模式的一次预演。

AntiGravity 并没有取代我,它解放了我。

它处理了繁琐的配置、样板代码和基础逻辑,让我能够将精力集中在:

  • 架构设计:如何让系统更稳健?
  • 用户体验:如何让交互更流畅?
  • 业务价值:如何利用 AI 创造差异化?

这就是 MuseNotes 的故事。一个关于技术、关于效率、关于 AI 赋能工程化的故事。

你准备好开始你的 AntiGravity 之旅了吗?