claude-sonnet-5 @ medium · CC
CCmedium
- config
- claude-sonnet-5-eff-medium--cli--claude-code--dev
- batch
- 2026-07-19--unified
- transport
- claude-code-cli-headless
- protocol
- cli · plan
- served model
- claude-sonnet-5
- 采集于
- 2026年7月18日 11:54 · N=2
variant
live
slot 0 · P-q · sandboxed iframe

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
claude-sonnet-5 @low · CC0.72claude-opus-4-8 @medium · kiro0.70mimo-v2.5-pro @high · api0.70minimax-m2.7 · opencode0.70claude-opus-4-8 @low · kiro0.69最远
gpt-5.5 @medium · codex-oauth0.39minimax-m2.7 · go0.44claude-sonnet-5 @max · CC0.44claude-haiku-4-5 @xhigh · CC0.44north-mini-code-free · api0.45限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempambiguous展示值:17max-equals-min
- min tempambiguous展示值:17max-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">
<title>Weather</title>
<meta name="viewport" content="width=1280, height=800">
<style>
:root {
color-scheme: light;
}
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
width: 1280px;
height: 800px;
overflow: hidden;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
body {
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #1e3c72 0%, #2a5298 45%, #4f80c9 100%);
position: relative;
}
/* soft decorative glow blobs */
body::before, body::after {
content: "";
position: absolute;
border-radius: 50%;
filter: blur(60px);
opacity: 0.35;
pointer-events: none;
}
body::before {
width: 420px; height: 420px;
background: #ffd27a;
top: -120px; left: -100px;
}
body::after {
width: 360px; height: 360px;
background: #7ad7ff;
bottom: -140px; right: -80px;
}
.card {
position: relative;
width: 960px;
height: 620px;
background: rgba(255, 255, 255, 0.10);
border: 1px solid rgba(255, 255, 255, 0.25);
border-radius: 28px;
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255,255,255,0.3);
color: #ffffff;
padding: 44px 56px;
display: flex;
flex-direction: column;
gap: 28px;
}
.top {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.location {
font-size: 34px;
font-weight: 700;
letter-spacing: 0.3px;
}
.date {
margin-top: 6px;
font-size: 16px;
font-weight: 400;
color: rgba(255,255,255,0.75);
text-transform: uppercase;
letter-spacing: 1.5px;
}
.icon-wrap {
text-align: right;
}
.icon {
font-size: 72px;
line-height: 1;
filter: drop-shadow(0 8px 18px rgba(0,0,0,0.25));
}
.condition {
margin-top: 6px;
font-size: 16px;
color: rgba(255,255,255,0.85);
font-weight: 500;
}
.main-temps {
display: flex;
align-items: baseline;
gap: 40px;
padding: 10px 0 4px;
border-top: 1px solid rgba(255,255,255,0.18);
border-bottom: 1px solid rgba(255,255,255,0.18);
}
.temp-block {
display: flex;
flex-direction: column;
}
.temp-label {
font-size: 13px;
text-transform: uppercase;
letter-spacing: 1.2px;
color: rgba(255,255,255,0.65);
margin-bottom: 4px;
}
.temp-value {
font-size: 56px;
font-weight: 700;
line-height: 1;
}
.temp-value.max { color: #ffcf7a; }
.temp-value.min { color: #9fd7ff; }
.temp-value sup {
font-size: 22px;
font-weight: 500;
margin-left: 2px;
}
.hourly-section {
flex: 1;
display: flex;
flex-direction: column;
min-height: 0;
}
.hourly-title {
font-size: 13px;
text-transform: uppercase;
letter-spacing: 1.2px;
color: rgba(255,255,255,0.65);
margin-bottom: 14px;
}
.hourly-scroll {
flex: 1;
display: flex;
align-items: flex-end;
gap: 10px;
overflow-x: auto;
padding-bottom: 6px;
}
.hourly-scroll::-webkit-scrollbar { height: 6px; }
.hourly-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.3); border-radius: 3px; }
.hourly-scroll::-webkit-scrollbar-track { background: transparent; }
.hour-item {
flex: 0 0 auto;
width: 46px;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.hour-temp {
font-size: 14px;
font-weight: 600;
color: #fff;
}
.hour-bar-wrap {
width: 10px;
height: 140px;
background: rgba(255,255,255,0.12);
border-radius: 6px;
display: flex;
align-items: flex-end;
overflow: hidden;
}
.hour-bar {
width: 100%;
border-radius: 6px;
background: linear-gradient(180deg, #ffd27a 0%, #7ad7ff 100%);
}
.hour-label {
font-size: 12px;
color: rgba(255,255,255,0.6);
}
.state-message {
display: flex;
align-items: center;
justify-content: center;
flex: 1;
font-size: 18px;
color: rgba(255,255,255,0.85);
text-align: center;
padding: 0 40px;
}
.state-message.error {
color: #ffb4b4;
}
.spinner {
width: 34px;
height: 34px;
border-radius: 50%;
border: 3px solid rgba(255,255,255,0.25);
border-top-color: #fff;
animation: spin 0.9s linear infinite;
margin-right: 14px;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.hidden { display: none !important; }
</style>
</head>
<body>
<div class="card">
<div id="loadingState" class="state-message">
<div class="spinner"></div>
<span>Loading weather data…</span>
</div>
<div id="errorState" class="state-message error hidden">
Unable to load weather data. Please try again later.
</div>
<div id="content" class="hidden" style="display:flex; flex-direction:column; gap:28px; height:100%;">
<div class="top">
<div>
<div class="location" id="locationName"></div>
<div class="date" id="dateLabel"></div>
</div>
<div class="icon-wrap">
<div class="icon" id="weatherIcon">☀️</div>
<div class="condition" id="weatherCondition"></div>
</div>
</div>
<div class="main-temps">
<div class="temp-block">
<div class="temp-label">High</div>
<div class="temp-value max" id="tempMax">--<sup>°C</sup></div>
</div>
<div class="temp-block">
<div class="temp-label">Low</div>
<div class="temp-value min" id="tempMin">--<sup>°C</sup></div>
</div>
</div>
<div class="hourly-section">
<div class="hourly-title">Hourly Temperature</div>
<div class="hourly-scroll" id="hourlyScroll"></div>
</div>
</div>
</div>
<script>
(function () {
const WEATHER_CODES = {
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 fall", "🌨️"],
73: ["Moderate snow fall", "🌨️"],
75: ["Heavy snow fall", "❄️"],
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 hail", "⛈️"],
99: ["Thunderstorm with heavy hail", "⛈️"]
};
function getWeatherInfo(code) {
return WEATHER_CODES[code] || ["Unknown", "🌡️"];
}
function todayUTC() {
const now = new Date();
return now.toISOString().slice(0, 10);
}
function getParams() {
const params = new URLSearchParams(window.location.search);
const lat = parseFloat(params.get("lat"));
const lon = parseFloat(params.get("lon"));
return {
lat: Number.isFinite(lat) ? lat : 52.52,
lon: Number.isFinite(lon) ? lon : 13.405,
name: params.get("name") || "Berlin",
date: params.get("date") || todayUTC()
};
}
function formatDateLabel(dateStr) {
const [y, m, d] = dateStr.split("-").map(Number);
const dt = new Date(Date.UTC(y, m - 1, d));
return dt.toLocaleDateString("en-US", {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
timeZone: "UTC"
});
}
function formatHourLabel(isoHour) {
const hour = parseInt(isoHour.split("T")[1].split(":")[0], 10);
if (hour === 0) return "12A";
if (hour === 12) return "12P";
return hour > 12 ? (hour - 12) + "P" : hour + "A";
}
function showError() {
document.getElementById("loadingState").classList.add("hidden");
document.getElementById("errorState").classList.remove("hidden");
}
async function fetchWeather(p) {
const isPast = p.date < todayUTC();
const base = isPast ? "/api/om/archive" : "/api/om/forecast";
const url = new URL(base, window.location.origin);
url.searchParams.set("latitude", p.lat);
url.searchParams.set("longitude", p.lon);
url.searchParams.set("daily", "temperature_2m_max,temperature_2m_min,weather_code");
url.searchParams.set("hourly", "temperature_2m");
url.searchParams.set("timezone", "UTC");
url.searchParams.set("temperature_unit", "celsius");
url.searchParams.set("start_date", p.date);
url.searchParams.set("end_date", p.date);
const res = await fetch(url.toString());
if (!res.ok) throw new Error("Bad response: " + res.status);
const data = await res.json();
if (!data || !data.daily || !data.hourly) throw new Error("Malformed data");
return data;
}
function render(p, data) {
const idx = data.daily.time.indexOf(p.date);
if (idx === -1) throw new Error("Date not found in daily data");
const tempMax = data.daily.temperature_2m_max[idx];
const tempMin = data.daily.temperature_2m_min[idx];
const code = data.daily.weather_code[idx];
const [condText, icon] = getWeatherInfo(code);
document.getElementById("locationName").textContent = p.name;
document.getElementById("dateLabel").textContent = formatDateLabel(p.date);
document.getElementById("weatherIcon").textContent = icon;
document.getElementById("weatherCondition").textContent = condText;
document.getElementById("tempMax").innerHTML = Math.round(tempMax) + "<sup>°C</sup>";
document.getElementById("tempMin").innerHTML = Math.round(tempMin) + "<sup>°C</sup>";
const hourlyScroll = document.getElementById("hourlyScroll");
hourlyScroll.innerHTML = "";
const times = data.hourly.time;
const temps = data.hourly.temperature_2m;
const dayIndices = [];
for (let i = 0; i < times.length; i++) {
if (times[i].startsWith(p.date)) dayIndices.push(i);
}
if (dayIndices.length === 0) throw new Error("No hourly data for date");
const dayTemps = dayIndices.map(i => temps[i]);
const maxT = Math.max(...dayTemps);
const minT = Math.min(...dayTemps);
const range = Math.max(maxT - minT, 1);
dayIndices.forEach(i => {
const t = temps[i];
const heightPct = 15 + ((t - minT) / range) * 85;
const item = document.createElement("div");
item.className = "hour-item";
item.innerHTML = `
<div class="hour-temp">${Math.round(t)}°</div>
<div class="hour-bar-wrap"><div class="hour-bar" style="height:${heightPct}%"></div></div>
<div class="hour-label">${formatHourLabel(times[i])}</div>
`;
hourlyScroll.appendChild(item);
});
document.getElementById("loadingState").classList.add("hidden");
document.getElementById("content").classList.remove("hidden");
}
async function init() {
const p = getParams();
try {
const data = await fetchWeather(p);
render(p, data);
} catch (err) {
showError();
}
}
init();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 11,538 | html / css / js | 1,442 / 4,515 / 5,581 |
|---|---|---|---|
| dom 节点 | 33 | dom 深度 | 8 |
| css 规则 | 38 | 含 js | 是 |
| brightness | 100.7 | contrast | 21.3 |
| colorfulness | 49.7 | 留白 | 40.7% |
该 slot 的 telemetry
| prompt tokens | 4 | completion tokens | 5,647 |
|---|---|---|---|
| total tokens | 5,651 | wall | 45.3 s |
| cost | — | request id | — |
config.json578 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-sonnet-5-eff-medium--cli--claude-code--dev",
"effort": "medium",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-sonnet-5",
"protocol": "cli",
"served_model": "claude-sonnet-5",
"telemetry": {
"completion_tokens": 23437,
"cost_usd": null,
"prompt_tokens": 16,
"total_tokens": 23453,
"wall_ms": 188064
},
"transport": "claude-code-cli-headless",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-17--dev-cc-sonnet5",
"config_id": "claude-sonnet-5-eff-medium--cli--claude-code--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-17T14:46:52.557527+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:45:50.928625+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-17T14:47:41.427598+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:46:56.114222+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-17T14:48:28.431934+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:47:45.312849+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-17T14:49:10.265359+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-17T14:48:32.258496+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
}
}
}