claude-fable-5 @ xhigh · cursor-xl

cursor-xlxhigh
config
claude-fable-5-eff-xhigh--cli--cursor-xl--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
claude-fable-5-xhigh
采集于
2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe
claude-fable-5 @xhigh · cursor-xl P-q slot 0 截图

截图是 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">
<meta name="viewport" content="width=1280, initial-scale=1">
<link rel="icon" href="data:,">
<title>Weather</title>
<style>
  * { box-sizing: border-box; margin: 0; padding: 0; }

  body {
    --bg1: #46586f; --bg2: #131a24; --accent: #aac3e0; --glow: rgba(170,195,224,.22);
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    background: linear-gradient(160deg, var(--bg1) 0%, var(--bg2) 78%);
    color: #fff;
    overflow: hidden;
    transition: background .7s ease;
  }
  body.theme-clear   { --bg1:#1f5fc4; --bg2:#0a1f4d; --accent:#ffd466; --glow:rgba(255,200,90,.32); }
  body.theme-partly  { --bg1:#2b62b8; --bg2:#0d1d3f; --accent:#ffd98a; --glow:rgba(255,214,120,.26); }
  body.theme-cloudy  { --bg1:#46586f; --bg2:#131a24; --accent:#aac3e0; --glow:rgba(170,195,224,.22); }
  body.theme-fog     { --bg1:#5a6472; --bg2:#181c22; --accent:#ccd6e0; --glow:rgba(205,215,225,.18); }
  body.theme-rain    { --bg1:#1d4287; --bg2:#0a1226; --accent:#7fb3ff; --glow:rgba(127,179,255,.28); }
  body.theme-snow    { --bg1:#3d6285; --bg2:#0e1b2a; --accent:#cfe9ff; --glow:rgba(207,233,255,.30); }
  body.theme-thunder { --bg1:#41306e; --bg2:#0f0a1e; --accent:#cbb1ff; --glow:rgba(203,177,255,.30); }

  .blob { position: fixed; border-radius: 50%; filter: blur(95px); pointer-events: none; transition: background .7s ease; }
  .blob-a { width: 560px; height: 560px; background: var(--glow); top: -170px; left: -130px; }
  .blob-b { width: 480px; height: 480px; background: rgba(255,255,255,.06); bottom: -190px; right: -110px; }

  .card {
    position: relative;
    width: 1120px;
    max-width: calc(100vw - 80px);
    background: linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.04));
    border: 1px solid rgba(255,255,255,.16);
    border-radius: 28px;
    box-shadow: 0 30px 80px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.18);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    padding: 36px 44px 32px;
    animation: rise .6s cubic-bezier(.2,.7,.3,1) both;
  }
  @keyframes rise { from { opacity: 0; transform: translateY(18px) scale(.985); } to { opacity: 1; transform: none; } }

  .head { display: flex; justify-content: space-between; align-items: flex-start; }
  .loc-name { font-size: 36px; font-weight: 700; letter-spacing: -.02em; display: flex; align-items: center; gap: 12px; }
  .loc-name svg { width: 26px; height: 26px; opacity: .8; flex: none; }
  .loc-sub { margin-top: 7px; font-size: 15px; color: rgba(255,255,255,.62); letter-spacing: .01em; }
  .loc-sub b { color: rgba(255,255,255,.88); font-weight: 600; }
  .chip {
    padding: 8px 16px; border-radius: 999px; flex: none; margin-top: 6px;
    background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.20);
    font-size: 12px; font-weight: 700; letter-spacing: .10em; text-transform: uppercase;
    color: rgba(255,255,255,.85);
  }

  .hero { display: flex; align-items: center; gap: 30px; margin-top: 34px; }
  .icon-wrap { width: 134px; height: 134px; flex: none; filter: drop-shadow(0 14px 26px rgba(0,0,0,.35)); animation: rise .7s .1s cubic-bezier(.2,.7,.3,1) both; }
  .icon-wrap svg { width: 100%; height: 100%; }
  .cond-name { font-size: 32px; font-weight: 650; letter-spacing: -.01em; }
  .cond-sub { margin-top: 8px; font-size: 15px; color: rgba(255,255,255,.60); }

  .temps { margin-left: auto; display: flex; align-items: center; gap: 34px; }
  .temp { text-align: right; font-variant-numeric: tabular-nums; }
  .t-label { display: block; font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.55); margin-bottom: 6px; }
  .t-val { font-size: 62px; font-weight: 700; letter-spacing: -.03em; line-height: 1; }
  .t-val.low { color: rgba(255,255,255,.66); }
  .t-divider { width: 1px; height: 66px; background: linear-gradient(180deg, transparent, rgba(255,255,255,.25), transparent); }

  .section-head { margin: 36px 0 12px; display: flex; justify-content: space-between; align-items: baseline; }
  .section-head h2 { font-size: 13px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.62); }
  .section-head span { font-size: 13px; color: rgba(255,255,255,.42); }

  .chart-box {
    background: rgba(0,0,0,.20);
    border: 1px solid rgba(255,255,255,.10);
    border-radius: 20px;
    padding: 14px 10px 6px;
    animation: rise .7s .18s cubic-bezier(.2,.7,.3,1) both;
  }
  .chart-box svg { display: block; width: 100%; height: auto; }
  .cline { fill: none; stroke: var(--accent); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 1.3s .35s ease-out forwards; }
  @keyframes draw { to { stroke-dashoffset: 0; } }
  .carea { opacity: 0; animation: fadein .9s .9s ease forwards; }
  @keyframes fadein { to { opacity: 1; } }
  .dot { fill: var(--accent); stroke: rgba(0,0,0,.35); stroke-width: 1; }
  .dot-ring { fill: none; stroke: rgba(255,255,255,.85); stroke-width: 1.6; }
  .tval { font-size: 13px; font-weight: 600; fill: rgba(255,255,255,.92); text-anchor: middle; font-variant-numeric: tabular-nums; }
  .hlabel { font-size: 11.5px; fill: rgba(255,255,255,.48); text-anchor: middle; }
  .grid { stroke: rgba(255,255,255,.12); stroke-dasharray: 4 5; }
  .nowline { stroke: rgba(255,255,255,.55); stroke-width: 1.4; stroke-dasharray: 3 4; }
  .nowtag { font-size: 11px; font-weight: 700; letter-spacing: .08em; fill: rgba(255,255,255,.85); text-anchor: middle; }
  .no-hourly { padding: 48px 0; text-align: center; color: rgba(255,255,255,.55); font-size: 15px; }

  .state { display: flex; flex-direction: column; align-items: center; gap: 18px; padding: 96px 0; text-align: center; }
  .state h1 { font-size: 26px; font-weight: 650; }
  .state p { font-size: 15px; color: rgba(255,255,255,.60); max-width: 460px; line-height: 1.55; }
  .spinner { width: 46px; height: 46px; border-radius: 50%; border: 3px solid rgba(255,255,255,.18); border-top-color: #fff; animation: spin .85s linear infinite; }
  @keyframes spin { to { transform: rotate(360deg); } }
  .err-icon { width: 58px; height: 58px; }
  .retry {
    margin-top: 6px; padding: 11px 26px; border-radius: 999px; cursor: pointer;
    border: 1px solid rgba(255,255,255,.28); background: rgba(255,255,255,.12);
    color: #fff; font-size: 14px; font-weight: 600; font-family: inherit;
    transition: background .2s;
  }
  .retry:hover { background: rgba(255,255,255,.22); }
</style>
</head>
<body class="theme-cloudy">
<div class="blob blob-a"></div>
<div class="blob blob-b"></div>
<main class="card" id="app">
  <div class="state"><div class="spinner"></div><p>Loading weather&hellip;</p></div>
</main>

<script>
(function () {
  var app = document.getElementById('app');

  function esc(s) {
    return String(s).replace(/[&<>"']/g, function (c) {
      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c];
    });
  }

  var qs = new URLSearchParams(location.search);
  var lat = parseFloat(qs.get('lat'));
  var lon = parseFloat(qs.get('lon'));
  if (!isFinite(lat)) lat = 52.52;
  if (!isFinite(lon)) lon = 13.405;
  var name = qs.get('name') || 'Berlin';
  var today = new Date().toISOString().slice(0, 10);
  var dateStr = /^\d{4}-\d{2}-\d{2}$/.test(qs.get('date') || '') ? qs.get('date') : today;
  var isPast = dateStr < today;

  var WMO = {
    0: ['Clear sky', 'clear'], 1: ['Mainly clear', 'clear'], 2: ['Partly cloudy', 'partly'], 3: ['Overcast', 'cloudy'],
    45: ['Fog', 'fog'], 48: ['Depositing rime fog', 'fog'],
    51: ['Light drizzle', 'rain'], 53: ['Moderate drizzle', 'rain'], 55: ['Dense drizzle', 'rain'],
    56: ['Light freezing drizzle', 'rain'], 57: ['Dense freezing drizzle', 'rain'],
    61: ['Slight rain', 'rain'], 63: ['Moderate rain', 'rain'], 65: ['Heavy rain', 'rain'],
    66: ['Light freezing rain', 'rain'], 67: ['Heavy freezing rain', 'rain'],
    71: ['Slight snowfall', 'snow'], 73: ['Moderate snowfall', 'snow'], 75: ['Heavy snowfall', 'snow'], 77: ['Snow grains', 'snow'],
    80: ['Slight rain showers', 'rain'], 81: ['Moderate rain showers', 'rain'], 82: ['Violent rain showers', 'rain'],
    85: ['Slight snow showers', 'snow'], 86: ['Heavy snow showers', 'snow'],
    95: ['Thunderstorm', 'thunder'], 96: ['Thunderstorm with slight hail', 'thunder'], 99: ['Thunderstorm with heavy hail', 'thunder']
  };

  function cloudShape(tx, ty, s, fill) {
    return '<g transform="translate(' + tx + ' ' + ty + ') scale(' + s + ')" fill="' + fill + '">' +
      '<circle cx="22" cy="30" r="10"/><circle cx="33" cy="24" r="12"/><circle cx="44" cy="31" r="9"/>' +
      '<rect x="20" y="28" width="27" height="12" rx="6"/></g>';
  }
  function sunRays(cx, cy, r1, r2, n, w) {
    var out = '<g stroke="#ffd466" stroke-width="' + w + '" stroke-linecap="round">';
    for (var i = 0; i < n; i++) {
      var a = Math.PI * 2 * i / n + Math.PI / n;
      out += '<line x1="' + (cx + Math.cos(a) * r1).toFixed(1) + '" y1="' + (cy + Math.sin(a) * r1).toFixed(1) +
             '" x2="' + (cx + Math.cos(a) * r2).toFixed(1) + '" y2="' + (cy + Math.sin(a) * r2).toFixed(1) + '"/>';
    }
    return out + '</g>';
  }
  function flake(x, y) {
    var out = '<g transform="translate(' + x + ' ' + y + ')" stroke="#dff0ff" stroke-width="2.4" stroke-linecap="round">';
    for (var i = 0; i < 3; i++) {
      var a = Math.PI * i / 3;
      out += '<line x1="' + (-Math.cos(a) * 4.5).toFixed(1) + '" y1="' + (-Math.sin(a) * 4.5).toFixed(1) +
             '" x2="' + (Math.cos(a) * 4.5).toFixed(1) + '" y2="' + (Math.sin(a) * 4.5).toFixed(1) + '"/>';
    }
    return out + '</g>';
  }
  var CLOUD_FILL = '#e9eef8';
  var ICONS = {
    clear: function () {
      return sunRays(32, 32, 18, 25, 8, 4) + '<circle cx="32" cy="32" r="12" fill="#ffd466"/>';
    },
    partly: function () {
      return sunRays(22, 21, 13, 18, 7, 3.4) + '<circle cx="22" cy="21" r="9" fill="#ffd466"/>' + cloudShape(4, 8, 1, CLOUD_FILL);
    },
    cloudy: function () {
      return cloudShape(-2, -4, .8, 'rgba(233,238,248,.5)') + cloudShape(4, 8, 1, CLOUD_FILL);
    },
    fog: function () {
      return cloudShape(2, -8, 1, CLOUD_FILL) +
        '<g stroke="rgba(233,238,248,.75)" stroke-width="4" stroke-linecap="round">' +
        '<line x1="16" y1="44" x2="46" y2="44"/><line x1="21" y1="52" x2="51" y2="52"/><line x1="16" y1="60" x2="42" y2="60"/></g>';
    },
    rain: function () {
      return cloudShape(2, -6, 1, CLOUD_FILL) +
        '<g stroke="#7fb3ff" stroke-width="4" stroke-linecap="round">' +
        '<line x1="24" y1="44" x2="21" y2="54"/><line x1="34" y1="44" x2="31" y2="54"/><line x1="44" y1="44" x2="41" y2="54"/></g>';
    },
    snow: function () {
      return cloudShape(2, -8, 1, CLOUD_FILL) + flake(23, 48) + flake(34, 56) + flake(45, 48);
    },
    thunder: function () {
      return cloudShape(2, -10, 1, CLOUD_FILL) +
        '<polygon fill="#ffd466" points="33,34 42,34 36,44 42,44 27,60 32,49 26,49"/>';
    }
  };
  function iconSvg(kind) {
    return '<svg viewBox="0 0 64 64" aria-hidden="true">' + (ICONS[kind] || ICONS.cloudy)() + '</svg>';
  }

  function fmtDate(d) {
    return new Intl.DateTimeFormat('en-GB', { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric', timeZone: 'UTC' }).format(new Date(d + 'T00:00:00Z'));
  }
  function relLabel(d) {
    var diff = Math.round((Date.parse(d + 'T00:00:00Z') - Date.parse(today + 'T00:00:00Z')) / 864e5);
    if (diff === 0) return 'Today';
    if (diff === 1) return 'Tomorrow';
    if (diff === -1) return 'Yesterday';
    return diff > 0 ? 'In ' + diff + ' days' : Math.abs(diff) + ' days ago';
  }
  function fmtCoord(v, pos, neg) {
    return Math.abs(v).toFixed(2) + '\u00B0' + (v >= 0 ? pos : neg);
  }
  function deg(v) { return Math.round(v) + '\u00B0'; }

  function smoothPath(pts) {
    var d = 'M ' + pts[0].x.toFixed(1) + ' ' + pts[0].y.toFixed(1);
    for (var i = 0; i < pts.length - 1; i++) {
      var p0 = pts[Math.max(0, i - 1)], p1 = pts[i], p2 = pts[i + 1], p3 = pts[Math.min(pts.length - 1, i + 2)];
      d += ' C ' + (p1.x + (p2.x - p0.x) / 6).toFixed(1) + ' ' + (p1.y + (p2.y - p0.y) / 6).toFixed(1) +
           ', ' + (p2.x - (p3.x - p1.x) / 6).toFixed(1) + ' ' + (p2.y - (p3.y - p1.y) / 6).toFixed(1) +
           ', ' + p2.x.toFixed(1) + ' ' + p2.y.toFixed(1);
    }
    return d;
  }

  function buildChart(hrs, isToday) {
    var W = 1128, H = 252, padX = 26, topPad = 46, bottomPad = 30;
    var n = hrs.length;
    var temps = hrs.map(function (h) { return h.t; }).filter(function (t) { return t != null; });
    if (n < 2 || temps.length === 0) {
      return '<div class="no-hourly">Hourly temperatures are not available for this date.</div>';
    }
    var tMax = Math.max.apply(null, temps), tMin = Math.min.apply(null, temps);
    var range = Math.max(tMax - tMin, 2);
    var lo = (tMax + tMin) / 2 - range / 2 - range * 0.08;
    var hi = (tMax + tMin) / 2 + range / 2 + range * 0.08;
    var step = (W - padX * 2) / (n - 1);
    var plotH = H - topPad - bottomPad;
    var baseY = H - bottomPad + 2;

    function X(i) { return padX + i * step; }
    function Y(t) { return topPad + (1 - (t - lo) / (hi - lo)) * plotH; }

    var pts = [], runs = [], cur = [];
    hrs.forEach(function (h, i) {
      if (h.t == null) { if (cur.length) { runs.push(cur); cur = []; } pts.push(null); return; }
      var p = { x: X(i), y: Y(h.t), t: h.t, i: i };
      pts.push(p); cur.push(p);
    });
    if (cur.length) runs.push(cur);

    var s = '<svg viewBox="0 0 ' + W + ' ' + H + '" role="img" aria-label="Hourly temperature chart">';
    s += '<defs><linearGradient id="ag" x1="0" y1="0" x2="0" y2="1">' +
         '<stop offset="0" style="stop-color:var(--accent);stop-opacity:.32"/>' +
         '<stop offset="1" style="stop-color:var(--accent);stop-opacity:0"/></linearGradient></defs>';

    s += '<line class="grid" x1="' + padX + '" y1="' + Y(tMax).toFixed(1) + '" x2="' + (W - padX) + '" y2="' + Y(tMax).toFixed(1) + '"/>';
    s += '<line class="grid" x1="' + padX + '" y1="' + Y(tMin).toFixed(1) + '" x2="' + (W - padX) + '" y2="' + Y(tMin).toFixed(1) + '"/>';

    if (isToday) {
      var nh = new Date().getUTCHours();
      if (nh < n) {
        var nx = X(nh);
        s += '<line class="nowline" x1="' + nx.toFixed(1) + '" y1="22" x2="' + nx.toFixed(1) + '" y2="' + baseY + '"/>';
        s += '<text class="nowtag" x="' + Math.min(Math.max(nx, 20), W - 20).toFixed(1) + '" y="14">NOW</text>';
      }
    }

    runs.forEach(function (run) {
      if (run.length < 2) return;
      var d = smoothPath(run);
      s += '<path class="carea" fill="url(#ag)" d="' + d + ' L ' + run[run.length - 1].x.toFixed(1) + ' ' + baseY + ' L ' + run[0].x.toFixed(1) + ' ' + baseY + ' Z"/>';
      s += '<path class="cline" pathLength="1" d="' + d + '"/>';
    });

    var maxP = null, minP = null;
    pts.forEach(function (p) {
      if (!p) return;
      if (!maxP || p.t > maxP.t) maxP = p;
      if (!minP || p.t < minP.t) minP = p;
    });

    hrs.forEach(function (h, i) {
      var x = X(i);
      if (pts[i]) {
        s += '<g><title>' + h.label + ' \u2014 ' + h.t.toFixed(1) + '\u00B0C</title>' +
             '<circle class="dot" cx="' + x.toFixed(1) + '" cy="' + pts[i].y.toFixed(1) + '" r="3.6"/></g>';
        s += '<text class="tval" x="' + x.toFixed(1) + '" y="' + (pts[i].y - 12).toFixed(1) + '">' + deg(h.t) + '</text>';
      } else {
        s += '<text class="tval" x="' + x.toFixed(1) + '" y="' + (topPad + plotH / 2).toFixed(1) + '" opacity=".4">\u2013</text>';
      }
      s += '<text class="hlabel" x="' + x.toFixed(1) + '" y="' + (H - 8) + '">' + h.label.slice(0, 2) + '</text>';
    });

    if (maxP) s += '<circle class="dot-ring" cx="' + maxP.x.toFixed(1) + '" cy="' + maxP.y.toFixed(1) + '" r="6.5"/>';
    if (minP && minP !== maxP) s += '<circle class="dot-ring" cx="' + minP.x.toFixed(1) + '" cy="' + minP.y.toFixed(1) + '" r="6.5"/>';

    return s + '</svg>';
  }

  function renderError(msg) {
    document.body.className = 'theme-cloudy';
    app.innerHTML =
      '<div class="state">' +
        '<svg class="err-icon" viewBox="0 0 64 64"><path d="M32 8 60 56 H4 Z" fill="none" stroke="rgba(255,255,255,.8)" stroke-width="3.5" stroke-linejoin="round"/>' +
        '<line x1="32" y1="26" x2="32" y2="42" stroke="rgba(255,255,255,.8)" stroke-width="3.5" stroke-linecap="round"/>' +
        '<circle cx="32" cy="49" r="2.4" fill="rgba(255,255,255,.8)"/></svg>' +
        '<h1>Weather data could not be loaded</h1>' +
        '<p>' + esc(msg) + '</p>' +
        '<button class="retry" onclick="location.reload()">Try again</button>' +
      '</div>';
  }

  function render(data) {
    var daily = data.daily || {};
    var hourly = data.hourly || {};
    var hrs = [];
    if (hourly.time && hourly.temperature_2m) {
      hourly.time.forEach(function (t, i) {
        if (t.slice(0, 10) === dateStr) {
          hrs.push({ label: t.slice(11, 16) || (t.slice(11, 13) + ':00'), t: hourly.temperature_2m[i] });
        }
      });
    }
    var hourTemps = hrs.map(function (h) { return h.t; }).filter(function (t) { return t != null; });

    var tMax = daily.temperature_2m_max ? daily.temperature_2m_max[0] : null;
    var tMin = daily.temperature_2m_min ? daily.temperature_2m_min[0] : null;
    if (tMax == null && hourTemps.length) tMax = Math.max.apply(null, hourTemps);
    if (tMin == null && hourTemps.length) tMin = Math.min.apply(null, hourTemps);
    if (tMax == null || tMin == null) {
      renderError('No temperature data is available for ' + fmtDate(dateStr) + ' at this location.');
      return;
    }

    var code = daily.weather_code ? daily.weather_code[0] : null;
    var cond = (code != null && WMO[code]) ? WMO[code] : ['Unknown conditions', 'cloudy'];
    document.body.className = 'theme-' + cond[1];
    document.title = name + ' \u00B7 ' + dateStr;

    app.innerHTML =
      '<div class="head">' +
        '<div>' +
          '<div class="loc-name">' +
            '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">' +
            '<path d="M12 21s-7-5.5-7-11a7 7 0 0 1 14 0c0 5.5-7 11-7 11z"/><circle cx="12" cy="10" r="2.6"/></svg>' +
            esc(name) +
          '</div>' +
          '<div class="loc-sub"><b>' + fmtDate(dateStr) + '</b> &nbsp;\u00B7&nbsp; ' +
            fmtCoord(lat, 'N', 'S') + ', ' + fmtCoord(lon, 'E', 'W') + '</div>' +
        '</div>' +
        '<div class="chip">' + (isPast ? 'Archive' : 'Forecast') + '</div>' +
      '</div>' +
      '<div class="hero">' +
        '<div class="icon-wrap">' + iconSvg(cond[1]) + '</div>' +
        '<div>' +
          '<div class="cond-name">' + cond[0] + '</div>' +
          '<div class="cond-sub">' + relLabel(dateStr) + ' \u00B7 All times UTC</div>' +
        '</div>' +
        '<div class="temps">' +
          '<div class="temp"><span class="t-label">High</span><span class="t-val">' + deg(tMax) + '</span></div>' +
          '<div class="t-divider"></div>' +
          '<div class="temp"><span class="t-label">Low</span><span class="t-val low">' + deg(tMin) + '</span></div>' +
        '</div>' +
      '</div>' +
      '<div class="section-head"><h2>Hourly temperature</h2><span>' + hrs.length + ' hours \u00B7 \u00B0C</span></div>' +
      '<div class="chart-box">' + buildChart(hrs, dateStr === today) + '</div>';
  }

  var base = isPast ? '/api/om/archive' : '/api/om/forecast';
  var 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: dateStr,
    end_date: dateStr
  });

  fetch(base + '?' + params.toString())
    .then(function (res) {
      if (!res.ok) throw new Error('The weather service responded with HTTP ' + res.status + '.');
      return res.json();
    })
    .then(function (data) {
      if (data && data.error) throw new Error(data.reason || 'The weather service returned an error.');
      render(data);
    })
    .catch(function (e) {
      renderError(e && e.message ? e.message : 'An unexpected error occurred while fetching the data.');
    });
})();
</script>
</body>
</html>

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

bytes 总计20,496html / css / js451 / 6,494 / 13,551
dom 节点15dom 深度5
css 规则61含 js
brightness51.6contrast27.8
colorfulness34.0留白42.1%

该 slot 的 telemetry

prompt tokens2completion tokens24,360
total tokens24,362wall310.6 s
costrequest id
config.json582 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "claude-fable-5-eff-xhigh--cli--cursor-xl--dev",
  "effort": "xhigh",
  "family": "claude",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "claude-fable-5",
  "protocol": "cli",
  "served_model": "claude-fable-5-xhigh",
  "telemetry": {
    "completion_tokens": 67075,
    "cost_usd": null,
    "prompt_tokens": 8,
    "total_tokens": 67083,
    "wall_ms": 832211
  },
  "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": "claude-fable-5-eff-xhigh--cli--cursor-xl--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T12:52:54.199617+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T12:47:43.597323+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-13T12:54:00.998074+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T12:52:58.151758+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-13T12:55:23.049917+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T12:54:04.327706+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-13T13:01:46.289750+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T12:55:26.244371+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
    }
  }
}