gpt-5.6-luna @ xhigh · codex-oauth
codex-oauthxhigh
- config
- gpt-5.6-luna-eff-xhigh--cli--codex-oauth--dev
- batch
- 2026-07-19--unified
- transport
- codex-cli-oauth-chatgpt
- protocol
- cli · plan
- served model
- gpt-5.6-luna
- 采集于
- 2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
claude-opus-4-7 @low · kiro0.61glm-5.1 · opencode0.61gpt-5.6-luna @medium · kiro0.61glm-5.1 @disabled · api0.59gpt-5.4 @medium · api0.59最远
minimax-m2.5 · go0.42minimax-m2.1 · kiro0.45gpt-5.6-terra @medium · kiro0.45gpt-5.6-sol @ultra · codex-oauth0.45gpt-5.6-luna @high · kiro0.45限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmatch展示值:25
- min tempmatch展示值:16
- hourlymatchcoverage 24/24 · 24 命中 · 0 不符 · 0 未展示
- 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 {
--bg: #08111f;
--surface: rgba(19, 34, 56, 0.78);
--surface-strong: #142943;
--line: rgba(187, 220, 255, 0.14);
--text: #f3f8ff;
--muted: #8ea5bf;
--soft: #c0d1e5;
--cyan: #61d9ff;
--blue: #6a8cff;
--yellow: #ffd36a;
--shadow: 0 24px 70px rgba(0, 0, 0, 0.34);
}
* {
box-sizing: border-box;
}
html,
body {
min-width: 1280px;
min-height: 800px;
margin: 0;
}
body {
overflow: hidden;
color: var(--text);
background:
radial-gradient(circle at 15% 0%, rgba(77, 128, 215, 0.24), transparent 34%),
radial-gradient(circle at 100% 100%, rgba(60, 219, 224, 0.1), transparent 32%),
linear-gradient(135deg, #07101d 0%, #0d1b2d 52%, #091321 100%);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
letter-spacing: -0.01em;
}
body::before {
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
content: "";
opacity: 0.18;
background-image:
linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
background-size: 42px 42px;
mask-image: linear-gradient(to bottom, black, transparent 82%);
}
.app {
width: 1180px;
height: 740px;
margin: 30px auto;
display: flex;
flex-direction: column;
}
.topbar {
display: flex;
align-items: center;
justify-content: space-between;
height: 54px;
margin-bottom: 24px;
}
.brand {
display: flex;
align-items: center;
gap: 13px;
color: var(--text);
font-size: 16px;
font-weight: 750;
letter-spacing: 0.02em;
}
.brand-mark {
position: relative;
width: 34px;
height: 34px;
overflow: hidden;
border: 1px solid rgba(145, 224, 255, 0.4);
border-radius: 11px;
background: linear-gradient(135deg, rgba(66, 205, 255, 0.35), rgba(87, 119, 255, 0.35));
box-shadow: inset 0 0 20px rgba(126, 233, 255, 0.12);
}
.brand-mark::before,
.brand-mark::after {
position: absolute;
content: "";
border-radius: 50%;
}
.brand-mark::before {
width: 15px;
height: 15px;
top: 6px;
left: 8px;
background: var(--yellow);
box-shadow: 0 0 15px rgba(255, 211, 106, 0.75);
}
.brand-mark::after {
width: 19px;
height: 9px;
bottom: 6px;
left: 7px;
border-radius: 10px 10px 7px 7px;
background: #d5f2ff;
box-shadow: 5px 2px 0 -1px #bde8ff;
}
.unit-toggle {
display: flex;
align-items: center;
gap: 4px;
padding: 4px;
border: 1px solid var(--line);
border-radius: 10px;
background: rgba(16, 30, 49, 0.62);
color: var(--muted);
font-size: 12px;
font-weight: 700;
}
.unit-toggle span {
padding: 6px 10px;
border-radius: 7px;
}
.unit-toggle .active {
color: #061523;
background: var(--cyan);
box-shadow: 0 4px 12px rgba(97, 217, 255, 0.22);
}
.dashboard {
display: grid;
grid-template-columns: 420px 1fr;
gap: 20px;
flex: 1;
min-height: 0;
}
.card {
position: relative;
overflow: hidden;
border: 1px solid var(--line);
border-radius: 24px;
background: var(--surface);
box-shadow: var(--shadow);
backdrop-filter: blur(18px);
}
.summary {
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 32px;
background:
radial-gradient(circle at 84% 10%, rgba(99, 196, 255, 0.3), transparent 28%),
radial-gradient(circle at 15% 88%, rgba(89, 96, 255, 0.18), transparent 34%),
linear-gradient(145deg, rgba(27, 56, 88, 0.9), rgba(13, 27, 46, 0.86));
}
.summary::after {
position: absolute;
width: 330px;
height: 330px;
right: -126px;
bottom: -146px;
content: "";
border: 1px solid rgba(143, 220, 255, 0.09);
border-radius: 50%;
box-shadow:
0 0 0 34px rgba(143, 220, 255, 0.025),
0 0 0 68px rgba(143, 220, 255, 0.018);
}
.summary-top,
.summary-bottom {
position: relative;
z-index: 1;
}
.eyebrow {
margin: 0 0 12px;
color: var(--cyan);
font-size: 11px;
font-weight: 800;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.location {
margin: 0;
max-width: 345px;
overflow: hidden;
font-size: 34px;
font-weight: 760;
line-height: 1.08;
text-overflow: ellipsis;
white-space: nowrap;
}
.date {
margin: 10px 0 0;
color: var(--soft);
font-size: 14px;
}
.weather-visual {
display: flex;
align-items: center;
gap: 25px;
margin: 78px 0 56px;
}
.weather-orb {
position: relative;
width: 132px;
height: 132px;
flex: 0 0 auto;
border-radius: 50%;
background: radial-gradient(circle at 35% 28%, #fff3bd 0 7%, #ffd66a 25%, rgba(255, 195, 69, 0.17) 61%, transparent 70%);
box-shadow: 0 0 50px rgba(255, 204, 86, 0.28);
}
.weather-orb::before,
.weather-orb::after {
position: absolute;
content: "";
border-radius: 50%;
}
.weather-orb::before {
width: 52px;
height: 30px;
right: 13px;
bottom: 32px;
background: #d9f2ff;
box-shadow: -22px 8px 0 -4px #c6e8fb, 11px 8px 0 -5px #c6e8fb;
}
.weather-orb::after {
width: 76px;
height: 8px;
right: 3px;
bottom: 26px;
border-radius: 0;
background: linear-gradient(90deg, transparent, rgba(127, 215, 255, 0.8), transparent);
transform: rotate(-7deg);
opacity: 0.9;
}
.current-temp {
margin: 0;
font-size: 72px;
font-weight: 300;
line-height: 0.9;
letter-spacing: -0.08em;
}
.current-temp sup {
position: relative;
top: -25px;
margin-left: 4px;
font-size: 25px;
font-weight: 600;
letter-spacing: 0;
}
.condition {
margin: 13px 0 0;
color: var(--soft);
font-size: 17px;
font-weight: 600;
}
.range {
display: flex;
align-items: center;
gap: 15px;
margin-bottom: 26px;
color: var(--soft);
font-size: 14px;
font-weight: 600;
}
.range span {
color: var(--muted);
}
.range strong {
color: var(--text);
font-size: 18px;
}
.range-divider {
width: 1px;
height: 20px;
background: var(--line);
}
.source {
display: flex;
align-items: center;
gap: 8px;
color: var(--muted);
font-size: 11px;
}
.source-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: #64e4a4;
box-shadow: 0 0 10px rgba(100, 228, 164, 0.75);
}
.details {
display: flex;
flex-direction: column;
min-width: 0;
padding: 26px;
}
.details-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
margin-bottom: 21px;
}
.details-title {
margin: 0;
font-size: 20px;
font-weight: 730;
}
.details-subtitle {
margin: 5px 0 0;
color: var(--muted);
font-size: 12px;
}
.date-chip {
padding: 8px 11px;
border: 1px solid rgba(97, 217, 255, 0.22);
border-radius: 9px;
color: var(--cyan);
background: rgba(97, 217, 255, 0.07);
font-size: 11px;
font-weight: 750;
letter-spacing: 0.04em;
}
.hourly-chart {
display: flex;
flex-direction: column;
min-height: 0;
flex: 1;
padding: 20px;
border: 1px solid rgba(183, 217, 247, 0.1);
border-radius: 17px;
background: rgba(6, 17, 31, 0.28);
}
.chart-heading {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 17px;
}
.chart-heading h2 {
margin: 0;
font-size: 13px;
font-weight: 750;
}
.chart-heading span {
color: var(--muted);
font-size: 11px;
}
.hourly-grid {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
grid-template-rows: repeat(2, 1fr);
gap: 9px;
min-height: 0;
flex: 1;
}
.hour {
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 132px;
padding: 12px 9px 11px;
overflow: hidden;
border: 1px solid rgba(191, 224, 255, 0.09);
border-radius: 12px;
background: rgba(23, 43, 68, 0.56);
}
.hour:nth-child(n+13) {
background: rgba(15, 34, 56, 0.48);
}
.hour::after {
position: absolute;
right: -13px;
bottom: -28px;
width: 56px;
height: 56px;
content: "";
border: 1px solid rgba(97, 217, 255, 0.1);
border-radius: 50%;
}
.hour-time {
color: var(--muted);
font-size: 10px;
font-weight: 700;
letter-spacing: 0.03em;
}
.hour-temp {
position: relative;
z-index: 1;
margin-top: auto;
color: var(--text);
font-size: 19px;
font-weight: 700;
}
.temperature-bar {
position: relative;
height: 5px;
margin: 12px 0 1px;
overflow: hidden;
border-radius: 5px;
background: rgba(120, 169, 205, 0.16);
}
.temperature-bar i {
display: block;
height: 100%;
min-width: 6px;
border-radius: inherit;
background: linear-gradient(90deg, var(--blue), var(--cyan));
box-shadow: 0 0 9px rgba(97, 217, 255, 0.5);
}
.hourly-footer {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 19px;
padding-top: 16px;
border-top: 1px solid var(--line);
color: var(--muted);
font-size: 11px;
}
.hourly-footer strong {
color: var(--soft);
font-weight: 650;
}
.state {
position: absolute;
inset: 0;
z-index: 10;
display: grid;
place-items: center;
padding: 40px;
border-radius: 24px;
background: rgba(9, 20, 35, 0.94);
text-align: center;
}
.state.hidden {
display: none;
}
.state-box {
max-width: 370px;
}
.state-icon {
width: 48px;
height: 48px;
margin: 0 auto 16px;
border: 1px solid rgba(97, 217, 255, 0.35);
border-radius: 15px;
color: var(--cyan);
background: rgba(97, 217, 255, 0.09);
font-size: 25px;
line-height: 46px;
}
.state h2 {
margin: 0 0 8px;
font-size: 21px;
}
.state p {
margin: 0;
color: var(--muted);
font-size: 13px;
line-height: 1.5;
}
@media (max-width: 900px) {
html,
body {
min-width: 0;
overflow: auto;
}
.app {
width: calc(100% - 32px);
height: auto;
min-height: calc(100vh - 32px);
margin: 16px auto;
}
.dashboard {
grid-template-columns: 1fr;
}
.summary {
min-height: 540px;
}
.hourly-grid {
grid-template-columns: repeat(6, minmax(0, 1fr));
}
}
</style>
</head>
<body>
<main class="app">
<header class="topbar">
<div class="brand">
<div class="brand-mark" aria-hidden="true"></div>
<span>Atmos / Daily weather</span>
</div>
<div class="unit-toggle" aria-label="Temperature unit">
<span class="active">°C</span>
<span>°F</span>
</div>
</header>
<section class="dashboard" aria-live="polite">
<article class="card summary">
<div class="summary-top">
<p class="eyebrow">Local conditions</p>
<h1 class="location" id="location">Berlin</h1>
<p class="date" id="date">Loading date…</p>
<div class="weather-visual">
<div class="weather-orb" aria-hidden="true"></div>
<div>
<p class="current-temp" id="currentTemp">—<sup>°C</sup></p>
<p class="condition" id="condition">Loading…</p>
</div>
</div>
</div>
<div class="summary-bottom">
<div class="range">
<span>High</span>
<strong id="maxTemp">—</strong>
<div class="range-divider"></div>
<span>Low</span>
<strong id="minTemp">—</strong>
</div>
<div class="source">
<i class="source-dot"></i>
<span>Open-Meteo · UTC</span>
</div>
</div>
</article>
<article class="card details">
<div class="details-header">
<div>
<h2 class="details-title">Hourly temperature</h2>
<p class="details-subtitle">A clear look at the day ahead</p>
</div>
<div class="date-chip" id="dateChip">—</div>
</div>
<div class="hourly-chart">
<div class="chart-heading">
<h2>Temperature curve</h2>
<span>24-hour view</span>
</div>
<div class="hourly-grid" id="hourlyGrid"></div>
<div class="hourly-footer">
<span>Updates shown in <strong>degrees Celsius</strong></span>
<span id="hourlyRange">—</span>
</div>
</div>
</article>
</section>
<div class="state hidden" id="state">
<div class="state-box">
<div class="state-icon">!</div>
<h2>Weather unavailable</h2>
<p id="stateMessage">We couldn't load weather data for this date. Please try again later.</p>
</div>
</div>
</main>
<script>
(() => {
const params = new URLSearchParams(window.location.search);
const todayUtc = new Date().toISOString().slice(0, 10);
const rawLat = Number(params.get("lat"));
const rawLon = Number(params.get("lon"));
const lat = Number.isFinite(rawLat) ? rawLat : 52.52;
const lon = Number.isFinite(rawLon) ? rawLon : 13.405;
const name = (params.get("name") || "Berlin").trim() || "Berlin";
const requestedDate = /^\d{4}-\d{2}-\d{2}$/.test(params.get("date") || "")
? params.get("date")
: todayUtc;
const locationEl = document.getElementById("location");
const dateEl = document.getElementById("date");
const dateChipEl = document.getElementById("dateChip");
const conditionEl = document.getElementById("condition");
const currentTempEl = document.getElementById("currentTemp");
const maxTempEl = document.getElementById("maxTemp");
const minTempEl = document.getElementById("minTemp");
const hourlyGridEl = document.getElementById("hourlyGrid");
const hourlyRangeEl = document.getElementById("hourlyRange");
const stateEl = document.getElementById("state");
const stateMessageEl = document.getElementById("stateMessage");
const weatherDescriptions = {
0: "Clear sky",
1: "Mainly clear",
2: "Partly cloudy",
3: "Overcast",
45: "Foggy",
48: "Rime fog",
51: "Light drizzle",
53: "Drizzle",
55: "Heavy drizzle",
56: "Freezing drizzle",
57: "Heavy freezing drizzle",
61: "Light rain",
63: "Rain",
65: "Heavy rain",
66: "Freezing rain",
67: "Heavy freezing rain",
71: "Light snow",
73: "Snow",
75: "Heavy snow",
77: "Snow grains",
80: "Light showers",
81: "Showers",
82: "Heavy showers",
85: "Snow showers",
86: "Heavy snow showers",
95: "Thunderstorms",
96: "Thunderstorms with hail",
99: "Heavy thunderstorms with hail"
};
const formatDate = (value) => {
const date = new Date(`${value}T00:00:00Z`);
return new Intl.DateTimeFormat("en-US", {
weekday: "long",
month: "long",
day: "numeric",
year: "numeric",
timeZone: "UTC"
}).format(date);
};
const formatShortDate = (value) => {
const date = new Date(`${value}T00:00:00Z`);
return new Intl.DateTimeFormat("en-US", {
month: "short",
day: "numeric",
timeZone: "UTC"
}).format(date).toUpperCase();
};
const formatHour = (value, index) => {
const match = String(value || "").match(/T(\d{2}):/);
const hour = match ? Number(match[1]) : index;
return `${String(hour).padStart(2, "0")}:00`;
};
const formatTemp = (value) => {
if (value === null || value === undefined || !Number.isFinite(Number(value))) return "—";
return `${Math.round(Number(value))}°`;
};
const showError = (message) => {
stateMessageEl.textContent = message;
stateEl.classList.remove("hidden");
};
const render = (data) => {
const daily = data && data.daily;
const hourly = data && data.hourly;
if (
!daily ||
!hourly ||
!Array.isArray(daily.time) ||
!Array.isArray(daily.temperature_2m_max) ||
!Array.isArray(daily.temperature_2m_min) ||
!Array.isArray(daily.weather_code) ||
!Array.isArray(hourly.temperature_2m)
) {
throw new Error("The weather response was incomplete.");
}
const dayIndex = daily.time.indexOf(requestedDate);
const max = daily.temperature_2m_max[dayIndex >= 0 ? dayIndex : 0];
const min = daily.temperature_2m_min[dayIndex >= 0 ? dayIndex : 0];
const code = daily.weather_code[dayIndex >= 0 ? dayIndex : 0];
const values = hourly.temperature_2m
.map(Number)
.filter((value) => Number.isFinite(value));
if (max === null || min === null || code === null || !values.length) {
throw new Error("No weather data is available for this date.");
}
const current = values[0];
const low = Math.min(...values);
const high = Math.max(...values);
const span = Math.max(high - low, 1);
locationEl.textContent = name;
locationEl.title = name;
dateEl.textContent = formatDate(requestedDate);
dateChipEl.textContent = formatShortDate(requestedDate);
conditionEl.textContent = weatherDescriptions[Number(code)] || "Variable conditions";
currentTempEl.innerHTML = `${Math.round(current)}<sup>°C</sup>`;
maxTempEl.textContent = formatTemp(max);
minTempEl.textContent = formatTemp(min);
hourlyRangeEl.textContent = `${Math.round(low)}° — ${Math.round(high)}°`;
hourlyGridEl.innerHTML = "";
const hourlyTimes = Array.isArray(hourly.time) ? hourly.time : [];
hourly.temperature_2m.forEach((temperature, index) => {
const numericTemperature = Number(temperature);
if (!Number.isFinite(numericTemperature)) return;
const percent = Math.max(8, ((numericTemperature - low) / span) * 100);
const hour = document.createElement("div");
hour.className = "hour";
hour.innerHTML = `
<span class="hour-time">${formatHour(hourlyTimes[index], index)}</span>
<div>
<div class="hour-temp">${formatTemp(numericTemperature)}</div>
<div class="temperature-bar" aria-hidden="true"><i style="width:${percent}%"></i></div>
</div>
`;
hourlyGridEl.appendChild(hour);
});
if (!hourlyGridEl.children.length) {
throw new Error("No hourly temperatures are available for this date.");
}
};
const loadWeather = async () => {
const endpoint = requestedDate < todayUtc ? "/api/om/archive" : "/api/om/forecast";
const query = 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: requestedDate,
end_date: requestedDate
});
try {
const response = await fetch(`${endpoint}?${query.toString()}`, {
method: "GET",
headers: { "Accept": "application/json" }
});
if (!response.ok) {
throw new Error(`Weather service returned ${response.status}.`);
}
const data = await response.json();
render(data);
} catch (error) {
showError("We couldn't load weather data for this date. Please check the location or try again later.");
}
};
loadWeather();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 21,433 | html / css / js | 2,671 / 11,663 / 7,099 |
|---|---|---|---|
| dom 节点 | 58 | dom 深度 | 10 |
| css 规则 | 68 | 含 js | 是 |
| brightness | 37.6 | contrast | 25.1 |
| colorfulness | 25.4 | 留白 | 71.8% |
该 slot 的 telemetry
| prompt tokens | 0 | completion tokens | 7,336 |
|---|---|---|---|
| total tokens | 0 | wall | 142.9 s |
| cost | — | request id | — |
config.json564 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.6-luna-eff-xhigh--cli--codex-oauth--dev",
"effort": "xhigh",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.6-luna",
"protocol": "cli",
"served_model": "gpt-5.6-luna",
"telemetry": {
"completion_tokens": 39975,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 537653
},
"transport": "codex-cli-oauth-chatgpt",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-17--dev-codex-oauth-gpt-5.6-luna",
"config_id": "gpt-5.6-luna-eff-xhigh--cli--codex-oauth--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T14:04:07.172843+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:02:05.462502+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-07-17T14:06:33.256877+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:04:10.372979+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-07-17T14:09:16.999809+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:06:36.950369+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-07-17T14:11:14.326806+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:09:21.305775+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
}
}
}