Commit Graph
99 Commits
Author SHA1 Message Date
mohe fd6ea76f54 feat: WeChat status + QR on Dashboard, proactive login notifier
- /api/wechat/status: real login detection via webhook log + docker logs
- /api/platform: wechat_bridge now returns login_ok, message, qr_url
- Platform tab: inline QR code with 5min expiry + refresh button
- wechat_qr_notifier.py: 40h session-age WeChat warning + XMPP logout alert
- agents_health_check.py: login_check via docker logs
- wechat_webhook.py: timeout 180→600s
2026-07-31 03:22:35 +08:00
hmo 3e2a74d4d9 fix: SenseNova卡片不再混入OpenCode Go组
- accounts.json移除key8/9/10(它们是同一SenseNova账户的3个模型视角,非OCG账号)
  否则OCG采集器会把它们当OCG账户采集,前端归到OpenCode Go组
- /api/keys: 注册表外的用量条目(sensenova)以独立provider追加,不进OCG
- 前端provider名映射补sensenova
2026-07-23 22:52:53 +08:00
hmo 0a3986238e feat: SenseNova Token Plan余量监控(参考OCG/Kimi CDP模式)
- usage_collector_sensenova.py: CDP刮platform.sensenova.cn/console三模型余量
  (锚定'模型名+换行+数字%剩余'防图例区误匹配)
- dashboard: /api/usage和/api/keys合并sensenova数据; refresh流程加SSH采集+scp回传
- accounts.json注册key8/9/10(同一SenseNova key三模型视角)
2026-07-23 18:23:16 +08:00
hmo e59c1bcc53 fix: 移除afw-proxy(已废弃试验)+ocg-key顺序由/api/keys配额动态决定
- afw-proxy是早期试验代理,老爸确认已废弃,不入链
- ocg-key*按AgentsMeeting/api/keys健康度排序,session_expired跳过
2026-07-23 16:47:28 +08:00
hmo eddbee968c fix: provider链白名单与实际config脱节导致模型无响应
- 原allowed仅4个provider(deepseek/volcengine/opencode-go*), config里只有deepseek(402欠费)→全链死
- 现按存活度排序: sense-nova(实测可用+tools支持)→deepseek→afw-proxy→ocg-key*
- 模型名: options.model优先, 否则取provider models字典第一个key
2026-07-23 15:54:38 +08:00
mohe 42a55f03c2 chore: 移除小果(agent-003)——已全线退役(dashboard默认agents/agents.yaml/auto_heal服务映射) 2026-07-21 22:46:42 +08:00
hmo 74496bacd9 chore: set executable bit on cron wrapper scripts 2026-07-21 01:02:50 +08:00
hmo 37bfbad921 feat: add cron wrapper scripts for OCG and Kimi local collectors
- ocg_collect.sh: local OCG collection via HTTP+cookies
- kimi_collect_local.sh: local Kimi collection via Playwright CDP
- Replaces kimi_collect.sh (SSH-to-Windows approach)
2026-07-21 01:00:58 +08:00
hmo c11222e55c feat: local Kimi collection via Playwright + headless Chrome on 246
- usage_collector_kimi_local.py: Playwright connect_over_cdp to local Chrome
- kimi_login.py: interactive login helper for headless Chrome
- Replaces SSH-to-Windows approach, removes single point of failure
- Chrome CDP service: chrome-kimi-cdp.service (systemd)
2026-07-21 00:56:00 +08:00
hmo 2598b286eb fix: kimi collector crash on CDP error + auto-start CDP proxy + dashboard renewal badge
- usage_collector_kimi: guard /targets dict response, auto-start CDP proxy if down
- usage_collector: add subscribed/renewal fields to HTTP+CDP collection
- dashboard: show UNSUBSCRIBED red badge / renewal-cancelled orange badge
2026-07-20 23:18:40 +08:00
hmo dc3b3d1868 fix: Kimi collector always reloads page for fresh data 2026-07-19 22:17:12 +08:00
hmo 9a6ff4a3bd fix: refresh endpoint triggers Kimi collector via SSH to Windows + scp result back 2026-07-19 22:12:46 +08:00
hmo 84423565f8 fix: Kimi collector targets correct membership/subscription tab, parses 3 usage metrics with dates 2026-07-19 21:26:40 +08:00
hmo c1232ed382 fix: OCG output includes provider field + Kimi collector uses membership/subscription page 2026-07-19 21:09:01 +08:00
hmo bfb6bfba59 fix: OCG collector skips non-opencode_go provider accounts (key7 Kimi was leaking into OCG section) 2026-07-19 20:22:04 +08:00
hmo e509334ff4 fix: /api/keys reads Kimi usage_stats_kimi.json for key7 data 2026-07-19 19:47:46 +08:00
hmo 7a43fec2b1 feat: multi-provider usage — Kimi collector via CDP, unified /api/usage, frontend grouping 2026-07-19 19:46:08 +08:00
hmo 94f5f9ec92 feat: add /api/keys endpoint — masked API keys with usage data (rolling/weekly/monthly) 2026-07-19 10:53:32 +08:00
hmo 94250e9dda fix: match crontab entries by script filename (underscore) not task name (hyphen) 2026-07-19 09:25:25 +08:00
hmo 0ed048c327 fix: dashboard monitor checks local crontab + dev-spec adds Linux-first deployment rule 2026-07-19 09:24:03 +08:00
hmo d6950b0982 rewrite: health check, daily health, todo executor for Linux 246 deployment (native tools, no Windows deps) 2026-07-19 09:21:26 +08:00
hmo 1d4f083b10 fix: use 10s timeout for remote service HTTP checks 2026-07-19 09:12:15 +08:00
hmo b248fc62c5 fix: auto_heal extract service_key from composite key (agent-XXX:name) for SERVICE_UNIT_MAP lookup 2026-07-19 09:10:39 +08:00
hmo b56b1b3b47 fix: health check PID now advisory-only, remote services skip local port, add ?§ to task entries 2026-07-19 09:05:16 +08:00
hmo 4bba29965f fix: handle GBK encoding from Windows schtasks output via SSH 2026-07-19 08:20:08 +08:00
hmo 9fca8185a5 fix: monitor endpoint checks Windows schtasks via SSH instead of Linux systemd/crontab 2026-07-19 08:18:54 +08:00
hmo a87a4e6d5b fix: skip scheduled entries in Layer 3 loop to prevent duplicate 定时任务 section 2026-07-18 22:29:02 +08:00
hmo 7dc5cc1c74 fix: add missing hermes_gateway + omlx_server specs + all M map spec fields 2026-07-18 13:28:50 +08:00
hmo 0ac756b241 fix: F Tab unique keys per instance + spec buttons + dedup + naming rules 2026-07-18 13:23:43 +08:00
hmo c43486a6f2 feat: auto_heal.py + api/autoheal + F Tab auto-heal display 2026-07-18 12:28:47 +08:00
hmo e4a9b7ff55 fix: api_services cross-platform health URLs + frontend isHealthy() accepts online/remote 2026-07-18 11:52:35 +08:00
hmo 944ce33ac4 fix: wechat_bridge 401 false-negative + hermes xmpp_bot filter + M map key 2026-07-18 11:47:15 +08:00
hmo 471a643050 fix: add expected field back for frontend F Tab rendering 2026-07-18 11:38:47 +08:00
hmo 0139e2949d fix: xmpp type entries check via ejabberdctl JID online status 2026-07-18 11:33:04 +08:00
hmo 7eee60a7cf fix: _is_local_host helper for EJABBERD_HOST + local IP 2026-07-18 11:30:31 +08:00
hmo f5edce71c9 fix: F Tab expected dynamic + AGENTS.md encoding + dev-spec sync 2026-07-18 10:39:35 +08:00
hmo c3d9f0e661 feat(gateway): 双轨规范体系完善 — 新增 7 个模块 spec (dashboard/xmpp_bot/health_service/watchdog/chat_bridge/session_router/usage_collector) + 修复 3 个已有 spec + dashboard status_reason + Platform ejabberd 集成 2026-07-17 00:33:44 +08:00
hmo 79e8480f3c fix: remove stale Loading span in Infrastructure tab; add per-service ?/§ for Platform (WeChat Bridge, API Proxy, article_processor) and Ejabberd with dedicated spec files 2026-07-16 22:25:17 +08:00
hmo c8b641bb65 feat: add ? and § dual-track buttons to Agents, Kanban, Infrastructure tabs 2026-07-16 22:10:53 +08:00
hmo d1b31dac15 feat: add module spec files for agents, kanban, infra tabs 2026-07-16 22:10:34 +08:00
hmo 6009c20f74 add ? and § dual-track buttons to G/K/F/H tabs + 4 spec JSON files 2026-07-16 18:42:42 +08:00
hmo 7acbe04aa1 F: rework fHealth into 3-layer view (summary + issues + grouped services) 2026-07-16 18:35:58 +08:00
hmo cf53788627 fix: dev-spec.md API candidate 用 _PROJECT_DIR 确保 path 正确 2026-07-16 18:22:19 +08:00
hmo 8f2f3466b7 fix: dev-spec.md 移入 git 跟踪目录 docs/ + api candidates 更新 2026-07-16 18:19:40 +08:00
hmo 7df8df956e restructure: 开发原则 Tab 精简为 G+K+F+H + 历史版本 + F 健康视图 2026-07-16 18:17:44 +08:00
hmo 7c2655dc95 fix: display usage timestamp in CST (UTC+8) not UTC 2026-07-15 22:47:21 +08:00
hmo 4e705f30de fix: create logs dir before FileHandler init (246 compat) 2026-07-15 22:33:57 +08:00
hmo fefdc29d06 feat: OpenCode Go usage monitor — hybrid collector + 246-centric dashboard
- usage_collector.py v3.0: HTTP+stored cookies (primary) + CDP (bonus)
  - Cookie keepalive: captures Set-Cookie from responses, saves back to JSON
  - Per-metric regex for SSR parsing (handles nested \[N]={...} structure)
  - Cache merge: preserves other accounts' data on partial collection
- extract_cookies.py: one-time CDP /cookies endpoint → per-account JSON
- dashboard.py: /api/usage reads local file (no Windows bot dependency)
  - /api/usage/refresh: local subprocess collector
  - Auto-timer: 5min background thread (cookie keepalive + fresh data)
- xmpp_agent_core.py: /usage endpoint + auto-timer (for local testing)
- dashboard.html: usage-monitor section (4 cards × 3 metrics + alerts)
- accounts.json: 4 accounts configured (key1-4, gitignored)
- .gitignore: cookies/, accounts.json, usage_stats.json
2026-07-15 22:30:20 +08:00
hmo ac34556588 fix: RDP tunnel SSH auth under LocalSystem — port 5807 + key path search + detached process
- http_port 5802→5807: 5802 occupied by wechat-hermes-gateway xmpp_bot, dual-listener caused ~50% request 400s
- _rdp_enable(): DETACHED_PROCESS so tunnel survives bot restart/crash
- ExitOnForwardFailure=yes so dead forward exits immediately instead of hanging
- stderr→rdp_tunnel_ssh.log for diagnosability
- -i explicit key path with multi-home search (LocalSystem ~ = systemprofile, not C:\Users\hmo)
- env injection HOME/USERPROFILE for ssh subprocess
- IdentitiesOnly=yes so -i key is used exclusively
- health_service.py: /health port 5802→5807 (was causing 30s restart loop)
- easytier.json + rdp.json: all 5802→5807 references updated
- rdp.json: add xiaoguo/Mac as RDP participant + architecture participant
2026-07-15 13:30:34 +08:00
hmo 47e323c8fc refactor(spec): 拆分 easytier-rdp.json 为 easytier.json + rdp.json
遵守针对性+完整性原则:
- EasyTier section 的 ?/§ 只显示 EasyTier 内容
- RDP section 的 ?/§ 只显示 RDP 内容
- ai_spec.related_models 互相引用对方
- human_help.related 引用对方入口

dashboard.html:
- EasyTier 按钮调用 showModuleHelp('easytier', ...)
- RDP 按钮调用 showModuleHelp('rdp', ...)
- _renderSpecModal 新增 related_modules 显示, 每个 related 模块可点击跳转
2026-07-15 11:10:28 +08:00