fix: default provider star + admin panel

This commit is contained in:
mango
2026-02-22 17:58:05 +08:00
parent f516e91e21
commit 0660717bf7
2 changed files with 14 additions and 8 deletions

View File

@@ -1,10 +1,10 @@
#!/bin/bash
# OpenClaw Monitor Agent
set -e
SERVER="" TOKEN="" NAME="" ROLE="worker" INTERVAL=30
SERVER="" TOKEN="" NAME="" ROLE="worker" INTERVAL=30 DEFAULT_PROV=""
while getopts "s:t:n:r:i:" opt; do
case $opt in s)SERVER="$OPTARG";;t)TOKEN="$OPTARG";;n)NAME="$OPTARG";;r)ROLE="$OPTARG";;i)INTERVAL="$OPTARG";;esac
while getopts "s:t:n:r:i:d:" opt; do
case $opt in s)SERVER="$OPTARG";;t)TOKEN="$OPTARG";;n)NAME="$OPTARG";;r)ROLE="$OPTARG";;i)INTERVAL="$OPTARG";;d)DEFAULT_PROV="$OPTARG";;esac
done
[ -z "$SERVER" ] || [ -z "$TOKEN" ] && echo "Usage: $0 -s SERVER_URL -t TOKEN [-n name] [-r role]" && exit 1
@@ -19,7 +19,7 @@ OC_VERSION=$(openclaw --version 2>/dev/null | head -1 || echo "unknown")
echo "OC Monitor Agent: node=$NODE_ID name=$NAME server=$SERVER"
while true; do
python3 - "$OC_CONFIG" "$NODE_ID" "$NAME" "$OC_VERSION" "$ROLE" << 'PYEOF' > /tmp/.oc-agent-payload.json
python3 - "$OC_CONFIG" "$NODE_ID" "$NAME" "$OC_VERSION" "$ROLE" "$DEFAULT_PROV" << 'PYEOF' > /tmp/.oc-agent-payload.json
import json,subprocess,os,platform,time,sys,glob
def run(cmd):
@@ -27,6 +27,7 @@ def run(cmd):
except: return ''
cfg,nid,name,ver,role = sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]
default_prov = sys.argv[6] if len(sys.argv)>6 else ''
mac = sys.platform=='darwin'
# Host IP - try multiple interfaces on macOS
@@ -41,10 +42,15 @@ providers = []
if cfg and os.path.exists(cfg):
try:
c = json.load(open(cfg))
for n,p in c.get('models',{}).get('providers',{}).items():
m = c.get('models',{})
# Extract default from config or -d param
dp = default_prov or m.get('default','')
default_name = dp.split('/')[0] if '/' in dp else dp
for n,p in m.get('providers',{}).items():
if not isinstance(p,dict): continue
for m in p.get('models',[]):
providers.append({'name':n,'model':m.get('id',''),'api':p.get('api','')})
for mod in p.get('models',[]):
providers.append({'name':n,'model':mod.get('id',''),'api':p.get('api',''),'default':n==default_name})
providers.sort(key=lambda x: (not x.get('default',False), x['name']))
except: pass
# CPU

View File

@@ -118,7 +118,7 @@ function renderNodes(){
<div class="tg"><span class="${n.role==='master'?'ms':'wk'}">${n.role}</span><span>OC ${n.oc_version}</span><span>${n.os}</span></div>
<div class="hb">${hbBars}</div>
<div class="sec">Providers</div>
${provs.map((p,i)=>`<div class="pv"><div class="pv-l">${i===0?'<span class="star">★</span>':''}${p.name} <span class="pm">${p.model}</span></div><div><span class="ok">✓</span></div></div>`).join('')}
${provs.sort((a,b)=>b.default-a.default||(a.name>b.name?1:-1)).map(p=>`<div class="pv"><div class="pv-l">${p.default?'<span class="star">★</span>':''}${p.name} <span class="pm">${p.model}</span></div><div><span class="ok">✓</span></div></div>`).join('')}
<div class="gs">
${[['cpu',n.cpu],['mem',n.mem],['disk',n.disk],['swap',n.swap]].map(([l,v])=>`<div class="g"><span class="g-l">${l}</span><div class="g-t"><div class="g-f ${gaugeColor(v)}" style="width:${v}%"></div></div><span class="g-n">${on?v+'%':'—'}</span></div>`).join('')}
</div>