Convex
使用 Convex 作为 React 的另一半
convex -- React 的另一半,AI 时代的后端框架
我了解到 convex,源自于 2025 年初 Youtube 上许多全栈项目的教程视频开始频繁地使用 convex 来作为他们的后端框架。例如,我经常学习的 TubeGuruji 开始用 convex 来代替原来的 Drizzle + Nextjs (backend) 架构。
而最重要的是 Theo -- 我非常喜爱的一位全栈开发者,开启了 T3 Stack 的人 -- 发布了一篇视频《 Why I moved away from SQL》说明为什么他认为 convex 会是下一代 Web 应用后端的未来,甚至将其比喻为“后端的 React”。这极大引起了我的兴趣,并且他也给到了他认为 convex 很优秀的理由:
-
AI 友好:简单清晰,符合直觉的代码,非常合适 AI 阅读和使用。
-
维护好的后端框架:React Query + 后端逻辑,让开发者不用花费巨大心神操心数据的一致性,数据的获取和更新,又或者是数据库的事务。它维护好了一个高效的同步引擎,做好了优秀的后端开发者需要考虑的所有问题,做到开箱即用的后端逻辑。虽然这会带来比较大的迁移成本,因为它已经做好了轮子,但这是值得的。
-
简单的迁移:数据库的简单导入导出,同时是一个开源框架,意味着我们可以学习和自部署。
-
类型安全:作为一个优先支持 Typescript 的后端框架,它做到了原来我在 tRPC + Drizzle 才能完成的类型安全问题。
-
统一的代码管理:它会直接创建一个
/convex
文件夹来归集它的所有代码,从而做到尽可能地隔离。而迁移后端只需要复制这个文件夹,非常方便!而不是/trpc
+/db
+...
,就像我之前的项目 -
开箱即用的后端技术栈:数据库,用户认证,scheduling,文件存储,搜索,组件
当然还有其他,但这些优点,我会自己使用后亲自体会!😎
Tutorial
我会直接跟着 convex 官方的 Tutorial 制作我的第一个项目,我建议你也这么做。
这是一个简单的聊天应用,我已经完成了这个 Tutorial,如果你想看到它完成的样子的话 👇。
waitlistSawana/convex-tutorial
0
在学习 Tutorial 时,你应该关注以下内容
-
Mutation:增删改数据库
-
Query:获取数据
-
Action:创建一个函数访问外部数据,如调取第三方 API。同时保证 Convex 的同步引擎工作良好。
-
Scheduler:
ctx.scheduler
。可以把它放在 mutation 中,调用 action。这是函数实现副作用的关键函数。
AI Chat Agent
而我真正想做的是一个 AI 应用,因此我会跟着 convex 的文档做一个 AI Agent。同样,我也建议你跟着官方的文档做这个项目,convex 的教程可能会随着框架的更新而更新。
在这里,我会尝试跟着 Tutorial 完成第一个 AI Agent 应用。然后,我会尝试为这个应用添加 Advanced Feartures (工作流,RAG,文件)以及 Debugging and Tracking (调试,游乐场,跟踪 Usage,速率限制)的内容 -- 简单来说,就是把 Docs 中的 Agents 相关条目都用一遍。
我还会尝试把这里的组件整理到 CheatSheet 中,方便在新的项目中使用。
构建第一个 AI 代理
Getting Started with Agent | Convex:同样的,建议优先跟着官方的教程。除此之外,我们应该会涉及 Threads, Messages 以及 Tools
我的项目在这里👇:
waitlistSawana/convex-agent
0
如果需要参考项目,看看官方的这个:
https://github.com/get-convex/agent
教程中要求我们创建一个新的 Convex 项目,因此在这一步我会基于 Quickstart 中的 Nextjs 版来重新创建一个项目,在 convex 的 Quickstart 里可以看到官方推荐的新建项目的方法。
这里我创建了一个没有用户登录的版本,为了保持纯净。
Getting Started with Agent
参考文档 Getting Started with Agent | Convex Developer Hub 进行安装,定义 Agent 和 定制 Agent。
Threads
Threads | Convex Developer Hub
Messages
TO BE CONTINUE...
Tools
TO BE CONTINUE...
进阶功能
创建最新的 convex 应用
CheatSheet
TO BE CONTINUE...
直接写入数据库,同时获取和展示
TO BE CONTINUE...
带有副作用的数据库操作
如访问第三方 API 获取数据,
TO BE CONTINUE...
建议阅读的文档
Best Practices | Convex: This is a list of best practices and common anti-patterns around using Convex. We recommend going through this list before broadly releasing your app to production. You may choose to try using all of these best practices from the start, or you may wait until you've gotten major parts of your app working before going through and adopting the best practices here.
AI Code Gen | Convex: 让 AI 来写所有的 Convex 后端代码。