一周打造 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)。前端和后端直接引用同一份类型定义,实现了端到端的类型安全。
// shared/types.ts
export interface Note {
id: string;
title: string;
body: string;
// ...
}这意味着,当我修改了后端的 API 响应结构,前端的 TypeScript 检查会立即报错。这种“修改一处,全链路感知”的体验,极大地减少了运行时错误。
Day 3-4: 核心功能与极致体验 —— 细节决定成败
有了坚实的基础,接下来的两天我们专注于核心功能的实现:CRUD、标签管理、归档与回收站。
最佳实践:乐观 UI (Optimistic UI)
为了让应用感觉“快如闪电”,我们在前端状态管理(使用 Zustand)中实现了乐观更新。
当用户点击“归档”时,我们不需要等待服务器响应:
- 立即在 UI 上移除该笔记。
- 后台发送 API 请求。
- 如果请求失败,自动回滚状态并提示用户。
AntiGravity 帮我生成了这套复杂的状体管理逻辑,让我能专注于业务流程,而不是陷入异步状态同步的泥潭。
视觉打磨:Framer Motion
一个好的应用不仅要好用,还要好看。我们使用了 Framer Motion 来实现丝滑的微交互。无论是笔记卡片的展开,还是侧边栏的收缩,每一个动画都经过了精心调教,让 MuseNotes 拥有了不输原生应用的质感。
Day 5: AI 赋能 —— 让笔记“活”起来
这是 MuseNotes 区别于 Google Keep 的杀手锏。利用 Cloudflare Workers AI,我们为笔记加入了智能分析能力。
异步处理队列
为了不阻塞用户操作,我们引入了 Cloudflare Queues。
- 用户创建/更新笔记。
- 后端将任务推送到
AI_ANALYSIS_QUEUE。 - 后台 Consumer 触发 AI 模型,对笔记进行自动摘要、情感分析和智能打标签。
这一整套复杂的异步架构,在 wrangler.jsonc 中只需几行配置即可完成。
Day 6-7: CI/CD 与 生产环境 —— 自动化即正义
最后两天,重点转向了稳定性与发布流程。
自动化部署 (CI/CD)
虽然我们团队很小,但我们坚持“自动化一切”。 我们配置了 GitHub Actions(或类似的 CI 流水线),实现了以下流程:
- 代码提交:触发 Lint 检查 (
bun run lint) 和类型检查 (bun run cf-typegen)。 - 合并主分支:自动触发构建 (
bun run build)。 - 部署:调用 Wrangler 将代码发布到 Cloudflare Edge (
bun run deploy)。
整个过程无需人工干预。我在本地 git push,几分钟后,全球的用户都能访问到最新的版本。
生产环境配置
在 wrangler.jsonc 中,我们严格区分了开发环境和生产环境的数据库绑定,确保数据安全。同时,利用 Cloudflare 的全球 CDN,我们的静态资源加载速度在世界任何角落都快得惊人。
结语:AI 时代的开发者
回顾这一周,MuseNotes 的诞生不仅是一个产品的落地,更是对未来开发模式的一次预演。
AntiGravity 并没有取代我,它解放了我。
它处理了繁琐的配置、样板代码和基础逻辑,让我能够将精力集中在:
- 架构设计:如何让系统更稳健?
- 用户体验:如何让交互更流畅?
- 业务价值:如何利用 AI 创造差异化?
这就是 MuseNotes 的故事。一个关于技术、关于效率、关于 AI 赋能工程化的故事。
你准备好开始你的 AntiGravity 之旅了吗?