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

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居本 session 没有 similarity 数据 —— 这个 batch 没有计算 pairs。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmismatch展示值:17
- min tempmatch展示值:16
- hourlyambiguouscoverage · 0 命中 · 0 不符 · 24 未展示
- request sidematch0 处违规
extractor fidelity-extractor-v1+Berlin-2026-07-15
源码 —— 原始模型输出,一字节未改
下载 card.html<!DOCTYPE html>
```html
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Weather</title>
<link rel="icon" href="data:,">
<style>
:root{
--g1:#3f5470; --g2:#6b83a3; --accent:#bcd7f5; --icon-c:#eef3f8;
color-scheme:dark;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
background:linear-gradient(168deg,var(--g1) 0%,var(--g2) 100%);
min-height:100vh;display:grid;place-items:center;
color:#fff;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
overflow-x:hidden;position:relative;
}
.blob{position:fixed;border-radius:50%;filter:blur(70px);pointer-events:none;z-index:0}
.b1{width:520px;height:520px;top:-160px;left:-120px;background:radial-gradient(closest-side,var(--accent),transparent 70%);opacity:.22}
.b2{width:460px;height:460px;bottom:-150px;right:-100px;background:radial-gradient(closest-side,var(--accent),transparent 70%);opacity:.16}
.card{
position:relative;z-index:1;width:min(720px,calc(100vw - 48px));
background:rgba(9,16,31,.44);
border:1px solid rgba(255,255,255,.14);
border-radius:28px;padding:42px 46px 36px;
backdrop-filter:blur(26px) saturate(150%);
-webkit-backdrop-filter:blur(26px) saturate(150%);
box-shadow:0 34px 70px -24px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.08);
animation:rise .7s cubic-bezier(.22,.8,.3,1) both;
}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.hidden{display:none!important}
.state{min-height:340px;display:grid;place-content:center;justify-items:center;gap:16px;text-align:center}
.ring{width:36px;height:36px;border-radius:50%;border:3px solid rgba(255,255,255,.22);border-top-color:#fff;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#loading p,#error .hint{font-size:14px;color:rgba(255,255,255,.65)}
#error h2{font-size:21px;font-weight:600;letter-spacing:-.2px}
#error svg{color:rgba(255,255,255,.85)}
#retry{
margin-top:6px;font:inherit;font-size:14px;font-weight:500;color:#fff;cursor:pointer;
padding:10px 26px;border-radius:999px;border:1px solid rgba(255,255,255,.35);
background:rgba(255,255,255,.08);transition:background .2s,border-color .2s;
}
#retry:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.5)}
#retry:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
h1{font-size:34px;font-weight:650;letter-spacing:-.5px;line-height:1.1}
.sub{margin-top:8px;font-size:15px;color:rgba(255,255,255,.62)}
.sub .cond{color:rgba(255,255,255,.94);font-weight:550}
.icon{color:var(--icon-c);flex-shrink:0;margin-top:2px;filter:drop-shadow(0 8px 18px rgba(0,0,0,.28))}
.rule{border:none;border-top:1px solid rgba(255,255,255,.13);margin:28px 0 26px}
.hero{display:flex;align-items:flex-end;margin-bottom:32px}
.cell .cap{margin-bottom:10px}
.cap{font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.52)}
.num{display:flex;align-items:flex-start;font-weight:200;line-height:.92}
.num.big{font-size:96px;letter-spacing:-3.5px}
.num.small{font-size:46px;letter-spacing:-1.5px;color:rgba(255,255,255,.88)}
.unit{font-size:19px;font-weight:450;color:rgba(255,255,255,.68);margin-left:7px;letter-spacing:0}
.num.small .unit{font-size:14px;margin-top:4px}
.vr{width:1px;height:66px;background:rgba(255,255,255,.18);margin:0 36px 6px}
.hours .cap{margin-bottom:12px}
#chart{display:block;width:100%;height:auto;aspect-ratio:600/176;font-family:inherit;overflow:visible}
#chart .tl{font-size:12px;font-weight:600;fill:#fff}
#chart .hl{font-size:10.5px;fill:rgba(255,255,255,.55);letter-spacing:.4px}
.foot{margin-top:14px;text-align:right;font-size:11px;letter-spacing:.06em;color:rgba(255,255,255,.38)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
</style>
</head>
<body>
<div class="blob b1"></div>
<div class="blob b2"></div>
<main class="card">
<section id="loading" class="state">
<div class="ring"></div>
<p>Loading weather…</p>
</section>
<section id="error" class="state hidden">
<svg width="44" height="44" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
<h2>Unable to load weather data</h2>
<p class="hint" id="errmsg"></p>
<button id="retry" type="button">Try again</button>
</section>
<section id="view" class="hidden">
<header class="head">
<div>
<h1 id="loc"></h1>
<p class="sub"><span id="date"></span> · <span class="cond" id="cond"></span></p>
</div>
<div class="icon" id="icon"></div>
</header>
<hr class="rule">
<div class="hero">
<div class="cell">
<div class="cap">High</div>
<div class="num big"><span id="hi"></span><span class="unit">°C</span></div>
</div>
<div class="vr"></div>
<div class="cell">
<div class="cap">Low</div>
<div class="num small"><span id="lo"></span><span class="unit">°C</span></div>
</div>
</div>
<div class="hours">
<div class="cap">Hourly temperature</div>
<svg id="chart" viewBox="0 0 600 176" preserveAspectRatio="xMidYMid meet" aria-label="Hourly temperatures"></svg>
<div class="foot">UTC · Open-Meteo</div>
</div>
</section>
</main>
<script>
(function(){
"use strict";
var $=function(s){return document.querySelector(s)};
var params=new URLSearchParams(location.search);
function pval(k,d){var v=params.get(k);return v===null||v.trim()===""?d:v.trim()}
function todayUTC(){return new Date().toISOString().slice(0,10)}
var latRaw=pval("lat","52.52"),lonRaw=pval("lon","13.405");
var lat=parseFloat(latRaw),lon=parseFloat(lonRaw);
if(isNaN(lat))lat=52.52; if(isNaN(lon))lon=13.405;
var place=pval("name","Berlin");
var dateStr=pval("date",todayUTC());
if(!/^\d{4}-\d{2}-\d{2}$/.test(dateStr)||isNaN(Date.parse(dateStr+"T00:00:00Z")))dateStr=todayUTC();
document.title=place+" — Weather";
var WMO={
0:["Clear sky","sun"],1:["Mainly clear","partly"],2:["Partly cloudy","partly"],3:["Overcast","cloud"],
45:["Fog","fog"],48:["Depositing rime fog","fog"],
51:["Light drizzle","drizzle"],53:["Drizzle","drizzle"],55:["Dense drizzle","drizzle"],
56:["Light freezing drizzle","drizzle"],57:["Freezing drizzle","drizzle"],
61:["Slight rain","rain"],63:["Rain","rain"],65:["Heavy rain","rain"],
66:["Light freezing rain","rain"],67:["Freezing rain","rain"],
71:["Slight snowfall","snow"],73:["Snowfall","snow"],75:["Heavy snowfall","snow"],77:["Snow grains","snow"],
80:["Slight rain showers","rain"],81:["Rain showers","rain"],82:["Violent rain showers","rain"],
85:["Slight snow showers","snow"],86:["Heavy snow showers","snow"],
95:["Thunderstorm","thunder"],96:["Thunderstorm with hail","thunder"],99:["Severe thunderstorm with hail","thunder"]
};
var THEMES={
sun:{g:["#1a6bb8","#4aa8e0"],a:"#ffd166",i:"#ffdf8f"},
partly:{g:["#2a6da6","#5b9bd5"],a:"#ffe08a",i:"#ffedb8"},
cloud:{g:["#54677d","#8395a9"],a:"#e8eef4",i:"#f2f6fa"},
fog:{g:["#5d6b78","#93a1ad"],a:"#e5eaee",i:"#eef2f5"},
drizzle:{g:["#3f5470","#6b83a3"],a:"#bcd7f5",i:"#dcebfa"},
rain:{g:["#2c3e57","#506b8c"],a:"#a9cdf2",i:"#d5e7f8"},
snow:{g:["#5f7a96","#9db4c9"],a:"#eaf3fb",i:"#f4f9fd"},
thunder:{g:["#3b2f63","#6b5ca5"],a:"#ffe066",i:"#ffe58f"}
};
function svg(inner,s,vb){
return '<svg width="'+s+'" height="'+s+'" viewBox="'+(vb||"0 0 24 24")+'" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">'+inner+"</svg>";
}
var ICONS={
sun:function(s){return svg('<circle cx="12" cy="12" r="4.6"/><path d="M12 2.4v2.3M12 19.3v2.3M2.4 12h2.3M19.3 12h2.3M5.2 5.2l1.7 1.7M17.1 17.1l1.7 1.7M18.8 5.2l-1.7 1.7M6.9 17.1l-1.7 1.7"/>',s)},
partly:function(s){return svg('<circle cx="7" cy="6.5" r="3.6"/><path d="M7 1.7V.5M1.7 6.5H.5M3.4 2.9l-.9-.9M3.4 10.1l-.9.9"/><path d="M18.6 20.5H10a5.2 5.2 0 1 1 4.98-6.69h1.33a3.87 3.87 0 1 1 0 7.74z" transform="translate(2.6 2.4) scale(0.82)"/>',s)},
cloud:function(s){return svg('<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',s)},
fog:function(s){return svg('<path d="M17.5 15H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z" transform="translate(0.6 -3.4) scale(0.94)"/><path d="M4.5 18h15M7.5 21.4h9"/>',s)},
drizzle:function(s){return svg('<path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"/><path d="M8 19v1.6M8 13.6v1.6M16 19v1.6M16 13.6v1.6M12 21v1.6M12 15.6v1.6"/>',s)},
rain:function(s){return svg('<path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"/><path d="M16 13.5v6M8 13.5v6M12 15.5v6"/>',s)},
snow:function(s){return svg('<path d="M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25"/><path stroke-width="2.2" d="M8 16h.01M8 20h.01M12 18h.01M12 22h.01M16 16h.01M16 20h.01"/>',s)},
thunder:function(s){return svg('<path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9"/><polyline points="13 11 9 17 15 17 11 23"/>',s)}
};
function applyTheme(g){
var t=THEMES[g]||THEMES.cloud,r=document.documentElement.style;
r.setProperty("--g1",t.g[0]);r.setProperty("--g2",t.g[1]);
r.setProperty("--accent",t.a);r.setProperty("--icon-c",t.i);
}
function fmtDate(ds){
var d=new Date(ds+"T00:00:00Z");
var s=d.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric",timeZone:"UTC"});
var diff=Math.round((d-new Date(todayUTC()+"T00:00:00Z"))/864e5);
if(diff===0)s+=" · Today";else if(diff===1)s+=" · Tomorrow";else if(diff===-1)s+=" · Yesterday";
return s;
}
function smooth(P){
if(P.length<2)return"";
var d="M "+P[0][0]+","+P[0][1];
for(var i=0;i<P.length-1;i++){
var p0=P[Math.max(0,i-1)],p1=P[i],p2=P[i+1],p3=P[Math.min(P.length-1,i+2)];
d+=" C "+(p1[0]+(p2[0]-p0[0])/6).toFixed(2)+","+(p1[1]+(p2[1]-p0[1])/6).toFixed(2)
+" "+(p2[0]-(p3[0]-p1[0])/6).toFixed(2)+","+(p2[1]-(p3[1]-p1[1])/6).toFixed(2)
+" "+p2[0].toFixed(2)+","+p2[1].toFixed(2);
}
return d;
}
function buildChart(hours,temps){
var W=600,H=176,L=16,R=16,T=30,B=34,n=hours.length;
var mn=Math.min.apply(null,temps),mx=Math.max.apply(null,temps),span=(mx-mn)||1;
function X(i){return L+i*(W-L-R)/Math.max(n-1,1)}
function Y(v){return T+(1-(v-mn)/span)*(H-T-B)}
var P=temps.map(function(v,i){return[X(i),Y(v)]});
var line=smooth(P),out="";
if(line){
var base=H-B+8;
out+='<path d="'+line+" L "+P[n-1][0].toFixed(2)+" "+base+" L "+P[0][0].toFixed(2)+" "+base+' Z" fill="url(#ag)"/>';
out+='<path d="'+line+'" fill="none" stroke="var(--accent)" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" style="filter:drop-shadow(0 6px 10px rgba(0,0,0,.28))"/>';
}
var marks="";
for(var i=0;i<n;i++){
var x=P[i][0].toFixed(2),y=P[i][1].toFixed(2);
if(i%3===0){
marks+='<circle cx="'+x+'" cy="'+y+'" r="3.4" fill="var(--accent)" stroke="rgba(9,16,31,.6)" stroke-width="1.5"/>';
marks+='<text x="'+x+'" y="'+(P[i][1]-11).toFixed(2)+'" text-anchor="middle" class="tl">'+Math.round(temps[i])+"°</text>";
marks+='<text x="'+x+'" y="'+(H-10)+'" text-anchor="middle" class="hl">'+String(parseInt(hours[i],10))+"</text>";
}else{
marks+='<circle cx="'+x+'" cy="'+y+'" r="2" fill="rgba(255,255,255,.5)"/>';
}
}
return '<defs><linearGradient id="ag" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="var(--accent)" stop-opacity=".3"/><stop offset="1" stop-color="var(--accent)" stop-opacity="0"/></linearGradient></defs>'+out+marks;
}
function show(id){
["loading","error","view"].forEach(function(s){
$("#"+s).classList.toggle("hidden",s!==id);
});
}
function fail(msg){
$("#errmsg").textContent=msg;
show("error");
}
function load(){
show("loading");
var today=todayUTC();
var base=dateStr<today?"/api/om/archive":"/api/om/forecast";
var url=base+"?latitude="+encodeURIComponent(lat)+"&longitude="+encodeURIComponent(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 ctl=new AbortController();
var timer=setTimeout(function(){ctl.abort()},12000);
fetch(url,{signal:ctl.signal}).then(function(res){
clearTimeout(timer);
if(!res.ok)throw new Error("Service responded with HTTP "+res.status);
return res.json();
}).then(function(data){
var d=data&&data.daily,h=data&&data.hourly;
if(!d||!d.time||!d.time.length||!h||!h.time||!h.temperature_2m||h.time.length!==h.temperature_2m.length){
throw new Error("The service returned incomplete data for this date.");
}
var tmax=d.temperature_2m_max[0],tmin=d.temperature_2m_min[0],code=d.weather_code[0];
if(tmax==null||tmin==null||code==null){
throw new Error("No weather records available for this date.");
}
var info=WMO[code]||["Unknown conditions","cloud"];
applyTheme(info[1]);
$("#loc").textContent=place;
$("#date").textContent=fmtDate(dateStr);
$("#cond").textContent=info[0];
$("#hi").textContent=Math.round(tmax);
$("#lo").textContent=Math.round(tmin);
$("#icon").innerHTML=ICONS[info[1]](104);
var hours=[],temps=[];
for(var i=0;i<h.time.length;i++){
if(typeof h.time[i]==="string"&&h.time[i].indexOf(dateStr)===0){
hours.push(h.time[i].slice(11,13));
temps.push(h.temperature_2m[i]);
}
}
if(!hours.length)throw new Error("No hourly data available for this date.");
$("#chart").innerHTML=buildChart(hours,temps);
show("view");
}).catch(function(err){
clearTimeout(timer);
var msg=err&&err.name==="AbortError"?"The request timed out.":(err&&err.message?err.message:"Network error.");
fail(msg);
});
}
$("#retry").addEventListener("click",load);
load();
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 14,688 | html / css / js | 1,922 / 4,006 / 8,760 |
|---|---|---|---|
| dom 节点 | 48 | dom 深度 | 8 |
| css 规则 | 44 | 含 js | 是 |
| brightness | 88.6 | contrast | 20.7 |
| colorfulness | 17.2 | 留白 | 37.7% |
该 slot 的 telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 395.1 s |
| cost | — | request id | — |
config.json576 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_OPENCODE_KEY",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "ox-alpha-free--cli--opencode--dev",
"effort": null,
"family": "glm",
"m": {
"min": 1,
"q": 1
},
"model_id": "ox-alpha-free",
"protocol": "cli",
"served_model": "ox-alpha-free",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 760948
},
"transport": "opencode-cli-isolated-xdg-go-subscription",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-22--opencode-cli-new",
"config_id": "ox-alpha-free--cli--opencode--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-21T14:44:38.651518+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-21T14:38:03.577382+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-21T14:50:49.325901+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-21T14:44:43.443596+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-21T14:55:00.259598+00:00",
"http_status": null,
"outcome": "infra-failed",
"reached_model": true,
"reason": "mid-stream-death",
"request_id": null,
"started_at": "2026-08-21T14:50:52.884301+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "infra-failed",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-21T14:59:01.901026+00:00",
"http_status": null,
"outcome": "infra-failed",
"reached_model": true,
"reason": "mid-stream-death",
"request_id": null,
"started_at": "2026-08-21T14:55:00.356215+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "infra-failed",
"variant": "P-q"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}