From 11027d6aa599e80617f03220fd3ae9fd9574fcb5 Mon Sep 17 00:00:00 2001 From: mango Date: Sun, 22 Feb 2026 19:00:15 +0800 Subject: [PATCH] feat: auto-detect default provider + yellow highlight --- agent/agent.sh | 16 +++++++++++++++- public/index.html | 4 ++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/agent/agent.sh b/agent/agent.sh index 4a9b8c4..dfd9139 100755 --- a/agent/agent.sh +++ b/agent/agent.sh @@ -43,8 +43,22 @@ if cfg and os.path.exists(cfg): try: c = json.load(open(cfg)) m = c.get('models',{}) - # Extract default from config or -d param + # Auto-detect default: most used provider from recent sessions dp = default_prov or m.get('default','') + if not dp: + from collections import Counter + prov_count = Counter() + for sd2 in glob.glob(os.path.join(os.path.expanduser('~/.openclaw'),'agents','*','sessions')): + for jf2 in glob.glob(os.path.join(sd2,'*.jsonl')): + if os.path.getmtime(jf2) < time.time()-7*86400: continue + try: + with open(jf2) as f2: + for ln in f2: + if '"provider"' in ln: + try: prov_count[json.loads(ln).get('message',{}).get('provider','')] += 1 + except: pass + except: pass + if prov_count: dp = prov_count.most_common(1)[0][0] default_name = dp.split('/')[0] if '/' in dp else dp for n,p in m.get('providers',{}).items(): if not isinstance(p,dict): continue diff --git a/public/index.html b/public/index.html index e9064c3..81abd4f 100644 --- a/public/index.html +++ b/public/index.html @@ -36,7 +36,7 @@ h1{font-size:1.3em;color:var(--neon);margin-bottom:4px} .sec{font-size:.72em;color:var(--dim);margin-bottom:4px} .pv{display:flex;justify-content:space-between;padding:3px 0;font-size:.78em} .pv-l{display:flex;gap:5px;align-items:center} -.star{color:var(--warn);font-size:.7em} +.pv-default{color:var(--warn)} .pm{color:var(--dim);font-size:.85em} .ok{color:var(--green)}.er{color:var(--err)} .gs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0} @@ -122,7 +122,7 @@ function renderNodes(){
${n.role}OC ${n.oc_version}${n.os}
${hbBars}
供应商
-${provs.sort((a,b)=>b.default-a.default||(a.name>b.name?1:-1)).map(p=>`
${p.default?'':''}${p.name} ${p.model}
${p.status==='ok'?' '+p.ms+'ms':' '+(p.err||'离线')+''}
`).join('')} +${provs.sort((a,b)=>b.default-a.default||(a.name>b.name?1:-1)).map(p=>`
${p.default?'':''}${p.name} ${p.model}
${p.status==='ok'?' '+p.ms+'ms':' '+(p.err||'离线')+''}
`).join('')}
${[['cpu',n.cpu],['mem',n.mem],['disk',n.disk],['swap',n.swap]].map(([l,v])=>`
${l}
${on?v+'%':'—'}
`).join('')}