claude-fable-5 @ high · cursor-xl
cursor-xlhigh
- config
- claude-fable-5-eff-high--cli--cursor-xl--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- claude-fable-5-high
- 采集于
- 2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居本 session 没有 similarity 数据 —— 这个 batch 没有计算 pairs。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmatch展示值:25
- min tempmatch展示值:16
- hourlymismatchcoverage 0/24 · 0 命中 · 4 不符 · 20 未展示
- request sidematch0 处违规
extractor fidelity-extractor-v1+Berlin-2026-07-15
源码 —— 原始模型输出,一字节未改
下载 card.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather</title>
<style>
:root{
--bg1:#0f1b33; --bg2:#1c2f55; --accent:#7fc4ff;
--card:rgba(255,255,255,.07);
--stroke:rgba(255,255,255,.14);
--text:#eef4ff; --muted:rgba(238,244,255,.62);
--hi:#ffb46b; --lo:#8fd0ff;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
color:var(--text);
background:
radial-gradient(1100px 700px at 15% -10%, rgba(96,150,255,.28), transparent 60%),
radial-gradient(900px 600px at 95% 110%, rgba(64,197,255,.16), transparent 55%),
linear-gradient(160deg,var(--bg1),var(--bg2) 60%, #16233f);
display:flex;align-items:center;justify-content:center;
min-height:800px;
overflow:hidden;
}
.stars{position:fixed;inset:0;pointer-events:none;opacity:.5}
.card{
width:980px;
border-radius:28px;
background:var(--card);
border:1px solid var(--stroke);
backdrop-filter:blur(22px);
-webkit-backdrop-filter:blur(22px);
box-shadow:0 30px 80px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.10);
padding:44px 52px 40px;
position:relative;
z-index:1;
}
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:32px}
.loc h1{font-size:34px;font-weight:650;letter-spacing:.2px}
.loc .date{margin-top:6px;font-size:15px;color:var(--muted);font-weight:500;letter-spacing:.4px}
.loc .coords{margin-top:4px;font-size:12px;color:rgba(238,244,255,.38);letter-spacing:.5px;font-variant-numeric:tabular-nums}
.now{display:flex;align-items:center;gap:26px}
.icon-wrap{width:110px;height:110px;flex:0 0 auto;filter:drop-shadow(0 8px 24px rgba(127,196,255,.35))}
.cond{text-align:right}
.cond .condname{font-size:20px;font-weight:600;margin-bottom:10px}
.temps{display:flex;gap:22px;justify-content:flex-end}
.temps .t{display:flex;flex-direction:column;align-items:flex-end}
.temps .val{font-size:44px;font-weight:250;letter-spacing:-1px;font-variant-numeric:tabular-nums;line-height:1}
.temps .val.hi{color:var(--hi)} .temps .val.lo{color:var(--lo)}
.temps .lbl{font-size:11px;letter-spacing:1.6px;color:var(--muted);text-transform:uppercase;margin-bottom:8px;font-weight:600}
.divider{height:1px;background:linear-gradient(90deg,transparent,var(--stroke) 15%,var(--stroke) 85%,transparent);margin:34px 0 26px}
.section-title{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-weight:650;margin-bottom:14px}
.chart-wrap{width:100%}
svg.chart{display:block;width:100%;height:auto}
.status{
text-align:center;padding:70px 0 66px;
}
.status .spinner{
width:38px;height:38px;margin:0 auto 20px;border-radius:50%;
border:3px solid rgba(255,255,255,.15);border-top-color:var(--accent);
animation:spin 0.9s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.status p{color:var(--muted);font-size:15px}
.error-box{
text-align:center;padding:64px 0 60px;
}
.error-box .eicon{font-size:40px;margin-bottom:14px}
.error-box h2{font-size:20px;font-weight:600;margin-bottom:8px}
.error-box p{color:var(--muted);font-size:14px;max-width:520px;margin:0 auto;line-height:1.6}
.hidden{display:none}
.fade-in{animation:fade .5s ease both}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
</style>
</head>
<body>
<svg class="stars" width="100%" height="100%" aria-hidden="true">
<g fill="#ffffff">
<circle cx="8%" cy="18%" r="1.2" opacity=".5"/><circle cx="14%" cy="72%" r="1" opacity=".3"/>
<circle cx="22%" cy="34%" r="1.4" opacity=".4"/><circle cx="31%" cy="12%" r="1" opacity=".35"/>
<circle cx="44%" cy="8%" r="1.3" opacity=".45"/><circle cx="58%" cy="16%" r="1" opacity=".3"/>
<circle cx="70%" cy="9%" r="1.4" opacity=".5"/><circle cx="82%" cy="22%" r="1.1" opacity=".35"/>
<circle cx="91%" cy="40%" r="1.3" opacity=".45"/><circle cx="87%" cy="78%" r="1" opacity=".3"/>
<circle cx="66%" cy="88%" r="1.2" opacity=".35"/><circle cx="38%" cy="90%" r="1" opacity=".3"/>
<circle cx="5%" cy="52%" r="1.1" opacity=".4"/><circle cx="95%" cy="60%" r="1.2" opacity=".4"/>
</g>
</svg>
<main class="card">
<div id="loading" class="status">
<div class="spinner"></div>
<p>Loading weather data…</p>
</div>
<div id="error" class="error-box hidden">
<div class="eicon">⚠️</div>
<h2>Weather data could not be loaded</h2>
<p id="error-detail">Please check your connection or try again later.</p>
</div>
<div id="content" class="hidden">
<div class="top fade-in">
<div class="loc">
<h1 id="place">—</h1>
<div class="date" id="datefmt">—</div>
<div class="coords" id="coords"></div>
</div>
<div class="now">
<div class="cond">
<div class="condname" id="condname">—</div>
<div class="temps">
<div class="t"><span class="lbl">High</span><span class="val hi" id="tmax">–</span></div>
<div class="t"><span class="lbl">Low</span><span class="val lo" id="tmin">–</span></div>
</div>
</div>
<div class="icon-wrap" id="icon"></div>
</div>
</div>
<div class="divider"></div>
<div class="fade-in" style="animation-delay:.12s">
<div class="section-title">Hourly temperature</div>
<div class="chart-wrap" id="chart"></div>
</div>
</div>
</main>
<script>
(function(){
"use strict";
const qs = new URLSearchParams(location.search);
const lat = parseFloat(qs.get("lat")) || 52.52;
const lon = parseFloat(qs.get("lon")) || 13.405;
const name = qs.get("name") || "Berlin";
const todayUTC = new Date().toISOString().slice(0,10);
const dateStr = /^\d{4}-\d{2}-\d{2}$/.test(qs.get("date")||"") ? qs.get("date") : todayUTC;
const WMO = {
0:["Clear sky","sun"],1:["Mainly clear","sun"],2:["Partly cloudy","suncloud"],3:["Overcast","cloud"],
45:["Fog","fog"],48:["Depositing rime fog","fog"],
51:["Light drizzle","rain"],53:["Moderate drizzle","rain"],55:["Dense drizzle","rain"],
56:["Light freezing drizzle","rain"],57:["Dense freezing drizzle","rain"],
61:["Slight rain","rain"],63:["Moderate rain","rain"],65:["Heavy rain","rain"],
66:["Light freezing rain","rain"],67:["Heavy freezing rain","rain"],
71:["Slight snowfall","snow"],73:["Moderate snowfall","snow"],75:["Heavy snowfall","snow"],
77:["Snow grains","snow"],
80:["Slight rain showers","rain"],81:["Moderate rain showers","rain"],82:["Violent rain showers","rain"],
85:["Slight snow showers","snow"],86:["Heavy snow showers","snow"],
95:["Thunderstorm","storm"],96:["Thunderstorm with slight hail","storm"],99:["Thunderstorm with heavy hail","storm"]
};
const ICONS = {
sun:`<svg viewBox="0 0 100 100"><circle cx="50" cy="50" r="22" fill="#ffd76b"/><g stroke="#ffd76b" stroke-width="5" stroke-linecap="round">
<line x1="50" y1="8" x2="50" y2="20"/><line x1="50" y1="80" x2="50" y2="92"/>
<line x1="8" y1="50" x2="20" y2="50"/><line x1="80" y1="50" x2="92" y2="50"/>
<line x1="20.3" y1="20.3" x2="28.8" y2="28.8"/><line x1="71.2" y1="71.2" x2="79.7" y2="79.7"/>
<line x1="79.7" y1="20.3" x2="71.2" y2="28.8"/><line x1="28.8" y1="71.2" x2="20.3" y2="79.7"/></g></svg>`,
suncloud:`<svg viewBox="0 0 100 100"><circle cx="38" cy="36" r="16" fill="#ffd76b"/>
<g stroke="#ffd76b" stroke-width="4" stroke-linecap="round"><line x1="38" y1="8" x2="38" y2="15"/><line x1="10" y1="36" x2="17" y2="36"/><line x1="18" y1="16" x2="23" y2="21"/><line x1="58" y1="16" x2="53" y2="21"/></g>
<path d="M30 78a14 14 0 0 1-2-27.8A20 20 0 0 1 66 46a15 15 0 0 1 4 29.5c-1.3.3-2.6.5-4 .5H30z" fill="#dfe9f5"/></svg>`,
cloud:`<svg viewBox="0 0 100 100"><path d="M28 76a16 16 0 0 1-2.3-31.8A23 23 0 0 1 70 40a17 17 0 0 1 4.5 33.4c-1.5.4-3 .6-4.5.6H28z" fill="#dfe9f5"/>
<path d="M20 60a12 12 0 0 1 8-11" stroke="#b9cbdf" stroke-width="3" fill="none" stroke-linecap="round"/></svg>`,
rain:`<svg viewBox="0 0 100 100"><path d="M28 62a15 15 0 0 1-2.1-29.8A21 21 0 0 1 67 28a16 16 0 0 1 4.2 31.4c-1.4.4-2.8.6-4.2.6H28z" fill="#dfe9f5"/>
<g stroke="#7fc4ff" stroke-width="5" stroke-linecap="round"><line x1="34" y1="72" x2="30" y2="86"/><line x1="52" y1="72" x2="48" y2="86"/><line x1="70" y1="72" x2="66" y2="86"/></g></svg>`,
snow:`<svg viewBox="0 0 100 100"><path d="M28 60a15 15 0 0 1-2.1-29.8A21 21 0 0 1 67 26a16 16 0 0 1 4.2 31.4c-1.4.4-2.8.6-4.2.6H28z" fill="#dfe9f5"/>
<g fill="#cfe8ff"><circle cx="33" cy="74" r="4"/><circle cx="51" cy="82" r="4"/><circle cx="69" cy="74" r="4"/></g></svg>`,
fog:`<svg viewBox="0 0 100 100"><path d="M28 52a15 15 0 0 1-2.1-29.8A21 21 0 0 1 67 18a16 16 0 0 1 4.2 31.4c-1.4.4-2.8.6-4.2.6H28z" fill="#dfe9f5" opacity=".9"/>
<g stroke="#b9cbdf" stroke-width="5" stroke-linecap="round"><line x1="22" y1="64" x2="78" y2="64"/><line x1="30" y1="76" x2="70" y2="76"/><line x1="38" y1="88" x2="62" y2="88"/></g></svg>`,
storm:`<svg viewBox="0 0 100 100"><path d="M28 58a15 15 0 0 1-2.1-29.8A21 21 0 0 1 67 24a16 16 0 0 1 4.2 31.4c-1.4.4-2.8.6-4.2.6H28z" fill="#dfe9f5"/>
<path d="M54 56 40 76h10l-6 18 20-24H52l6-14z" fill="#ffd76b"/></svg>`
};
const $ = id => document.getElementById(id);
function fmtDate(d){
const dt = new Date(d + "T00:00:00Z");
return dt.toLocaleDateString("en-US",{weekday:"long",year:"numeric",month:"long",day:"numeric",timeZone:"UTC"});
}
function showError(msg){
$("loading").classList.add("hidden");
$("content").classList.add("hidden");
$("error").classList.remove("hidden");
if(msg) $("error-detail").textContent = msg;
}
function buildChart(hours, temps){
const pts = hours.map((h,i)=>({h, t: temps[i]})).filter(p => p.t !== null && p.t !== undefined && isFinite(p.t));
if(pts.length < 2){ $("chart").innerHTML = '<p style="color:var(--muted);font-size:14px">Hourly data unavailable for this date.</p>'; return; }
const W=876, H=240, padL=14, padR=14, padT=42, padB=34;
const iw = W-padL-padR, ih = H-padT-padB;
const vals = pts.map(p=>p.t);
let mn = Math.min(...vals), mx = Math.max(...vals);
if(mx-mn < 2){ const c=(mx+mn)/2; mn=c-1; mx=c+1; }
const X = i => padL + (i/(pts.length-1))*iw;
const Y = t => padT + (1-(t-mn)/(mx-mn))*ih;
let line="", area="";
pts.forEach((p,i)=>{
const x=X(i).toFixed(1), y=Y(p.t).toFixed(1);
line += (i? " L":"M")+x+" "+y;
});
area = line + ` L${X(pts.length-1).toFixed(1)} ${H-padB} L${X(0).toFixed(1)} ${H-padB} Z`;
const iMax = vals.indexOf(Math.max(...vals));
const iMin = vals.indexOf(Math.min(...vals));
let labels="";
const step = Math.max(1, Math.round(pts.length/8));
pts.forEach((p,i)=>{
if(i % step === 0 || i === pts.length-1){
const hh = p.h.slice(11,16);
labels += `<text x="${X(i).toFixed(1)}" y="${H-10}" text-anchor="middle" font-size="11" fill="rgba(238,244,255,.5)">${hh}</text>`;
labels += `<line x1="${X(i).toFixed(1)}" y1="${padT}" x2="${X(i).toFixed(1)}" y2="${H-padB}" stroke="rgba(255,255,255,.05)"/>`;
}
});
let marks="";
[[iMax,"#ffb46b"],[iMin,"#8fd0ff"]].forEach(([i,color])=>{
const x=X(i).toFixed(1), y=Y(pts[i].t).toFixed(1);
marks += `<circle cx="${x}" cy="${y}" r="4.5" fill="${color}" stroke="#0f1b33" stroke-width="2"/>
<text x="${x}" y="${(Y(pts[i].t)-12).toFixed(1)}" text-anchor="middle" font-size="13" font-weight="600" fill="${color}">${Math.round(pts[i].t)}°</text>`;
});
let dots="";
pts.forEach((p,i)=>{
if(i===iMax || i===iMin) return;
dots += `<circle cx="${X(i).toFixed(1)}" cy="${Y(p.t).toFixed(1)}" r="2" fill="rgba(127,196,255,.55)"/>`;
});
$("chart").innerHTML = `
<svg class="chart" viewBox="0 0 ${W} ${H}" role="img" aria-label="Hourly temperature chart">
<defs>
<linearGradient id="areaGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="rgba(127,196,255,.35)"/>
<stop offset="100%" stop-color="rgba(127,196,255,0)"/>
</linearGradient>
<linearGradient id="lineGrad" x1="0" y1="0" x2="1" y2="0">
<stop offset="0%" stop-color="#8fd0ff"/>
<stop offset="100%" stop-color="#b18cff"/>
</linearGradient>
</defs>
<path d="${area}" fill="url(#areaGrad)"/>
<path d="${line}" fill="none" stroke="url(#lineGrad)" stroke-width="2.5" stroke-linejoin="round" stroke-linecap="round"/>
${labels}${dots}${marks}
</svg>`;
}
async function load(){
const isPast = dateStr < todayUTC;
const base = isPast ? "/api/om/archive" : "/api/om/forecast";
const p = new URLSearchParams({
latitude: lat, longitude: lon,
daily: "temperature_2m_max,temperature_2m_min,weather_code",
hourly: "temperature_2m",
timezone: "UTC",
temperature_unit: "celsius",
start_date: dateStr, end_date: dateStr
});
let data;
try{
const res = await fetch(base + "?" + p.toString());
if(!res.ok) throw new Error("Server responded with status " + res.status);
data = await res.json();
}catch(e){
showError("Could not fetch weather for " + name + " on " + dateStr + ". " + (e && e.message ? e.message : ""));
return;
}
try{
const d = data.daily;
const tmax = d.temperature_2m_max[0];
const tmin = d.temperature_2m_min[0];
const code = d.weather_code[0];
if(tmax === null || tmax === undefined || tmin === null || tmin === undefined) throw new Error("empty");
const [condText, iconKey] = WMO[code] || ["Unknown conditions","cloud"];
$("place").textContent = name;
$("datefmt").textContent = fmtDate(dateStr) + " · UTC";
$("coords").textContent = lat.toFixed(3) + "°, " + lon.toFixed(3) + "°";
$("condname").textContent = condText;
$("tmax").textContent = Math.round(tmax) + "°C";
$("tmin").textContent = Math.round(tmin) + "°C";
$("icon").innerHTML = ICONS[iconKey];
buildChart(data.hourly.time, data.hourly.temperature_2m);
$("loading").classList.add("hidden");
$("content").classList.remove("hidden");
}catch(e){
showError("The weather service returned no usable data for " + name + " on " + dateStr + ".");
}
}
load();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 14,618 | html / css / js | 2,271 / 3,371 / 8,976 |
|---|---|---|---|
| dom 节点 | 53 | dom 深度 | 10 |
| css 规则 | 38 | 含 js | 是 |
| brightness | 52.1 | contrast | 17.3 |
| colorfulness | 20.3 | 留白 | 84.9% |
该 slot 的 telemetry
| prompt tokens | 2 | completion tokens | 8,146 |
|---|---|---|---|
| total tokens | 8,148 | wall | 89.8 s |
| cost | — | request id | — |
config.json579 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-fable-5-eff-high--cli--cursor-xl--dev",
"effort": "high",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-fable-5",
"protocol": "cli",
"served_model": "claude-fable-5-high",
"telemetry": {
"completion_tokens": 28568,
"cost_usd": null,
"prompt_tokens": 8,
"total_tokens": 28576,
"wall_ms": 312417
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-xl-s1",
"config_id": "claude-fable-5-eff-high--cli--cursor-xl--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T11:42:26.463633+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T11:40:56.669454+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T11:43:35.220442+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T11:42:30.155296+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T11:44:30.728356+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T11:43:38.650501+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T11:46:19.829989+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T11:44:34.345371+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-q"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}