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

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
claude-sonnet-5 @high · cursor0.67claude-sonnet-5 @xhigh · cursor0.67claude-sonnet-5-thinking @high · cursor-xl0.66claude-sonnet-5-thinking @high · cursor0.65claude-sonnet-5-thinking @medium · cursor-xl0.65最远
qwen3.6-plus · go0.52claude-opus-4-6-thinking @high · cursor0.52claude-opus-4-6 @low · kiro0.53claude-sonnet-4-6-thinking @medium · cursor0.53deepseek-v4-pro-0812 @none · api0.53限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmismatch展示值:17
- min tempmatch展示值:16
- hourlymismatchcoverage 4/24 · 4 命中 · 3 不符 · 17 未展示
- 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=1280, initial-scale=1">
<title>Weather</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='28' fill='%23FFB84D'/%3E%3C/svg%3E">
<style>
:root {
--accent: #2F80ED;
--accent-soft: rgba(47, 128, 237, 0.16);
--bg-1: #6DD5FA;
--bg-2: #2980B9;
--bg-3: #a1c4fd;
}
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
width: 1280px;
height: 800px;
overflow: hidden;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
background: linear-gradient(135deg, var(--bg-1) 0%, var(--bg-3) 45%, var(--bg-2) 100%);
transition: background 0.8s ease;
position: relative;
color: #1c2733;
}
body.theme-clear { --bg-1:#6DD5FA; --bg-2:#2E86DE; --bg-3:#aee8ff; --accent:#1f8ce6; --accent-soft:rgba(31,140,230,0.14); }
body.theme-partly { --bg-1:#8fb8e8; --bg-2:#5578a8; --bg-3:#cfe4f7; --accent:#4c7bb5; --accent-soft:rgba(76,123,181,0.14); }
body.theme-cloudy { --bg-1:#93a5c4; --bg-2:#5a6a85; --bg-3:#c3ccdb; --accent:#5d6b83; --accent-soft:rgba(93,107,131,0.14); }
body.theme-fog { --bg-1:#b6c2c9; --bg-2:#7f8e97; --bg-3:#dfe6e9; --accent:#75828b; --accent-soft:rgba(117,130,139,0.14); }
body.theme-rain { --bg-1:#5f7fa8; --bg-2:#2c3e5c; --bg-3:#93a9c9; --accent:#3c5a82; --accent-soft:rgba(60,90,130,0.16); }
body.theme-snow { --bg-1:#c9dbe8; --bg-2:#7c93a8; --bg-3:#eef4f8; --accent:#5c7690; --accent-soft:rgba(92,118,144,0.14); }
body.theme-storm { --bg-1:#4b4f5a; --bg-2:#1c1e26; --bg-3:#767c8c; --accent:#565c6b; --accent-soft:rgba(86,92,107,0.18); }
.orb {
position: absolute;
border-radius: 50%;
filter: blur(60px);
opacity: 0.55;
pointer-events: none;
}
.orb-1 { width: 480px; height: 480px; background: var(--bg-3); top: -180px; left: -140px; }
.orb-2 { width: 380px; height: 380px; background: var(--bg-2); bottom: -160px; right: -100px; opacity: 0.4; }
.orb-3 { width: 260px; height: 260px; background: #ffffff; top: 60%; left: 62%; opacity: 0.18; }
.scene {
position: relative;
width: 1280px;
height: 800px;
display: flex;
align-items: center;
justify-content: center;
}
.card {
position: relative;
width: 1040px;
min-height: 660px;
background: rgba(255, 255, 255, 0.58);
backdrop-filter: blur(28px) saturate(160%);
-webkit-backdrop-filter: blur(28px) saturate(160%);
border-radius: 32px;
border: 1px solid rgba(255, 255, 255, 0.65);
box-shadow:
0 30px 80px rgba(20, 40, 70, 0.28),
0 2px 0 rgba(255, 255, 255, 0.6) inset;
padding: 44px 52px 40px;
display: flex;
flex-direction: column;
}
/* ---------- Loading state ---------- */
.state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
flex: 1;
min-height: 560px;
gap: 18px;
text-align: center;
}
.spinner {
width: 54px;
height: 54px;
border-radius: 50%;
border: 4px solid rgba(30, 40, 60, 0.12);
border-top-color: var(--accent);
animation: spin 0.9s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
.state p {
margin: 0;
font-size: 17px;
color: #4a5568;
letter-spacing: 0.2px;
}
.state.error h2 {
margin: 6px 0 2px;
font-size: 24px;
color: #7a2b2b;
}
.state.error p { color: #8a4a4a; max-width: 480px; }
.state.error .error-icon {
width: 60px;
height: 60px;
border-radius: 50%;
background: rgba(200, 60, 60, 0.12);
display: flex;
align-items: center;
justify-content: center;
}
[hidden] { display: none !important; }
/* ---------- Content ---------- */
.content {
display: flex;
flex-direction: column;
flex: 1;
gap: 26px;
}
.card-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.location {
display: flex;
align-items: flex-start;
gap: 12px;
flex: 1 1 auto;
min-width: 0;
}
.location svg { flex-shrink: 0; margin-top: 4px; }
.location-text { min-width: 0; }
.location h1 {
margin: 0;
font-size: 34px;
font-weight: 650;
letter-spacing: -0.5px;
color: #17202a;
line-height: 1.15;
overflow-wrap: break-word;
word-break: break-word;
}
.location p {
margin: 4px 0 0;
font-size: 16px;
color: #55606e;
font-weight: 500;
}
.condition-badge {
display: flex;
align-items: center;
gap: 8px;
background: var(--accent-soft);
color: var(--accent);
padding: 10px 18px;
border-radius: 999px;
font-size: 15px;
font-weight: 600;
white-space: nowrap;
margin-top: 4px;
flex-shrink: 0;
}
.condition-badge .dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--accent);
}
.hero {
display: flex;
align-items: center;
justify-content: space-between;
background: rgba(255, 255, 255, 0.38);
border: 1px solid rgba(255, 255, 255, 0.55);
border-radius: 24px;
padding: 30px 44px;
}
.hero-left {
display: flex;
align-items: center;
gap: 22px;
}
.weather-icon { width: 108px; height: 108px; filter: drop-shadow(0 8px 14px rgba(20,40,70,0.18)); }
.hero-left-text .condition-title {
font-size: 22px;
font-weight: 650;
color: #1c2733;
margin: 0 0 4px;
}
.hero-left-text .condition-sub {
font-size: 14px;
color: #5c6875;
margin: 0;
}
.temp-range {
display: flex;
gap: 36px;
}
.temp-block {
display: flex;
flex-direction: column;
align-items: center;
min-width: 96px;
}
.temp-block .temp-label {
font-size: 13px;
font-weight: 700;
letter-spacing: 1.2px;
text-transform: uppercase;
color: #7a8592;
margin-bottom: 6px;
}
.temp-block .temp-value {
font-size: 56px;
font-weight: 300;
color: #182230;
line-height: 1;
letter-spacing: -1px;
}
.temp-block.max .temp-value { color: #d1491f; font-weight: 500; }
.temp-block.min .temp-value { color: #1f6fd1; font-weight: 500; }
.temp-block .temp-deg { font-size: 30px; font-weight: 300; vertical-align: top; }
.temp-divider {
width: 1px;
align-self: stretch;
background: rgba(30, 40, 60, 0.14);
}
.hourly {
background: rgba(255, 255, 255, 0.30);
border: 1px solid rgba(255, 255, 255, 0.5);
border-radius: 24px;
padding: 22px 30px 14px;
flex: 1;
display: flex;
flex-direction: column;
}
.hourly h2 {
margin: 0 0 6px;
font-size: 14px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1.2px;
color: #5c6875;
}
.chart-wrap { width: 100%; flex: 1; }
.chart-wrap svg { width: 100%; height: 100%; display: block; overflow: visible; }
.hr-point-temp {
font-size: 13px;
font-weight: 700;
fill: #29323c;
}
.hr-axis-label {
font-size: 12px;
fill: #6b7684;
font-weight: 600;
}
.hr-now-label {
font-size: 11px;
font-weight: 700;
fill: #ffffff;
}
</style>
</head>
<body class="theme-clear">
<div class="scene">
<div class="orb orb-1"></div>
<div class="orb orb-2"></div>
<div class="orb orb-3"></div>
<main class="card" id="card">
<div class="state loading" id="loadingState">
<div class="spinner"></div>
<p>Loading weather…</p>
</div>
<div class="state error" id="errorState" hidden>
<div class="error-icon">
<svg width="30" height="30" viewBox="0 0 24 24" fill="none">
<path d="M12 8v5M12 16h.01" stroke="#b23c3c" stroke-width="2" stroke-linecap="round"/>
<circle cx="12" cy="12" r="9.25" stroke="#b23c3c" stroke-width="1.5"/>
</svg>
</div>
<h2>Weather data unavailable</h2>
<p id="errorDetail">We couldn't load the forecast for this location and date. Please try again later.</p>
</div>
<div class="content" id="content" hidden>
<header class="card-header">
<div class="location">
<svg width="26" height="26" viewBox="0 0 24 24" fill="none">
<path d="M12 22s7-7.58 7-13a7 7 0 1 0-14 0c0 5.42 7 13 7 13Z" fill="var(--accent)" fill-opacity="0.18" stroke="var(--accent)" stroke-width="1.6"/>
<circle cx="12" cy="9" r="2.6" fill="var(--accent)"/>
</svg>
<div class="location-text">
<h1 id="locationName">Berlin</h1>
<p id="dateLabel">Thursday, August 13, 2026</p>
</div>
</div>
<div class="condition-badge">
<span class="dot"></span>
<span id="conditionLabel">—</span>
</div>
</header>
<section class="hero">
<div class="hero-left">
<div class="weather-icon" id="weatherIcon"></div>
<div class="hero-left-text">
<p class="condition-title" id="conditionTitle">—</p>
<p class="condition-sub">Weather condition</p>
</div>
</div>
<div class="temp-range">
<div class="temp-block max">
<span class="temp-label">High</span>
<span class="temp-value"><span id="tempMax">--</span><span class="temp-deg">°</span></span>
</div>
<div class="temp-divider"></div>
<div class="temp-block min">
<span class="temp-label">Low</span>
<span class="temp-value"><span id="tempMin">--</span><span class="temp-deg">°</span></span>
</div>
</div>
</section>
<section class="hourly">
<h2>Hourly Temperature · UTC</h2>
<div class="chart-wrap">
<svg id="hourlyChart" viewBox="0 0 960 190" preserveAspectRatio="none"></svg>
</div>
</section>
</div>
</main>
</div>
<script>
(function () {
"use strict";
var WEATHER_MAP = {
0: { label: "Clear sky", icon: "sun", theme: "clear" },
1: { label: "Mainly clear", icon: "partly", theme: "clear" },
2: { label: "Partly cloudy", icon: "partly", theme: "partly" },
3: { label: "Overcast", icon: "cloud", theme: "cloudy" },
45: { label: "Fog", icon: "fog", theme: "fog" },
48: { label: "Depositing rime fog", icon: "fog", theme: "fog" },
51: { label: "Light drizzle", icon: "drizzle", theme: "rain" },
53: { label: "Moderate drizzle", icon: "drizzle", theme: "rain" },
55: { label: "Dense drizzle", icon: "drizzle", theme: "rain" },
56: { label: "Light freezing drizzle", icon: "drizzle", theme: "rain" },
57: { label: "Dense freezing drizzle", icon: "drizzle", theme: "rain" },
61: { label: "Slight rain", icon: "rain", theme: "rain" },
63: { label: "Moderate rain", icon: "rain", theme: "rain" },
65: { label: "Heavy rain", icon: "rain", theme: "rain" },
66: { label: "Light freezing rain", icon: "rain", theme: "rain" },
67: { label: "Heavy freezing rain", icon: "rain", theme: "rain" },
71: { label: "Slight snow fall", icon: "snow", theme: "snow" },
73: { label: "Moderate snow fall", icon: "snow", theme: "snow" },
75: { label: "Heavy snow fall", icon: "snow", theme: "snow" },
77: { label: "Snow grains", icon: "snow", theme: "snow" },
80: { label: "Slight rain showers", icon: "rain", theme: "rain" },
81: { label: "Moderate rain showers", icon: "rain", theme: "rain" },
82: { label: "Violent rain showers", icon: "rain", theme: "rain" },
85: { label: "Slight snow showers", icon: "snow", theme: "snow" },
86: { label: "Heavy snow showers", icon: "snow", theme: "snow" },
95: { label: "Thunderstorm", icon: "storm", theme: "storm" },
96: { label: "Thunderstorm, slight hail", icon: "storm", theme: "storm" },
99: { label: "Thunderstorm, heavy hail", icon: "storm", theme: "storm" }
};
function weatherInfo(code) {
return WEATHER_MAP[code] || { label: "Unknown", icon: "cloud", theme: "cloudy" };
}
function iconSVG(type) {
var cloud = '<path d="M34 78c-11 0-20-8.6-20-19.2 0-9.7 7.5-17.7 17.2-19 3-13 14.8-22.8 28.8-22.8 15 0 27.5 11 29.6 25.4 10.8 1.8 19.4 10.9 19.4 22.4 0 12.4-10.5 22.2-23.3 22.2H34z" fill="url(#cloudGrad)"/>';
var defs = '<defs>' +
'<linearGradient id="sunGrad" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="#FFE9A8"/><stop offset="100%" stop-color="#FFA53E"/></linearGradient>' +
'<linearGradient id="cloudGrad" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#FFFFFF"/><stop offset="100%" stop-color="#DCE6F0"/></linearGradient>' +
'</defs>';
var sunRays = '<g stroke="#FFB84D" stroke-width="4.4" stroke-linecap="round">' +
'<line x1="60" y1="4" x2="60" y2="16"/><line x1="60" y1="90" x2="60" y2="102"/>' +
'<line x1="4" y1="60" x2="16" y2="60"/><line x1="104" y1="60" x2="116" y2="60"/>' +
'<line x1="19" y1="19" x2="27.5" y2="27.5"/><line x1="92.5" y1="92.5" x2="101" y2="101"/>' +
'<line x1="19" y1="101" x2="27.5" y2="92.5"/><line x1="92.5" y1="27.5" x2="101" y2="19"/>' +
'</g><circle cx="60" cy="60" r="29" fill="url(#sunGrad)"/>';
switch (type) {
case "sun":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs + sunRays + '</svg>';
case "partly":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs +
'<g transform="translate(2,0) scale(0.62)"><g stroke="#FFB84D" stroke-width="4.4" stroke-linecap="round">' +
'<line x1="60" y1="4" x2="60" y2="16"/><line x1="4" y1="60" x2="16" y2="60"/>' +
'<line x1="19" y1="19" x2="27.5" y2="27.5"/><line x1="19" y1="101" x2="27.5" y2="92.5"/>' +
'</g><circle cx="60" cy="60" r="29" fill="url(#sunGrad)"/></g>' +
'<g transform="translate(23,34) scale(0.84)">' + cloud + '</g></svg>';
case "cloud":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs +
'<g transform="translate(-3,-2) scale(1.05)">' + cloud + '</g></svg>';
case "fog":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs +
'<g transform="translate(11,-5.5) scale(0.8)">' + cloud + '</g>' +
'<g stroke="#8FA3B5" stroke-width="5" stroke-linecap="round">' +
'<line x1="20" y1="72" x2="100" y2="72"/>' +
'<line x1="14" y1="84" x2="94" y2="84"/>' +
'<line x1="28" y1="96" x2="98" y2="96"/>' +
'</g></svg>';
case "drizzle":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs +
'<g transform="translate(11,-5.5) scale(0.8)">' + cloud + '</g>' +
'<g stroke="#4C8FE0" stroke-width="4.5" stroke-linecap="round">' +
'<line x1="38" y1="72" x2="32" y2="86"/>' +
'<line x1="60" y1="74" x2="54" y2="88"/>' +
'<line x1="82" y1="72" x2="76" y2="86"/>' +
'</g></svg>';
case "rain":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs +
'<g transform="translate(11,-5.5) scale(0.8)">' + cloud + '</g>' +
'<g stroke="#3573C4" stroke-width="5" stroke-linecap="round">' +
'<line x1="36" y1="72" x2="26" y2="94"/>' +
'<line x1="60" y1="75" x2="50" y2="97"/>' +
'<line x1="84" y1="72" x2="74" y2="94"/>' +
'</g></svg>';
case "snow":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs +
'<g transform="translate(11,-5.5) scale(0.8)">' + cloud + '</g>' +
'<g fill="#9FC6E8">' +
'<circle cx="38" cy="80" r="4.6"/><circle cx="60" cy="80" r="4.6"/><circle cx="82" cy="80" r="4.6"/>' +
'<circle cx="49" cy="96" r="4.6"/><circle cx="71" cy="96" r="4.6"/>' +
'</g></svg>';
case "storm":
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs +
'<g transform="translate(11,-5.5) scale(0.8)">' + cloud + '</g>' +
'<path d="M67 64 L49 94 L59 94 L51 116 L79 84 L64 84 Z" fill="#F5C542" stroke="#D69E14" stroke-width="1.5" stroke-linejoin="round"/>' +
'</svg>';
default:
return '<svg viewBox="0 0 120 120" width="100%" height="100%">' + defs + cloud + '</svg>';
}
}
function pad2(n) { return n < 10 ? "0" + n : "" + n; }
function todayUTC() {
var d = new Date();
return d.getUTCFullYear() + "-" + pad2(d.getUTCMonth() + 1) + "-" + pad2(d.getUTCDate());
}
function getParams() {
var qs = new URLSearchParams(window.location.search);
function str(key, fallback) {
var v = qs.get(key);
return (v === null || v.trim() === "") ? fallback : v.trim();
}
var latRaw = str("lat", "52.52");
var lonRaw = str("lon", "13.405");
var lat = parseFloat(latRaw);
var lon = parseFloat(lonRaw);
if (!isFinite(lat) || lat < -90 || lat > 90) lat = 52.52;
if (!isFinite(lon) || lon < -180 || lon > 180) lon = 13.405;
var name = str("name", "Berlin");
var dateRaw = str("date", todayUTC());
var dateMatch = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateRaw);
var date;
if (dateMatch) {
var testDate = new Date(dateRaw + "T00:00:00Z");
date = isNaN(testDate.getTime()) ? todayUTC() : dateRaw;
} else {
date = todayUTC();
}
return { lat: lat, lon: lon, name: name, date: date };
}
function formatDateLabel(dateStr) {
var d = new Date(dateStr + "T00:00:00Z");
return d.toLocaleDateString("en-US", {
weekday: "long", year: "numeric", month: "long", day: "numeric", timeZone: "UTC"
});
}
function formatHourLabel(isoStr) {
var hour = parseInt(isoStr.slice(11, 13), 10);
var suffix = hour >= 12 ? "PM" : "AM";
var h12 = hour % 12;
if (h12 === 0) h12 = 12;
return h12 + suffix;
}
function catmullRomPath(points) {
if (points.length < 2) return "";
var d = "M " + points[0].x + " " + points[0].y;
for (var i = 0; i < points.length - 1; i++) {
var p0 = points[i === 0 ? i : i - 1];
var p1 = points[i];
var p2 = points[i + 1];
var p3 = points[i + 2 < points.length ? i + 2 : i + 1];
var cp1x = p1.x + (p2.x - p0.x) / 6;
var cp1y = p1.y + (p2.y - p0.y) / 6;
var cp2x = p2.x - (p3.x - p1.x) / 6;
var cp2y = p2.y - (p3.y - p1.y) / 6;
d += " C " + cp1x + " " + cp1y + ", " + cp2x + " " + cp2y + ", " + p2.x + " " + p2.y;
}
return d;
}
function renderHourlyChart(svg, times, temps, isToday) {
var W = 960, H = 190;
var padTop = 34, padBottom = 34, padSide = 18;
var innerW = W - padSide * 2;
var innerH = H - padTop - padBottom;
var minT = Math.min.apply(null, temps);
var maxT = Math.max.apply(null, temps);
if (minT === maxT) { minT -= 1; maxT += 1; }
var range = maxT - minT;
var n = temps.length;
var points = temps.map(function (t, i) {
var x = padSide + (n === 1 ? innerW / 2 : (i / (n - 1)) * innerW);
var y = padTop + innerH - ((t - minT) / range) * innerH;
return { x: x, y: y };
});
var linePath = catmullRomPath(points);
var areaPath = linePath +
" L " + points[n - 1].x + " " + (padTop + innerH) +
" L " + points[0].x + " " + (padTop + innerH) + " Z";
var nowHour = new Date().getUTCHours();
var markup = '<defs>' +
'<linearGradient id="areaGrad" x1="0" y1="0" x2="0" y2="1">' +
'<stop offset="0%" stop-color="var(--accent)" stop-opacity="0.32"/>' +
'<stop offset="100%" stop-color="var(--accent)" stop-opacity="0"/>' +
'</linearGradient></defs>';
markup += '<path d="' + areaPath + '" fill="url(#areaGrad)"></path>';
markup += '<path d="' + linePath + '" fill="none" stroke="var(--accent)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>';
var labelStep = 3;
for (var i = 0; i < n; i++) {
var showLabel = (i % labelStep === 0) || (i === n - 1);
var isNow = isToday && parseInt(times[i].slice(11, 13), 10) === nowHour;
var r = isNow ? 6.5 : (showLabel ? 4.5 : 3);
markup += '<circle cx="' + points[i].x + '" cy="' + points[i].y + '" r="' + r +
'" fill="' + (isNow ? "var(--accent)" : "#ffffff") +
'" stroke="var(--accent)" stroke-width="' + (isNow ? 0 : 2.2) + '"></circle>';
if (isNow) {
markup += '<rect x="' + (points[i].x - 20) + '" y="' + (points[i].y - 34) +
'" width="40" height="20" rx="10" fill="var(--accent)"></rect>';
markup += '<text class="hr-now-label" x="' + points[i].x + '" y="' + (points[i].y - 20) +
'" text-anchor="middle">Now</text>';
} else if (showLabel) {
markup += '<text class="hr-point-temp" x="' + points[i].x + '" y="' + (points[i].y - 14) +
'" text-anchor="middle">' + Math.round(temps[i]) + '°</text>';
}
if (showLabel) {
markup += '<text class="hr-axis-label" x="' + points[i].x + '" y="' + (H - 8) +
'" text-anchor="middle">' + formatHourLabel(times[i]) + '</text>';
}
}
svg.innerHTML = markup;
}
function show(el) { el.hidden = false; }
function hide(el) { el.hidden = true; }
function main() {
var params = getParams();
var loadingState = document.getElementById("loadingState");
var errorState = document.getElementById("errorState");
var errorDetail = document.getElementById("errorDetail");
var content = document.getElementById("content");
var isPast = params.date < todayUTC();
var endpoint = isPast ? "/api/om/archive" : "/api/om/forecast";
var url = endpoint + "?" + new URLSearchParams({
latitude: String(params.lat),
longitude: String(params.lon),
daily: "temperature_2m_max,temperature_2m_min,weather_code",
hourly: "temperature_2m",
timezone: "UTC",
temperature_unit: "celsius",
start_date: params.date,
end_date: params.date
}).toString();
fetch(url)
.then(function (res) {
return res.json().catch(function () {
throw new Error("The server returned an invalid response.");
}).then(function (data) {
if (!res.ok || data.error) {
throw new Error(data && data.reason ? data.reason : "The weather service returned an error.");
}
return data;
});
})
.then(function (data) {
if (!data.daily || !data.daily.temperature_2m_max || !data.daily.temperature_2m_max.length ||
!data.hourly || !data.hourly.temperature_2m || !data.hourly.temperature_2m.length) {
throw new Error("No weather data is available for this date.");
}
renderContent(params, data);
hide(loadingState);
show(content);
})
.catch(function (err) {
hide(loadingState);
errorDetail.textContent = (err && err.message) ?
"We couldn't load the forecast for this location and date. (" + err.message + ")" :
"We couldn't load the forecast for this location and date.";
show(errorState);
});
}
function renderContent(params, data) {
var code = data.daily.weather_code ? data.daily.weather_code[0] : null;
var info = weatherInfo(code);
document.body.className = "theme-" + info.theme;
document.title = "Weather — " + params.name;
document.getElementById("locationName").textContent = params.name;
document.getElementById("dateLabel").textContent = formatDateLabel(params.date);
document.getElementById("conditionLabel").textContent = info.label;
document.getElementById("conditionTitle").textContent = info.label;
var tMax = data.daily.temperature_2m_max[0];
var tMin = data.daily.temperature_2m_min[0];
document.getElementById("tempMax").textContent = (tMax === null || tMax === undefined) ? "--" : Math.round(tMax);
document.getElementById("tempMin").textContent = (tMin === null || tMin === undefined) ? "--" : Math.round(tMin);
document.getElementById("weatherIcon").innerHTML = iconSVG(info.icon);
var times = data.hourly.time;
var temps = data.hourly.temperature_2m;
var isToday = params.date === todayUTC();
var svg = document.getElementById("hourlyChart");
renderHourlyChart(svg, times, temps, isToday);
}
main();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 24,913 | html / css / js | 3,192 / 6,935 / 14,786 |
|---|---|---|---|
| dom 节点 | 58 | dom 深度 | 10 |
| css 规则 | 55 | 含 js | 是 |
| brightness | 185.5 | contrast | 46.0 |
| colorfulness | 23.6 | 留白 | 55.9% |
该 slot 的 telemetry
| prompt tokens | 114 | completion tokens | 63,922 |
|---|---|---|---|
| total tokens | 64,036 | wall | 1,025.2 s |
| cost | — | request id | — |
config.json617 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-sonnet-5-thinking-eff-xhigh--cli--cursor-xl--dev",
"effort": "xhigh",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-sonnet-5-thinking",
"protocol": "cli",
"served_model": "claude-sonnet-5-thinking-xhigh",
"telemetry": {
"completion_tokens": 162870,
"cost_usd": null,
"prompt_tokens": 234,
"total_tokens": 163104,
"wall_ms": 2478698
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-xl-s0",
"config_id": "claude-sonnet-5-thinking-eff-xhigh--cli--cursor-xl--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T09:24:20.563221+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T09:21:19.105421+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-13T09:41:31.650947+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T09:24:26.495083+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-13T09:56:30.294302+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T09:41:35.161077+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T10:02:51.153896+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T09:56:34.162396+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-min"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}