gpt-5.2-codex @ xhigh · api

apixhigh
config
gpt-5.2-codex-eff-xhigh--api--official--dev
batch
2026-07-19--unified
transport
openai-official-api
protocol
api · metered
served model
gpt-5.2-codex
采集于
2026年7月18日 11:54 · N=4
variant
live
slot 0 · P-q · sandboxed iframe
gpt-5.2-codex @xhigh · api P-q slot 0 截图

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。

similarity 邻居

限于 session 2026-07-19--unified

similarity 衡量本 session 内的趋同程度 —— 不是质量。

Fidelity —— 卡片展示的数据对不对?

  • namematch
  • conditionmatch
  • datematch
  • max tempambiguousno-remaining-candidate
  • min tempmismatch展示值:25.3
  • 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,height=device-height,initial-scale=1.0">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3C/svg%3E">
<title>Weather Card</title>
<style>
* { box-sizing: border-box; }
html, body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  color: #fff;
}
body {
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(circle at 20% 20%, rgba(72,118,255,0.35), transparent 55%),
    radial-gradient(circle at 80% 80%, rgba(0,214,255,0.25), transparent 55%),
    linear-gradient(135deg, #0f172a 0%, #1e293b 45%, #0f172a 100%);
}
.app {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.card {
  width: min(1040px, 95vw);
  height: min(680px, 90vh);
  background: rgba(255,255,255,0.12);
  border: 1px solid rgba(255,255,255,0.25);
  border-radius: 32px;
  padding: 28px 32px;
  box-shadow: 0 30px 80px rgba(0,0,0,0.45);
  backdrop-filter: blur(20px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  position: relative;
  overflow: hidden;
}
.card::before {
  content: "";
  position: absolute;
  top: -120px;
  right: -120px;
  width: 280px;
  height: 280px;
  background: radial-gradient(circle, var(--accent, #6dd5fa), transparent 70%);
  opacity: 0.35;
  pointer-events: none;
}
.card::after {
  content: "";
  position: absolute;
  bottom: -150px;
  left: -150px;
  width: 320px;
  height: 320px;
  background: radial-gradient(circle, rgba(255,255,255,0.25), transparent 70%);
  opacity: 0.2;
  pointer-events: none;
}
.header, .summary, .hourly, .divider, .status { position: relative; z-index: 1; }
.header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.location {
  font-size: 32px;
  font-weight: 600;
  letter-spacing: 0.5px;
}
.coords {
  margin-top: 4px;
  font-size: 13px;
  opacity: 0.7;
}
.date {
  font-size: 13px;
  font-weight: 500;
  padding: 8px 16px;
  border-radius: 999px;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.25);
  letter-spacing: 0.4px;
  white-space: nowrap;
}
.divider {
  height: 1px;
  background: rgba(255,255,255,0.15);
  border-radius: 2px;
}
.summary {
  display: flex;
  align-items: center;
  gap: 20px;
}
.icon {
  font-size: 64px;
  width: 96px;
  height: 96px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.14);
  border-radius: 22px;
  box-shadow: inset 0 0 30px rgba(255,255,255,0.12);
}
.summary-text {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.max-temp {
  font-size: 58px;
  font-weight: 700;
  line-height: 1;
  background: linear-gradient(90deg, #ffffff, var(--accent, #6dd5fa));
  -webkit-background-clip: text;
  color: transparent;
}
.min-temp {
  font-size: 17px;
  opacity: 0.85;
}
.condition-text {
  font-size: 19px;
  font-weight: 600;
  text-transform: capitalize;
  letter-spacing: 0.3px;
}
.badge {
  margin-left: auto;
  text-align: right;
  background: rgba(255,255,255,0.15);
  padding: 12px 16px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,0.2);
  min-width: 140px;
}
.badge .label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  opacity: 0.7;
}
.badge .value {
  font-size: 22px;
  font-weight: 600;
  margin-top: 4px;
  display: block;
}
.hourly {
  flex: 1;
  display: flex;
  flex-direction: column;
}
.section-title {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 2px;
  opacity: 0.7;
}
.hourly-grid {
  margin-top: 12px;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
  overflow-y: auto;
  padding-right: 6px;
}
.hour {
  background: rgba(255,255,255,0.12);
  border-radius: 16px;
  padding: 6px 6px 8px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  height: 82px;
  border: 1px solid rgba(255,255,255,0.12);
}
.hour .time {
  font-size: 12px;
  opacity: 0.75;
  letter-spacing: 0.4px;
}
.bar-container {
  height: 28px;
  width: 100%;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.bar {
  width: 60%;
  border-radius: 8px 8px 4px 4px;
  box-shadow: 0 6px 14px rgba(0,0,0,0.25);
}
.hour .temp {
  font-size: 14px;
  font-weight: 600;
  margin-top: 2px;
}
.hourly-grid::-webkit-scrollbar {
  width: 6px;
}
.hourly-grid::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.3);
  border-radius: 10px;
}
.hourly-grid::-webkit-scrollbar-track {
  background: rgba(255,255,255,0.08);
  border-radius: 10px;
}
.status {
  text-align: center;
  font-size: 14px;
  opacity: 0.7;
  margin-top: 4px;
  align-self: center;
}
.status.error {
  opacity: 1;
  color: #ffdada;
  background: rgba(255, 88, 88, 0.2);
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid rgba(255, 88, 88, 0.4);
  display: inline-block;
}
@media (max-width: 1024px) {
  .card { width: 95vw; height: auto; }
  .hourly-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
</style>
</head>
<body>
<div class="app">
  <div class="card" id="card">
    <div class="header">
      <div>
        <div class="location" id="locationName">--</div>
        <div class="coords" id="coords">--</div>
      </div>
      <div class="date" id="dateDisplay">--</div>
    </div>
    <div class="divider"></div>
    <div class="summary">
      <div class="icon" id="conditionIcon">⛅</div>
      <div class="summary-text">
        <div class="max-temp" id="maxTemp">--°C</div>
        <div class="min-temp">Low <span id="minTemp">--°C</span></div>
        <div class="condition-text" id="conditionText">--</div>
      </div>
      <div class="badge">
        <span class="label">Daily Range</span>
        <span class="value" id="rangeDisplay">--°C</span>
      </div>
    </div>
    <div class="divider"></div>
    <div class="hourly">
      <div class="section-title">Hourly Temperatures (UTC)</div>
      <div class="hourly-grid" id="hourlyGrid"></div>
    </div>
    <div class="status" id="status">Loading weather data…</div>
  </div>
</div>
<script>
(() => {
  const params = new URLSearchParams(window.location.search);
  const defaultLat = 52.52;
  const defaultLon = 13.405;
  const defaultName = 'Berlin';
  const todayStr = new Date().toISOString().slice(0, 10);

  let lat = parseFloat(params.get('lat'));
  if (isNaN(lat)) lat = defaultLat;
  let lon = parseFloat(params.get('lon'));
  if (isNaN(lon)) lon = defaultLon;
  const name = params.get('name') ? params.get('name') : defaultName;
  let date = params.get('date');
  if (!date || !/^\d{4}-\d{2}-\d{2}$/.test(date) || isNaN(Date.parse(date + 'T00:00:00Z'))) {
    date = todayStr;
  }

  const locationNameEl = document.getElementById('locationName');
  const coordsEl = document.getElementById('coords');
  const dateDisplayEl = document.getElementById('dateDisplay');
  const maxTempEl = document.getElementById('maxTemp');
  const minTempEl = document.getElementById('minTemp');
  const conditionTextEl = document.getElementById('conditionText');
  const conditionIconEl = document.getElementById('conditionIcon');
  const hourlyGridEl = document.getElementById('hourlyGrid');
  const statusEl = document.getElementById('status');
  const rangeDisplayEl = document.getElementById('rangeDisplay');

  locationNameEl.textContent = name;
  coordsEl.textContent = `Lat ${lat.toFixed(2)}° · Lon ${lon.toFixed(2)}°`;
  dateDisplayEl.textContent = formatDate(date);

  const reqDate = new Date(date + 'T00:00:00Z');
  const now = new Date();
  const todayUTC = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
  const endpoint = reqDate < todayUTC ? '/api/om/archive' : '/api/om/forecast';

  const query = 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: date,
    end_date: date
  });

  fetch(endpoint + '?' + query.toString())
    .then(res => {
      if (!res.ok) throw new Error('Network response was not ok');
      return res.json();
    })
    .then(data => {
      if (!data || !data.daily || !data.hourly) throw new Error('Invalid data');

      const max = data.daily.temperature_2m_max?.[0];
      const min = data.daily.temperature_2m_min?.[0];
      const code = data.daily.weather_code?.[0];
      if (max === undefined || min === undefined || code === undefined) throw new Error('Missing daily data');

      const cond = conditionFromCode(code);
      conditionIconEl.textContent = cond.icon;
      conditionTextEl.textContent = cond.text;
      document.documentElement.style.setProperty('--accent', cond.accent);

      maxTempEl.textContent = `${formatTemp(max)}°C`;
      minTempEl.textContent = `${formatTemp(min)}°C`;
      if (rangeDisplayEl) {
        rangeDisplayEl.textContent = `${formatTemp(max - min)}°C`;
      }

      const times = data.hourly.time || [];
      const temps = data.hourly.temperature_2m || [];
      const hourly = [];
      for (let i = 0; i < times.length; i++) {
        if (times[i].startsWith(date)) {
          hourly.push({ time: times[i], temp: temps[i] });
        }
      }
      if (!hourly.length) throw new Error('No hourly data');

      renderHourly(hourly);
      statusEl.style.display = 'none';
    })
    .catch(err => {
      console.error(err);
      statusEl.textContent = 'Unable to load weather data.';
      statusEl.classList.add('error');
    });

  function renderHourly(hourly) {
    hourlyGridEl.innerHTML = '';
    const temps = hourly.map(h => h.temp);
    const minT = Math.min(...temps);
    const maxT = Math.max(...temps);
    const range = maxT - minT;

    hourly.forEach(h => {
      const hour = h.time.slice(11, 13);
      const temp = h.temp;
      const ratio = range === 0 ? 0.5 : (temp - minT) / range;
      const barHeight = 8 + ratio * 20;
      const hue = 210 - ratio * 160;

      const cell = document.createElement('div');
      cell.className = 'hour';

      const timeEl = document.createElement('div');
      timeEl.className = 'time';
      timeEl.textContent = `${hour}:00`;

      const barContainer = document.createElement('div');
      barContainer.className = 'bar-container';
      const bar = document.createElement('div');
      bar.className = 'bar';
      bar.style.height = `${barHeight}px`;
      bar.style.background = `linear-gradient(180deg, hsla(${hue}, 85%, 70%, 1), hsla(${hue}, 85%, 50%, 1))`;
      barContainer.appendChild(bar);

      const tempEl = document.createElement('div');
      tempEl.className = 'temp';
      tempEl.textContent = `${formatTemp(temp)}°`;

      cell.appendChild(timeEl);
      cell.appendChild(barContainer);
      cell.appendChild(tempEl);
      hourlyGridEl.appendChild(cell);
    });
  }

  function formatDate(d) {
    const dateObj = new Date(d + 'T00:00:00Z');
    return dateObj.toLocaleDateString('en-US', {
      weekday: 'long',
      year: 'numeric',
      month: 'long',
      day: 'numeric',
      timeZone: 'UTC'
    }) + ' · UTC';
  }

  function formatTemp(t) {
    const v = Math.round(t * 10) / 10;
    return v % 1 === 0 ? v.toFixed(0) : v.toFixed(1);
  }

  function conditionFromCode(code) {
    const list = [
      { codes: [0], text: 'Clear sky', icon: '☀️', accent: '#f6d365' },
      { codes: [1], text: 'Mainly clear', icon: '🌤️', accent: '#f6d365' },
      { codes: [2], text: 'Partly cloudy', icon: '⛅', accent: '#b0bec5' },
      { codes: [3], text: 'Overcast', icon: '☁️', accent: '#90a4ae' },
      { codes: [45, 48], text: 'Fog', icon: '🌫️', accent: '#b0bec5' },
      { codes: [51, 53, 55], text: 'Drizzle', icon: '🌦️', accent: '#7ec8e3' },
      { codes: [56, 57], text: 'Freezing drizzle', icon: '🌧️', accent: '#9ec9f0' },
      { codes: [61, 63, 65], text: 'Rain', icon: '🌧️', accent: '#6dd5fa' },
      { codes: [66, 67], text: 'Freezing rain', icon: '🌧️', accent: '#9ec9f0' },
      { codes: [71, 73, 75], text: 'Snow', icon: '❄️', accent: '#e0f7ff' },
      { codes: [77], text: 'Snow grains', icon: '❄️', accent: '#e0f7ff' },
      { codes: [80, 81, 82], text: 'Rain showers', icon: '🌧️', accent: '#6dd5fa' },
      { codes: [85, 86], text: 'Snow showers', icon: '🌨️', accent: '#e0f7ff' },
      { codes: [95], text: 'Thunderstorm', icon: '⛈️', accent: '#c084fc' },
      { codes: [96, 99], text: 'Thunderstorm with hail', icon: '⛈️', accent: '#c084fc' }
    ];
    for (const entry of list) {
      if (entry.codes.includes(code)) return entry;
    }
    return { text: 'Unknown', icon: '❔', accent: '#6dd5fa' };
  }
})();
</script>
</body>
</html>

L1 —— 廉价的确定性描述量

bytes 总计12,925html / css / js1,384 / 4,924 / 6,617
dom 节点32dom 深度8
css 规则38含 js
brightness78.5contrast33.7
colorfulness47.4留白28.2%

该 slot 的 telemetry

prompt tokens312completion tokens60,919
total tokens61,231wall197.5 s
costrequest id
config.json578 B
{
  "N": 4,
  "auth": {
    "credential_ref": "WCB_OPENAI_OFFICIAL_KEY",
    "method": "api-key"
  },
  "billing": "metered",
  "config_id": "gpt-5.2-codex-eff-xhigh--api--official--dev",
  "effort": "xhigh",
  "family": "gpt",
  "m": {
    "min": 4,
    "q": 4
  },
  "model_id": "gpt-5.2-codex",
  "protocol": "api",
  "served_model": "gpt-5.2-codex",
  "telemetry": {
    "completion_tokens": 430931,
    "cost_usd": null,
    "prompt_tokens": 2464,
    "total_tokens": 433395,
    "wall_ms": 1571149
  },
  "transport": "openai-official-api",
  "vendor_sanction_ref": null
}
send-log4.7 KB
{
  "N": 4,
  "batch_id": "2026-07-18--official-gpt",
  "config_id": "gpt-5.2-codex-eff-xhigh--api--official--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T15:58:13.549501+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:54:56.028341+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-17T16:01:57.594720+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T15:58:17.353878+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-17T16:04:06.247156+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T16:02:01.477804+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-17T16:08:39.409470+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T16:04:09.433335+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-17T16:12:20.282161+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T16:08:42.895315+00:00"
        }
      ],
      "block_index": 2,
      "model_reaching_attempt_index": 0,
      "slot_index": 2,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T16:14:39.754722+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T16:12:24.445994+00:00"
        }
      ],
      "block_index": 2,
      "model_reaching_attempt_index": 0,
      "slot_index": 2,
      "terminal_state": "valid",
      "variant": "P-min"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T16:16:48.297045+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T16:14:43.301871+00:00"
        }
      ],
      "block_index": 3,
      "model_reaching_attempt_index": 0,
      "slot_index": 3,
      "terminal_state": "valid",
      "variant": "P-min"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-17T16:21:32.637938+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-17T16:16:51.667757+00:00"
        }
      ],
      "block_index": 3,
      "model_reaching_attempt_index": 0,
      "slot_index": 3,
      "terminal_state": "valid",
      "variant": "P-q"
    }
  ],
  "retry_policy": {
    "max_unreachable_retries": 5,
    "rate_limit_backoff": {
      "max_attempts": 4,
      "max_total_ms": 60000
    }
  }
}