deepseek-v4-flash-vision-exp @ low · dsh

dshlow
config
deepseek-v4-flash-vision-exp-eff-low--cli--dsh--dev
batch
2026-07-19--unified
transport
dsh-0.1.0-rc.8-headless-isolated-home
protocol
cli · api
served model
deepseek-v4-flash-vision-exp
采集于
2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe
deepseek-v4-flash-vision-exp @low · dsh P-q slot 0 截图

输出带 markdown 围栏 — 模型把 HTML 包在代码围栏里返回,提取时已剥离;记录在此以便追溯。

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

similarity 邻居本 session 没有 similarity 数据 —— 这个 batch 没有计算 pairs。

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

  • namematch
  • conditionmatch
  • datematch
  • max tempmatch展示值:25
  • min tempmatch展示值:16
  • hourlymatchcoverage 24/24 · 24 命中 · 0 不符 · 0 未展示
  • 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, initial-scale=1.0" />
<title>Weather Card</title>
<style>
  :root {
    --bg-top: #0b1023;
    --bg-mid: #1b2a4a;
    --bg-bottom: #243b57;
    --card-bg: rgba(255, 255, 255, 0.08);
    --card-border: rgba(255, 255, 255, 0.14);
    --text: #eef2ff;
    --text-dim: #aab4d0;
    --accent: #7aa2ff;
  }

  * { box-sizing: border-box; margin: 0; padding: 0; }

  html, body { height: 100%; }

  body {
    font-family: "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: var(--text);
    background: linear-gradient(160deg, var(--bg-top), var(--bg-mid) 45%, var(--bg-bottom));
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 24px;
    -webkit-font-smoothing: antialiased;
  }

  .card {
    width: 100%;
    max-width: 760px;
    background: var(--card-bg);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--card-border);
    border-radius: 28px;
    box-shadow: 0 30px 60px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255,255,255,0.08);
    padding: 40px 44px;
    position: relative;
    overflow: hidden;
  }

  .card::before {
    content: "";
    position: absolute;
    top: -60%;
    right: -20%;
    width: 320px;
    height: 320px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(122,162,255,0.35), transparent 70%);
    filter: blur(10px);
    pointer-events: none;
  }

  header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
  }

  .location {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1.15rem;
    font-weight: 600;
    letter-spacing: 0.2px;
  }

  .location svg { flex-shrink: 0; opacity: 0.85; }

  .date {
    color: var(--text-dim);
    font-size: 1rem;
    margin-top: 8px;
    font-weight: 500;
  }

  .condition-badge {
    text-align: right;
    flex-shrink: 0;
  }

  .condition-badge .cond {
    font-size: 1.05rem;
    font-weight: 600;
    color: #dfe7ff;
  }

  .cond-icon {
    font-size: 3.2rem;
    line-height: 1;
    margin-top: 4px;
    filter: drop-shadow(0 4px 10px rgba(0,0,0,0.3));
  }

  .temps {
    display: flex;
    align-items: flex-end;
    gap: 28px;
    margin: 34px 0 8px;
  }

  .hero {
    display: flex;
    flex-direction: column;
  }

  .hero .max-temp {
    font-size: 5rem;
    font-weight: 300;
    line-height: 1;
    letter-spacing: -2px;
    color: #ffffff;
  }

  .hero .unit {
    font-size: 1.8rem;
    font-weight: 300;
    color: var(--text-dim);
    vertical-align: super;
    margin-left: 2px;
  }

  .range {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-bottom: 10px;
    color: var(--text-dim);
    font-size: 1rem;
    font-weight: 500;
  }

  .range .r {
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .range .r svg { opacity: 0.8; }

  .range strong {
    color: var(--text);
    font-weight: 600;
    font-size: 1.15rem;
    margin-right: 2px;
  }

  .rule {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.18), transparent);
    margin: 22px 0 24px;
  }

  .hourly-title {
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 1.4px;
    color: var(--text-dim);
    font-weight: 600;
    margin-bottom: 16px;
  }

  .hourly {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding-bottom: 6px;
  }

  .hourly::-webkit-scrollbar { height: 6px; }
  .hourly::-webkit-scrollbar-thumb {
    background: rgba(255,255,255,0.18);
    border-radius: 3px;
  }

  .hour-col {
    flex: 1 0 auto;
    min-width: 54px;
    text-align: center;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 14px;
    padding: 12px 6px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
  }

  .hour-col .h-label {
    font-size: 0.78rem;
    color: var(--text-dim);
    font-weight: 600;
  }

  .hour-col .h-temp {
    font-size: 1.05rem;
    font-weight: 600;
    color: #fff;
  }

  .status {
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 30px 10px;
    gap: 14px;
  }

  .status.visible { display: flex; }

  .spinner {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 3px solid rgba(255,255,255,0.15);
    border-top-color: var(--accent);
    animation: spin 0.9s linear infinite;
  }

  @keyframes spin { to { transform: rotate(360deg); } }

  .status .st-msg {
    color: var(--text-dim);
    font-size: 1rem;
  }

  .status.error .st-msg {
    color: #ffb4a8;
    font-weight: 600;
  }

  .status .st-sub {
    color: var(--text-dim);
    font-size: 0.9rem;
    max-width: 420px;
    line-height: 1.5;
  }

  .content.hidden { display: none; }
</style>
</head>
<body>
  <div class="card">
    <div class="status visible" id="status">
      <div class="spinner" id="spinner"></div>
      <div class="st-msg" id="stMsg">Loading weather…</div>
      <div class="st-sub" id="stSub"></div>
    </div>

    <div class="content hidden" id="content">
      <header>
        <div>
          <div class="location">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#7aa2ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg>
            <span id="locName">Berlin</span>
          </div>
          <div class="date" id="dateLabel"></div>
        </div>
        <div class="condition-badge">
          <div class="cond" id="condLabel"></div>
          <div class="cond-icon" id="condIcon"></div>
        </div>
      </header>

      <div class="temps">
        <div class="hero">
          <span class="max-temp" id="maxTemp">&ndash;</span><span class="unit">°C</span>
        </div>
        <div class="range">
          <div class="r">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#ff9e6e" stroke-width="2" stroke-linecap="round"><path d="M12 9v4"/><path d="M12 3v2"/><path d="M10 13h4"/><path d="M4 12a8 8 0 0 1 16 0z"/></svg>
            <span>Max <strong id="maxTemp2">&ndash;&deg;</strong></span>
          </div>
          <div class="r">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#7aa2ff" stroke-width="2" stroke-linecap="round"><path d="M12 9v4"/><path d="M12 3v2"/><path d="M10 13h4"/><path d="M4 12a8 8 0 0 1 16 0z"/></svg>
            <span>Min <strong id="minTemp">&ndash;&deg;</strong></span>
          </div>
        </div>
      </div>

      <div class="rule"></div>

      <div class="hourly-title">Hourly temperatures</div>
      <div class="hourly" id="hourly"></div>
    </div>
  </div>

<script>
  (function () {
    var params = new URLSearchParams(window.location.search);
    var lat = parseFloat(params.get("lat") || "52.52");
    var lon = parseFloat(params.get("lon") || "13.405");
    var name = params.get("name") || "Berlin";
    var dateStr = params.get("date") || todayUTC();

    if (!Number.isFinite(lat) || !Number.isFinite(lon)) {
      lat = 52.52; lon = 13.405;
    }

    var statusEl = document.getElementById("status");
    var contentEl = document.getElementById("content");
    var stMsg = document.getElementById("stMsg");
    var stSub = document.getElementById("stSub");
    var stSpin = document.getElementById("spinner");

    function setStatus(type, msg, sub) {
      statusEl.classList.add("visible");
      statusEl.classList.remove("error");
      if (type === "error") statusEl.classList.add("error");
      stMsg.textContent = msg;
      stSub.textContent = sub || "";
      stSpin.style.display = "none";
    }

    function showLoading() {
      statusEl.classList.add("visible");
      statusEl.classList.remove("error");
      stSpin.style.display = "block";
      stMsg.textContent = "Loading weather…";
      stSub.textContent = "";
    }

    function showContent() {
      statusEl.classList.remove("visible");
      contentEl.classList.remove("hidden");
    }

    function todayUTC() {
      var d = new Date();
      return d.getUTCFullYear() + "-" + pad2(d.getUTCMonth() + 1) + "-" + pad2(d.getUTCDate());
    }

    function pad2(n) { return String(n).padStart(2, "0"); }

    function wmo(code) {
      var map = {
        0: ["Clear sky", "☀️"],
        1: ["Mainly clear", "🌤️"],
        2: ["Partly cloudy", "⛅"],
        3: ["Overcast", "☁️"],
        45: ["Fog", "🌫️"],
        48: ["Depositing rime fog", "🌫️"],
        51: ["Light drizzle", "🌦️"],
        53: ["Drizzle", "🌦️"],
        55: ["Dense drizzle", "🌧️"],
        61: ["Light rain", "🌧️"],
        63: ["Rain", "🌧️"],
        65: ["Heavy rain", "🌧️"],
        66: ["Freezing rain", "🌧️"],
        67: ["Freezing rain", "🌧️"],
        71: ["Light snow", "🌨️"],
        73: ["Snow", "🌨️"],
        75: ["Heavy snow", "❄️"],
        77: ["Snow grains", "❄️"],
        80: ["Light showers", "🌦️"],
        81: ["Showers", "🌧️"],
        82: ["Heavy showers", "⛈️"],
        85: ["Snow showers", "🌨️"],
        86: ["Snow showers", "🌨️"],
        95: ["Thunderstorm", "⛈️"],
        96: ["Thunderstorm w/ hail", "⛈️"],
        99: ["Thunderstorm w/ hail", "⛈️"]
      };
      return map[code] || ["Unknown", "🌡️"];
    }

    function formatDate(str) {
      var parts = str.split("-").map(Number);
      if (parts.length !== 3) return str;
      var d = new Date(Date.UTC(parts[0], parts[1] - 1, parts[2]));
      return d.toLocaleDateString("en-US", {
        weekday: "long", year: "numeric", month: "long", day: "numeric", timeZone: "UTC"
      });
    }

    function fmtTemp(t) {
      if (t === null || t === undefined || Number.isNaN(t)) return "–";
      return Math.round(t) + "°";
    }

    function fmtHour(iso) {
      // iso like "2024-01-15T00:00"
      var h = parseInt(iso.slice(11, 13), 10);
      var ampm = h < 12 ? "AM" : "PM";
      var hh = h % 12; if (hh === 0) hh = 12;
      return hh + " " + ampm;
    }

    async function load() {
      showLoading();
      var today = todayUTC();
      // Archive for strictly past dates, forecast otherwise (today & future).
      var endpoint = dateStr < today ? "/api/om/archive" : "/api/om/forecast";
      var qs = new URLSearchParams({
        latitude: String(lat),
        longitude: String(lon),
        daily: "temperature_2m_max,temperature_2m_min,weather_code",
        hourly: "temperature_2m",
        timezone: "UTC",
        temperature_unit: "celsius",
        start_date: dateStr,
        end_date: dateStr
      });
      var url = endpoint + "?" + qs.toString();

      var res;
      try {
        res = await fetch(url);
      } catch (e) {
        return fail("Could not reach the weather service.");
      }

      if (!res.ok) {
        return fail("The weather service returned an error (" + res.status + ").");
      }

      var data;
      try {
        data = await res.json();
      } catch (e) {
        return fail("Received an unreadable response from the weather service.");
      }

      if (!data || !data.daily) {
        return fail("Weather data was not available for this day.");
      }

      var d = data.daily;
      var tmax = d.temperature_2m_max && d.temperature_2m_max[0];
      var tmin = d.temperature_2m_min && d.temperature_2m_min[0];
      var code = d.weather_code && d.weather_code[0];

      // Build an hourly set for exactly the requested date, in order.
      var hourlyList = [];
      if (data.hourly && Array.isArray(data.hourly.time) && Array.isArray(data.hourly.temperature_2m)) {
        var want = dateStr;
        for (var i = 0; i < data.hourly.time.length; i++) {
          if (String(data.hourly.time[i]).slice(0, 10) === want) {
            hourlyList.push({ time: data.hourly.time[i], t: data.hourly.temperature_2m[i] });
          }
        }
      }

      var cond = wmo(code);

      document.getElementById("locName").textContent = name;
      document.getElementById("dateLabel").textContent = formatDate(dateStr);
      document.getElementById("condLabel").textContent = cond[0];
      document.getElementById("condIcon").textContent = cond[1];

      if (tmax !== null && tmax !== undefined && !Number.isNaN(tmax)) {
        document.getElementById("maxTemp").textContent = Math.round(tmax);
        document.getElementById("maxTemp2").textContent = fmtTemp(tmax);
      }
      document.getElementById("minTemp").textContent = fmtTemp(tmin);

      var hourlyEl = document.getElementById("hourly");
      hourlyEl.innerHTML = "";
      if (hourlyList.length === 0) {
        hourlyEl.innerHTML = '<div style="color:var(--text-dim);font-size:0.95rem;padding:8px 2px;">No hourly data available for this day.</div>';
      } else {
        hourlyList.forEach(function (h) {
          var col = document.createElement("div");
          col.className = "hour-col";
          var lbl = document.createElement("div");
          lbl.className = "h-label";
          lbl.textContent = fmtHour(h.time);
          var tmp = document.createElement("div");
          tmp.className = "h-temp";
          tmp.textContent = fmtTemp(h.t);
          col.appendChild(lbl);
          col.appendChild(tmp);
          hourlyEl.appendChild(col);
        });
      }

      showContent();
    }

    function fail(msg) {
      setStatus("error", "Unable to load weather data", msg);
    }

    load();
  })();
</script>
</body>
</html>

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

bytes 总计13,749html / css / js2,175 / 4,795 / 6,779
dom 节点49dom 深度9
css 规则38含 js
brightness47.4contrast16.2
colorfulness17.5留白67.1%

该 slot 的 telemetry

prompt tokens13,354completion tokens8,877
total tokens22,231wall72.3 s
costrequest id
config.json624 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_DEEPSEEK_KEY",
    "method": "api-key"
  },
  "billing": "api",
  "config_id": "deepseek-v4-flash-vision-exp-eff-low--cli--dsh--dev",
  "effort": "low",
  "family": "deepseek",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "deepseek-v4-flash-vision-exp",
  "protocol": "cli",
  "served_model": "deepseek-v4-flash-vision-exp",
  "telemetry": {
    "completion_tokens": 29418,
    "cost_usd": null,
    "prompt_tokens": 37562,
    "total_tokens": 66980,
    "wall_ms": 243106
  },
  "transport": "dsh-0.1.0-rc.8-headless-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-22--dsh-vision-s1",
  "config_id": "deepseek-v4-flash-vision-exp-eff-low--cli--dsh--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-21T16:53:26.336869+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:52:41.141391+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-21T16:54:43.579346+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:53:31.279820+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-21T16:56:02.893149+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:54:47.061932+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-08-21T16:56:55.691205+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:56:05.902601+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
    }
  }
}