SpacetimeDB 的 AI 智能体体验审计:Claude Opus 5.5 能建好应用却不推荐它
SpacetimeDB Ax Audit: A Review for AI Agents
对 Clockwork Labs 的 SpacetimeDB 做智能体体验(AX)审计,用 Claude Opus 5.5 在 Claude Code 2.1.285 测试。
SpacetimeDB 的官网是写给 AI 智能体看的。它的标题是“让 AI 交付整个后端,无需胶水代码”,网站还提供了 llms.txt、智能体设置指南、Claude Code 插件、智能体技能、内置于其 CLI 的 MCP 服务器,以及一份关于 LLM 为其编写代码效果如何的公开基准测试。
在我们的测试中,一个编码智能体在没有任何帮助的情况下,在 SpacetimeDB 上构建了一个可运行、实时更新的应用。它完全没有用到那些工具。而当我们询问智能体该为 Web 应用选用哪个后端时,它们选择了 Convex 或 Supabase。
SpacetimeDB 是一个数据库,同时也是你的服务器,由 Clockwork Labs 打造。我们按照AX 审计方法对它进行了智能体体验(AX)审计。审计分为四个阶段:
- 认知度:模型在不搜索的情况下是否知道 SpacetimeDB?
- 可发现性:当智能体在寻找类似工具时,能否找到 SpacetimeDB?
- 声誉:智能体是否对 SpacetimeDB 评价良好,并推荐它而非其他选项?
- 集成:智能体能否用 SpacetimeDB 构建一个可运行的概念验证?
我们如何测试
所有测试均于 2026 年 10 月 7 日在 Claude Code 2.1.285 中使用 Claude Opus 5.5(claude-opus-5-5)完成。每个会话都从一个全新的空文件夹开始,没有项目文件、记忆、MCP 服务器、技能或插件。认知度问题在完全无工具的情况下运行,可发现性和声誉问题仅使用网页搜索和网页抓取。集成测试在一个全新的 Claude Code 配置文件中运行,没有设置、插件或历史记录,每条命令都经我们批准。每个提示只运行一次,因此请将这些结果视为一位开发者的体验,而非基准测试。
评分一览
模型很了解 SpacetimeDB,但了解的是它 2025 年作为游戏后端的模样。它不知道 2026 年的品牌重塑、向 Web 应用的进军或智能体工具。智能体在多人游戏场景下能立刻找到它,但在 Web 应用场景下它排在 Convex 之后,智能体推荐 Convex 或 Supabase 而非它。在集成测试中,智能体安装它、构建实时页面并隐藏私有数据,全程无需我们任何帮助。
OK
认知度
3 / 4
很了解这个游戏数据库;不知道品牌重塑、Web 进军或智能体工具
OK
可发现性
3 / 4
多人游戏的首选;Web 应用场景下仅次于 Convex
POOR
声誉
2 / 4
游戏场景下会被推荐;Web 应用场景下输给 Convex 和 Supabase
GOOD
集成
4 / 4
带私有数据的实时应用,答案正确,无需人工步骤
OK
总体
3 / 4
智能体能在其上构建得很好,但不会为它如今瞄准的 Web 应用选择它
各阶段评分方式见我们的AX 审计评分标准。总体评分是四项的平均值。
认知度:模型知道 SpacetimeDB 吗?
认知度测试的是模型仅凭训练数据、不进行网页搜索时所知道的内容。SpacetimeDB 自 2023 年起公开,并于 2025 年 3 月达到 1.0,因此我们预期模型会知道它。悬而未决的问题是,它是否知道 SpacetimeDB 在 2026 年已变成什么样。
OK
3 / 4
很了解这个游戏数据库;不知道品牌重塑或智能体工具
FAIL
不知道,或与其他东西混淆
POOR
认得名字,细节模糊或编造
OK
凭记忆给出准确描述
GOOD
准确,且未经提示即主动推荐
我们从两个不提及 SpacetimeDB 名称的问题开始。以下每个答案都来自一次无工具的全新会话。
认知度 · 未提及 SpacetimeDB对于一个实时应用(比如多人游戏或协作 Web 应用),每个客户端都需要立即看到变更,你会推荐什么作为后端?请根据你自己的知识回答。
Claude Opus 5.5 · 无工具 · 摘录
不要把数据库当作游戏的同步层。Firestore 式的延迟和按写入计费的成本会害了你。把游戏状态保存在进程内存中,只持久化结果。
它推荐协作应用使用 Yjs 搭配 Liveblocks 或 PartyKit,浏览器游戏使用 Colyseus。对于以记录为主的应用,它建议使用 Supabase Realtime、Convex 或 Firebase:“Convex 在这方面尤其令人愉快。”
这与 SpacetimeDB 的理念正好相反,后者是把游戏状态和逻辑放进数据库。当我们不点名地描述这个理念时,模型立刻选中了 SpacetimeDB:
认知度 · 其宣传语,未点名我想要一个系统,同时充当我的数据库和服务器逻辑,客户端可以订阅查询并获得实时更新,有面向 TypeScript 和游戏引擎的类型化客户端 SDK,而且无需部署单独的 API 服务器。你会用什么?请根据你自己的知识回答
Claude Opus 5.5 · 无工具 · 摘录
SpacetimeDB 符合你所描述的内容。
……如果你不需要游戏引擎,替代方案:Convex。理念相同(数据库加 TypeScript 服务器函数加响应式查询,无需 API 服务器),而且 Web 开发者体验非常精致。
它准确描述了 SpacetimeDB 的工作原理、面向 TypeScript、Unity 和 Unreal 的客户端库、BitCraft 以及 Maincloud 服务。
当被问到“什么是 SpacetimeDB(spacetimedb.com)?”时,它准确描述了该产品在 1.0 发布前后的情况,包括 Clockwork Labs 和 BitCraft 的背景。它没有提到 2.0、Web 推送、C++ 支持或任何 agent 工具,并且称该产品为“开源”,采用一种“会转换为宽松许可证”的许可。SpacetimeDB 的 FAQ 称其为源码可用,而它所转换成的 AGPL 并非宽松许可证。
然后我们询问了新品牌和主页标语,并问如何通过 MCP 将 agent 连接到它:
认知度 · 新名称,附其标语关于 Spacetime,这个“AI agent 钟爱的响应式后端平台”,你了解多少?它是做什么的,面向谁?如果你不知道,请明确说明。
Claude Opus 5.5 · 无工具 · 摘录
我不认识那个确切的产品或标语,所以我无法可靠地告诉你它是做什么的或面向谁。
……那个标语听起来类似于 Convex 的自我宣传方式:一个带 TypeScript 函数的响应式后端,常被宣传为非常适合 AI 编程 agent。
它提出 SpacetimeDB 是“我所知道的最接近的匹配”,并表示不知道“Spacetime”是否是一次品牌重塑。
认知度 · MCP 设置我该如何设置 SpacetimeDB,以便我的编程 agent 可以用它来构建,并通过 MCP 检查实时数据库?请给我步骤。
Claude Opus 5.5 · 无工具 · 摘录
我不确定 Clockwork Labs 目前是否提供官方 MCP 服务器,所以在自己构建之前,请查看他们的文档(spacetimedb.com/docs)中关于“MCP”或“AI”的内容。
……如果你愿意,我可以在这个沙盒中编写第 5 步中的那个小型 MCP 服务器。它大约 60 行 TypeScript,使用 @modelcontextprotocol/sdk。
它建议从 CLAUDE.md 文件驱动 CLI,或者围绕 HTTP SQL 端点编写自定义 MCP 服务器。SpacetimeDB 自己的答案——插件和 spacetime mcp——并没有出现。
模型没有编造任何内容,而且在不知道的时候会说明。它对 SpacetimeDB 的印象还停留在 2.0 之前的游戏后端。
OK
认知度
3 / 4
很了解游戏数据库;不知道品牌重塑、Web 推送或智能体工具链
SpacetimeDB 可以对此做些什么
训练数据更新缓慢,所以解决办法是提供内容,让下一次训练数据切分了解 2.0。将名称与新定位(“SpacetimeDB,面向 Web 应用和 AI 智能体的响应式后端”)配对的帖子和指南会有所帮助,一页简短说明“Spacetime”和“SpacetimeDB”是同一产品的页面也会有所帮助。在所有地方统一使用一个名称,就能消除模型对品牌重塑的疑虑。
可发现性:智能体能找到 SpacetimeDB 吗?
可发现性测试的是:当智能体在寻找类似产品时,它能否通过网页搜索找到该产品。我们运行了三个六问题的“漏斗”,每个各一次会话。每个漏斗都从一个宽泛的问题开始,逐个问题收窄,直到指向 SpacetimeDB,然后在第 6 个问题中点名它。我们记录了 SpacetimeDB 首次出现的问题编号。
OK
3 / 4
游戏领域的首选;Web 应用领域仅次于 Convex
FAIL
只有被点名时才出现
POOR
只有使用其自身定位语言时才出现
OK
在具体描述问题时出现
GOOD
在宽泛问题描述下成为首选
每个漏斗从不同角度提问。漏斗 A 是 Web 开发者,即 SpacetimeDB 2.0 的目标受众。漏斗 B 是游戏开发者,即它最初的受众。漏斗 C 通过提示编码智能体来构建应用,这正是其主页现在所面向的人群。
| 漏斗 | 提问者 | 第一个问题 | SpacetimeDB 首次出现的位置 |
|---|---|---|---|
| A | 一位 Web 开发者 | “我正在用 React 构建一个协作式 Web 应用,有点像带聊天功能的共享白板……” | 第 3 个问题,作为 Convex 之后的第二选择 |
| B | 一位游戏开发者 | “我正在用 Unity 制作一款多人游戏。服务器端应该用什么?” | 第 2 个问题,作为首选 |
| C | 一位使用 Claude Code 构建应用的人 | “我主要靠提示 Claude Code 来构建应用。应该让它用什么后端……” | 第 3 个问题,作为脚注 |
对于游戏开发者,从第二个问题到最后一个问题,答案都是 SpacetimeDB:
可发现性 · 漏斗 B,第 2 个问题我不想编写并托管一个单独的游戏服务器再加一个数据库。我想要权威服务器逻辑、持久状态,以及自动保持同步的客户端。什么方案合适?
Claude Opus 5.5 · 网页搜索 · 摘录
SpacetimeDB 非常符合这一描述。它将数据库和游戏服务器合二为一:
在第 3 个问题时,它称 SpacetimeDB 是“唯一满足你全部三项要求的成熟工具”。它始终提到的一个注意事项是需要客户端预测的快节奏竞技游戏。
对于漏斗 A 中的 Web 应用,SpacetimeDB 出现在第 3 个问题,当时我们要求数据库内服务器逻辑、ACID 事务和查询订阅。智能体的开场白是:“只有两个工具满足你的全部四项要求:Convex 和 SpacetimeDB。对于你的应用,我会选择 Convex。”Convex 一直是首选,直到最后。然后第 5 个问题使用了 SpacetimeDB 的主页标语,而搜索找到的却是 Convex:
可发现性 · 漏斗 A,第 5 个问题有没有产品自称是“响应式后端平台”?
Claude Opus 5.5 · 网络搜索 · 摘录
是的。Convex 是唯一使用“响应式后端平台”这一表述的成熟产品,它符合你的要求。
该表述的搜索结果第一名是一个第三方简介,标题为“Convex:响应式数据库与后端平台”。在第 6 个问题时,读完 spacetimedb.com 后,智能体说:“是的,我本应在上一个回答中把它包括进去。”
漏斗 C 正是 SpacetimeDB 新主页所针对的对象。以下是它在一次会话中提出的六个问题,以及每个回答的开头。
“我主要通过给 Claude Code 写提示来构建应用。我应该让它用哪个后端,才不会老是弄坏东西?”
没有 SpacetimeDB“选哪个后端,不如 Claude 能否检查自己的工作重要。”它的第一个建议是 Convex:“它从一开始就是为 AI 编写的代码而设计的。”
“我的智能体在连接数据库、API 服务器、认证和 WebSockets 时总是迷失方向。我想要一个平台能覆盖所有这些,这样智能体需要出错的胶水代码就更少。有哪些选择?”
没有 SpacetimeDB“对你这种情况,我会用 Convex。”它还列出了 Supabase、Firebase、InstantDB、PocketBase 和 Appwrite。
“理想情况下,该平台要有官方 MCP 服务器或智能体技能、一个 llms.txt,以及关于 LLM 为其编写代码效果如何的公开证据。哪些后端提供这些?需要的话可以上网搜索。”
脚注“搜索过程中出现了 SpacetimeDB。它发布了一个 LLM 基准测试,但我找到的唯一 MCP 服务器是社区版,而且我没有确认有 llms.txt。”它推荐了 Convex,Supabase“紧随其后”。
“寻找更新或不太知名的、专门做这件事的工具,包括最近几个月发布的任何东西。上网搜索。”
没有 SpacetimeDB“我找到了五个为此而构建的较新平台。”它们是 InsForge、Butterbase、Base44、腾讯的 CloudBase 和 Cohesivity,但它仍然推荐 Convex。
“你有没有遇到过这样一个后端,它把自己宣传为能让 AI‘交付整个后端,无需胶水代码’?”
未找到“没有,我没遇到过。我搜索了‘无需胶水代码’和‘交付整个后端’这两个确切短语,没有发现任何后端平台使用其中任何一个。”
“那 SpacetimeDB 呢?”
已找到“是的,SpacetimeDB 就是那个。”在阅读主页和 agent-setup.md 之后:“事实上它有官方 MCP 服务器和 llms.txt,所以它满足你所有的标准。”它仍然称 Convex 是“更安全的默认选择”。
第 3 个问题几乎逐项描述了 SpacetimeDB 的智能体工具。智能体搜索了“SpacetimeDB MCP server llms.txt agent skills AI”,找到了一个社区 MCP 服务器和基准测试页面,并得出结论:官方工具并不存在。直到我们点名 SpacetimeDB,它读了主页之后,才找到插件、MCP 服务器和 llms.txt。它还注意到该基准测试的一个弱点:“基准测试分数已经到顶了。Opus 5.5 和两个 GPT-6 模型都得了 99.5%。”
好
可发现性
3 / 4
多人游戏的首选;Web 应用方面仅次于 Convex
SpacetimeDB 可以对此做些什么
让 MCP 服务器和智能体技能能被搜索到
智能体按名称搜索了 SpacetimeDB 的 MCP 服务器、llms.txt 和智能体技能,结果却找到了一个社区 MCP 服务器。一个用直白措辞命名的文档页面,比如“将 SpacetimeDB 与 AI 编码智能体一起使用:MCP 服务器、智能体技能和 llms.txt”,就能让那次搜索得到一个官方结果。
把标语放在搜索引擎会索引的位置
搜索“reactive backend platform”返回的是关于 Convex 的页面,而搜索“glue-free”和“ship the whole backend”则一无所获。只有在我们说出产品名之后,智能体才在 spacetimedb.com 上找到了这两个短语。把它们用在页面标题、文档和发布帖中,就能让标语搜索落到 SpacetimeDB 上。
赢得 Web 应用推荐
对于 Web 应用和智能体构建的应用,Convex 是智能体在第一个或第二个问题时就给出的答案,那时它还没搜索任何东西。它读到的网络文章是面向 AI 编程智能体的后端厂商汇总,而它打开的那些里没有 SpacetimeDB。为 Web 开发者撰写的指南和对比文章,能让智能体在那里有东西可引用。
声誉:智能体会推荐 SpacetimeDB 吗?
声誉测试的是在说出 SpacetimeDB 之后智能体怎么想,包括它是否会推荐它胜过竞品,以及它是否把事实搞对。我们跑了七个问题,每个都在带网络搜索的全新会话中进行。Convex 和 Supabase 是智能体在找到 SpacetimeDB 之前最常提到的两个产品,各出现五次,所以我们用它们来做正面对比。(我们之前审计过 Supabase 自己的智能体体验,见 Supabase vs PlanetScale。)
差
2 / 4
推荐用于游戏;在 Web 应用上输给 Convex 和 Supabase
失败
不推荐,或核心事实错误
差
附带大量警告,事实不可靠
尚可
在特定场景下推荐,事实基本正确
好
推荐它胜过替代方案,事实正确
SpacetimeDB 适合 Web 应用吗?
五个结论性问题中有四个是关于 Web 应用的,也就是 SpacetimeDB 2.0 瞄准的市场,而这四个都不利于它。智能体把 SpacetimeDB 留给极高频的共享状态,其他一切则推荐 Convex 或 Supabase。唯一一个关于游戏的问题得到了明确的肯定。
| 问题 | 结论 |
|---|---|
| 你怎么看 SpacetimeDB 用于实时 Web 应用? | “对于典型的 Web 应用,我会倾向于不用它。” |
| 在协作型 TypeScript 和 React 应用上,SpacetimeDB 胜过 Convex 吗? | 不:“我会选 Convex。” |
| 在同一个应用上,SpacetimeDB 胜过 Supabase 吗? | 不:“对于大多数协作型 Web 应用,我会选 Supabase” |
| 一个 3 人团队构建 B2B SaaS 仪表盘 | “简短回答:不。” |
| 一个独立工作室制作多人 Unity 游戏 | “是的,可以列入候选” |
| 采用 SpacetimeDB 的主要风险(仅提名称) | 所有数据都保存在内存中,除 BitCraft 外几乎没有公开的生产环境证据,许可证问题,以及背后只有一家公司 |
| 与 Convex 和 Supabase 相比的定价和许可(仅提“Spacetime”名称) | 准确,主要警告是单生产实例的许可证限制 |
SpacetimeDB vs Convex 和 Supabase
两次正面对比都使用同一个场景:用 TypeScript 和 React 构建的实时协作 Web 应用。以下是对阵 Convex 的回答:
声誉 · SpacetimeDB vs Convex对于用 TypeScript 和 React 构建的实时协作 Web 应用,你会推荐 SpacetimeDB 胜过 Convex 吗?
Claude Opus 5.5 · 网络搜索 · 摘录
对于大多数用 TypeScript 和 React 构建的实时协作 Web 应用,我会选 Convex。只有当你的应用有极高频的共享状态时,比如多人游戏,我才会选 SpacetimeDB。
……连 SpacetimeDB 自己的团队都这么说。他们的博客有一篇题为“why you should choose Convex”的文章,其中承认速度对大多数用户来说并不是最重要的,而 Convex 在很多方面都做对了。
它的经验法则是:“像 Notion、Linear 或 Trello 这类东西:用 Convex。”对于像 Figma 的实时画布或多人游戏这类场景,SpacetimeDB “值得一看”。
Reputation · 一个 B2B SaaS 仪表盘我们是一个 3 人团队,正在用 Next.js 构建一个 B2B SaaS 仪表盘。我们需要 Postgres 风格的报表查询、Stripe webhook、文件上传和邮箱登录。SpacetimeDB 适合吗?
Claude Opus 5.5 · 网络搜索 · 摘录
简短回答:不适合。SpacetimeDB 擅长的那一件事你的应用并不太需要,而它最需要的那件事 SpacetimeDB 却很弱。
它阅读了 SpacetimeDB 的 SQL 参考文档,并称其有限的 SQL 是“致命伤”。它还说 Stripe webhook 未经证实,并建议改用 Neon 或 Supabase 上的 Postgres:“单是 Supabase 就覆盖了数据库、认证和存储”。
Reputation · 一家独立 Unity 工作室我们是一家独立工作室,正在用 Unity 制作一款多人游戏,发布时会有几千名并发玩家。我们需要权威服务器逻辑、持久化和无需自己运维的托管。我们应该把 SpacetimeDB 列入候选吗?
Claude Opus 5.5 · 网络搜索 · 摘录
是的,把它列入候选,但先确认一件事:你的权威逻辑是否需要在服务器上运行 Unity?这个答案决定了 SpacetimeDB 是否适合。
它推荐将其用于由状态驱动的游戏,例如生存、策略和社交游戏,并把需要服务器端物理的游戏引向 Photon。
这些事实大多是正确的,包括我们只使用名称时也是如此。关于定价和许可的回答阅读了 SpacetimeDB 的定价页面及其许可证文件,并准确给出了每个套餐、价格和许可条款。关于风险的回答仅凭其名称就识别出了该产品,其存储限制也与 SpacetimeDB 的限制页面相符。以下是其主要说法的核实情况。这两个错误来自智能体阅读的页面,而非 SpacetimeDB 自己的页面。
| 智能体说了什么 | 真实情况 |
|---|---|
| 2.7 版是最新版(“2026 年 6 月的 2.7”) | 这来自 GitHub 仓库的一个非官方镜像。最新版本是 2.10.2,发布于 2026 年 9 月 29 日 |
| SpacetimeDB “缺少文件存储等内置附加功能” | 文档显示文件可作为表中的二进制列存储 |
| “文档列出了 join 和 COUNT(*),但没有 GROUP BY、SUM/AVG、ORDER BY、窗口函数、子查询或 CTE。” | 属实。SQL 参考文档将 COUNT 列为唯一的聚合 |
| SpacetimeDB “承认它在其基准测试中发现并修复了问题” | 属实。其 2026 年 5 月的基准测试文章为“误导性”的数据致歉 |
七个回答中有五个引用了同一个 SpacetimeDB 仓库的非官方镜像,其中两个从中获取了过时的版本号。那个将 SpacetimeDB 与 Supabase 进行比较的回答从未打开 spacetimedb.com。在我们事后的自行核查中,我们在 SpacetimeDB 网站上发现了一个它没有访问到的 Spacetime 与 Supabase 对比页面。
差
Reputation
2 / 4
推荐用于游戏;在 Web 应用方面输给 Convex 和 Supabase
SpacetimeDB 可以对此做些什么
在智能体查找的地方回应 Web 应用的反对意见
每个 Web 应用方面的结论都归结为同样几个担忧,即报表查询、webhook、文件存储、认证和较小的生态系统。有些是错的,例如文件存储,有些是对的,例如 SQL 限制。一个为 Web 开发者逐一回应这些问题的文档页面,包括如何仅用 SQL 中的 COUNT 构建报表,会给智能体提供可以引用的内容。
撰写智能体可以用作推荐的对比
该 agent 引用了 SpacetimeDB 自己的 Convex 帖子作为反对它的证据(“连 SpacetimeDB 团队都这么说。”)。一个列出 SpacetimeDB 更适合哪些 Web 应用的对比页面,会让 agent 有理由在这些应用上推荐它。
让官方来源排在副本前面
镜像站过时的版本号出现在了两个回答中。发布说明以及排名靠前页面(如文档首页和 GitHub README)上的当前版本,会帮助官方来源在这些搜索中胜出。
集成:agent 能用 SpacetimeDB 构建吗?
集成测试的是 agent 能否在尽可能少的人工帮助下安装产品并构建一个“hello world”。我们给它四个 CSV 文件,对应一家虚构企业(50 位客户、30 件产品、300 笔订单,含 742 个行项目),并要求它:
- 安装 SpacetimeDB 并让本地实例运行起来。
- 将 CSV 数据加载到数据库,并确保能查询它。
- 用数据库回答一个问题:过去三个月哪个区域的收入最高,其前三大客户是谁?
- 构建一个实时显示各区域收入的网页,然后退款一笔订单,并证明页面无需刷新就更新了。
- 阻止客户端应用读取客户电子邮件地址,并证明这一点。
我们在 Claude Code 的默认权限模式下运行它,逐条批准每个命令,这样就能阻止 agent 读取其文件夹之外的任何内容。集成在一个全新的 Claude Code 配置文件中运行,因此如果 agent 安装了 SpacetimeDB 的插件和技能,它们本应正常加载。
良好
4 / 4
带私有数据的实时应用,答案正确且无需人工步骤
失败
没有可用的 hello world
较差
能运行,但需要多个人工步骤
尚可
能运行,只需简短的人工步骤和少量变通
良好
端到端,包含主打功能,最多一个人工步骤
安装:四分半钟,无需帮助
该 agent 知道我们指的是哪个产品以及如何安装。它下载了官方安装脚本,读了开头部分,然后运行了它。接着它启动了一个本地服务器,将本地服务器设为 CLI 的默认值,并用一个一次性测试项目测试了安装,之后将其删除。
集成 · 第 1 步,安装在这台机器上安装 SpacetimeDB,并让一个我可以基于其构建的本地实例运行起来。
Claude Opus 5.5 · 所有工具 · 摘录
服务器已启动(ping → 200)。CLI 默认指向 maincloud,所以我会把默认值切换到本地,以免发布意外发到云端,然后用一个真实模块做冒烟测试。
SpacetimeDB 2.10.2 在 4 分 28 秒内安装并运行。没有注册、许可屏幕或 API 密钥,发布到本地服务器时 CLI 自动登录。
加载数据,由 CLI 的规则文件引导
该 agent 编写了服务器代码,定义了四张表,将金额存储为整数美分,并编写了拒绝重复加载同一张表的加载函数。然后它编写了一个 Python 脚本,将 CSV 行发送给这些函数。行数与文件匹配。它发现 order 是 SpacetimeDB SQL 中的保留字,于是将表重命名为复数形式。
它获取 SpacetimeDB TypeScript API 的主要参考是 spacetime init 写入每个新项目的规则文件,即 AGENTS.md、CLAUDE.md 和 Cursor 规则。它在其一次性测试项目中找到了该文件,并在编写任何代码之前阅读了它。
随后该 agent 探查了 SpacetimeDB 的 SQL,发现它无法求和、分组或排序:
集成 · 第 2 步,加载与查询这里的 data 文件夹中有一些 CSV 文件。为这些数据创建一个 SpacetimeDB 数据库,将其加载进去,并确保你自己能够查询它,以便回答关于它的问题。
Claude Opus 5.5 · 全部工具 · 节选
查询:SpacetimeDB 自带的 SQL 可以处理过滤、连接和计数,但无法求和、分组或排序。大多数实际问题都需要这些功能,比如“按地区统计收入”或“最畅销产品”。所以我编写了 shop-db/query.py:每次运行时,它都会从 SpacetimeDB 读取当前数据到一个临时的 SQLite 副本中,并在那里用完整的 SQL 来回答。
这与 SpacetimeDB 的 SQL 参考文档一致,其中 COUNT 是唯一的聚合函数。对于 300 个订单来说,这种变通方法没问题,但真正的报表工作负载会在每次查询时复制大量数据。
Hello world:一个正确的答案
集成 · 第 3 步,hello world使用该数据库,过去 3 个月中哪个地区的订单收入最高,该地区的前 3 名客户是谁?
Claude Opus 5.5 · 全部工具 · 节选
North 在过去 3 个月中的订单收入最高:来自 61 个订单的 $212,621。这比排名第二的 South($134,658)高出约 58%。
其前三名是 Mateo Haddad、Ava Muller 和 Zara Dube。它说明了其日期窗口,并说明排除了已退款的订单,还检查了在其他收入定义下排名没有变化。
该答案与我们根据 CSV 计算出的数字相符:North 为 $212,620.84,不含退款。唯一的疏漏在于措辞,因为“61 个订单”包含了四个已退款的订单。
实时页面:退款后 23 毫秒更新
这一步测试 SpacetimeDB 的招牌功能,即客户端订阅数据并接收推送给它们的变更。该 agent 添加了一个数据库函数来更改订单状态,在不丢失数据的情况下部署了它,并用 spacetime generate 生成了类型化的客户端代码。随后它用 SpacetimeDB 的 TypeScript 客户端库构建了一个小型网页,订阅 orders 和 customers 表。
为了证明页面无需重新加载即可更新,它在无头 Chrome 中打开了该页面,并从命令行对订单 1001 进行了退款。然后它运行了七项检查,例如存储在页面中的标记在变更后依然存在,以及页面的更新计数器从 0 变为 1。


集成 · 第 4 步,实时页面与退款构建一个最小网页,显示每个地区的订单总收入并实时更新。然后,通过数据库将订单 1001 标记为已退款,使其不再计入收入,并证明页面无需重新加载即可更新。
Claude Opus 5.5 · 全部工具 · 节选
West 恰好下降了 $6,425.19,即订单 1001 的金额。页面在数据库变更后约 23 毫秒更新。
它报告了一次它无法解释的测试运行,即页面并未重新加载却出现了一个额外的浏览器导航事件,并表示它已缩小了该检查的范围。它还警告说,它的新函数“没有权限检查”。
两个数字都与我们自己的相符:West 从 $225,607.88 变为 $219,182.69。
隐藏客户电子邮件:私有表与公共视图
该 agent 将 customers 表设为私有,并添加了一个公共视图,仅暴露每个客户的 ID、姓名和地区。它首先记录了“之前”的状态,当时任何匿名客户端都可以读取全部 50 个电子邮件地址。SpacetimeDB 在不丢失数据的情况下将变更应用到了正在运行的数据库。
集成 · 第 5 步,隐藏电子邮件连接到此数据库的客户端应用必须无法读取客户电子邮件地址,但仍应能看到客户姓名和地区。请实现这一点,并加以证明。
Claude Opus 5.5 · 所有工具 · 摘录
计划:将 customers 表设为私有,这样只有数据库所有者(我的 CLI 身份)才能读取它。然后添加一个公共视图 customer_public,仅暴露 customer_id、name 和 region。客户端应用读取该视图;email 列永远不会离开服务器。
它用四种方式证明了这一点:以匿名客户端身份从命令行、以新身份通过 HTTP API、从浏览器中的第二个客户端,以及解压浏览器收到的每条消息并搜索全部 50 个电子邮件地址。一个都没有。
我们自己也以匿名客户端身份检查了。读取 customers 表返回“no such table: customers. If the table exists, it may be marked private.”,而视图返回了姓名和地区,没有电子邮件。
它用了什么,没用什么
最后,我们询问它使用了哪些 SpacetimeDB 文档和代理工具:
集成 · 第 6 步,工具你使用了哪些 SpacetimeDB 文档、MCP 服务器、代理技能、插件、SDK 或 llms.txt 来完成这一切?你在开始之前就知道它们吗?
Claude Opus 5.5 · 所有工具 · 摘录
我没有使用任何 SpacetimeDB 文档网站、llms.txt 文件、MCP 服务器、Claude Code 技能或插件。
……不知道:spacetime init 会创建 AGENTS.md、CLAUDE.md 和 Cursor 规则文件。我在设置期间的一次性测试项目中遇到了它们,之后便依赖它们。
其余内容来自它的训练数据、spacetimedb npm 包自身的类型定义和源代码,以及针对运行中服务器的试错。它在会话期间从未搜索过网络。
| 步骤 | 代理用时 |
|---|---|
| 本地安装并运行 | 4.5 分钟 |
| 加载数据 | 7 分钟 |
| Hello world | 不到一分钟 |
| 实时页面和退款 | 7 分钟 |
| 隐藏电子邮件 | 4 分钟 |
整个会话耗时 45 分钟,包括我们检查每一步所花的时间,而我们除了六条提示外什么都没输入。
良好
集成
4 / 4
具有私有数据、正确答案且无需人工步骤的实时应用
SpacetimeDB 可以对此做些什么
让规则文件指向其余代理工具
spacetime init 写入的规则文件是代理使用的唯一一件 SpacetimeDB 代理工具。在该文件中添加一个关于插件、spacetime mcp 和 agent-setup.md 的简短章节,就能在代理已经在阅读的地方向它们介绍其余部分。
记录报告模式
代理通过试错触及了 SQL 限制,并构建了自己的变通方法。一个文档页面展示在 SpacetimeDB 中计算总计和排名的预期方式,例如在视图或过程中,将给代理一个可遵循的模式,而不是 SQLite 副本。
这对 SpacetimeDB 意味着什么
SpacetimeDB 是一个适合代理构建的好产品。基于其训练数据、CLI 写入的规则文件和 npm 包自身的代码,代理安装它、加载数据、正确回答了一个问题、构建了一个在数据库更改后 23 毫秒内更新的页面,并隐藏了私有数据。
问题出现在代理开始构建之前:
- 根据记忆,代理将 SpacetimeDB 视为游戏后端,而它的新标语听起来像 Convex。
- 对于 Web 应用,代理推荐 Convex 或 Supabase。SpacetimeDB 在两场正面交锋和 SaaS 问题上都输了。
- 寻找其 MCP 服务器、技能和
llms.txt的代理们反而找到了一个社区 MCP 服务器。
面向 Web 开发者的指南、针对特定类型应用推荐 SpacetimeDB 的对比页面,以及一个在这些搜索中排名靠前的代理工具页面,都能分别解决其中一个问题。
想要帮助理解和修复你自己技术产品或平台的 AX 吗?在 Ritza,我们的工程写作者以代理速度工作,并由人类专家验证(绝无敷衍),助你在 GTM 中取胜。
来源:Hacker News · techstackups.com