mimo-v2.5 · go

go
config
mimo-v2.5--opencode-go--dev
batch
2026-07-19--unified
transport
opencode-go-gateway
protocol
api · plan
served model
mimo-v2.5
采集于
2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe
mimo-v2.5 · go P-q slot 0 截图

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

similarity 邻居

限于 session 2026-07-19--unified

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

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

  • namematch
  • conditionmatch
  • datematch
  • max tempmatch展示值:25
  • min tempmatch展示值:16
  • hourlymismatchcoverage 1/24 · 1 命中 · 8 不符 · 15 未展示
  • 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">
<title>Weather</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  background:linear-gradient(160deg,#0b1026 0%,#131b3a 30%,#1a2550 55%,#1e2d5e 75%,#141e3c 100%);
  display:flex;align-items:center;justify-content:center;
  color:#fff;min-height:100vh;overflow:auto;
}
#app{width:100%;padding:20px}

.card{
  width:920px;margin:0 auto;
  background:rgba(255,255,255,0.07);
  backdrop-filter:blur(32px);-webkit-backdrop-filter:blur(32px);
  border-radius:28px;
  border:1px solid rgba(255,255,255,0.1);
  padding:48px 56px 44px;
  box-shadow:0 32px 80px rgba(0,0,0,0.45),0 0 0 1px rgba(255,255,255,0.04) inset;
  animation:cardIn .7s cubic-bezier(.22,1,.36,1);
}
@keyframes cardIn{from{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:none}}

.location-name{
  font-size:12px;font-weight:700;text-transform:uppercase;
  letter-spacing:4px;color:rgba(255,255,255,.45);margin-bottom:6px;
}
.date-display{font-size:16px;font-weight:300;color:rgba(255,255,255,.65);margin-bottom:36px}

.hero{display:flex;align-items:center;gap:40px;margin-bottom:32px}
.weather-icon{font-size:76px;line-height:1;filter:drop-shadow(0 4px 12px rgba(0,0,0,.25))}
.hero-text{}
.temp-big{font-size:72px;font-weight:200;line-height:1;letter-spacing:-3px}
.temp-big .deg{font-size:36px;font-weight:300;vertical-align:super;margin-left:-2px;opacity:.7}
.temp-range{display:flex;gap:20px;margin-top:10px;font-size:15px;font-weight:400}
.temp-range .hi{color:rgba(255,180,100,.85)}
.temp-range .lo{color:rgba(130,190,255,.85)}
.weather-desc{font-size:17px;font-weight:400;color:rgba(255,255,255,.7);margin-top:12px}

.sep{
  height:1px;margin:4px 0 28px;
  background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.12) 20%,rgba(255,255,255,.12) 80%,transparent 100%);
}

.section-label{
  font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:2.5px;color:rgba(255,255,255,.3);margin-bottom:20px;
}

.chart{position:relative;display:flex;gap:4px}
.chart-y{display:flex;flex-direction:column;justify-content:space-between;
  height:170px;padding:0 6px 0 0;flex-shrink:0}
.chart-y span{font-size:9px;font-weight:500;color:rgba(255,255,255,.22);
  text-align:right;min-width:22px;line-height:1}

.chart-area{flex:1;position:relative;height:170px}
.chart-grid{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;
  pointer-events:none}
.chart-grid i{display:block;height:1px;
  background:rgba(255,255,255,.06)}

.chart-bars{position:absolute;inset:0;display:flex;align-items:flex-end;gap:0;z-index:1}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;min-width:0}
.bar-val{font-size:9px;font-weight:600;color:rgba(255,255,255,.38);
  margin-bottom:3px;white-space:opacity .6;transition:opacity .3s}
.bar-col:hover .bar-val{opacity:1}
.bar{width:60%;min-height:3px;border-radius:3px 3px 1px 1px;
  transition:height 1s cubic-bezier(.22,1,.36,1);position:relative;overflow:hidden}
.bar::after{content:'';position:absolute;inset:0;
  background:linear-gradient(to bottom,rgba(255,255,255,.15) 0%,transparent 60%);
  border-radius:inherit}

.chart-times{position:absolute;left:0;right:0;bottom:-22px;z-index:2}
.chart-times span{position:absolute;transform:translateX(-50%);
  font-size:9px;font-weight:600;color:rgba(255,255,255,.2)}

.error-state,.loading-state{text-align:center;padding:72px 40px}
.error-state .icon{font-size:52px;margin-bottom:18px;opacity:.45}
.error-state .msg{font-size:15px;color:rgba(255,255,255,.55);line-height:1.7}
.loading-spinner{
  width:30px;height:30px;margin:0 auto 18px;
  border:2.5px solid rgba(255,255,255,.08);
  border-top-color:rgba(255,255,255,.45);
  border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-text{font-size:13px;color:rgba(255,255,255,.4)}
</style>
</head>
<body>
<div id="app"><div class="loading-state"><div class="loading-spinner"></div><div class="loading-text">Loading weather data…</div></div></div>
<script>
(function(){
  var P=new URLSearchParams(location.search);
  var lat=parseFloat(P.get('lat'))||52.52;
  var lon=parseFloat(P.get('lon'))||13.405;
  var locName=P.get('name')||'Berlin';
  var reqDate=P.get('date');
  var now=new Date();
  var today=now.toISOString().slice(0,10);
  if(!reqDate)reqDate=today;
  if(!/^\d{4}-\d{2}-\d{2}$/.test(reqDate)){showError('Invalid date format. Use YYYY-MM-DD.');return;}
  var isPast=reqDate<today;
  var base=isPast?'/api/om/archive':'/api/om/forecast';
  var qs=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:reqDate,end_date:reqDate
  });

  fetch(base+'?'+qs).then(function(r){
    if(!r.ok)throw new Error('HTTP '+r.status);
    return r.json();
  }).then(function(d){
    if(!d.daily||!d.hourly||!d.daily.temperature_2m_max)throw new Error('Bad data');
    render(d);
  }).catch(function(e){
    console.error(e);
    showError('Unable to load weather data. Please try again later.');
  });

  function render(d){
    var mx=d.daily.temperature_2m_max[0];
    var mn=d.daily.temperature_2m_min[0];
    var code=d.daily.weather_code[0];
    var temps=d.hourly.temperature_2m;
    var n=Math.min(temps.length,24);

    var icon=weatherIcon(code);
    var desc=weatherDesc(code);
    var fDate=fmtDate(reqDate);

    var cMin=Infinity,cMax=-Infinity;
    for(var i=0;i<n;i++){if(temps[i]<cMin)cMin=temps[i];if(temps[i]>cMax)cMax=temps[i];}
    var cRange=cMax-cMin||1;
    var pad=cRange*0.08;
    cMin-=pad;cMax+=pad;
    var range=cMax-cMin||1;

    var yTicks=5;
    var yHTML='';
    for(var t=0;t<yTicks;t++){
      var v=cMax-(cRange+2*pad)*t/(yTicks-1);
      yHTML+='<span>'+Math.round(v)+'°</span>';
    }

    var gridHTML='';
    for(var t=0;t<yTicks;t++)gridHTML+='<i></i>';

    var barsHTML='';
    for(var i=0;i<n;i++){
      var tmp=temps[i];
      var h=Math.max(((tmp-cMin)/range)*100,2);
      var clr=barColor(tmp,cMin,cMax);
      barsHTML+='<div class="bar-col"><div class="bar-val">'+Math.round(tmp)+'°</div><div class="bar" style="height:'+h+'%;background:'+clr+'"></div></div>';
    }

    var timesHTML='';
    for(var i=0;i<n;i++){
      if(i%3===0||i===n-1){
        var pct=(i/(n-1))*100;
        timesHTML+='<span style="left:'+pct+'%">'+String(i).padStart(2,'0')+':00</span>';
      }
    }

    document.getElementById('app').innerHTML=
      '<div class="card">'+
        '<div class="location-name">📍 '+esc(locName)+'</div>'+
        '<div class="date-display">'+fDate+'</div>'+
        '<div class="hero">'+
          '<div class="weather-icon">'+icon+'</div>'+
          '<div class="hero-text">'+
            '<div class="temp-big">'+Math.round(mx)+'<span class="deg">°C</span></div>'+
            '<div class="temp-range"><span class="hi">▲ '+Math.round(mx)+'°</span><span class="lo">▼ '+Math.round(mn)+'°</span></div>'+
            '<div class="weather-desc">'+desc+'</div>'+
          '</div>'+
        '</div>'+
        '<div class="sep"></div>'+
        '<div class="section-label">Hourly Temperatures</div>'+
        '<div class="chart">'+
          '<div class="chart-y">'+yHTML+'</div>'+
          '<div style="flex:1;position:relative;height:192px">'+
            '<div class="chart-area" style="height:170px">'+
              '<div class="chart-grid">'+gridHTML+'</div>'+
              '<div class="chart-bars">'+barsHTML+'</div>'+
            '</div>'+
            '<div class="chart-times" style="position:relative;height:22px">'+timesHTML+'</div>'+
          '</div>'+
        '</div>'+
      '</div>';

    setTimeout(function(){
      var bars=document.querySelectorAll('.bar');
      bars.forEach(function(b){
        var h=b.style.height;
        b.style.height='3px';
        requestAnimationFrame(function(){b.style.height=h;});
      });
    },50);
  }

  function showError(msg){
    document.getElementById('app').innerHTML=
      '<div class="card"><div class="error-state"><div class="icon">⚠️</div><div class="msg">'+esc(msg)+'</div></div></div>';
  }

  function fmtDate(s){
    var d=new Date(s+'T12:00:00Z');
    return d.toLocaleDateString('en-US',{weekday:'long',year:'numeric',month:'long',day:'numeric',timeZone:'UTC'});
  }

  function weatherIcon(c){
    if(c===0)return'☀️';if(c===1)return'🌤️';if(c===2)return'⛅';if(c===3)return'☁️';
    if(c===45||c===48)return'🌫️';
    if(c>=51&&c<=57)return'🌦️';
    if(c>=61&&c<=67)return'🌧️';
    if(c>=71&&c<=77)return'❄️';
    if(c>=80&&c<=82)return'🌦️';
    if(c>=85&&c<=86)return'🌨️';
    if(c>=95)return'⛈️';
    return'🌡️';
  }

  function weatherDesc(c){
    var m={0:'Clear Sky',1:'Mainly Clear',2:'Partly Cloudy',3:'Overcast',
      45:'Foggy',48:'Rime Fog',51:'Light Drizzle',53:'Moderate Drizzle',55:'Dense Drizzle',
      56:'Freezing Drizzle',57:'Heavy 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:'Light Rain Showers',
      81:'Moderate Rain Showers',82:'Violent Rain Showers',85:'Light Snow Showers',
      86:'Heavy Snow Showers',95:'Thunderstorm',96:'Thunderstorm with Hail',
      99:'Severe Thunderstorm'};
    return m[c]||'Unknown';
  }

  function barColor(temp,min,max){
    var stops=[
      [0,  [70,150,250]],
      [.2, [80,180,240]],
      [.4,[200,200,100]],
      [.6,[245,190,60]],
      [.8,[240,120,50]],
      [1,  [230,70,50]]
    ];
    var t=max>min?(temp-min)/(max-min):.5;
    var lo=stops[0],hi=stops[stops.length-1];
    for(var i=0;i<stops.length-1;i++){
      if(t>=stops[i][0]&&t<=stops[i+1][0]){lo=stops[i];hi=stops[i+1];break;}
    }
    var lt=hi[0]===lo[0]?0:(t-lo[0])/(hi[0]-lo[0]);
    var r=Math.round(lo[1][0]+lt*(hi[1][0]-lo[1][0]));
    var g=Math.round(lo[1][1]+lt*(hi[1][1]-lo[1][1]));
    var b=Math.round(lo[1][2]+lt*(hi[1][2]-lo[1][2]));
    return'rgb('+r+','+g+','+b+')';
  }

  function esc(s){var d=document.createElement('span');d.textContent=s;return d.innerHTML;}
})();
</script>
</body>
</html>

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

bytes 总计10,457html / css / js338 / 3,924 / 6,195
dom 节点12dom 深度5
css 规则42含 js
brightness43.8contrast15.6
colorfulness21.9留白77.3%

该 slot 的 telemetry

prompt tokens562completion tokens17,948
total tokens18,510wall117 s
costrequest id
config.json537 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_OPENCODE_KEY",
    "method": "oauth"
  },
  "billing": "plan",
  "config_id": "mimo-v2.5--opencode-go--dev",
  "effort": null,
  "family": "mimo",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "mimo-v2.5",
  "protocol": "api",
  "served_model": "mimo-v2.5",
  "telemetry": {
    "completion_tokens": 72282,
    "cost_usd": null,
    "prompt_tokens": 2232,
    "total_tokens": 74514,
    "wall_ms": 456347
  },
  "transport": "opencode-go-gateway",
  "vendor_sanction_ref": null
}
send-log2.4 KB
{
  "N": 2,
  "batch_id": "2026-07-19--go-requeue2",
  "config_id": "mimo-v2.5--opencode-go--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-18T20:38:58.431466+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:38:37.719190+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-18T20:40:58.174247+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:39:01.186758+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-18T20:45:44.278537+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:41:02.102337+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-18T20:46:24.747326+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:45:48.329946+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
    }
  }
}