gpt-5.1 · cursor-xl
cursor-xl
- config
- gpt-5.1--cli--cursor-xl--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- gpt-5.1
- 采集于
- 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
- hourlyambiguouscoverage · 0 命中 · 0 不符 · 24 未展示
- request sidematch0 处违规
extractor fidelity-extractor-v1+Berlin-2026-07-15
源码 —— 原始模型输出,一字节未改
下载 card.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Weather Card</title>
<meta name="viewport" content="width=1280, height=800, initial-scale=1.0">
<style>
:root {
color-scheme: dark light;
--bg-gradient-start: #050816;
--bg-gradient-end: #1b2735;
--card-bg: rgba(15, 23, 42, 0.92);
--card-border: rgba(148, 163, 184, 0.35);
--accent: #38bdf8;
--accent-soft: rgba(56, 189, 248, 0.2);
--accent-strong: rgba(56, 189, 248, 0.4);
--text-main: #e5e7eb;
--text-muted: #9ca3af;
--danger: #f97373;
--shadow-soft: 0 24px 60px rgba(15, 23, 42, 0.9);
--radius-lg: 24px;
--radius-md: 14px;
--radius-pill: 999px;
--blur-bg: 26px;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
min-height: 100vh;
margin: 0;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text",
"Segoe UI", sans-serif;
background: radial-gradient(circle at top left, #1f2937 0, transparent 40%),
radial-gradient(circle at bottom right, #0f172a 0, transparent 45%),
linear-gradient(135deg, var(--bg-gradient-start), var(--bg-gradient-end));
color: var(--text-main);
display: flex;
align-items: center;
justify-content: center;
}
.app-shell {
width: 100%;
max-width: 1280px;
height: 100vh;
max-height: 800px;
padding: 40px;
display: flex;
align-items: center;
justify-content: center;
}
.card {
position: relative;
width: 520px;
max-width: 100%;
background: radial-gradient(circle at top left, rgba(56, 189, 248, 0.16), transparent 55%),
radial-gradient(circle at bottom right, rgba(96, 165, 250, 0.12), transparent 60%),
linear-gradient(135deg, rgba(15, 23, 42, 0.96), rgba(15, 23, 42, 0.94));
border-radius: var(--radius-lg);
border: 1px solid var(--card-border);
box-shadow: var(--shadow-soft);
backdrop-filter: blur(var(--blur-bg));
-webkit-backdrop-filter: blur(var(--blur-bg));
padding: 22px 24px 20px 24px;
overflow: hidden;
display: flex;
flex-direction: column;
gap: 18px;
}
.card::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background:
linear-gradient(135deg, rgba(148, 163, 184, 0.25), transparent 45%, rgba(56, 189, 248, 0.35)),
radial-gradient(circle at top, rgba(248, 250, 252, 0.22), transparent 55%);
mix-blend-mode: soft-light;
opacity: 0.28;
}
.card-inner {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
gap: 18px;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
}
.location-group {
display: flex;
flex-direction: column;
gap: 4px;
}
.location-label {
font-size: 12px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--accent);
font-weight: 600;
}
.location-name {
font-size: 24px;
font-weight: 600;
letter-spacing: 0.02em;
color: #f9fafb;
display: flex;
align-items: center;
gap: 8px;
}
.location-name-tag {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.14em;
padding: 3px 10px;
border-radius: var(--radius-pill);
border: 1px solid rgba(148, 163, 184, 0.4);
color: var(--text-muted);
background: radial-gradient(circle at top left, rgba(15, 23, 42, 0.8), rgba(15, 23, 42, 0.95));
}
.date-pill {
align-self: flex-start;
padding: 8px 14px;
border-radius: var(--radius-pill);
border: 1px solid rgba(148, 163, 184, 0.4);
display: flex;
flex-direction: column;
gap: 2px;
background: radial-gradient(circle at top left, rgba(15, 23, 42, 0.7), rgba(15, 23, 42, 0.96));
}
.date-main {
font-size: 14px;
font-weight: 500;
color: #e5e7eb;
}
.date-sub {
font-size: 11px;
color: var(--text-muted);
letter-spacing: 0.08em;
text-transform: uppercase;
}
.card-body {
display: grid;
grid-template-columns: minmax(0, 1.5fr) minmax(0, 2.1fr);
gap: 18px;
align-items: stretch;
}
.summary-block {
display: flex;
flex-direction: column;
justify-content: space-between;
gap: 14px;
}
.temp-main {
display: flex;
align-items: flex-end;
gap: 10px;
}
.temp-max {
font-size: 52px;
line-height: 1;
font-weight: 600;
color: #f9fafb;
}
.temp-max span {
font-size: 30px;
opacity: 0.9;
}
.temp-min {
font-size: 14px;
color: var(--text-muted);
margin-bottom: 6px;
}
.temp-min span {
color: #e5e7eb;
font-weight: 500;
}
.condition-chip {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 7px 11px;
border-radius: var(--radius-pill);
background: linear-gradient(135deg, rgba(56, 189, 248, 0.16), rgba(56, 189, 248, 0.05));
border: 1px solid rgba(56, 189, 248, 0.4);
align-self: flex-start;
}
.condition-indicator {
width: 10px;
height: 10px;
border-radius: 999px;
background: radial-gradient(circle at 30% 20%, #fef9c3 0, #facc15 25%, #f97316 60%, #f97316 100%);
box-shadow: 0 0 10px rgba(248, 250, 252, 0.9);
}
.condition-text {
font-size: 13px;
font-weight: 500;
}
.coords {
font-size: 11px;
color: var(--text-muted);
letter-spacing: 0.07em;
text-transform: uppercase;
}
.stats-block {
border-radius: var(--radius-md);
border: 1px solid rgba(148, 163, 184, 0.4);
background:
radial-gradient(circle at top left, rgba(56, 189, 248, 0.17), transparent 58%),
linear-gradient(135deg, rgba(15, 23, 42, 0.95), rgba(15, 23, 42, 0.9));
padding: 10px 12px 12px 12px;
display: flex;
flex-direction: column;
gap: 10px;
}
.stats-row {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
}
.stat-item {
padding: 6px 8px;
border-radius: 12px;
background: radial-gradient(circle at top left, rgba(15, 23, 42, 0.9), rgba(15, 23, 42, 0.98));
border: 1px solid rgba(148, 163, 184, 0.4);
display: flex;
flex-direction: column;
gap: 4px;
}
.stat-label {
font-size: 11px;
color: var(--text-muted);
letter-spacing: 0.08em;
text-transform: uppercase;
}
.stat-value {
font-size: 14px;
font-weight: 500;
color: #e5e7eb;
}
.stat-sub {
font-size: 11px;
color: var(--text-muted);
}
.stats-caption {
font-size: 11px;
color: var(--text-muted);
display: flex;
justify-content: space-between;
align-items: center;
}
.stats-caption span:nth-child(2) {
font-size: 10px;
padding: 2px 7px;
border-radius: var(--radius-pill);
border: 1px solid rgba(148, 163, 184, 0.4);
background: radial-gradient(circle at top left, rgba(15, 23, 42, 0.9), rgba(15, 23, 42, 0.98));
}
.hourly-block {
border-radius: var(--radius-md);
border: 1px solid rgba(148, 163, 184, 0.4);
background:
linear-gradient(145deg, rgba(15, 23, 42, 0.92), rgba(15, 23, 42, 0.96)),
radial-gradient(circle at bottom right, rgba(56, 189, 248, 0.18), transparent 62%);
padding: 10px 12px 12px 12px;
display: flex;
flex-direction: column;
gap: 8px;
}
.hourly-header {
display: flex;
justify-content: space-between;
align-items: baseline;
gap: 10px;
}
.hourly-title {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.18em;
color: var(--text-muted);
}
.hourly-range {
font-size: 11px;
color: var(--text-muted);
}
.hourly-chart {
position: relative;
margin-top: 4px;
padding-top: 6px;
border-top: 1px dashed rgba(148, 163, 184, 0.45);
}
.hourly-backdrop {
position: absolute;
inset: 6px 0 0 0;
border-radius: 999px;
background:
linear-gradient(to top, rgba(15, 23, 42, 0.6), transparent),
radial-gradient(circle at top, rgba(56, 189, 248, 0.08), transparent 60%);
pointer-events: none;
}
.hourly-track {
position: relative;
display: grid;
grid-auto-flow: column;
grid-auto-columns: minmax(0, 1fr);
gap: 6px;
padding: 0 2px 2px 2px;
max-height: 148px;
overflow-x: auto;
scrollbar-width: thin;
scrollbar-color: rgba(148, 163, 184, 0.8) transparent;
}
.hourly-track::-webkit-scrollbar {
height: 5px;
}
.hourly-track::-webkit-scrollbar-track {
background: transparent;
}
.hourly-track::-webkit-scrollbar-thumb {
background: linear-gradient(90deg, rgba(148, 163, 184, 0.7), rgba(56, 189, 248, 0.85));
border-radius: 999px;
}
.hour-col {
min-width: 28px;
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
font-size: 10px;
color: var(--text-muted);
}
.hour-bar-shell {
position: relative;
width: 100%;
height: 72px;
border-radius: 999px;
background: radial-gradient(circle at top, rgba(15, 23, 42, 0.2), transparent 60%);
display: flex;
align-items: flex-end;
justify-content: center;
}
.hour-bar {
width: 70%;
border-radius: 999px;
background: linear-gradient(to top, var(--accent-strong), rgba(56, 189, 248, 0.05));
box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.35);
position: relative;
overflow: hidden;
}
.hour-bar::after {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(circle at top, rgba(248, 250, 252, 0.35), transparent 60%);
opacity: 0.75;
mix-blend-mode: screen;
pointer-events: none;
}
.hour-label {
font-variant-numeric: tabular-nums;
opacity: 0.9;
}
.hour-temp {
font-variant-numeric: tabular-nums;
color: #e5e7eb;
font-size: 10px;
}
.card-footer {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
padding-top: 4px;
border-top: 1px solid rgba(31, 41, 55, 0.9);
}
.status-text {
font-size: 11px;
color: var(--text-muted);
display: flex;
align-items: center;
gap: 6px;
}
.status-dot {
width: 8px;
height: 8px;
border-radius: 999px;
background: var(--accent);
box-shadow: 0 0 0 4px rgba(56, 189, 248, 0.18);
}
.status-text.error .status-dot {
background: var(--danger);
box-shadow: 0 0 0 4px rgba(248, 113, 113, 0.2);
}
.status-text.error span {
color: var(--danger);
}
.status-secondary {
font-size: 11px;
color: var(--text-muted);
text-align: right;
}
.status-secondary span {
padding: 3px 8px;
border-radius: var(--radius-pill);
border: 1px solid rgba(148, 163, 184, 0.5);
background: radial-gradient(circle at top left, rgba(15, 23, 42, 0.9), rgba(15, 23, 42, 0.98));
}
.fade-in {
opacity: 0;
transform: translateY(6px);
animation: fadeInUp 520ms ease-out forwards;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@media (max-width: 900px) {
.app-shell {
padding: 24px;
}
.card {
width: 100%;
max-width: 560px;
}
.card-body {
grid-template-columns: 1.1fr 1.9fr;
gap: 14px;
}
}
@media (max-width: 720px) {
.app-shell {
padding: 18px;
}
.card-body {
grid-template-columns: minmax(0, 1fr);
}
.hourly-block {
order: 3;
}
.stats-block {
order: 2;
}
}
</style>
</head>
<body>
<div class="app-shell">
<div class="card">
<div class="card-inner fade-in">
<header class="card-header">
<div class="location-group">
<div class="location-label">Daily Overview</div>
<div class="location-name">
<span id="location-name">Berlin</span>
<span class="location-name-tag" id="location-tag">52.5200° N · 13.4050° E</span>
</div>
</div>
<div class="date-pill">
<div class="date-main" id="date-main">Today</div>
<div class="date-sub" id="date-sub">UTC · YYYY‑MM‑DD</div>
</div>
</header>
<main class="card-body">
<section class="summary-block">
<div>
<div class="temp-main">
<div class="temp-max" id="temp-max">--<span>°C</span></div>
<div class="temp-min" id="temp-min">Low <span>--°C</span></div>
</div>
<div class="condition-chip">
<div class="condition-indicator"></div>
<div class="condition-text" id="condition-text">Loading conditions…</div>
</div>
</div>
<div class="coords" id="coords-text">Using UTC forecast for selected date</div>
</section>
<section class="stats-block">
<div class="stats-row">
<div class="stat-item">
<div class="stat-label">High</div>
<div class="stat-value" id="stat-high">--°C</div>
<div class="stat-sub">Daily maximum</div>
</div>
<div class="stat-item">
<div class="stat-label">Low</div>
<div class="stat-value" id="stat-low">--°C</div>
<div class="stat-sub">Daily minimum</div>
</div>
<div class="stat-item">
<div class="stat-label">Condition</div>
<div class="stat-value" id="stat-condition">—</div>
<div class="stat-sub" id="stat-code">Code —</div>
</div>
</div>
<div class="stats-caption">
<span>All temperatures in Celsius</span>
<span id="source-label">Open‑Meteo compatible API · UTC</span>
</div>
</section>
<section class="hourly-block">
<div class="hourly-header">
<div class="hourly-title">Hourly Temperatures</div>
<div class="hourly-range" id="hourly-range">—</div>
</div>
<div class="hourly-chart">
<div class="hourly-backdrop"></div>
<div class="hourly-track" id="hourly-track">
<!-- Hourly bars injected via JS -->
</div>
</div>
</section>
</main>
<footer class="card-footer">
<div class="status-text" id="status-text">
<div class="status-dot"></div>
<span id="status-message">Loading weather data…</span>
</div>
<div class="status-secondary">
<span id="status-secondary">Fetching from forecast endpoint</span>
</div>
</footer>
</div>
</div>
</div>
<script>
(function () {
function getTodayUtcIsoDate() {
return new Date().toISOString().slice(0, 10);
}
function getQueryParam(searchParams, name, fallback) {
var value = searchParams.get(name);
if (value === null || value.trim() === "") return fallback;
return value.trim();
}
function parseLatLon(value, fallback) {
var n = parseFloat(value);
if (Number.isNaN(n) || !Number.isFinite(n)) return fallback;
return n;
}
function formatDisplayDate(dateStr) {
try {
var d = new Date(dateStr + "T00:00:00Z");
return d.toLocaleDateString("en-US", {
weekday: "short",
day: "2-digit",
month: "short",
year: "numeric",
timeZone: "UTC"
});
} catch (_) {
return dateStr;
}
}
function formatTemp(value) {
if (typeof value !== "number" || !Number.isFinite(value)) return "--";
return Math.round(value).toString();
}
function weatherCodeToDescription(code) {
var map = {
0: "Clear sky",
1: "Mainly clear",
2: "Partly cloudy",
3: "Overcast",
45: "Fog",
48: "Depositing rime fog",
51: "Light drizzle",
53: "Moderate drizzle",
55: "Dense drizzle",
56: "Light freezing drizzle",
57: "Dense freezing drizzle",
61: "Slight rain",
63: "Moderate rain",
65: "Heavy rain",
66: "Light freezing rain",
67: "Heavy freezing rain",
71: "Slight snowfall",
73: "Moderate snowfall",
75: "Heavy snowfall",
77: "Snow grains",
80: "Slight rain showers",
81: "Moderate rain showers",
82: "Violent rain showers",
85: "Slight snow showers",
86: "Heavy snow showers",
95: "Thunderstorm",
96: "Thunderstorm with slight hail",
99: "Thunderstorm with heavy hail"
};
if (map.hasOwnProperty(code)) return map[code];
return "Unknown conditions";
}
function updateStatus(message, options) {
var statusText = document.getElementById("status-text");
var statusMessage = document.getElementById("status-message");
var statusSecondary = document.getElementById("status-secondary");
statusMessage.textContent = message;
if (options && options.error) {
statusText.classList.add("error");
} else {
statusText.classList.remove("error");
}
if (options && typeof options.secondary === "string") {
statusSecondary.textContent = options.secondary;
}
}
function renderHourly(hourlyTimes, hourlyTemps, targetDateStr) {
var track = document.getElementById("hourly-track");
track.innerHTML = "";
if (!Array.isArray(hourlyTimes) || !Array.isArray(hourlyTemps) || hourlyTimes.length === 0) {
track.innerHTML = "<div class=\"hour-col\">No hourly data</div>";
return;
}
var entries = [];
for (var i = 0; i < hourlyTimes.length; i++) {
var t = hourlyTimes[i];
var temp = hourlyTemps[i];
if (!t) continue;
// Expecting ISO string "YYYY-MM-DDTHH:MM"
var datePart = t.slice(0, 10);
if (datePart !== targetDateStr) continue;
entries.push({
time: t,
label: t.slice(11, 16),
temp: typeof temp === "number" ? temp : null
});
}
if (entries.length === 0) {
track.innerHTML = "<div class=\"hour-col\">No hourly data</div>";
return;
}
var minT = Infinity;
var maxT = -Infinity;
entries.forEach(function (e) {
if (typeof e.temp === "number" && Number.isFinite(e.temp)) {
if (e.temp < minT) minT = e.temp;
if (e.temp > maxT) maxT = e.temp;
}
});
if (!Number.isFinite(minT) || !Number.isFinite(maxT)) {
track.innerHTML = "<div class=\"hour-col\">No hourly data</div>";
return;
}
var range = maxT - minT;
if (range < 0.5) range = 0.5;
entries.forEach(function (e, idx) {
var normalized = (e.temp - minT) / range;
var heightPct = 20 + normalized * 80; // keep visible floor
var col = document.createElement("div");
col.className = "hour-col";
var shell = document.createElement("div");
shell.className = "hour-bar-shell";
var bar = document.createElement("div");
bar.className = "hour-bar";
bar.style.height = heightPct.toFixed(1) + "%";
if (idx === 0 || idx === entries.length - 1) {
bar.style.background = "linear-gradient(to top, rgba(56,189,248,0.95), rgba(96,165,250,0.6))";
}
shell.appendChild(bar);
var hourLabel = document.createElement("div");
hourLabel.className = "hour-label";
hourLabel.textContent = e.label;
var tempLabel = document.createElement("div");
tempLabel.className = "hour-temp";
tempLabel.textContent = formatTemp(e.temp) + "°";
col.appendChild(shell);
col.appendChild(hourLabel);
col.appendChild(tempLabel);
track.appendChild(col);
});
var hourlyRange = document.getElementById("hourly-range");
hourlyRange.textContent =
"From " + entries[0].label + " to " + entries[entries.length - 1].label + " (UTC)";
}
function applyDataToCard(payload, context) {
var daily = payload.daily || {};
var hourly = payload.hourly || {};
var maxArr = daily.temperature_2m_max || [];
var minArr = daily.temperature_2m_min || [];
var codeArr = daily.weather_code || [];
if (!maxArr.length || !minArr.length || !codeArr.length) {
throw new Error("Incomplete daily data from API");
}
var maxTemp = maxArr[0];
var minTemp = minArr[0];
var code = codeArr[0];
var conditionText = weatherCodeToDescription(code);
// Header / summary
var locNameEl = document.getElementById("location-name");
var locTagEl = document.getElementById("location-tag");
var coordsText = document.getElementById("coords-text");
var tempMaxEl = document.getElementById("temp-max");
var tempMinEl = document.getElementById("temp-min");
var condEl = document.getElementById("condition-text");
locNameEl.textContent = context.locationName;
locTagEl.textContent =
context.lat.toFixed(4) + "° N · " + context.lon.toFixed(4) + "° E";
coordsText.textContent =
(context.isArchive ? "Using historical archive" : "Using forecast") +
" · " +
context.date +
" · UTC";
tempMaxEl.innerHTML = formatTemp(maxTemp) + "<span>°C</span>";
tempMinEl.innerHTML = "Low <span>" + formatTemp(minTemp) + "°C</span>";
condEl.textContent = conditionText;
// Date display
var dateMain = document.getElementById("date-main");
var dateSub = document.getElementById("date-sub");
var formatted = formatDisplayDate(context.date);
var todayStr = getTodayUtcIsoDate();
if (context.date === todayStr) {
dateMain.textContent = "Today · " + formatted;
} else {
dateMain.textContent = formatted;
}
dateSub.textContent = "UTC · " + context.date;
// Stats block
document.getElementById("stat-high").textContent = formatTemp(maxTemp) + "°C";
document.getElementById("stat-low").textContent = formatTemp(minTemp) + "°C";
document.getElementById("stat-condition").textContent = conditionText;
document.getElementById("stat-code").textContent = "Code " + code;
var sourceLabel = document.getElementById("source-label");
sourceLabel.textContent =
(context.isArchive ? "Archive endpoint" : "Forecast endpoint") + " · UTC";
// Hourly chart
renderHourly(hourly.time || [], hourly.temperature_2m || [], context.date);
// Footer status
updateStatus("Weather updated successfully.", {
secondary:
(context.isArchive ? "Archive: " : "Forecast: ") +
context.date +
" · " +
context.locationName
});
}
function showErrorState(reason) {
var message = "Weather data could not be loaded.";
if (reason) {
message += " " + reason;
}
updateStatus(message, {
error: true,
secondary: "Please try again or choose another date."
});
var conditionEl = document.getElementById("condition-text");
conditionEl.textContent = "Unable to load data";
var hourlyTrack = document.getElementById("hourly-track");
hourlyTrack.innerHTML =
"<div class=\"hour-col\">No data</div>";
}
function buildAndFetch() {
var searchParams = new URLSearchParams(window.location.search || "");
var todayUtc = getTodayUtcIsoDate();
var latStr = getQueryParam(searchParams, "lat", "52.52");
var lonStr = getQueryParam(searchParams, "lon", "13.405");
var name = getQueryParam(searchParams, "name", "Berlin");
var date = getQueryParam(searchParams, "date", todayUtc);
var lat = parseLatLon(latStr, 52.52);
var lon = parseLatLon(lonStr, 13.405);
var isArchive = date < todayUtc;
var basePath = isArchive ? "/api/om/archive" : "/api/om/forecast";
var params = new URLSearchParams({
latitude: String(lat),
longitude: String(lon),
daily: "temperature_2m_max,temperature_2m_min,weather_code",
hourly: "temperature_2m",
timezone: "UTC",
temperature_unit: "celsius",
start_date: date,
end_date: date
});
var url = basePath + "?" + params.toString();
updateStatus("Loading weather data…", {
secondary: (isArchive ? "Archive" : "Forecast") + " endpoint · UTC"
});
fetch(url)
.then(function (res) {
if (!res.ok) {
throw new Error("Server returned status " + res.status);
}
return res.json();
})
.then(function (data) {
if (!data || !data.daily || !data.hourly) {
throw new Error("Response missing required fields.");
}
applyDataToCard(data, {
lat: lat,
lon: lon,
locationName: name,
date: date,
isArchive: isArchive
});
})
.catch(function (err) {
showErrorState(err && err.message ? "(" + err.message + ")" : "");
});
}
document.addEventListener("DOMContentLoaded", buildAndFetch);
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 27,035 | html / css / js | 3,508 / 12,317 / 11,210 |
|---|---|---|---|
| dom 节点 | 62 | dom 深度 | 11 |
| css 规则 | 70 | 含 js | 是 |
| brightness | 28.5 | contrast | 13.3 |
| colorfulness | 16.7 | 留白 | 92.6% |
该 slot 的 telemetry
| prompt tokens | 278 | completion tokens | 10,565 |
|---|---|---|---|
| total tokens | 10,843 | wall | 168.7 s |
| cost | — | request id | — |
config.json543 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.1--cli--cursor-xl--dev",
"effort": null,
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.1",
"protocol": "cli",
"served_model": "gpt-5.1",
"telemetry": {
"completion_tokens": 38657,
"cost_usd": null,
"prompt_tokens": 46704,
"total_tokens": 85361,
"wall_ms": 436211
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-xl-s2",
"config_id": "gpt-5.1--cli--cursor-xl--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-13T16:40:14.143833+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:37:25.459170+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-13T16:41:40.771862+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:40:18.070968+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-13T16:43:09.472040+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:41:44.933773+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-13T16:44:53.596922+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-13T16:43:13.296953+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
}
}
}