minimax-m2.7 · go

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

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

similarity 邻居

限于 session 2026-07-19--unified

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

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

  • namematch
  • conditionmatch
  • datematch
  • max tempambiguousinsufficient-distinct-temperature-nodes
  • min tempambiguousinsufficient-distinct-temperature-nodes
  • 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.0">
<title>Weather Card</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  background: #f0f2f5;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}
#weather-card {
  width: 800px;
  border-radius: 20px;
  box-shadow: 0 10px 40px rgba(0,0,0,0.2);
  padding: 40px;
  color: #fff;
  display: flex;
  flex-direction: column;
  gap: 24px;
  transition: background 0.6s ease;
  min-height: 400px;
}
.card-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.location-name {
  font-size: 2.2rem;
  font-weight: 700;
  text-shadow: 0 2px 6px rgba(0,0,0,0.25);
}
.date {
  font-size: 1rem;
  opacity: 0.85;
}
.condition {
  font-size: 1.2rem;
  font-weight: 500;
  opacity: 0.9;
}
.temperature-section {
  display: flex;
  align-items: baseline;
  gap: 16px;
}
.temp-high {
  font-size: 5rem;
  font-weight: 700;
  line-height: 1;
}
.temp-low {
  font-size: 2.5rem;
  font-weight: 400;
  opacity: 0.75;
}
.temp-label {
  font-size: 0.9rem;
  opacity: 0.65;
  margin-left: -8px;
  align-self: flex-end;
  padding-bottom: 8px;
}
.hourly-section {
  margin-top: 8px;
}
.hourly-title {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  opacity: 0.6;
  margin-bottom: 12px;
}
#hourly-list {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding-bottom: 8px;
}
#hourly-list::-webkit-scrollbar {
  height: 4px;
}
#hourly-list::-webkit-scrollbar-track {
  background: rgba(255,255,255,0.1);
}
#hourly-list::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.25);
  border-radius: 2px;
}
.hourly-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: rgba(255,255,255,0.15);
  border-radius: 10px;
  padding: 10px 14px;
  min-width: 64px;
  backdrop-filter: blur(4px);
}
.hourly-time {
  font-size: 0.75rem;
  opacity: 0.8;
  margin-bottom: 4px;
}
.hourly-temp {
  font-size: 1.1rem;
  font-weight: 600;
}
.error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  flex: 1;
  text-align: center;
  font-size: 1.2rem;
  gap: 12px;
}
.error small {
  font-size: 0.9rem;
  opacity: 0.7;
}
</style>
</head>
<body>
<div id="weather-card">
  <div class="error" id="loading">Loading weather data…</div>
</div>
<script>
(function() {
  'use strict';

  // ---------- Configuration ----------
  const defaultLat = 52.52;
  const defaultLon = 13.405;
  const defaultName = 'Berlin';

  // ---------- URL Parameters ----------
  const urlParams = new URLSearchParams(window.location.search);
  const lat = parseFloat(urlParams.get('lat')) || defaultLat;
  const lon = parseFloat(urlParams.get('lon')) || defaultLon;
  const name = decodeURIComponent(urlParams.get('name') || defaultName);
  let dateParam = urlParams.get('date');
  if (!dateParam) {
    dateParam = new Date().toISOString().slice(0, 10);
  }
  // Ensure format YYYY-MM-DD
  if (!/^\d{4}-\d{2}-\d{2}$/.test(dateParam)) {
    dateParam = new Date().toISOString().slice(0, 10);
  }

  // ---------- API Endpoint ----------
  const todayStr = new Date().toISOString().slice(0, 10);
  const endpoint = dateParam < todayStr ? '/api/om/archive' : '/api/om/forecast';
  const apiUrl = `${endpoint}?latitude=${lat}&longitude=${lon}&daily=temperature_2m_max,temperature_2m_min,weather_code&hourly=temperature_2m&timezone=UTC&temperature_unit=celsius&start_date=${dateParam}&end_date=${dateParam}`;

  // ---------- DOM References ----------
  const card = document.getElementById('weather-card');

  // ---------- Helpers ----------
  function getCondition(code) {
    const conditions = {
      0: 'Clear sky',
      1: 'Mainly clear',
      2: 'Partly cloudy',
      3: 'Overcast',
      45: 'Fog',
      48: 'Depositing rime fog',
      51: 'Light drizzle',
      53: 'Moderate drizzle',
      55: 'Dense drizzle',
      56: 'Light freezing drizzle',
      57: 'Dense freezing drizzle',
      61: 'Slight rain',
      63: 'Moderate rain',
      65: 'Heavy rain',
      66: 'Light freezing rain',
      67: 'Heavy freezing rain',
      71: 'Slight snow',
      73: 'Moderate snow',
      75: 'Heavy snow',
      77: 'Snow grains',
      80: 'Slight rain showers',
      81: 'Moderate rain showers',
      82: 'Violent rain showers',
      85: 'Slight snow showers',
      86: 'Heavy snow showers',
      95: 'Thunderstorm',
      96: 'Thunderstorm with slight hail',
      99: 'Thunderstorm with heavy hail'
    };
    return conditions[code] !== undefined ? conditions[code] : 'Unknown';
  }

  function getGradient(code) {
    if (code === 0) return 'linear-gradient(135deg, #56CCF2 0%, #2F80ED 100%)';
    if (code === 1 || code === 2) return 'linear-gradient(135deg, #7F7FD5 0%, #86A8E7 100%)';
    if (code === 3) return 'linear-gradient(135deg, #606c88 0%, #3f4c6b 100%)';
    if (code >= 45 && code <= 48) return 'linear-gradient(135deg, #B0C4DE 0%, #708090 100%)';
    if ((code >= 51 && code <= 57) || (code >= 61 && code <= 67) || (code >= 80 && code <= 82)) return 'linear-gradient(135deg, #4ca1af 0%, #2C3E50 100%)';
    if ((code >= 71 && code <= 77) || (code >= 85 && code <= 86)) return 'linear-gradient(135deg, #E6DADA 0%, #274046 100%)';
    if (code >= 95) return 'linear-gradient(135deg, #2C3E50 0%, #000000 100%)';
    return 'linear-gradient(135deg, #56CCF2 0%, #2F80ED 100%)';
  }

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

  // ---------- Render ----------
  function renderCard(data) {
    const { name, date, maxTemp, minTemp, condition, hourlyTemps, weatherCode } = data;

    card.style.background = getGradient(weatherCode);
    card.innerHTML = `
      <div class="card-header">
        <div class="location-name">${name}</div>
        <div class="date">${formatDate(date)}</div>
        <div class="condition">${condition}</div>
      </div>
      <div class="temperature-section">
        <div class="temp-high">${Math.round(maxTemp)}°C</div>
        <div class="temp-low">${Math.round(minTemp)}°C</div>
        <div class="temp-label">high / low</div>
      </div>
      <div class="hourly-section">
        <div class="hourly-title">Hourly temperatures</div>
        <div id="hourly-list"></div>
      </div>
    `;

    const hourlyList = document.getElementById('hourly-list');
    hourlyTemps.forEach(item => {
      const hour = item.time.slice(11, 16); // HH:MM
      const temp = Math.round(item.temp);
      const el = document.createElement('div');
      el.className = 'hourly-item';
      el.innerHTML = `<span class="hourly-time">${hour}</span><span class="hourly-temp">${temp}°C</span>`;
      hourlyList.appendChild(el);
    });
  }

  function showError(msg) {
    card.style.background = 'linear-gradient(135deg, #e74c3c 0%, #c0392b 100%)';
    card.innerHTML = `
      <div class="error">
        <span>Failed to load weather data.</span>
        <small>${msg}</small>
      </div>
    `;
  }

  // ---------- Fetch ----------
  fetch(apiUrl)
    .then(response => {
      if (!response.ok) throw new Error('Network response was not ok (' + response.status + ')');
      return response.json();
    })
    .then(data => {
      const daily = data.daily;
      if (!daily || !daily.time) throw new Error('Invalid data structure');

      const dailyIndex = daily.time.indexOf(dateParam);
      if (dailyIndex === -1) throw new Error('Date not found in daily forecast');

      const maxTemp = daily.temperature_2m_max[dailyIndex];
      const minTemp = daily.temperature_2m_min[dailyIndex];
      const weatherCode = daily.weather_code[dailyIndex];
      const condition = getCondition(weatherCode);

      const hourly = data.hourly;
      const hourlyTemps = [];
      if (hourly && hourly.time) {
        for (let i = 0; i < hourly.time.length; i++) {
          const t = hourly.time[i];
          if (t.startsWith(dateParam)) {
            hourlyTemps.push({ time: t, temp: hourly.temperature_2m[i] });
          }
        }
      }

      renderCard({ name, date: dateParam, maxTemp, minTemp, condition, hourlyTemps, weatherCode });
    })
    .catch(err => {
      console.error(err);
      showError(err.message || 'Unknown error');
    });
})();
</script>
</body>
</html>

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

bytes 总计8,591html / css / js313 / 2,224 / 6,054
dom 节点10dom 深度4
css 规则22含 js
brightness198.3contrast64.1
colorfulness35.3留白68.4%

该 slot 的 telemetry

prompt tokens0completion tokens10,461
total tokens10,461wall134.6 s
costrequest id
config.json549 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_OPENCODE_KEY",
    "method": "oauth"
  },
  "billing": "plan",
  "config_id": "minimax-m2.7--opencode-go--dev",
  "effort": null,
  "family": "minimax",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "minimax-m2.7",
  "protocol": "api",
  "served_model": "minimax-m2.7",
  "telemetry": {
    "completion_tokens": 31298,
    "cost_usd": null,
    "prompt_tokens": null,
    "total_tokens": 31298,
    "wall_ms": 394902
  },
  "transport": "opencode-go-gateway",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-07-19--go-requeue2",
  "config_id": "minimax-m2.7--opencode-go--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-07-18T20:53:04.914491+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:50:50.269760+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:54:00.531168+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:53:07.970416+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:55:11.752529+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:54:03.287832+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-18T20:57:33.762664+00:00",
          "http_status": 200,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-07-18T20:55:14.533033+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
    }
  }
}