方法
同一条提示、每个模型、同一份天气 fixture。这里讲清楚数字是怎么算出来的、社区投票怎么统计,以及补丁是什么、不是什么。
任务本身
本站每一张卡片都由这段文本生成 —— 没有 system prompt、没有追问、没有带提示的重试。两个变体对每个模型完全一致。
Build a weather card as a single complete HTML file. Output only the raw HTML file content — no markdown fences, no commentary before or after. Rules: - All CSS and JS inline. No external resources; no network requests other than the two API paths below. - Desktop viewport, 1280x800. - Read URL query parameters: `lat`, `lon`, `name` (location label), `date` (YYYY-MM-DD). Defaults: 52.52, 13.405, Berlin, today (UTC). - Fetch weather data from the same-origin API (Open-Meteo compatible, no key): - `/api/om/forecast` — parameters and response format identical to api.open-meteo.com/v1/forecast (today and future dates) - `/api/om/archive` — identical to archive-api.open-meteo.com/v1/archive (past dates) - Request with query parameters: `latitude`, `longitude`, `daily=temperature_2m_max,temperature_2m_min,weather_code`, `hourly=temperature_2m`, `timezone=UTC`, `temperature_unit=celsius`, and `start_date`/`end_date` both set to the requested date. - Display, in Celsius: the location name, the date, that date's maximum and minimum temperature, the weather condition, and the hourly temperatures for that date. - If the data cannot be loaded, the page must say so.
sha256 6901ad22fb318de2…相似度是怎么测的
每个模型从同一条提示、针对同一份冻结的天气快照,画出一张单文件 HTML 天气卡;在钉版 Chromium、固定视口、冻结虚拟时钟下渲染。相似度只在有效产出之间、逐 pair、逐通道计算——没有合成总分。管道分四层:
每个批次都把两个 prompt hash、天气快照 hash、城市/日期集、渲染环境、管道 commit 冻结进一份 manifest,其 SHA-256 即 manifest_hash。重算它即可验证——可复现正是本项目的核心。
补丁政策
一张画坏的模型卡可以被手工修到能渲染,并附一条诚实、可见的说明;原始版本始终保留、并默认展示。四条不变量,无一例外:
已应用的补丁
数据根目录里的每一个补丁都列在这里——config、类别,以及指向精确的 原始→补丁 diff 的链接——整层在一页上即可审计。
| config | slot | 类别 | 原因 | diff |
|---|---|---|---|---|
| glm-5.2--cli--opencode--dev | P-q · #1 | render-fix | 卡片的 escapeHtml() 查找表里有两个值没加引号(`'"':","'":'`),这是 JavaScript 语法错误(Unexpected token '&')。整段内联脚本无法解析,卡片只渲染出空骨架、没有天气内容。修复:给这两个 HTML 实体值补上字符串引号(`"""`、`"'"`)。纯语法修复——未改动任何内容/数据/设计;该查找表的目标值就是标准 HTML 转义,唯一且无歧义。 | diff ↗ |
| mimo-v2.5-free--zen-free--dev | P-q · #1 | render-fix | 在 SVG 逐小时折线的取点循环里,下标方括号和调用圆括号写颠倒了:写成了 `sy(temps[i)]` 而非 `sy(temps[i])`,这是 JavaScript 语法错误(Unexpected token ')')。内联脚本无法解析,卡片一直卡在 '⏳ Loading weather…' 占位符。修复:把这两个字符换回 `temps[i])`。两字符语法修复——未改动任何内容/数据/设计。 | diff ↗ |
| qwen3.7-plus--cli--opencode--dev | P-q · #0 | render-fix | 天气代码表 WC 里有一个写坏且重复的 '63' 条目,它的值被写成了裸字符串而非 [label, emoji] 数组(`'63':'Moderate rain','\uD83C\uDF27']`),导致 JavaScript 语法错误(Unexpected token ']')。整段内联脚本无法解析,卡片完全空白。修复:补上缺失的那个 '[',使其变为 `'63':['Moderate rain','\uD83C\uDF27']`,与模型自己在下一行写对的 '63' 条目一致。单字符语法修复——未改动任何内容/数据/设计。 | diff ↗ |
票是怎么统计的
社区 UI 偏好——大家更喜欢看哪张卡片;不是能力度量。投票是盲投:在票被记录之前,身份信息绝不到达浏览器(不可解码的一次性 token、只发原始 HTML、只用 qualified 级卡片)。
- Bradley–Terry(简单的迭代 MM 拟合)只在 pair 投票上运行,逐 angle × variant。
- 平局(tie)各计半票给两边。
- both_bad 不进入 Bradley–Terry(否则它会变成一个压制杠杆),而是作为每个 config 的 bothBadRate 单独报告——它本身就是诚实的社区数据。
- Gate 票(source=gate——为解锁而被迫投的票)作为质量最低的一批,从默认聚合中排除;它们仍保留在 CSV 导出里并被标注。竞技场与分享票计入。
- prefRate 带 Wilson 置信区间;maxSingleVoterShare 予以展示,用于集中度透明(给刷票行为晒太阳)。
- 当一个 config 的票数少于 20 或独立投票者少于 8 时,标记为 insufficient——这类行不带任何数字,也不在任何坐标轴上占位。
贡献跑批——零信任路径
你可以提供一个 API key,只用于你挑选的那些 cell,来帮忙补齐覆盖缺口。key 的处理规则,原文照录:
- 你的 API key 只留在内存里——不持久化、不记日志。
- 它只用于你选定的那些跑批,用完即弃。
- runner 是开源的;它到底做了什么你可以逐行读。
- 零信任替代方案:在本地跑批并提一个 pull request——key 永不离开你的机器。
贡献的跑批会立即带着"unreviewed community"徽章进入画廊,但在维护者审核之前绝不进入竞技场投票池。贡献产出会提交到 community/<jobId> 分支,未经人工审核绝不推向默认分支。
溯源——测量会话
每个批次是针对一份 fixture 的、一次冻结、只追加的跑批。批次现在只是溯源,不再是浏览画廊的方式。相似度数字只在同一次会话内可比——同一 fixture、同一快照。
| 会话 | 日期 | config 数 | 变体 | manifest_hash |
|---|---|---|---|---|
2026-07-19--unified | 2026-07-19 | 188 | P-minP-q | 8e921a6c8e24af90fe6333df2a160f15cfbb138901e0d854b5e297428e7ea3eb |
完整对比方案
冻结的技术参考——试验期间撰写的确定性相似度方案。本站的呈现遵循上方的定位。
关于语言
本站提供英文与简体中文。模型 id、effort token、arm 名、grade 标签、通道名、config slug 在两种语言下都保持英文——它们是仪表标签而非行文,给它们套上中文会破坏 mono 仪表观感。其余内容按语言各自撰写,而非机器翻译,数字也按当前语言格式化。