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

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
grok-4.5 · opencode0.67claude-fable-5 · CC0.66claude-sonnet-5 @medium · kiro0.66doubao-seed-2-1-pro-260628 @disabled · api0.66gpt-5.6-sol @high · codex-oauth0.66最远
gpt-5.6-luna @high · kiro0.41gpt-5.6-terra @medium · kiro0.44claude-opus-4-8 @max · CC0.44claude-opus-4-6 @max · kiro0.44claude-opus-4-6 @low · kiro0.44限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempambiguousno-remaining-candidate
- 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">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Weather Card</title>
<style>
:root {
--ink: #17263b;
--muted: #6d7c91;
--line: rgba(36, 66, 101, .12);
--card: rgba(255, 255, 255, .82);
--blue: #276ff0;
--sun: #ffbd3e;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-width: 1280px;
min-height: 800px;
display: grid;
place-items: center;
overflow: hidden;
color: var(--ink);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background:
radial-gradient(circle at 15% 14%, rgba(255,255,255,.92) 0 7%, transparent 28%),
radial-gradient(circle at 89% 77%, rgba(112,178,255,.25), transparent 25%),
linear-gradient(135deg, #9fd2ff 0%, #d7edff 47%, #b9d7fa 100%);
}
.glow {
position: fixed;
width: 520px;
height: 520px;
border-radius: 50%;
top: -250px;
right: 5%;
background: rgba(255, 218, 130, .28);
filter: blur(10px);
}
main {
width: 1030px;
min-height: 594px;
position: relative;
border: 1px solid rgba(255,255,255,.72);
border-radius: 31px;
overflow: hidden;
background: var(--card);
box-shadow: 0 32px 80px rgba(42, 81, 132, .24), 0 2px 8px rgba(45, 72, 108, .08);
backdrop-filter: blur(22px);
}
.top {
min-height: 301px;
padding: 43px 54px;
display: flex;
justify-content: space-between;
position: relative;
background: linear-gradient(115deg, rgba(255,255,255,.35), rgba(255,255,255,.02));
}
.place {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 11px;
color: #53657e;
font-size: 15px;
font-weight: 700;
letter-spacing: .02em;
}
.pin {
width: 17px; height: 17px;
color: var(--blue);
}
h1 {
margin: 0;
max-width: 480px;
font-size: 37px;
line-height: 1.12;
letter-spacing: -.045em;
font-weight: 760;
}
.date {
margin: 12px 0 29px;
color: var(--muted);
font-size: 16px;
font-weight: 500;
}
.condition {
display: inline-flex;
align-items: center;
gap: 9px;
padding: 8px 13px 8px 9px;
border-radius: 999px;
color: #375170;
font-size: 14px;
font-weight: 750;
background: rgba(255,255,255,.52);
border: 1px solid rgba(255,255,255,.76);
}
.dot {
width: 24px; height: 24px;
display: grid; place-items: center;
border-radius: 50%;
background: #edf5ff;
font-size: 15px;
}
.hero {
min-width: 356px;
display: flex;
align-items: center;
justify-content: flex-end;
gap: 23px;
padding-right: 8px;
}
.weather-icon {
width: 126px;
height: 110px;
position: relative;
filter: drop-shadow(0 12px 10px rgba(62, 126, 201, .16));
}
.sun {
position: absolute;
top: 4px; right: 12px;
width: 49px; height: 49px;
border-radius: 50%;
background: var(--sun);
box-shadow: 0 0 0 10px rgba(255, 199, 65, .17);
}
.cloud {
position: absolute;
bottom: 10px; left: 4px;
width: 98px; height: 43px;
border-radius: 28px;
background: #f8fbff;
box-shadow: inset 0 -5px 0 #d9eaff, 0 9px 13px rgba(84, 130, 183, .2);
}
.cloud:before, .cloud:after {
content: "";
position: absolute;
bottom: 0;
border-radius: 50%;
background: #f8fbff;
}
.cloud:before { left: 16px; width: 49px; height: 49px; }
.cloud:after { left: 51px; width: 38px; height: 38px; }
.temp {
font-size: 91px;
line-height: .85;
letter-spacing: -.09em;
font-weight: 300;
color: #173152;
}
.temp sup {
top: -.55em;
font-size: 28px;
letter-spacing: 0;
position: relative;
font-weight: 500;
}
.range {
margin-top: 13px;
color: #64768c;
font-size: 15px;
text-align: right;
font-weight: 650;
}
.range b { color: #2566d3; }
.divider { height: 1px; background: var(--line); margin: 0 54px; }
.hourly { padding: 25px 54px 32px; }
.section-head {
display: flex;
align-items: baseline;
justify-content: space-between;
margin-bottom: 21px;
}
h2 { margin: 0; font-size: 16px; letter-spacing: -.02em; }
.section-head span { color: #7c8ba0; font-size: 13px; font-weight: 650; }
.chart {
height: 180px;
position: relative;
border-radius: 18px;
padding: 16px 15px 12px;
background: rgba(242, 248, 255, .72);
overflow: hidden;
}
.chart svg {
position: absolute;
inset: 14px 15px 33px;
width: calc(100% - 30px);
height: calc(100% - 47px);
overflow: visible;
}
.hours {
position: absolute;
left: 15px; right: 15px; bottom: 11px;
display: grid;
grid-template-columns: repeat(8, 1fr);
color: #7c8a9c;
font-size: 11px;
font-weight: 700;
text-align: center;
}
.hours span:first-child { text-align: left; }
.hours span:last-child { text-align: right; }
.loading, .error {
position: absolute;
inset: 0;
display: grid;
place-items: center;
text-align: center;
color: #52677f;
font-weight: 650;
background: rgba(255,255,255,.38);
}
.error {
padding: 50px;
color: #7c3145;
background: rgba(255, 247, 249, .82);
}
.error strong { display:block; font-size: 24px; color:#5d2031; margin-bottom:8px; }
</style>
</head>
<body>
<div class="glow"></div>
<main id="card">
<section class="top">
<div>
<div class="place">
<svg class="pin" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7Zm0 9.5A2.5 2.5 0 1 1 12 6a2.5 2.5 0 0 1 0 5.5Z"/></svg>
<span id="location">Berlin</span>
</div>
<h1>Weather outlook</h1>
<p class="date" id="date">Loading date…</p>
<div class="condition"><span class="dot" id="condition-icon">☀</span><span id="condition">Loading weather</span></div>
</div>
<div class="hero">
<div class="weather-icon"><div class="sun"></div><div class="cloud"></div></div>
<div>
<div class="temp"><span id="max">--</span><sup>°</sup></div>
<div class="range">Low <b id="min">--°</b></div>
</div>
</div>
</section>
<div class="divider"></div>
<section class="hourly">
<div class="section-head"><h2>Temperature through the day</h2><span>Hourly forecast · °C</span></div>
<div class="chart">
<svg id="chart" viewBox="0 0 900 110" preserveAspectRatio="none"></svg>
<div class="hours" id="hours"></div>
</div>
</section>
<div class="loading" id="loading">Loading your weather…</div>
</main>
<script>
(() => {
const q = new URLSearchParams(location.search);
const utcToday = new Date().toISOString().slice(0, 10);
const lat = q.get("lat") || "52.52";
const lon = q.get("lon") || "13.405";
const name = q.get("name") || "Berlin";
const requestedDate = /^\d{4}-\d{2}-\d{2}$/.test(q.get("date") || "") ? q.get("date") : utcToday;
document.getElementById("location").textContent = name;
const weather = {
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: ["Freezing drizzle", "🌨"],
61: ["Light rain", "🌦"], 63: ["Rain showers", "🌧"], 65: ["Heavy rain", "🌧"],
66: ["Freezing rain", "🌨"], 67: ["Heavy freezing rain", "🌨"],
71: ["Light snowfall", "🌨"], 73: ["Snowfall", "🌨"], 75: ["Heavy snowfall", "❄"],
77: ["Snow grains", "❄"], 80: ["Rain showers", "🌦"], 81: ["Rain showers", "🌧"],
82: ["Violent showers", "⛈"], 85: ["Snow showers", "🌨"], 86: ["Heavy snow showers", "❄"],
95: ["Thunderstorm", "⛈"], 96: ["Thunderstorm with hail", "⛈"], 99: ["Thunderstorm with hail", "⛈"]
};
document.getElementById("date").textContent = new Intl.DateTimeFormat("en-US", {
weekday: "long", month: "long", day: "numeric", year: "numeric", timeZone: "UTC"
}).format(new Date(requestedDate + "T12:00:00Z"));
const api = requestedDate < utcToday ? "/api/om/archive" : "/api/om/forecast";
const params = new URLSearchParams({
latitude: lat, longitude: lon,
daily: "temperature_2m_max,temperature_2m_min,weather_code",
hourly: "temperature_2m",
timezone: "UTC", temperature_unit: "celsius",
start_date: requestedDate, end_date: requestedDate
});
function renderChart(values) {
const data = values.map((v, i) => ({ v, i })).filter(x => Number.isFinite(x.v));
if (!data.length) throw new Error("No hourly temperatures available");
const min = Math.min(...data.map(x => x.v)), max = Math.max(...data.map(x => x.v));
const spread = Math.max(max - min, 3);
const y = v => 95 - ((v - min) / spread) * 72;
const x = i => i / Math.max(values.length - 1, 1) * 900;
const points = data.map(p => `${x(p.i)},${y(p.v)}`).join(" ");
const area = `0,110 ${points} 900,110`;
document.getElementById("chart").innerHTML =
`<defs><linearGradient id="fill" x1="0" x2="0" y1="0" y2="1"><stop stop-color="#4389f4" stop-opacity=".28"/><stop offset="1" stop-color="#4389f4" stop-opacity="0"/></linearGradient></defs>
<path d="M0 26H900M0 61H900M0 96H900" stroke="#b9d3f1" stroke-opacity=".45" stroke-dasharray="3 6" fill="none"/>
<polygon points="${area}" fill="url(#fill)"/>
<polyline points="${points}" fill="none" stroke="#2874ed" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>` +
data.filter((_, i) => i % 3 === 0).map(p => `<circle cx="${x(p.i)}" cy="${y(p.v)}" r="4.2" fill="#fff" stroke="#2874ed" stroke-width="2.5"><title>${Math.round(p.v)}°C</title></circle>`).join("");
const labels = [0, 3, 6, 9, 12, 15, 18, 21].map(h => `<span>${String(h).padStart(2, "0")}:00</span>`);
document.getElementById("hours").innerHTML = labels.join("");
}
fetch(`${api}?${params}`)
.then(r => r.ok ? r.json() : Promise.reject(new Error("Weather service unavailable")))
.then(data => {
const daily = data.daily;
if (!daily || !daily.temperature_2m_max?.length || !data.hourly?.temperature_2m) throw new Error("Incomplete weather data");
const max = Math.round(daily.temperature_2m_max[0]);
const min = Math.round(daily.temperature_2m_min[0]);
const [label, icon] = weather[daily.weather_code?.[0]] || ["Variable conditions", "⛅"];
document.getElementById("max").textContent = max;
document.getElementById("min").textContent = `${min}°`;
document.getElementById("condition").textContent = label;
document.getElementById("condition-icon").textContent = icon;
renderChart(data.hourly.temperature_2m);
document.getElementById("loading").remove();
})
.catch(() => {
document.getElementById("loading").outerHTML =
`<div class="error"><div><strong>Weather data couldn’t be loaded.</strong>Please check your connection and try again.</div></div>`;
});
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 11,186 | html / css / js | 1,490 / 5,225 / 4,471 |
|---|---|---|---|
| dom 节点 | 40 | dom 深度 | 8 |
| css 规则 | 36 | 含 js | 是 |
| brightness | 234.1 | contrast | 20.9 |
| colorfulness | 30.2 | 留白 | 83.9% |
该 slot 的 telemetry
| prompt tokens | 0 | completion tokens | 9,538 |
|---|---|---|---|
| total tokens | 0 | wall | 72.3 s |
| cost | — | request id | — |
config.json569 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "gpt-5.6-terra-eff-medium--cli--codex-oauth--dev",
"effort": "medium",
"family": "gpt",
"m": {
"min": 2,
"q": 2
},
"model_id": "gpt-5.6-terra",
"protocol": "cli",
"served_model": "gpt-5.6-terra",
"telemetry": {
"completion_tokens": 36060,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 251580
},
"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-terra",
"config_id": "gpt-5.6-terra-eff-medium--cli--codex-oauth--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T13:55:25.124231+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:54:12.839070+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-17T13:56:29.511714+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:55:28.503024+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-17T13:57:30.561091+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:56:33.451040+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-07-17T13:58:35.432800+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T13:57:34.249234+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
}
}
}