gpt-5.4 @ xhigh · cursor
cursorxhigh
- config
- gpt-5.4-eff-xhigh--cli--cursor--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- gpt-5.4-xhigh
- 采集于
- 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.3
- 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=1280, initial-scale=1.0" />
<title>Weather Card</title>
<style>
:root {
color-scheme: dark;
--bg-1: #08111c;
--bg-2: #1f3959;
--glow-a: rgba(110, 164, 255, 0.28);
--glow-b: rgba(193, 227, 255, 0.14);
--accent-1: #b8d7ff;
--accent-2: #8fbaf5;
--accent-3: #e4edf8;
--text: #f3f8ff;
--muted: rgba(232, 241, 255, 0.72);
--shadow: 0 28px 64px rgba(0, 0, 0, 0.38);
}
* {
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
body {
display: grid;
place-items: center;
overflow: hidden;
background: radial-gradient(circle at top, #14243d, #071019 56%, #04070c 100%);
font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
color: var(--text);
}
.stage {
position: relative;
width: 1280px;
height: 800px;
overflow: hidden;
background:
radial-gradient(900px 460px at 12% 6%, rgba(255, 255, 255, 0.06), transparent 62%),
linear-gradient(135deg, var(--bg-1), var(--bg-2));
transition: background 700ms ease;
}
.stage::before,
.stage::after {
content: "";
position: absolute;
border-radius: 999px;
filter: blur(8px);
pointer-events: none;
}
.stage::before {
top: -120px;
right: -80px;
width: 420px;
height: 420px;
background: radial-gradient(circle, var(--glow-a), transparent 68%);
opacity: 0.95;
animation: floatA 14s ease-in-out infinite;
}
.stage::after {
bottom: -180px;
left: -120px;
width: 520px;
height: 520px;
background: radial-gradient(circle, var(--glow-b), transparent 70%);
opacity: 0.9;
animation: floatB 18s ease-in-out infinite;
}
.mesh {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
background-size: 80px 80px;
opacity: 0.12;
mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.55), transparent 80%);
pointer-events: none;
}
.shell {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
padding: 38px;
}
.card {
position: relative;
width: 100%;
height: 100%;
padding: 34px;
display: grid;
grid-template-rows: auto 1fr;
gap: 24px;
border-radius: 36px;
background: linear-gradient(180deg, rgba(10, 18, 32, 0.74), rgba(10, 18, 32, 0.54));
border: 1px solid rgba(255, 255, 255, 0.12);
box-shadow: var(--shadow), inset 0 1px 0 rgba(255, 255, 255, 0.08);
backdrop-filter: blur(18px);
overflow: hidden;
}
.card::before {
content: "";
position: absolute;
inset: auto -120px -140px auto;
width: 360px;
height: 360px;
border-radius: 999px;
background: radial-gradient(circle, rgba(255, 255, 255, 0.06), transparent 70%);
pointer-events: none;
}
.header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18px;
}
.kicker {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.26em;
text-transform: uppercase;
color: var(--muted);
}
.location {
margin: 10px 0 10px;
font-size: 56px;
line-height: 0.96;
letter-spacing: -0.05em;
font-weight: 750;
}
.meta-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px 14px;
color: var(--muted);
font-size: 15px;
}
.separator {
width: 5px;
height: 5px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.34);
}
.header-actions {
display: flex;
gap: 10px;
}
.tag {
padding: 10px 14px;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.1);
background: linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.04));
color: var(--text);
font-size: 12px;
font-weight: 650;
letter-spacing: 0.12em;
text-transform: uppercase;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
.content-area {
min-height: 0;
display: grid;
grid-template-rows: auto 1fr;
gap: 24px;
}
.hero {
display: grid;
grid-template-columns: minmax(0, 1.25fr) 320px;
gap: 20px;
}
.panel {
border-radius: 30px;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.05));
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
.hero-visual {
position: relative;
min-height: 220px;
padding: 28px;
display: flex;
align-items: center;
gap: 24px;
overflow: hidden;
}
.hero-visual::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.04), transparent 48%);
pointer-events: none;
}
.icon-shell {
position: relative;
flex: 0 0 170px;
width: 170px;
height: 170px;
border-radius: 34px;
display: grid;
place-items: center;
background: linear-gradient(145deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.06));
border: 1px solid rgba(255, 255, 255, 0.16);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.icon-shell::before {
content: "";
position: absolute;
inset: 16px;
border-radius: 26px;
background: radial-gradient(circle at top, rgba(255, 255, 255, 0.16), transparent 60%);
pointer-events: none;
}
.icon-shell svg {
position: relative;
z-index: 1;
width: 116px;
height: 116px;
filter: drop-shadow(0 12px 22px rgba(0, 0, 0, 0.18));
}
.condition-label {
font-size: 12px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--muted);
}
.condition-name {
margin-top: 10px;
font-size: 40px;
line-height: 1;
letter-spacing: -0.04em;
font-weight: 720;
}
.condition-copy {
margin-top: 12px;
max-width: 520px;
font-size: 15px;
line-height: 1.6;
color: var(--muted);
}
.stats {
display: grid;
grid-template-rows: 1fr 1fr;
gap: 20px;
}
.stat-card {
position: relative;
overflow: hidden;
padding: 24px 24px 22px;
border-radius: 30px;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.05));
border: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
flex-direction: column;
justify-content: space-between;
}
.stat-card::before {
content: "";
position: absolute;
inset: 0;
opacity: 0.9;
pointer-events: none;
}
.stat-card.warm::before {
background: radial-gradient(circle at top right, rgba(255, 211, 110, 0.24), transparent 56%);
}
.stat-card.cool::before {
background: radial-gradient(circle at top right, rgba(124, 199, 255, 0.24), transparent 56%);
}
.stat-label {
position: relative;
z-index: 1;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--muted);
}
.stat-value {
position: relative;
z-index: 1;
display: flex;
align-items: flex-end;
gap: 8px;
}
.temp-number {
font-size: 62px;
line-height: 0.92;
letter-spacing: -0.06em;
font-weight: 780;
}
.temp-unit {
padding-bottom: 11px;
font-size: 20px;
color: var(--muted);
font-weight: 650;
}
.hourly-panel {
min-height: 0;
padding: 24px;
display: flex;
flex-direction: column;
}
.section-head {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 18px;
margin-bottom: 18px;
}
.section-title {
font-size: 21px;
line-height: 1.1;
font-weight: 700;
letter-spacing: -0.02em;
}
.section-subtitle {
margin-top: 4px;
font-size: 13px;
color: var(--muted);
}
.temp-scale {
font-size: 13px;
color: var(--muted);
white-space: nowrap;
}
.hourly-grid {
flex: 1;
min-height: 0;
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: 10px;
}
.hourly-card {
position: relative;
min-height: 116px;
padding: 12px;
border-radius: 22px;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: space-between;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.04));
border: 1px solid rgba(255, 255, 255, 0.08);
transition: transform 160ms ease, border-color 160ms ease, background 300ms ease;
}
.hourly-card:hover {
transform: translateY(-3px);
border-color: rgba(255, 255, 255, 0.18);
}
.hourly-card::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent 40%);
pointer-events: none;
}
.hourly-card::after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: calc(18% + var(--fill, 0.5) * 58%);
background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), var(--accent-1) 66%, var(--accent-2));
opacity: 0.28;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
pointer-events: none;
}
.hourly-time,
.hourly-reading {
position: relative;
z-index: 1;
}
.hourly-time {
font-size: 12px;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--muted);
}
.hourly-reading {
display: flex;
align-items: flex-end;
gap: 4px;
}
.hourly-number {
font-size: 28px;
line-height: 1;
letter-spacing: -0.04em;
font-weight: 760;
}
.hourly-unit {
padding-bottom: 3px;
font-size: 14px;
color: var(--muted);
font-weight: 650;
}
.is-loading {
opacity: 0.72;
}
.is-loading::after {
animation: pulse 1.8s ease-in-out infinite;
}
.error-panel {
min-height: 0;
display: grid;
align-content: center;
gap: 14px;
padding: 34px;
background: linear-gradient(180deg, rgba(255, 112, 112, 0.12), rgba(255, 255, 255, 0.05));
}
.error-badge {
display: inline-flex;
width: max-content;
padding: 10px 14px;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.1);
background: rgba(255, 255, 255, 0.06);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: rgba(255, 236, 236, 0.92);
}
.error-title {
margin: 0;
font-size: 36px;
line-height: 1.02;
letter-spacing: -0.04em;
}
.error-copy {
margin: 0;
max-width: 680px;
font-size: 16px;
line-height: 1.7;
color: var(--muted);
}
@keyframes pulse {
0%,
100% {
opacity: 0.18;
}
50% {
opacity: 0.34;
}
}
@keyframes floatA {
0%,
100% {
transform: translate3d(0, 0, 0);
}
50% {
transform: translate3d(-18px, 24px, 0);
}
}
@keyframes floatB {
0%,
100% {
transform: translate3d(0, 0, 0);
}
50% {
transform: translate3d(24px, -18px, 0);
}
}
</style>
</head>
<body>
<div class="stage">
<div class="mesh"></div>
<div class="shell">
<main class="card">
<header class="header">
<div>
<div class="kicker">Weather card</div>
<h1 class="location" id="locationLabel">Berlin</h1>
<div class="meta-row">
<span id="readableDate">Loading date</span>
<span class="separator"></span>
<span id="coordLabel">52.52°N / 13.405°E</span>
</div>
</div>
<div class="header-actions">
<div class="tag">UTC</div>
<div class="tag" id="sourceTag">Loading</div>
</div>
</header>
<div class="content-area" id="contentArea">
<section class="hero">
<section class="panel hero-visual">
<div class="icon-shell" id="iconWrap" aria-hidden="true"></div>
<div>
<div class="condition-label">Condition</div>
<div class="condition-name" id="conditionText">Loading weather...</div>
<div class="condition-copy" id="conditionCopy">Fetching the selected day from the local weather API.</div>
</div>
</section>
<div class="stats">
<section class="stat-card warm">
<div class="stat-label">Maximum</div>
<div class="stat-value" id="maxTemp"><span class="temp-number">--</span><span class="temp-unit">°C</span></div>
</section>
<section class="stat-card cool">
<div class="stat-label">Minimum</div>
<div class="stat-value" id="minTemp"><span class="temp-number">--</span><span class="temp-unit">°C</span></div>
</section>
</div>
</section>
<section class="panel hourly-panel">
<div class="section-head">
<div>
<div class="section-title">Hourly temperatures</div>
<div class="section-subtitle">UTC readings for the selected date</div>
</div>
<div class="temp-scale" id="tempScale">Loading hourly profile</div>
</div>
<div class="hourly-grid" id="hourlyGrid"></div>
</section>
</div>
<section class="panel error-panel" id="errorState" hidden>
<div class="error-badge">Weather unavailable</div>
<h2 class="error-title">Weather data could not be loaded.</h2>
<p class="error-copy" id="errorMessage">The page could not load weather data for the selected day.</p>
</section>
</main>
</div>
</div>
<script>
(function () {
var THEMES = {
clear: {
"--bg-1": "#08121e",
"--bg-2": "#1b416a",
"--glow-a": "rgba(255,186,84,0.34)",
"--glow-b": "rgba(96,224,255,0.18)",
"--accent-1": "#8fd2ff",
"--accent-2": "#6ef0cb",
"--accent-3": "#ffd46c"
},
clouds: {
"--bg-1": "#08111b",
"--bg-2": "#223b5f",
"--glow-a": "rgba(110,164,255,0.28)",
"--glow-b": "rgba(193,227,255,0.14)",
"--accent-1": "#b8d7ff",
"--accent-2": "#8fbaf5",
"--accent-3": "#e4edf8"
},
fog: {
"--bg-1": "#0b1117",
"--bg-2": "#2c3f4e",
"--glow-a": "rgba(200,220,236,0.22)",
"--glow-b": "rgba(138,170,193,0.14)",
"--accent-1": "#dbe7f1",
"--accent-2": "#aec5d8",
"--accent-3": "#f1f6fb"
},
rain: {
"--bg-1": "#07111d",
"--bg-2": "#173451",
"--glow-a": "rgba(68,140,255,0.28)",
"--glow-b": "rgba(87,239,214,0.16)",
"--accent-1": "#82c2ff",
"--accent-2": "#62ebd4",
"--accent-3": "#cde6ff"
},
snow: {
"--bg-1": "#0a1321",
"--bg-2": "#25466b",
"--glow-a": "rgba(171,220,255,0.26)",
"--glow-b": "rgba(245,250,255,0.16)",
"--accent-1": "#d8f0ff",
"--accent-2": "#97d5ff",
"--accent-3": "#ffffff"
},
storm: {
"--bg-1": "#0a0c1b",
"--bg-2": "#2b2d68",
"--glow-a": "rgba(143,127,255,0.30)",
"--glow-b": "rgba(79,208,255,0.14)",
"--accent-1": "#a9a7ff",
"--accent-2": "#68d7ff",
"--accent-3": "#ffe37c"
}
};
var LABELS = {
0: "Clear sky",
1: "Mainly clear",
2: "Partly cloudy",
3: "Overcast",
45: "Fog",
48: "Rime fog",
51: "Light drizzle",
53: "Drizzle",
55: "Dense drizzle",
56: "Light freezing drizzle",
57: "Dense freezing drizzle",
61: "Slight rain",
63: "Rain",
65: "Heavy rain",
66: "Light freezing rain",
67: "Heavy freezing rain",
71: "Slight snow fall",
73: "Snow fall",
75: "Heavy snow fall",
77: "Snow grains",
80: "Rain showers",
81: "Moderate rain showers",
82: "Violent rain showers",
85: "Snow showers",
86: "Heavy snow showers",
95: "Thunderstorm",
96: "Thunderstorm with hail",
99: "Severe thunderstorm with hail"
};
var defaults = {
lat: 52.52,
lon: 13.405,
name: "Berlin",
date: new Date().toISOString().slice(0, 10)
};
var params = new URLSearchParams(window.location.search);
var selected = {
lat: parseLatitude(params.get("lat"), defaults.lat),
lon: parseLongitude(params.get("lon"), defaults.lon),
name: parseName(params.get("name"), defaults.name),
date: parseDate(params.get("date"), defaults.date)
};
var todayUtc = defaults.date;
var endpoint = selected.date < todayUtc ? "/api/om/archive" : "/api/om/forecast";
var sourceLabel = endpoint === "/api/om/archive" ? "Archive" : "Forecast";
var locationLabel = document.getElementById("locationLabel");
var readableDate = document.getElementById("readableDate");
var coordLabel = document.getElementById("coordLabel");
var sourceTag = document.getElementById("sourceTag");
var iconWrap = document.getElementById("iconWrap");
var conditionText = document.getElementById("conditionText");
var conditionCopy = document.getElementById("conditionCopy");
var maxTemp = document.getElementById("maxTemp");
var minTemp = document.getElementById("minTemp");
var tempScale = document.getElementById("tempScale");
var hourlyGrid = document.getElementById("hourlyGrid");
var contentArea = document.getElementById("contentArea");
var errorState = document.getElementById("errorState");
var errorMessage = document.getElementById("errorMessage");
locationLabel.textContent = selected.name;
readableDate.textContent = formatDate(selected.date);
coordLabel.textContent = formatCoordinate(selected.lat, "lat") + " / " + formatCoordinate(selected.lon, "lon");
sourceTag.textContent = sourceLabel;
document.title = selected.name + " - Weather Card";
iconWrap.innerHTML = iconSvg("partly");
renderLoadingGrid();
loadWeather();
async function loadWeather() {
try {
var query = new URLSearchParams({
latitude: String(selected.lat),
longitude: String(selected.lon),
daily: "temperature_2m_max,temperature_2m_min,weather_code",
hourly: "temperature_2m",
timezone: "UTC",
temperature_unit: "celsius",
start_date: selected.date,
end_date: selected.date
});
var response = await fetch(endpoint + "?" + query.toString(), {
headers: {
"Accept": "application/json"
}
});
if (!response.ok) {
throw new Error("The weather service returned " + response.status + ".");
}
var data = await response.json();
if (data && (data.error === true || data.reason)) {
throw new Error(data.reason || "The weather service reported an error.");
}
var daily = readDaily(data);
var hourly = readHourly(data);
renderWeather(daily, hourly);
} catch (error) {
showError(error && error.message ? error.message : "Unable to load weather data.");
}
}
function readDaily(data) {
if (!data || !data.daily) {
throw new Error("Daily weather data is missing.");
}
var times = Array.isArray(data.daily.time) ? data.daily.time : [];
var maxes = Array.isArray(data.daily.temperature_2m_max) ? data.daily.temperature_2m_max : [];
var mins = Array.isArray(data.daily.temperature_2m_min) ? data.daily.temperature_2m_min : [];
var codes = Array.isArray(data.daily.weather_code) ? data.daily.weather_code : [];
var index = times.indexOf(selected.date);
if (index < 0) {
throw new Error("The requested date was not returned by the weather service.");
}
var max = Number(maxes[index]);
var min = Number(mins[index]);
var code = Number(codes[index]);
if (!Number.isFinite(max) || !Number.isFinite(min) || !Number.isFinite(code)) {
throw new Error("The daily weather summary is incomplete.");
}
return {
max: max,
min: min,
code: code
};
}
function readHourly(data) {
if (!data || !data.hourly) {
throw new Error("Hourly weather data is missing.");
}
var times = Array.isArray(data.hourly.time) ? data.hourly.time : [];
var temps = Array.isArray(data.hourly.temperature_2m) ? data.hourly.temperature_2m : [];
var count = Math.min(times.length, temps.length);
var hourly = [];
for (var i = 0; i < count; i++) {
if (typeof times[i] !== "string") {
continue;
}
if (times[i].slice(0, 10) !== selected.date) {
continue;
}
var temp = Number(temps[i]);
if (!Number.isFinite(temp)) {
continue;
}
hourly.push({
time: times[i].slice(11, 16),
temp: temp
});
}
if (!hourly.length) {
throw new Error("No hourly temperatures were returned for the requested date.");
}
return hourly;
}
function renderWeather(daily, hourly) {
var condition = describeCondition(daily.code);
applyTheme(condition.theme);
iconWrap.innerHTML = iconSvg(condition.icon);
conditionText.textContent = condition.label;
conditionCopy.textContent = condition.detail + " High " + formatTempText(daily.max) + " and low " + formatTempText(daily.min) + ".";
maxTemp.innerHTML = statTempHtml(daily.max);
minTemp.innerHTML = statTempHtml(daily.min);
tempScale.textContent = buildRangeText(hourly);
hourlyGrid.innerHTML = buildHourlyHtml(hourly);
contentArea.hidden = false;
errorState.hidden = true;
sourceTag.textContent = sourceLabel;
}
function renderLoadingGrid() {
var html = "";
for (var i = 0; i < 24; i++) {
var label = String(i).padStart(2, "0") + ":00";
html += '<article class="hourly-card is-loading" style="--fill:0.52" aria-hidden="true">' +
'<div class="hourly-time">' + label + '</div>' +
'<div class="hourly-reading"><span class="hourly-number">--</span><span class="hourly-unit">°C</span></div>' +
"</article>";
}
hourlyGrid.innerHTML = html;
}
function showError(message) {
contentArea.hidden = true;
errorState.hidden = false;
sourceTag.textContent = "Unavailable";
errorMessage.textContent = "The page could not load weather data for the selected day. " + message;
}
function buildRangeText(hourly) {
var values = hourly.map(function (point) { return point.temp; });
var min = Math.min.apply(null, values);
var max = Math.max.apply(null, values);
return "Range " + formatTempText(min) + " to " + formatTempText(max);
}
function buildHourlyHtml(hourly) {
var values = hourly.map(function (point) { return point.temp; });
var min = Math.min.apply(null, values);
var max = Math.max.apply(null, values);
var span = max - min;
return hourly.map(function (point) {
var fill = span ? (point.temp - min) / span : 0.62;
fill = Math.max(0, Math.min(1, fill));
var reading = formatTempText(point.temp);
return '<article class="hourly-card" style="--fill:' + fill.toFixed(3) + '" aria-label="' + point.time + " " + reading + '">' +
'<div class="hourly-time">' + point.time + '</div>' +
'<div class="hourly-reading"><span class="hourly-number">' + formatTempValue(point.temp) + '</span><span class="hourly-unit">°C</span></div>' +
"</article>";
}).join("");
}
function applyTheme(themeName) {
var theme = THEMES[themeName] || THEMES.clouds;
for (var key in theme) {
if (Object.prototype.hasOwnProperty.call(theme, key)) {
document.documentElement.style.setProperty(key, theme[key]);
}
}
}
function describeCondition(code) {
var label = LABELS[code] || "Weather";
if (code === 0 || code === 1) {
return {
label: label,
icon: "clear",
theme: "clear",
detail: "Open skies keep the light crisp across the day."
};
}
if (code === 2) {
return {
label: label,
icon: "partly",
theme: "clouds",
detail: "Sun and cloud layers trade places through the day."
};
}
if (code === 3) {
return {
label: label,
icon: "cloudy",
theme: "clouds",
detail: "A thick cloud deck keeps the tone soft and muted."
};
}
if (code === 45 || code === 48) {
return {
label: label,
icon: "fog",
theme: "fog",
detail: "Haze and low cloud keep visibility subdued."
};
}
if ([51, 53, 55, 56, 57].indexOf(code) !== -1) {
return {
label: label,
icon: "drizzle",
theme: "rain",
detail: "Light precipitation adds a cool, misty feel."
};
}
if ([61, 63, 65, 66, 67, 80, 81, 82].indexOf(code) !== -1) {
return {
label: label,
icon: "rain",
theme: "rain",
detail: "Rain bands move through with a saturated, cooler atmosphere."
};
}
if ([71, 73, 75, 77, 85, 86].indexOf(code) !== -1) {
return {
label: label,
icon: "snow",
theme: "snow",
detail: "Cold air and wintry conditions shape the day."
};
}
if ([95, 96, 99].indexOf(code) !== -1) {
return {
label: label,
icon: "storm",
theme: "storm",
detail: "Active weather brings a sharper edge to the day."
};
}
return {
label: label,
icon: "cloudy",
theme: "clouds",
detail: "Weather data is available for the selected day."
};
}
function iconSvg(kind) {
var icons = {
clear: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<circle cx="64" cy="64" r="38" fill="#FFD66F" opacity="0.16"/>' +
'<circle cx="64" cy="64" r="24" fill="#FFD66F"/>' +
'<g stroke="#FFD66F" stroke-width="8" stroke-linecap="round">' +
'<path d="M64 16V30"/><path d="M64 98V112"/><path d="M16 64H30"/><path d="M98 64H112"/>' +
'<path d="M30.1 30.1L39.9 39.9"/><path d="M88.1 88.1L97.9 97.9"/><path d="M30.1 97.9L39.9 88.1"/><path d="M88.1 39.9L97.9 30.1"/>' +
"</g></svg>",
partly: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<circle cx="44" cy="40" r="18" fill="#FFD66F"/>' +
'<g stroke="#FFD66F" stroke-width="6" stroke-linecap="round">' +
'<path d="M44 12V20"/><path d="M44 60V68"/><path d="M16 40H24"/><path d="M64 40H72"/>' +
'<path d="M24 20L30 26"/><path d="M58 54L64 60"/><path d="M24 60L30 54"/><path d="M58 26L64 20"/>' +
"</g>" +
'<path d="M36 96H84C96 96 104 89 104 79C104 69 97 61 87 60C83 46 71 38 57 38C44 38 32 46 27 58C16 59 8 67 8 78C8 89 17 96 29 96H36Z" fill="#F4F8FF"/>' +
'<path d="M36 96H84C96 96 104 89 104 79" stroke="#D9E9FB" stroke-width="4" stroke-linecap="round"/>' +
"</svg>",
cloudy: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<path d="M37 96H83C97 96 106 88 106 77C106 67 99 59 88 57C85 42 72 32 56 32C42 32 30 40 25 52C14 53 6 61 6 73C6 86 16 96 29 96H37Z" fill="#ECF4FF"/>' +
'<path d="M57 90H101C111 90 118 84 118 75C118 67 112 61 103 60C100 50 92 43 82 43C70 43 61 50 57 60" fill="#D9E7F6"/>' +
'<path d="M37 96H83C97 96 106 88 106 77" stroke="#D7E5F4" stroke-width="4" stroke-linecap="round"/>' +
"</svg>",
fog: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<path d="M37 82H83C97 82 106 74 106 63C106 53 99 45 88 43C85 28 72 18 56 18C42 18 30 26 25 38C14 39 6 47 6 59C6 72 16 82 29 82H37Z" fill="#EDF4FB"/>' +
'<g stroke="#D8E4EF" stroke-width="6" stroke-linecap="round">' +
'<path d="M22 94H104"/><path d="M32 106H112"/><path d="M16 118H86"/>' +
"</g></svg>",
drizzle: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<path d="M37 82H83C97 82 106 74 106 63C106 53 99 45 88 43C85 28 72 18 56 18C42 18 30 26 25 38C14 39 6 47 6 59C6 72 16 82 29 82H37Z" fill="#EEF5FF"/>' +
'<g stroke="#7FDBFF" stroke-width="6" stroke-linecap="round">' +
'<path d="M38 94L34 104"/><path d="M64 94L60 104"/><path d="M90 94L86 104"/>' +
"</g></svg>",
rain: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<path d="M37 78H83C97 78 106 70 106 59C106 49 99 41 88 39C85 24 72 14 56 14C42 14 30 22 25 34C14 35 6 43 6 55C6 68 16 78 29 78H37Z" fill="#EEF5FF"/>' +
'<g stroke="#76D3FF" stroke-width="8" stroke-linecap="round">' +
'<path d="M34 90L28 108"/><path d="M56 90L50 108"/><path d="M78 90L72 108"/><path d="M100 90L94 108"/>' +
"</g></svg>",
snow: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<path d="M37 78H83C97 78 106 70 106 59C106 49 99 41 88 39C85 24 72 14 56 14C42 14 30 22 25 34C14 35 6 43 6 55C6 68 16 78 29 78H37Z" fill="#F4FAFF"/>' +
'<g stroke="#DDF5FF" stroke-width="4" stroke-linecap="round">' +
'<path d="M34 90V108"/><path d="M25 99H43"/><path d="M28 93L40 105"/><path d="M40 93L28 105"/>' +
'<path d="M64 90V108"/><path d="M55 99H73"/><path d="M58 93L70 105"/><path d="M70 93L58 105"/>' +
'<path d="M94 90V108"/><path d="M85 99H103"/><path d="M88 93L100 105"/><path d="M100 93L88 105"/>' +
"</g></svg>",
storm: '<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">' +
'<path d="M37 78H83C97 78 106 70 106 59C106 49 99 41 88 39C85 24 72 14 56 14C42 14 30 22 25 34C14 35 6 43 6 55C6 68 16 78 29 78H37Z" fill="#EEF3FF"/>' +
'<path d="M66 84L50 112H68L58 126L90 96H72L84 84H66Z" fill="#FFE37C"/>' +
'<g stroke="#69D4FF" stroke-width="6" stroke-linecap="round">' +
'<path d="M28 88L24 100"/><path d="M100 88L96 100"/>' +
"</g></svg>"
};
return icons[kind] || icons.cloudy;
}
function parseLatitude(value, fallback) {
var number = Number(value);
return Number.isFinite(number) && number >= -90 && number <= 90 ? number : fallback;
}
function parseLongitude(value, fallback) {
var number = Number(value);
return Number.isFinite(number) && number >= -180 && number <= 180 ? number : fallback;
}
function parseName(value, fallback) {
var text = typeof value === "string" ? value.trim() : "";
return text ? text.slice(0, 80) : fallback;
}
function parseDate(value, fallback) {
if (typeof value !== "string") {
return fallback;
}
var trimmed = value.trim();
var match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(trimmed);
if (!match) {
return fallback;
}
var year = Number(match[1]);
var month = Number(match[2]);
var day = Number(match[3]);
var date = new Date(Date.UTC(year, month - 1, day));
if (date.getUTCFullYear() !== year || date.getUTCMonth() !== month - 1 || date.getUTCDate() !== day) {
return fallback;
}
return trimmed;
}
function formatDate(isoDate) {
return new Intl.DateTimeFormat("en-US", {
weekday: "long",
month: "long",
day: "numeric",
year: "numeric",
timeZone: "UTC"
}).format(new Date(isoDate + "T00:00:00Z"));
}
function formatCoordinate(value, axis) {
var magnitude = Math.abs(value).toFixed(axis === "lat" ? 2 : 3);
var hemisphere = axis === "lat" ? (value >= 0 ? "N" : "S") : (value >= 0 ? "E" : "W");
return magnitude + "°" + hemisphere;
}
function formatTempValue(value) {
var rounded = Math.round(Number(value) * 10) / 10;
return Number.isInteger(rounded) ? rounded.toFixed(0) : rounded.toFixed(1);
}
function formatTempText(value) {
return formatTempValue(value) + "°C";
}
function statTempHtml(value) {
return '<span class="temp-number">' + formatTempValue(value) + '</span><span class="temp-unit">°C</span>';
}
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 31,327 | html / css / js | 2,877 / 10,164 / 18,286 |
|---|---|---|---|
| dom 节点 | 53 | dom 深度 | 11 |
| css 规则 | 69 | 含 js | 是 |
| brightness | 46.1 | contrast | 33.5 |
| colorfulness | 16.2 | 留白 | 69.3% |
该 slot 的 telemetry
| prompt tokens | 2,278 | completion tokens | 41,551 |
|---|---|---|---|
| total tokens | 43,829 | wall | 307.6 s |
| cost | — | request id | — |
config.json560 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.4-eff-xhigh--cli--cursor--dev",
"effort": "xhigh",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.4",
"protocol": "cli",
"served_model": "gpt-5.4-xhigh",
"telemetry": {
"completion_tokens": 93380,
"cost_usd": null,
"prompt_tokens": 36759,
"total_tokens": 130139,
"wall_ms": 786446
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-s2",
"config_id": "gpt-5.4-eff-xhigh--cli--cursor--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-12T21:24:31.120603+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T21:20:49.561746+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-12T21:29:42.708530+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T21:24:35.095431+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-12T21:33:21.888964+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T21:29:46.354267+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-12T21:34:08.437837+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T21:33:26.668932+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
}
}
}