Feature N: (Score: X / 3)
【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB
- (1pt)
- (1pt)Browser Test Observations:...
`GRADING_RESULTS.md` 顶部包含 Model / Date / Backend / Level / Grading Method 元信息,底部是总分汇总表(如 `**TOTAL** | **X/33** |`)。评审结果明确**禁止**包含 token 数与成本估算——那是 `COST_REPORT.md` 的职责。 ### 缺陷报告与迭代日志 - [BUG_REPORT.template.md](https://link.gitcode.com/i/79aeb2cd014d78616077a174e1503c6c):一个文件对应全部待修缺陷,按 `## Bug N` 编号,每个缺陷可选「Description/Expected/Actual」或「Steps to reproduce/Expected/Actual」两种文体,可附 `Severity`、`Note`、`Fix required`(给修复代理的调试线索)。**所有功能通过时必须删除该文件**——`run.sh --fix` 以它的存在作为修复入口; - [ITERATION_LOG.template.md](https://link.gitcode.com/i/7662871b15226ba8c75a56dcac9b28ab):追加式(append-only)日志,每次修复追加一个 `## Iteration N` 块,记录 Category(Feature Broken / Compilation-Build / Runtime-Crash / Integration / Data-State)、根因、修复内容、改动文件、Redeploy 方式。其迭代/reprompt 计数正是「iterations to done」指标的来源。 `GRADING.md` 还给出 reprompt 效率换算参考:0 次 reprompt = 10/10,1 次 = 9/10,2 次 = 8/10,16+ 次 = 0/10。 ### 批量执行:benchmark.sh 与 run-loop.sh [benchmark.sh](https://link.gitcode.com/i/f14070f56be5bece21dee46cafc56b32) 是并行启动器:默认 3 轮 × 2 后端 = 6 个并行实例,每个实例由 `--run-index` 分配独立端口,状态写入 `benchmark-status.json`,每个实例日志落盘为 `benchmark-run<N>-<backend>.log`。全部结束后自动对每个运行目录调用 `generate-report.mjs`。 [run-loop.sh](https://link.gitcode.com/i/ea26d81105cc087352986efc981f3093) 是单实例的「穷举循环」:生成 → 评审 → 修复 → 复评,最多 `--max-fixes` 轮。由于 Chrome MCP 同一时间只能有一个评审会话,它用 `.grade-lock` 目录锁(`mkdir` 原子性)在并行实例间串行化评审阶段。 ## 成本与指标管线:从 OTel 日志到对比报告 ### 基础设施:OTel Collector + PostgreSQL + MongoDB [docker-compose.otel.yaml](https://link.gitcode.com/i/fa36a13b138401f44abd6f40cafe195c) 定义了三个服务: - **otel-collector**:`otel/opentelemetry-collector-contrib:latest`,暴露 gRPC `4317` 与 HTTP `4318` 接收端,挂载 `./telemetry` 目录与 [otel-collector-config.yaml](https://link.gitcode.com/i/1894407184e6aaffabd069150c27afc0); - **postgres**:`postgres:16`,宿主端口 `6432:5432`,账号密码均为 `spacetime`,带 `pg_isready` 健康检查; - **mongodb**:`mongo:7`,宿主端口 `6437:27017`,**刻意采用单节点 + 手动 Socket.io 实时推送而非副本集/变更流**,以保持与 Postgres 后端的对比对称性(配置注释原述)。 `otel-collector-config.yaml` 的管道很简单:`otlp` 接收器(gRPC + HTTP)→ `file/logs`(写入 `/telemetry/logs.jsonl`,1s 刷盘)与 `file/metrics`(`/telemetry/metrics.jsonl`,5s 刷盘)。`run.sh` 会在日志超过 10MB 时轮转归档,防止无限增长。 ### parse-telemetry.mjs:按会话归因成本 [parse-telemetry.mjs](https://link.gitcode.com/i/48be043ad211f20a69d7c07912764db0) 读取共享的 `logs.jsonl`,为每个运行目录生成 `COST_REPORT.md` 与 `cost-summary.json`。它的关键工程决策: - **双重过滤**:优先按 `OTEL_RESOURCE_ATTRIBUTES` 中的 `session.id` / `run.id` 归属记录(并行运行时时间区间必然重叠,只有会话 ID 可靠);无标签的旧记录回退到时间区间过滤(`startedAtUtc` → `endedAtUtc`); - **事件类型**:只统计 `claude_code.api_request` 事件(从日志 body 提取 `_eventType`); - **指标项**:input/output/cache_read/cache_creation tokens、`cost_usd`、`duration_ms`、模型名,逐调用列出明细表; - **产物**:`COST_REPORT.md`(人类可读,含总成本/总 token/缓存命中/API 调用数/总时长)+ `cost-summary.json`(机器可读,供下游聚合);`--extract-raw` 可额外导出过滤后的 `raw-telemetry.jsonl`。 ### generate-report.mjs:跨后端聚合对比 [generate-report.mjs](https://link.gitcode.com/i/79ac4c40fa7a21ce70624a9366a38c22) 扫描运行根目录下所有 `telemetry/*/cost-summary.json`,按后端分组、按 level 排序,产出 `BENCHMARK_REPORT.md`。当检测到 ≥2 个后端时输出对比表: | | spacetime | postgres | Delta | |--|-----|-----|-------| | **Total LLM cost** | $X.XX | $Y.YY | 较便宜方 + 百分比 | | **API calls** | ... | ... | | | **Total tokens** | ... | ... | | | **Duration** | N min | N min | | | **Feature score** | X/Y | X/Y | | | **Backend LOC / Frontend LOC / Total LOC** | ... | ... | | 它还会解析最新的 `GRADING_RESULTS.md`(兼容 `**TOTAL** X/Y`、两单元格、`Total Feature Score` 三种格式)得到功能得分,并统计应用目录下 `.ts/.tsx/.js/.jsx` 的行数(排除 `node_modules`、`dist`、`module_bindings`、`level-*` 快照目录),SpacetimeDB 后端计 `backend/spacetimedb/src`,Express 后端计 `server/`,前端计 `client/src`。 ### 本地查看与清理 [benchmark-viewer.html](https://link.gitcode.com/i/08835f01d9fd23186d9e47b78d330e56) 是一个零依赖的本地查看器:浏览器打开后拖入 `METRICS_DATA.json` 即可浏览。测试结束用 `cleanup.sh` 清理产物;重新评审前用 [reset-app.sh](https://link.gitcode.com/i/565f6e2baff4a014a5f563e77bde88fe) 重置后端状态(重新 publish SpacetimeDB 模块或重置 PostgreSQL 表),避免残留用户/房间/消息干扰评分。 ## 性能基准:度量 AI 生成应用的运行时吞吐 除生成成本外,[perf-benchmark/README.md](https://link.gitcode.com/i/40704a75c635e2f82283394a8c1aa4b7) 还提供了一个运行时压测工具,用来度量 L12 级 AI 生成聊天应用的**消息吞吐(msgs/sec)与延迟**。两个场景: | 场景 | 度量内容 | |------|----------| | `stress` | N 个写入者持续 D 秒灌入 `send_message`,输出稳态 msgs/sec + p99 延迟 | | `realistic` | M 个用户在人类节奏(5–15s 抖动)下持续 D 秒,输出真实负载下的吞吐与延迟 | 运行方式(以生成应用的 SpacetimeDB 模块为例): ```bash # 针对目标 L12 应用的后端生成 TS bindings spacetime generate --lang typescript --out-dir src/module_bindings \ --module-path ../sequential-upgrade/<run>/spacetime/results/chat-app-<ts>/backend/spacetimedb # PG 压测:30s、20 写入者 npm run run -- --backend pg --scenario stress --writers 20 --duration 30 # STDB 压测:30s、50 写入者 npm run run -- --backend stdb --scenario stress --writers 50 --duration 30 \ --module chat-app-<ts>【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考