尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SpacetimeDB 基准测试中的 PostgreSQL 基线:解读 paint-app 的 base_postgres.md Base Prompt 设计

SpacetimeDB 基准测试中的 PostgreSQL 基线:解读 paint-app 的 base_postgres.md Base Prompt 设计 SpacetimeDB 基准测试中的 PostgreSQL 基线解读 paint-app 的 base_postgres.md Base Prompt 设计【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB实时协作白板collaborative paint/drawing app是检验后端实时同步能力的高频压测场景高频鼠标轨迹、多人并发编辑、权限即时生效、离线缓存恢复每一项都对数据层提出严苛要求。在 SpacetimeDB 开源仓库的tools/llm-oneshot基准测试体系中base_postgres.md 正是这一场景下「传统后端对照组」的 Base Prompt——它以 PostgreSQL 为后端配合 Node.js/Express/Socket.io 手工广播方案与 SpacetimeDB 的自动客户端同步方案形成同题对照。读完本文你将完整掌握这份 Prompt 的目录约束、配置参数、组合拼接方式以及它在 llm-oneshot 评分体系中的定位与价值。一、文档定位PostgreSQL 对照组的 Base Promptbase_postgres.md是 paint-app 这一应用的两份 Base Prompt 之一。它的使命用一句话概括用 PostgreSQL 作为后端让 AI 一次性生成一个实时协作画图应用从而与另一份 base_spacetime.mdSpacetimeDB 后端形成「同一应用、两种架构」的横向对比。这一设计来自 llm-oneshot 项目 的核心目标基准测试 AI在 Cursor 等 IDE 中能否借助规则文件在单次尝试内生成并部署一个可用应用。通过让同一 AI 模型分别基于 SpacetimeDB 与 PostgreSQL 生成等价应用可以评估 SpacetimeDB 相比传统栈需要手工实现 WebSocket 广播在 AI 生成场景下的优势。二、核心配置参数逐项解析1. 应用定位文档开门见山地定义了应用形态Create me areal-time collaborative paint/drawing appusingPostgreSQL as the backend.关键词是real-time实时与collaborative协作。这决定了后续所有约束和特性都围绕多人同时在线、低延迟同步展开。2. 项目根目录与时间戳文件夹apps/paint-app/ apps/paint-app/postgres/paint-app-YYYYMMDD-HHMMSS/两条路径规则必须同时满足项目根目录固定为apps/paint-app/实际生成代码的位置是带时间戳的子目录apps/paint-app/postgres/paint-app-YYYYMMDD-HHMMSS/其中YYYYMMDD-HHMMSS按运行时刻填充例如paint-app-20260108-140000。时间戳隔离的设计意图在 llm-oneshot README 中有明确说明为了获得干净、可复现的测试结果。如果 AI 参考了以往生成的应用就无法判断成功来源于规则引导还是代码抄袭因此每次生成都必须隔离在独立时间戳目录中。3. 数据库名称Use paint-app as the database name for PostgreSQL.数据库名固定为paint-app。这与 SpacetimeDB 版使用模块名paint-app形成一一对应无论哪条技术路线应用的逻辑命名保持一致降低对比时的无关变量。4. 目录约束Constraints文档对 AI 生成行为做了严格圈定工作范围完全在时间戳文件夹内进行不得触碰任何其他既有代码仅允许创建/修改的位置apps/paint-app/postgres/paint-app-YYYYMMDD-HHMMSS/server/—— 服务端 TypeScriptapps/paint-app/postgres/paint-app-YYYYMMDD-HHMMSS/client/—— 客户端 TypeScript/React代码风格保持最小化、可读Keep it minimal and readable。这些约束与 typescript-postgres.md 语言文件 中的架构声明互相印证后者进一步把服务端明确为Node.js Express Drizzle ORM Socket.io、客户端明确为React Vite TypeScript。5. UI 要求Use SpacetimeDB brand styling (dark theme).即使后端是 PostgreSQLUI 仍要求使用SpacetimeDB 品牌风格的暗色主题。这是为了控制视觉变量两个对照组界面风格一致差异只体现在后端架构评分时不会因观感不同而引入偏差。6. 特性占位符!-- Include feature files below this line --这是整个 Base Prompt 体系中模块化组合的关键钩子。Base Prompt 只定义骨架具体功能清单由拼接进来的特性文件填充详见下一节。这种设计在 prompts/README.md 中被概括为 DRYDont Repeat Yourself原则特性只维护一份即可应用于所有语言/后端组合。三、模块化组合Base Prompt 语言文件 特性文件要真正执行base_postgres.md它并非独立使用而是与 llm-oneshot 的模块化体系配合。目录结构如下apps/paint-app/prompts/ ├── README.md # 体系说明 ├── base_postgres.md # 本文主题PostgreSQL 版 Base Prompt ├── base_spacetime.md # SpacetimeDB 版 Base Prompt ├── features/ # 16 个特性积木块01_basic.md ~ 16_keyboard_shortcuts.md ├── composed/ # 12 个预组合的累积特性 prompt01_basic.md ~ 12_full.md ├── language/ # 4 个语言/后端专用设置文件 ├── grading_checklist.md ├── grading_rubric.md └── output_instructions.md1. 语言文件补齐架构细节typescript-postgres.md 明确了本组合的技术栈后端Node.js Express Drizzle ORM Socket.io客户端React Vite TypeScript输出格式仅返回带文件头的代码块技术栈选择绝非随意Express 提供 HTTP/REST 接口Drizzle ORM 负责将画布数据落库 PostgreSQL而 Socket.io 承担 WebSocket 实时广播——这是传统实时应用的典型手工同步架构恰好是 SpacetimeDB 要替代的对象。2. 组合方式prompts/README.md 给出的拼接方式是语言文件在前、特性文件在后概念示意# 概念示意语言文件 特性 prompt 拼接 cat language/typescript-postgres.md composed/12_full.md test_prompt.md或直接在 Cursor 中引用language/typescript-postgres.md composed/12_full.md execute3. 特性级别累积式递增composed/下的 12 个级别是累积式的每个级别包含前面所有特性。各级别新增内容级别名称新增特性01basic基础绘制、实时光标02shapes形状工具03selection选择与操作04layers图层与锁定05presence在场与活动状态06comments评论与反馈07versions版本历史08permissions权限09follow跟随模式10activity活动流11sharing私有画布与共享12full画布聊天、自动清理、文本与便签、键盘快捷键以 12_full.md 为例完整特性集包括自由画笔/橡皮擦/调色板、实时光标含用户名、颜色、工具图标、颜色预览、平滑淡出、矩形/椭圆/直线/箭头、拖拽缩放与 8 个缩放手柄、图层锁定显示 Locked by [username]、离开或 5 分钟无操作自动解锁、active/idle/away 三种状态、评论图钉与线程、每 5 分钟自动快照的版本历史、viewer/editor 即时生效的权限降级可取消进行中的笔迹、跟随模式、实时活动流保留最近 100 条、私有画布共享链接、画布聊天与打字指示器、30 天不活跃自动清理、文本与便签、完整键盘快捷键映射V/B/E/R/O/L/A/T/S 等。而features/目录则把上述能力拆成 16 个更细的独立积木块如01_basic.md、02_cursor_indicators.md……16_keyboard_shortcuts.md供需要细粒度组合的场景使用。四、评分体系如何衡量 PostgreSQL 基线的表现生成结果的质量由 grading_rubric.md 统一度量每个特性0–3 分0 未实现或损坏1 部分实现且有重大问题2 大体可用但有次要缺陷3 完全可用15 个特性满分合计45 分另有 7 项「关键差异化测试」Key Differentiator Tests专门用于测量 SpacetimeDB 的相对优势实时光标平滑度是否卡顿图层锁定速度是否即时权限强制执行降级是否取消进行中的操作跟随模式同步视口跟随是否无延迟活动流延迟操作是否立即出现定时删除自动清理是否真正触发打字指示器出现/消失是否正确这些测试点的设计逻辑很清晰它们全部是传统 WebSocket 广播架构的薄弱环节正是 PostgreSQL 基线需要手工攻坚、而 SpacetimeDB 通过订阅机制天然解决的问题。五、同题对照base_postgres.md 与 base_spacetime.md 的差异将 base_postgres.md 与 base_spacetime.md 逐行对比可发现两份 Prompt 结构完全对称仅在以下三处不同项目PostgreSQL 版SpacetimeDB 版后端PostgreSQLSpacetimeDB时间戳目录postgres/paint-app-.../spacetime/paint-app-.../命名数据库名paint-app模块名paint-app服务端目录.../server/.../backend/spacetimedb/其余内容工作范围约束、仅改 server/client 的限制、暗色主题 UI 要求、特性占位符注释逐字相同。这种唯一变量设计正是对照组实验的核心要求确保评分差异可以归因于后端架构本身。六、执行路径与产物归档在 llm-oneshot 的执行流程中详见 README以 PostgreSQL 组合为例的完整链路是以tools/llm-oneshot为工作区根目录打开 Cursor确保加载.cursor/rules/将apps/paint-app/prompts/language/typescript-postgres.md与apps/paint-app/prompts/composed/12_full.md拖入对话输入执行指令如 Read all rules first... Execute these prompts.让 AI 一次性生成后端与客户端代码AI 询问部署方式时选择 Local / Cloud / Skip生成完成后按 output_instructions.md 要求输出带文件头的代码块随后进行评分并写入GRADING_RESULTS.md。归档路径遵循统一约定apps/{app-name}/{language}/{model}/{platform}/{app-name}-{YYYYMMDD-HHMMSS}/仓库中已存在实际生成样例如 paint-app-20260109-164112含backend/spacetimedb/src/index.ts、schema.ts与client/src/的 React/Vite 客户端可作参考产物结构。七、小结base_postgres.md篇幅虽短却是整套基准测试体系中不可替代的对照组锚点它以最小化的约束集时间戳目录、数据库名、目录白名单、暗色主题、特性占位符精确框定了 PostgreSQL 方案的生成边界通过与语言文件、累积特性文件、评分细则的组合把用传统数据库做实时协作的复杂度显性化。对于想了解 SpacetimeDB 差异化价值的开发者这份文档本身就是一份生动的对照实验设计——它回答了同样由 AI 生成传统栈要手工写多少 Socket.io 广播代码而 SpacetimeDB 又省掉了多少这一核心问题。【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表