mimo-v2.5-pro · opencode

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

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

similarity 邻居

限于 session 2026-07-19--unified

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

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

  • namematch
  • conditionmatch
  • datematch
  • max tempambiguous展示值:25.3max-equals-min
  • min tempambiguous展示值:25.3max-equals-min
  • 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">
<title>Weather Card</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0f172a;--card:#1e293b;--card-alt:#334155;
  --text:#f1f5f9;--text-dim:#94a3b8;--accent:#38bdf8;--accent2:#818cf8;
  --warm:#fb923c;--cool:#22d3ee;--radius:16px;
  font-family:'Segoe UI',system-ui,-apple-system,sans-serif;
}
html,body{height:100%}
body{
  background:var(--bg);color:var(--text);
  display:flex;align-items:center;justify-content:center;
  min-height:100vh;padding:24px;
}
.card{
  background:var(--card);border-radius:var(--radius);
  box-shadow:0 25px 60px rgba(0,0,0,.45);
  width:100%;max-width:1080px;overflow:hidden;
  display:grid;grid-template-columns:1fr 1fr;
}
.hero{
  padding:48px 40px;display:flex;flex-direction:column;justify-content:center;
  background:linear-gradient(135deg,#1e3a5f 0%,#0f172a 100%);
  position:relative;overflow:hidden;
}
.hero::before{
  content:'';position:absolute;top:-60px;right:-60px;
  width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle,rgba(56,189,248,.18),transparent 70%);
  pointer-events:none;
}
.hero .location{font-size:1.15rem;color:var(--accent);font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px}
.hero .date{font-size:.95rem;color:var(--text-dim);margin-bottom:28px}
.hero .temp-row{display:flex;align-items:baseline;gap:20px;margin-bottom:12px}
.hero .temp-hi{font-size:4rem;font-weight:700;line-height:1;letter-spacing:-.03em}
.hero .temp-lo{font-size:1.8rem;font-weight:400;color:var(--text-dim)}
.hero .condition{font-size:1.15rem;color:var(--text-dim);display:flex;align-items:center;gap:8px}
.hero .weather-icon{font-size:2.6rem;margin-bottom:16px}

.details{padding:40px 36px;display:flex;flex-direction:column;gap:24px;overflow:hidden}
.details h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);font-weight:600}

.hourly{flex:1;overflow-y:auto;min-height:0}
.hourly::-webkit-scrollbar{width:4px}
.hourly::-webkit-scrollbar-thumb{background:var(--card-alt);border-radius:4px}
.hour-row{
  display:flex;align-items:center;gap:12px;
  padding:9px 12px;border-radius:10px;
  transition:background .15s;
}
.hour-row:hover{background:var(--card-alt)}
.hour-time{width:52px;font-size:.85rem;color:var(--text-dim);font-variant-numeric:tabular-nums;flex-shrink:0}
.bar-track{flex:1;height:8px;background:var(--card-alt);border-radius:4px;overflow:hidden;position:relative}
.bar-fill{height:100%;border-radius:4px;transition:width .4s ease}
.hour-val{width:46px;text-align:right;font-size:.85rem;font-weight:600;font-variant-numeric:tabular-nums;flex-shrink:0}

.legend{display:flex;gap:16px;flex-wrap:wrap}
.legend-item{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--text-dim)}
.legend-dot{width:8px;height:8px;border-radius:50%}

.error-state{
  grid-column:1/-1;padding:80px 40px;text-align:center;
}
.error-state .icon{font-size:3rem;margin-bottom:16px}
.error-state .msg{font-size:1.1rem;color:var(--text-dim)}

@media(max-width:720px){
  .card{grid-template-columns:1fr}
  .hero{padding:32px 24px}
  .details{padding:24px}
}
</style>
</head>
<body>
<div class="card" id="app"></div>
<script>
(function(){
  const $=s=>document.querySelector(s);
  const app=$('#app');
  const p=new URLSearchParams(location.search);
  const lat=parseFloat(p.get('lat'))||52.52;
  const lon=parseFloat(p.get('lon'))||13.405;
  const name=p.get('name')||'Berlin';
  const dateStr=p.get('date')||new Date().toISOString().slice(0,10);

  const isPast=(()=>{const t=new Date();t.setUTCHours(0,0,0,0);return new Date(dateStr)<t})();
  const endpoint=isPast?'/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:dateStr,end_date:dateStr
  });

  const codes={
    0:'Clear sky',1:'Mainly clear',2:'Partly cloudy',3:'Overcast',
    45:'Fog',48:'Rime fog',51:'Light drizzle',53:'Moderate drizzle',55:'Dense drizzle',
    56:'Freezing drizzle',57:'Dense freezing drizzle',
    61:'Slight rain',63:'Moderate rain',65:'Heavy rain',
    66:'Freezing rain',67:'Heavy freezing rain',
    71:'Slight snow',73:'Moderate snow',75:'Heavy snow',
    77:'Snow grains',80:'Slight showers',81:'Moderate showers',82:'Violent showers',
    85:'Slight snow showers',86:'Heavy snow showers',
    95:'Thunderstorm',96:'Thunderstorm w/ hail',99:'Thunderstorm w/ heavy hail'
  };
  const icons={
    0:'☀️',1:'🌤️',2:'⛅',3:'☁️',
    45:'🌫️',48:'🌫️',51:'🌦️',53:'🌦️',55:'🌧️',
    61:'🌧️',63:'🌧️',65:'🌧️',71:'🌨️',73:'🌨️',75:'❄️',
    80:'🌦️',81:'🌧️',82:'⛈️',95:'⛈️',96:'⛈️',99:'⛈️'
  };
  function icon(c){return icons[c]||'🌡️'}
  function condition(c){return codes[c]||'Unknown'}

  function renderError(msg){
    app.innerHTML=`<div class="error-state"><div class="icon">⚠️</div><div class="msg">${msg}</div></div>`;
  }

  function render(data){
    const d=data.daily;
    if(!d||!d.time||!d.time.length){renderError('No data available for this date.');return}
    const hi=d.temperature_2m_max[0];
    const lo=d.temperature_2m_min[0];
    const wc=d.weather_code[0];
    const hours=data.hourly.temperature_2m||[];
    const times=data.hourly.time||[];

    const valid=[];
    for(let i=0;i<times.length;i++){
      if(times[i].startsWith(dateStr)&&hours[i]!=null){
        valid.push({h:times[i].slice(11,16),v:hours[i]});
      }
    }
    if(!valid.length){renderError('No hourly data for this date.');return}

    const minT=Math.min(...valid.map(x=>x.v));
    const maxT=Math.max(...valid.map(x=>x.v));
    const range=maxT-minT||1;

    const dStr=new Date(dateStr+'T00:00:00Z').toLocaleDateString('en-US',{
      weekday:'long',year:'numeric',month:'long',day:'numeric',timeZone:'UTC'
    });

    let rows='';
    for(const x of valid){
      const pct=((x.v-minT)/range*70+30).toFixed(1);
      const ratio=(x.v-lo)/(hi-lo||1);
      const col=ratio>.6?'var(--warm)':ratio<.4?'var(--cool)':'var(--accent)';
      rows+=`<div class="hour-row">
        <span class="hour-time">${x.h}</span>
        <div class="bar-track"><div class="bar-fill" style="width:${pct}%;background:${col}"></div></div>
        <span class="hour-val">${x.v.toFixed(1)}°</span>
      </div>`;
    }

    app.innerHTML=`
      <div class="hero">
        <div class="location">${name}</div>
        <div class="date">${dStr}</div>
        <div class="weather-icon">${icon(wc)}</div>
        <div class="temp-row">
          <span class="temp-hi">${hi.toFixed(1)}°</span>
          <span class="temp-lo">${lo.toFixed(1)}°</span>
        </div>
        <div class="condition">${condition(wc)}</div>
      </div>
      <div class="details">
        <div>
          <h3>Hourly Temperatures</h3>
          <div class="legend">
            <span class="legend-item"><span class="legend-dot" style="background:var(--cool)"></span>Cooler</span>
            <span class="legend-item"><span class="legend-dot" style="background:var(--accent)"></span>Average</span>
            <span class="legend-item"><span class="legend-dot" style="background:var(--warm)"></span>Warmer</span>
          </div>
        </div>
        <div class="hourly">${rows}</div>
      </div>`;
  }

  fetch(endpoint+'?'+params)
    .then(r=>{if(!r.ok)throw new Error('HTTP '+r.status);return r.json()})
    .then(render)
    .catch(()=>renderError('Unable to load weather data. Please try again later.'));
})();
</script>
</body>
</html>

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

bytes 总计7,765html / css / js233 / 3,093 / 4,439
dom 节点9dom 深度3
css 规则35含 js
brightness43.8contrast24.9
colorfulness40.8留白55.1%

该 slot 的 telemetry

prompt tokens0completion tokens0
total tokens0wall33.2 s
costrequest id
config.json577 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_OPENCODE_KEY",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "mimo-v2.5-pro--cli--opencode--dev",
  "effort": null,
  "family": "mimo",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "mimo-v2.5-pro",
  "protocol": "cli",
  "served_model": "mimo-v2.5-pro",
  "telemetry": {
    "completion_tokens": null,
    "cost_usd": null,
    "prompt_tokens": null,
    "total_tokens": null,
    "wall_ms": 187009
  },
  "transport": "opencode-cli-isolated-xdg-go-subscription",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-07-20--refill2-oc-mimo-v2.5-pro",
  "config_id": "mimo-v2.5-pro--cli--opencode--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-20T10:59:51.027389+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T10:59:17.861689+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-20T11:00:34.195881+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T10:59:55.582500+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-20T11:01:06.303630+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T11:00:38.742199+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-20T11:02:37.632637+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-20T11:01:09.958066+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
    }
  }
}