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

dshoff
config
deepseek-v4-flash-vision-exp-eff-off--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 @off · dsh P-q slot 0 截图

内容未就绪 — 抓拍时这张卡还停在占位/加载态,真实内容从未填入。截图记录的就是页面当时的样子;下方「原始输出」里可以看到它自己的代码。

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

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

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

  • namematch
  • conditionmatch
  • datematch
  • max tempnot-foundno-temperature-candidate
  • min tempnot-foundno-temperature-candidate
  • hourlynot-foundcoverage · 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">
<title>Weather Card</title>
<style>
  :root {
    --bg-1: #0f1b2d;
    --bg-2: #1b3a5c;
    --card-bg: rgba(255, 255, 255, 0.06);
    --card-border: rgba(255, 255, 255, 0.12);
    --text: #eef4fb;
    --text-dim: #a8bcd0;
    --accent: #6fc3ff;
    --accent-warm: #ffb86c;
    --shadow: rgba(0, 0, 0, 0.35);
  }

  * { box-sizing: border-box; }

  html, body { height: 100%; }

  body {
    margin: 0;
    min-height: 100vh;
    background:
      radial-gradient(1200px 800px at 20% 0%, #24405f 0%, transparent 60%),
      radial-gradient(1000px 700px at 90% 100%, #1d4d6b 0%, transparent 55%),
      linear-gradient(160deg, var(--bg-1) 0%, var(--bg-2) 100%);
    color: var(--text);
    font-family: "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
    -webkit-font-smoothing: antialiased;
  }

  .card {
    width: 100%;
    max-width: 920px;
    background: var(--card-bg);
    border: 1px solid var(--card-border);
    border-radius: 24px;
    padding: 36px 40px 40px;
    box-shadow:
      0 30px 60px -20px var(--shadow),
      inset 0 1px 0 rgba(255,255,255,0.08);
    backdrop-filter: blur(14px);
  }

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

  .location h1 {
    margin: 0;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: 0.2px;
  }

  .location .date {
    margin-top: 6px;
    font-size: 15px;
    color: var(--text-dim);
  }

  .condition {
    text-align: right;
    min-width: 150px;
  }

  .condition .icon {
    font-size: 54px;
    line-height: 1;
  }

  .condition .label {
    margin-top: 6px;
    font-size: 16px;
    font-weight: 600;
    color: var(--accent);
  }

  .divider {
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--card-border), transparent);
    margin: 28px 0;
  }

  .temps {
    display: flex;
    align-items: baseline;
    gap: 18px;
    margin-bottom: 8px;
  }

  .temps .max {
    font-size: 72px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -1px;
    color: var(--accent-warm);
  }

  .temps .max .unit,
  .temps .min .unit { font-size: 34px; font-weight: 600; vertical-align: 18px; }

  .temps .min { font-size: 42px; font-weight: 500; color: var(--text-dim); }

  .temps .max-label, .temps .min-label {
    font-size: 13px;
    color: var(--text-dim);
    letter-spacing: 0.5px;
    text-transform: uppercase;
  }

  .temps .max-block, .temps .min-block { display: flex; flex-direction: column; gap: 4px; }

  .range-line {
    height: 6px;
    border-radius: 999px;
    background: rgba(255,255,255,0.08);
    position: relative;
    margin: 14px 0 30px;
  }

  .range-fill {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--accent), var(--accent-warm));
    box-shadow: 0 0 14px rgba(111,195,255,0.4);
  }

  .hourly-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
  }

  .hourly-title h2 {
    margin: 0;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.6px;
    text-transform: uppercase;
    color: var(--text-dim);
  }

  .hourly-chart {
    position: relative;
    height: 180px;
  }

  .chart-grid {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    pointer-events: none;
  }

  .chart-grid span {
    display: block;
    height: 1px;
    background: rgba(255,255,255,0.06);
  }

  .bars {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: flex-end;
    gap: 6px;
  }

  .bar {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    height: 100%;
  }

  .bar .value {
    font-size: 12px;
    font-weight: 600;
    color: var(--text-dim);
    opacity: 0;
    transition: opacity 0.2s;
  }

  .bar:hover .value { opacity: 1; }

  .bar .stem {
    width: 60%;
    max-width: 34px;
    border-radius: 8px 8px 3px 3px;
    background: linear-gradient(180deg, var(--accent) 0%, rgba(111,195,255,0.35) 100%);
    transition: filter 0.15s;
  }

  .bar:hover .stem { filter: brightness(1.3); }

  .bar .time {
    font-size: 11px;
    color: var(--text-dim);
    margin-top: 2px;
  }

  .card.hidden { display: none; }

  .error {
    display: none;
    align-items: center;
    flex-direction: column;
    text-align: center;
    gap: 12px;
    padding: 40px;
  }

  .error.show { display: flex; }

  .error .err-icon { font-size: 48px; }

  .error h2 { margin: 0; font-size: 22px; }

  .error p { margin: 0; color: var(--text-dim); font-size: 15px; }

  .error .retry {
    margin-top: 8px;
    background: rgba(111,195,255,0.15);
    color: var(--accent);
    border: 1px solid rgba(111,195,255,0.4);
    border-radius: 999px;
    padding: 10px 24px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
  }

  .error .retry:hover { background: rgba(111,195,255,0.28); }

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

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

  .loading { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 40px; color: var(--text-dim); }
  .loading.hidden { display: none; }
</style>
</head>
<body>

  <div class="loading" id="loading">
    <div class="spinner"></div>
    <div>Loading weather&hellip;</div>
  </div>

  <div class="error" id="error">
    <div class="err-icon">&#9888;&#65039;</div>
    <h2>Weather unavailable</h2>
    <p id="errorMsg">The weather data could not be loaded.</p>
    <button class="retry" onclick="loadWeather()">Try again</button>
  </div>

  <main class="card hidden" id="card">
    <div class="card-header">
      <div class="location">
        <h1 id="locName">&mdash;</h1>
        <div class="date" id="locDate"></div>
      </div>
      <div class="condition">
        <div class="icon" id="condIcon"></div>
        <div class="label" id="condLabel"></div>
      </div>
    </div>

    <div class="divider"></div>

    <div class="temps">
      <div class="max-block">
        <span class="max-label">High</span>
        <span class="max"><span id="tempMax">&mdash;</span><span class="unit">&deg;C</span></span>
      </div>
      <div class="min-block">
        <span class="min-label">Low</span>
        <span class="min"><span id="tempMin">&mdash;</span><span class="unit">&deg;C</span></span>
      </div>
    </div>

    <div class="range-line">
      <div class="range-fill" id="rangeFill"></div>
    </div>

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

    <div class="hourly-chart">
      <div class="chart-grid">
        <span></span><span></span><span></span><span></span>
      </div>
      <div class="bars" id="bars"></div>
    </div>
  </main>

<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();

  function pad(n) { return (n < 10 ? "0" : "") + n; }
  function todayUTC() {
    var d = new Date();
    return d.getUTCFullYear() + "-" + pad(d.getUTCMonth() + 1) + "-" + pad(d.getUTCDate());
  }

  var shown = document.getElementById("card");
  var loading = document.getElementById("loading");
  var errorBox = document.getElementById("error");
  var errorMsg = document.getElementById("errorMsg");

  function showLoading() {
    shown.classList.add("hidden");
    errorBox.classList.remove("show");
    loading.classList.remove("hidden");
  }
  function showError(msg) {
    loading.classList.add("hidden");
    shown.classList.add("hidden");
    errorBox.classList.add("show");
    errorMsg.textContent = msg || "The weather data could not be loaded.";
  }

  var CODE_MAP = [
    { codes: [0], icon: "\u2600\uFE0F", label: "Clear sky" },
    { codes: [1, 2], icon: "\u26C5", label: "Partly cloudy" },
    { codes: [3], icon: "\u2601\uFE0F", label: "Overcast" },
    { codes: [45, 48], icon: "\uD83C\uDF2B\uFE0F", label: "Fog" },
    { codes: [51, 53, 55, 56, 57], icon: "\uD83C\uDF26\uFE0F", label: "Drizzle" },
    { codes: [61, 63, 65, 66, 67], icon: "\uD83C\uDF27\uFE0F", label: "Rain" },
    { codes: [71, 73, 75, 77], icon: "\uD83C\uDF28\uFE0F", label: "Snow" },
    { codes: [80, 81, 82], icon: "\uD83C\uDF26\uFE0F", label: "Rain showers" },
    { codes: [85, 86], icon: "\uD83C\uDF28\uFE0F", label: "Snow showers" },
    { codes: [95, 96, 99], icon: "\u26C8\uFE0F", label: "Thunderstorm" }
  ];

  function conditionFor(code) {
    for (var i = 0; i < CODE_MAP.length; i++) {
      if (CODE_MAP[i].codes.indexOf(code) !== -1) return CODE_MAP[i];
    }
    return { icon: "\uD83C\uDF21\uFE0F", label: "Unknown" };
  }

  function fmtDate(iso) {
    var d = new Date(iso + "T00:00:00Z");
    var d2 = new Date(iso + "T12:00:00Z");
    var opts = { weekday: "long", month: "long", day: "numeric", timeZone: "UTC" };
    var t1 = d.toLocaleDateString("en-US", opts);
    d2.setUTCDate(d2.getUTCDate());
    var y = d.getUTCFullYear();
    return t1 + ", " + y;
  }

  function buildChart(hourly, tmax, tmin, dateStr) {
    var temps = hourly.time.map(function (t, i) {
      return { time: t.slice(11, 16), temp: hourly.temperature_2m[i] };
    });

    var bars = document.getElementById("bars");
    bars.innerHTML = "";

    var all = temps.map(function (p) { return p.temp; });
    var lo = Math.min.apply(null, all);
    var hi = Math.max.apply(null, all);
    if (lo === hi) { lo -= 1; hi += 1; }
    var pad = (hi - lo) * 0.15;
    var loBound = lo - pad, hiBound = hi + pad;
    var range = hiBound - loBound;

    var prevFill = 0;
    temps.forEach(function (p, i) {
      var val = p.temp;
      var frac = (val - loBound) / range;
      var heightPct = Math.max(6, Math.min(100, frac * 100));

      var bar = document.createElement("div");
      bar.className = "bar";

      var valEl = document.createElement("div");
      valEl.className = "value";
      valEl.textContent = round1(val) + "\u00B0";

      var stem = document.createElement("div");
      stem.className = "stem";
      stem.style.height = heightPct + "%";

      var time = document.createElement("div");
      time.className = "time";
      time.textContent = p.time;

      bar.appendChild(valEl);
      bar.appendChild(stem);
      bar.appendChild(time);
      bars.appendChild(bar);
    });

    dispatchRange(tmax, tmin, loBound, hiBound);
  }

  function dispatchRange(tmax, tmin, loBound, hiBound) {
    var fill = document.getElementById("rangeFill");
    var lo = Math.min(tmin, tmax), hi = Math.max(tmin, tmax);
    var range = hiBound - loBound;
    var left = ((lo - loBound) / range) * 100;
    var width = ((hi - lo) / range) * 100;
    left = Math.max(0, Math.min(100, left));
    width = Math.max(0, Math.min(100 - left, width));
    fill.style.left = left + "%";
    fill.style.width = width + "%";
  }

  function round1(n) { return Math.round(n * 10) / 10; }

  function render(data) {
    var daily = data.daily;
    var hourly = data.hourly;
    var idx = 0;
    var tmax = daily.temperature_2m_max[idx];
    var tmin = daily.temperature_2m_min[idx];
    var wcode = daily.weather_code[idx];

    document.getElementById("locName").textContent = name;
    document.getElementById("locDate").textContent = fmtDate(dateStr);

    var cond = conditionFor(wcode);
    document.getElementById("condIcon").textContent = cond.icon;
    document.getElementById("condLabel").textContent = cond.label;

    document.getElementById("tempMax").textContent = round1(tmax);
    document.getElementById("tempMin").textContent = round1(tmin);

    buildChart(hourly, tmax, tmin, dateStr);

    loading.classList.add("hidden");
    errorBox.classList.remove("show");
    shown.classList.remove("hidden");
  }

  function loadWeather() {
    showLoading();
    var past = dateStr < todayUTC();
    var path = past ? "/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 = path + "?" + qs.toString();

    fetch(url)
      .then(function (r) {
        if (!r.ok) throw new Error("HTTP " + r.status);
        return r.json();
      })
      .then(function (data) {
        if (!data || !data.daily || !data.hourly) throw new Error("Missing data");
        render(data);
      })
      .catch(function (e) {
        showError("The weather data could not be loaded. (" + e.message + ")");
      });
  }

  window.loadWeather = loadWeather;
  loadWeather();
})();
</script>
</body>
</html>

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

bytes 总计13,380html / css / js1,779 / 5,561 / 6,040
dom 节点48dom 深度7
css 规则45含 js
brightness55.8contrast22.3
colorfulness30.8留白73.2%

该 slot 的 telemetry

prompt tokens7,945completion tokens8,585
total tokens16,530wall69.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-off--cli--dsh--dev",
  "effort": "off",
  "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": 37662,
    "cost_usd": null,
    "prompt_tokens": 32915,
    "total_tokens": 70577,
    "wall_ms": 309509
  },
  "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-s0",
  "config_id": "deepseek-v4-flash-vision-exp-eff-off--cli--dsh--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-21T16:53:42.074831+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:52:41.141393+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:56.383813+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:53:47.082843+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:51.170043+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:55:01.755258+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:58:04.895039+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-21T16:56:55.027001+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
    }
  }
}