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

截图是 similarity 通道测量时的原始像素。运行 live 会在 sandboxed iframe 中重新执行原始输出;渲染结果取决于你的浏览器和字体,不保证与测量像素一致。
similarity 邻居
最近
claude-opus-4-8-thinking @medium · cursor-xl0.72kimi-k3 @low · cursor0.72claude-opus-4-7 @low · kiro0.72claude-opus-4-8 @high · kiro0.72claude-opus-4-7 @medium · kiro0.71最远
north-mini-code-free · api0.50claude-sonnet-4 · cursor0.50cursor-grok-4.5 @high · cursor-xl0.51grok-4.6 @medium · grok-cli0.52grok-4.6 @high · grok-cli0.52限于 session 2026-07-19--unified
similarity 衡量本 session 内的趋同程度 —— 不是质量。
Fidelity —— 卡片展示的数据对不对?
- namematch
- conditionmatch
- datematch
- max tempmatch展示值:25.3
- min tempmatch展示值:16
- 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">
<title>Weather Card</title>
<style>
:root{
--bg-start:#0b1226;
--bg-mid:#16224d;
--bg-end:#243b6b;
--card:rgba(255,255,255,0.06);
--card-border:rgba(255,255,255,0.14);
--text:#f4f7ff;
--text-dim:#aebbd6;
--accent:#6fb3ff;
--warm:#ffb86b;
--cool:#6fd0ff;
--grid:rgba(255,255,255,0.08);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
width:1280px;height:800px;overflow:hidden;
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
color:var(--text);
background:radial-gradient(120% 120% at 15% 10%, var(--bg-mid) 0%, var(--bg-start) 55%, #060a18 100%);
display:flex;align-items:center;justify-content:center;
}
.card{
width:1120px;height:680px;
background:linear-gradient(160deg, rgba(255,255,255,0.07), rgba(255,255,255,0.02));
border:1px solid var(--card-border);
border-radius:28px;
backdrop-filter:blur(18px);
box-shadow:0 30px 80px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.08);
padding:48px 56px;
display:flex;flex-direction:column;
position:relative;overflow:hidden;
}
.glow{
position:absolute;width:520px;height:520px;border-radius:50%;
background:radial-gradient(circle, rgba(111,179,255,0.18), transparent 70%);
top:-160px;right:-120px;pointer-events:none;
}
.head{display:flex;justify-content:space-between;align-items:flex-start;position:relative;z-index:1}
.loc{font-size:38px;font-weight:700;letter-spacing:-0.5px}
.meta{margin-top:8px;font-size:16px;color:var(--text-dim);font-variant-numeric:tabular-nums}
.coord{font-size:13px;color:var(--text-dim);opacity:0.8;text-align:right;line-height:1.5}
.main{display:flex;align-items:center;gap:40px;margin-top:34px;position:relative;z-index:1}
.big{display:flex;align-items:flex-start;gap:6px}
.big .t{font-size:108px;font-weight:200;line-height:1;letter-spacing:-3px}
.big .deg{font-size:40px;font-weight:300;margin-top:14px;color:var(--text-dim)}
.cond{display:flex;flex-direction:column;gap:6px}
.cond .icon{width:74px;height:74px}
.cond .text{font-size:20px;font-weight:600;color:var(--text)}
.cond .sub{font-size:14px;color:var(--text-dim)}
.hilo{display:flex;gap:28px;margin-top:30px;position:relative;z-index:1}
.pill{
display:flex;align-items:center;gap:10px;
padding:12px 20px;border-radius:14px;
background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.1);
}
.pill .label{font-size:12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-dim)}
.pill .val{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}
.pill.max .val{color:var(--warm)}
.pill.min .val{color:var(--cool)}
.hourly{margin-top:auto;position:relative;z-index:1}
.hourly .title{font-size:13px;text-transform:uppercase;letter-spacing:1.4px;color:var(--text-dim);margin-bottom:14px}
.chart-wrap{position:relative;height:180px}
svg{width:100%;height:100%;display:block;overflow:visible}
.ytick{font-size:11px;fill:var(--text-dim);font-variant-numeric:tabular-nums}
.xtick{font-size:11px;fill:var(--text-dim);font-variant-numeric:tabular-nums;text-anchor:middle}
.error{
display:flex;flex-direction:column;align-items:center;justify-content:center;
height:100%;text-align:center;gap:14px;
}
.error .big{font-size:24px;font-weight:600;color:var(--text)}
.error .det{font-size:15px;color:var(--text-dim);max-width:560px}
.loader{display:flex;align-items:center;justify-content:center;height:100%;gap:14px;color:var(--text-dim);font-size:16px}
.spin{width:22px;height:22px;border:2.5px solid rgba(255,255,255,0.2);border-top-color:var(--accent);border-radius:50%;animation:sp 0.8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.hidden{display:none!important}
</style>
</head>
<body>
<div class="card">
<div class="glow"></div>
<div id="load" class="loader"><div class="spin"></div><span>Loading weather…</span></div>
<div id="err" class="error hidden">
<div class="big">Unable to load weather data</div>
<div class="det" id="errdet"></div>
</div>
<div id="content" class="hidden" style="display:flex;flex-direction:column;height:100%;position:relative;z-index:1">
<div class="head">
<div>
<div class="loc" id="loc"></div>
<div class="meta" id="meta"></div>
</div>
<div class="coord" id="coord"></div>
</div>
<div class="main">
<div class="big"><span class="t" id="avg"></span><span class="deg">°C</span></div>
<div class="cond">
<svg class="icon" id="cicon" viewBox="0 0 74 74"></svg>
<div class="text" id="ctext"></div>
<div class="sub" id="csub"></div>
</div>
</div>
<div class="hilo">
<div class="pill max"><span class="label">High</span><span class="val" id="tmax"></span></div>
<div class="pill min"><span class="label">Low</span><span class="val" id="tmin"></span></div>
<div class="pill"><span class="label">Range</span><span class="val" id="trange"></span></div>
</div>
<div class="hourly">
<div class="title">Hourly temperature · °C</div>
<div class="chart-wrap"><svg id="chart"></svg></div>
</div>
</div>
</div>
<script>
(function(){
function pad(n){return n<10?'0'+n:''+n}
function fmtDate(d){
return d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate());
}
var params=new URLSearchParams(location.search);
var lat=parseFloat(params.get('lat'));
var lon=parseFloat(params.get('lon'));
if(isNaN(lat))lat=52.52;
if(isNaN(lon))lon=13.405;
var name=params.get('name')||'Berlin';
var dateStr=params.get('date');
var today=new Date(Date.now());
var todayUTC=new Date(Date.UTC(today.getUTCFullYear(),today.getUTCMonth(),today.getUTCDate()));
var reqDate;
if(dateStr&&/^\d{4}-\d{2}-\d{2}$/.test(dateStr)){
var p=dateStr.split('-');
reqDate=new Date(Date.UTC(+p[0],+p[1]-1,+p[2]));
}else{
reqDate=todayUTC;
}
var reqStr=fmtDate(reqDate);
var isArchive=reqDate.getTime()<todayUTC.getTime();
var endpoint=isArchive?'/api/om/archive':'/api/om/forecast';
var q=new URLSearchParams({
latitude:lat.toFixed(4),
longitude:lon.toFixed(4),
daily:'temperature_2m_max,temperature_2m_min,weather_code',
hourly:'temperature_2m',
timezone:'UTC',
temperature_unit:'celsius',
start_date:reqStr,
end_date:reqStr
});
function fail(msg){
document.getElementById('load').classList.add('hidden');
document.getElementById('err').classList.remove('hidden');
document.getElementById('errdet').textContent=msg||'Please check your connection and try again.';
}
fetch(endpoint+'?'+q.toString())
.then(function(r){
if(!r.ok)throw new Error('HTTP '+r.status);
return r.json();
})
.then(function(d){
if(!d||!d.daily)throw new Error('Malformed response');
render(d);
})
.catch(function(e){
fail('Request to '+endpoint+' failed: '+(e&&e.message?e.message:'unknown error'));
});
var WMO={
0:['Clear sky','clear'],
1:['Mainly clear','clear'],2:['Partly cloudy','partly'],3:['Overcast','cloudy'],
45:['Fog','fog'],48:['Depositing rime fog','fog'],
51:['Light drizzle','drizzle'],53:['Moderate drizzle','drizzle'],55:['Dense drizzle','drizzle'],
56:['Freezing drizzle','sleet'],57:['Freezing dense drizzle','sleet'],
61:['Slight rain','rain'],63:['Moderate rain','rain'],65:['Heavy rain','rain'],
66:['Freezing rain','sleet'],67:['Freezing heavy rain','sleet'],
71:['Slight snow','snow'],73:['Moderate snow','snow'],75:['Heavy snow','snow'],
77:['Snow grains','snow'],
80:['Slight rain showers','rain'],81:['Moderate rain showers','rain'],82:['Violent rain showers','rain'],
85:['Slight snow showers','snow'],86:['Violent snow showers','snow'],
95:['Thunderstorm','storm'],96:['Thunderstorm slight hail','storm'],99:['Thunderstorm heavy hail','storm']
};
function iconSVG(kind){
var defs={name:'g',children:[]};
var sun=function(cx,cy,r){return '<circle cx="'+cx+'" cy="'+cy+'" r="'+r+'" fill="#ffd76a"/>'+
[0,45,90,135,180,225,270,315].map(function(a){
var rad=a*Math.PI/180;
var x1=cx+Math.cos(rad)*(r+6),y1=cy+Math.sin(rad)*(r+6);
var x2=cx+Math.cos(rad)*(r+13),y2=cy+Math.sin(rad)*(r+13);
return '<line x1="'+x1.toFixed(1)+'" y1="'+y1.toFixed(1)+'" x2="'+x2.toFixed(1)+'" y2="'+y2.toFixed(1)+'" stroke="#ffd76a" stroke-width="2.5" stroke-linecap="round"/>';
}).join('');};
var cloud=function(dx,dy,fill){return '<path d="M'+(14+dx)+' '+(44+dy)+' a12 12 0 0 1 6 -22 a14 14 0 0 1 27 4 a11 11 0 0 1 -3 22 z" fill="'+fill+'"/>';};
var rain=function(){return '<g stroke="#6fb3ff" stroke-width="2.5" stroke-linecap="round">'+
'<line x1="28" y1="52" x2="24" y2="62"/>'+
'<line x1="38" y1="52" x2="34" y2="62"/>'+
'<line x1="48" y1="52" x2="44" y2="62"/><line x1="58" y1="52" x2="54" y2="62"/></g>';};
var snow=function(){return '<g fill="#cfeaff">'+
'<circle cx="28" cy="58" r="2.4"/><circle cx="40" cy="62" r="2.4"/><circle cx="52" cy="58" r="2.4"/><circle cx="60" cy="64" r="2.4"/></g>';};
var bolt=function(){return '<path d="M40 48 L30 64 L38 64 L32 76 L48 56 L40 56 L46 46 Z" fill="#ffd76a" stroke="#ffb86b" stroke-width="1"/>';};
var body='';
if(kind==='clear'){body=sun(37,37,16);}
else if(kind==='partly'){body=sun(28,28,12)+cloud(8,6,'rgba(255,255,255,0.85)');}
else if(kind==='cloudy'){body=cloud(4,4,'rgba(200,210,230,0.85)')+cloud(-6,10,'rgba(255,255,255,0.9)');}
else if(kind==='fog'){body=cloud(0,0,'rgba(210,220,240,0.7)')+'<g stroke="#aebbd6" stroke-width="3" stroke-linecap="round"><line x1="18" y1="52" x2="56" y2="52"/><line x1="22" y1="60" x2="52" y2="60"/><line x1="18" y1="68" x2="58" y2="68"/></g>';}
else if(kind==='drizzle'){body=cloud(2,0,'rgba(200,210,230,0.9)')+'<g stroke="#8fb8ff" stroke-width="2" stroke-linecap="round"><line x1="30" y1="52" x2="27" y2="59"/><line x1="44" y1="52" x2="41" y2="59"/></g>';}
else if(kind==='rain'){body=cloud(2,0,'rgba(200,210,230,0.9)')+rain();}
else if(kind==='sleet'){body=cloud(2,0,'rgba(200,210,230,0.9)')+rain()+'<circle cx="55" cy="62" r="2.4" fill="#cfeaff"/>';}
else if(kind==='snow'){body=cloud(2,0,'rgba(210,225,245,0.9)')+snow();}
else if(kind==='storm'){body=cloud(2,0,'rgba(170,180,205,0.95)')+bolt();}
else{body=cloud(2,0,'rgba(200,210,230,0.9)');}
return '<g>'+body+'</g>';
}
function render(d){
var dl=d.daily;
var f=function(i){return i==null?'':(''+i);};
var tmax=dl.temperature_2m_max[0];
var tmin=dl.temperature_2m_min[0];
var code=dl.weather_code[0];
var info=WMO[code]||['Unknown','cloudy'];
var hours=d.hourly.time;
var temps=d.hourly.temperature_2m;
var valid=[];
for(var i=0;i<hours.length;i++){
var h=new Date(hours[i]+'Z').getUTCHours();
if(typeof temps[i]==='number')valid.push({h:h,t:temps[i]});
}
var avg=valid.length?valid.reduce(function(s,v){return s+v.t;},0)/valid.length:NaN;
document.getElementById('loc').textContent=name;
document.getElementById('meta').textContent=reqStr+' · UTC';
document.getElementById('coord').innerHTML='lat '+lat.toFixed(2)+'<br>lon '+lon.toFixed(2);
document.getElementById('avg').textContent=isNaN(avg)?'–':Math.round(avg*10)/10;
document.getElementById('tmax').textContent=(tmax==null?'–':(Math.round(tmax*10)/10+'°'));
document.getElementById('tmin').textContent=(tmin==null?'–':(Math.round(tmin*10)/10+'°'));
document.getElementById('trange').textContent=(tmax==null||tmin==null?'–':(Math.round((tmax-tmin)*10)/10+'°'));
document.getElementById('cicon').innerHTML=iconSVG(info[1]);
document.getElementById('ctext').textContent=info[0];
document.getElementById('csub').textContent=isNaN(avg)?'':'avg '+Math.round(avg*10)/10+'°C';
drawChart(valid);
document.getElementById('load').classList.add('hidden');
document.getElementById('content').classList.remove('hidden');
}
function drawChart(valid){
var svg=document.getElementById('chart');
if(!valid.length){svg.innerHTML='<text x="500" y="90" class="xtick">No hourly data</text>';return;}
var W=1024,H=180,mL=44,mR=12,mT=16,mB=28;
var pw=W-mL-mR,ph=H-mT-mB;
var ts=valid.map(function(v){return v.t;});
var lo=Math.min.apply(null,ts),hi=Math.max.apply(null,ts);
if(hi-lo<4){hi+=1;lo-=1;}
var yFor=function(t){return mT+ph-((t-lo)/(hi-lo))*ph;};
var xFor=function(i){return mL+(valid.length<=1?0:(i/(valid.length-1))*pw);};
var pts=valid.map(function(v,i){return [xFor(i),yFor(v.t)];});
var linePath=pts.map(function(p,i){return (i?'L':'M')+p[0].toFixed(1)+' '+p[1].toFixed(1);}).join(' ');
var areaPath=linePath+' L'+pts[pts.length-1][0].toFixed(1)+' '+(mT+ph)+' L'+pts[0][0].toFixed(1)+' '+(mT+ph)+' Z';
var y5=5;
var ticks=[];for(var i=0;i<=y5;i++){ticks.push(lo+(hi-lo)*i/y5);}
var grid=ticks.map(function(t){return '<line x1="'+mL+'" y1="'+yFor(t).toFixed(1)+'" x2="'+(W-mR)+'" y2="'+yFor(t).toFixed(1)+'" stroke="rgba(255,255,255,0.06)" />'+
'<text x="'+(mL-8)+'" y="'+(yFor(t)+4).toFixed(1)+'" class="ytick" text-anchor="end">'+Math.round(t)+'°</text>';}).join('');
var step=valid.length<=12?1:Math.ceil(valid.length/12);
var xlab=valid.map(function(v,i){if(i%step!==0&&i!==valid.length-1)return'';return '<text x="'+xFor(i).toFixed(1)+'" y="'+(H-8)+'" class="xtick">'+pad(v.h)+'</text>';}).join('');
var dots=pts.map(function(p,i){return '<circle cx="'+p[0].toFixed(1)+'" cy="'+p[1].toFixed(1)+'" r="3.2" fill="#6fb3ff" stroke="#0b1226" stroke-width="1.5"/>';}).join('');
var defs='<defs><linearGradient id="fill" x1="0" y1="0" x2="0" y2="1">'+
'<stop offset="0%" stop-color="rgba(111,179,255,0.45)"/>'+
'<stop offset="100%" stop-color="rgba(111,179,255,0.02)"/></linearGradient></defs>';
svg.setAttribute('viewBox','0 0 '+W+' '+H);
svg.innerHTML=defs+grid+'<path d="'+areaPath+'" fill="url(#fill)"/>'+
'<path d="'+linePath+'" fill="none" stroke="#6fb3ff" stroke-width="2.4" stroke-linejoin="round" stroke-linecap="round"/>'+
dots+xlab;
}
})();
</script>
</body>
</html>L1 —— 廉价的确定性描述量
| bytes 总计 | 14,387 | html / css / js | 1,601 / 3,802 / 8,984 |
|---|---|---|---|
| dom 节点 | 44 | dom 深度 | 7 |
| css 规则 | 38 | 含 js | 是 |
| brightness | 33.4 | contrast | 19.1 |
| colorfulness | 18.6 | 留白 | 64.8% |
该 slot 的 telemetry
| prompt tokens | 0 | completion tokens | 0 |
|---|---|---|---|
| total tokens | 0 | wall | 233.7 s |
| cost | — | request id | — |
config.json558 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_OPENCODE_KEY",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "glm-5.1--cli--opencode--dev",
"effort": null,
"family": "glm",
"m": {
"min": 2,
"q": 2
},
"model_id": "glm-5.1",
"protocol": "cli",
"served_model": "glm-5.1",
"telemetry": {
"completion_tokens": null,
"cost_usd": null,
"prompt_tokens": null,
"total_tokens": null,
"wall_ms": 731476
},
"transport": "opencode-cli-isolated-xdg-go-subscription",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-07-20--refill4-oc-glm-5.1",
"config_id": "glm-5.1--cli--opencode--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-20T11:26:41.437934+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T11:25:05.181929+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-20T11:30:40.078715+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T11:26:46.425183+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-20T11:33:33.951663+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T11:30:44.775198+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-20T11:37:29.803507+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-20T11:33:37.403999+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
}
}
}