Commit Graph
100 Commits
Author SHA1 Message Date
hmo 745daaa1a2 fix: Router.Unavailable -> all keys short-cooldown 30s + cooldown error shows cause/expiry 2026-08-04 11:09:27 +08:00
hmo a83660ebd3 feat: enable/disable OCG keys via Dashboard — disabled keys removed from router pool instantly 2026-08-03 11:45:16 +08:00
hmo f25a15f3bf fix: usage collection error no longer kills keys; 401/403 treated as key failure; key3 (renewal cancelled) skipped via accounts.json 2026-08-03 11:21:12 +08:00
hmo bd87a341dc fix: strip Transfer-Encoding from proxy response (buffered, not chunked) 2026-08-02 04:25:44 +08:00
hmo ad40956f33 docs: ocg_router spec file (human help + AI spec) 2026-08-01 14:39:32 +08:00
hmo e8111a3a59 merge: resolve dashboard.html conflict (keep proxy section) 2026-08-01 12:40:47 +08:00
hmo 79a9264cbd feat: OCG router proxy — quota-aware 6-key routing 2026-08-01 12:39: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
hmo ea193a9881 chore: retire legacy wechat-hermes-gateway xmpp_bot, unify bridge to :5807
Old xmpp_bot.py (PID-locked separately) coexisted with new xmpp_agent_core,
causing duplicate JID connections and split bridge traffic (5802 vs 5807).
Deploy scripts now use new bot's :5807 bridge with X-Api-Key auth.
2026-07-23 13:59:11 +08:00
hmo b3b8c8dec4 fix: RDP health check uses correct 19-byte X.224 packet
Yesterday's malformed packet (TPKT len=0x1b mismatch) made health check
always fail -> every enable triggered needless TermService restarts and
false 'STILL FAILING' reports (root cause of 2026-07-23 morning incident)
2026-07-23 13:48:08 +08:00
hmo 6553e51b8b fix: RDP tunnel status adopts detached/wild tunnels instead of false-disabled
- _rdp_find_tunnel_process(): find ssh.exe hosting -R 8080 forwarding via CIM
- _rdp_status(): adopt actual tunnel process when pid file stale/missing
- _rdp_enable(): adopt existing tunnel instead of spawning duplicate that
  fails on 'remote port forwarding failed' (8080 occupied)
- Fixes 2026-07-23 incident: tunnel alive but dashboard showed disabled,
  repeated enable attempts failed because port was occupied by working tunnel
2026-07-23 13:34:06 +08:00
hmo 8a27d8e847 fix: RDP enable auto-health-restore on handshake failure, anti-Huorong firewall rule 2026-07-22 16:51:52 +08:00
hmo d7b2ee0460 chore: gitignore rdp_tunnel.pid(运行时产物) 2026-07-21 23:11:04 +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 3128db09c6 docs: add TEMPLATE-GUIDE — how to use AgentsMeeting as reference template for new projects or refactoring 2026-07-19 10:19:27 +08:00
hmo 0b345c2ca1 docs: add HEALTH-PIPELINE + DASHBOARD, update DEPLOY/OPS/QUICKSTART/README — Linux 246 as production standard 2026-07-19 10:09:42 +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 525c53a51a docs: add 4th red line — implement then sync spec; record learned lesson 2026-07-17 13:18:23 +08:00
hmo bb26fb4207 chore: add junk file patterns to .gitignore 2026-07-17 00:54:44 +08:00
hmo f0b2e3f3cc docs: add architecture diagram + gitignore bot output and temp files 2026-07-17 00:53:42 +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
hmo ef34e6bd1a feat: co-located module spec prototype (EasyTier/RDP)
- specs/easytier-rdp.json: 双层文档 — human_help(人看) + ai_spec(AI看)
- ai_spec 包含: apis, dependencies, architecture, constraints, must_not, tests, related_files
- dashboard.py: 新增 /api/module-spec/<module> 和 /api/module-specs endpoints
- dashboard.html: EasyTier/RDP 标题旁加 ? (人看) 和 § (AI看) 按钮
- 点击 ? 显示使用说明(人话), 点击 § 显示 AI spec(机器可读)
- CSS: .help-btn 圆形按钮, .spec-modal 全屏弹窗
2026-07-15 10:47:39 +08:00
hmo b11b88887c merge: 恢复077c649内容(开发原则/K tests/spec/prd paths) + 保留flicker-free EasyTier/RDP + Linux兼容改善
- dashboard.html: 应用fI()闪烁修复到077c649版本(create-once/update-state pattern)
- dashboard.py: 新增 /api/tests 端点 (import tests_api)
- dashboard.py: /api/git 改用 git log 命令优先, 降级到 reflog
- dashboard.py: /api/monitor + /api/expected 增加 Linux 支持(systemd timer/crontab)
- dashboard.py: /api/spec + /api/prd 增加 246 venv 路径候选
- dashboard.py: /api/metagrowth git路径探测改善
- 恢复: meta_growth.py, tests_api.py, checklist_audit.py, service_registry.py
- 恢复: sync-venv.sh, post-deploy-check.sh, meta-growth-design.md
2026-07-15 10:10:25 +08:00
hmo ed165db8c9 fix: EasyTier/RDP sections created once, only state values updated each poll — eliminates flicker 2026-07-15 00:23:14 +08:00
hmo c63fa0182a fix: EasyTier/RDP buttons proxy to Windows xmpp_bot via XMPP_BRIDGE_URL (Linux-compatible) 2026-07-14 23:46:42 +08:00
hmo 4e71d5ba85 修复Infrastructure重复: 删除旧版fetchEasyTierStatus/RdpStatus
- 旧版函数与fI内的createElement冲突导致重复出现
- 删除旧函数+interval,所有逻辑归入fI
- Playwright验证: 各section出现一次,无闪
2026-07-14 03:38:05 +08:00
hmo 73098176c0 R02修复: 连接检测60s×3→exit→systemd重启 2026-07-14 03:13:53 +08:00
hmo 8a53e13aa1 修复Kanban: 恢复筛选器+卡片+指派者完整视图 2026-07-14 02:58:52 +08:00
hmo 5e7204016e 交付物: 测试套件完成(15/15通过) + 清单更新
- 创建tests/test_health_checks.py: 15个测试覆盖Tier1/Tier2/Registry/Watchdog/Executor
- 交付物清单: 测试套件(已完成)
- 测试内容: pid/port/http/todo/service_registry/watchdog各维度
- 运行方式: pytest tests/test_health_checks.py -v
2026-07-14 02:49:09 +08:00
hmo d656c3ac8c 自检循环2完成: E表⏸️修正 + R01→🔄
- checklist_audit: 支持⏸️表格单元格检测
- E元成长表: ⏸️(Phase3暂缓)
- 自检报告: 19/3🔄/6⏸️/4
- 剩余4: R06(架构) + 交付物3项(文档)
2026-07-14 02:49:09 +08:00
hmo 3bd50e70ea 自检循环2: R01 Gateway监控 + 服务树扩展
- 新增gateway_mohe:8642 + gateway_zhiwei:8643到服务注册表
- 新增api_services返回2个Gateway的健康状态
- I功能树+J拓扑自动包含Gateway节点
- PRD R01状态: 🔄(监控已加,auto-restart待systemd)
2026-07-14 02:49:09 +08:00
hmo d743b0a274 增强自检: 表格单元格检测 + TODO写入
- 新增正则扫描表格中状态单元格
- 8个缺口写入checklist_gaps.jsonl
- 可被self_todo_executor消费
- 与annotations解析互补,全量覆盖
2026-07-14 02:49:09 +08:00
hmo c3733cc2a9 自检循环1: F2时序拓扑 → J Tab 已实现
- 检测: dev-spec中标明未实现
- 实现: 新增J拓扑Tab,展示依赖/被依赖关系
- 测试: Playwright 0 errors
- 更新: dev-spec.md 时序拓扑→ J Tab已实现
2026-07-14 02:49:08 +08:00
hmo a621aeeb94 QQ标注修正: section标题+R09都改为⏸️暂缓
- 2.1标题: QQ⏸️暂缓
- R09风险: 未开始→⏸️暂缓(无迫切需求)
2026-07-14 02:49:08 +08:00
hmo e442c12558 自检驱动机制 + 标注修正(BOM/E暂缓)
- checklist_audit.py: 扫描文档标记→对比系统→输出差距报告
- metagrowth: 修复BOM导致JSON解析失败
- E标注: 🔄⏸️ 暂缓(Phase 3)
- QQ通道: ⏸️ 暂缓标记
- annotation审计: 24条标记,19/3🔄/2⏸️/0
2026-07-14 02:49:08 +08:00
hmo 468aabeabc F2功能树: 新增I Tab + checklist更新
- 实现: 从/api/services构建树状父子关系图
- 展示: 缩进层级 + 健康圆点 + WD标签 + 端口
- 底部统计: Health 4/4, Watchdog 3/4
- Playwright验证: 0 errors, 树渲染正确
- checklist标记: 功能树→已实现
2026-07-14 02:49:08 +08:00
hmo 5e822f85bc PRD标注实现状态: 全部14节 + 风险表 + 交付物表
- 各节标题加<!-- /🔄/ -->状态标记
- 已知问题表(R01-R09)新增当前状态列
- 交付物表新增实现情况列
- mdRender自动渲染为彩色标签
2026-07-14 02:49:08 +08:00
hmo a3ff5062c5 文档checklist: dev-spec.md标注实现状态
- dev-spec.md: 每节标题加<!-- /🔄/ -->状态标注
- 表格新增 状态 列, 逐条标记实现情况
- mdRender: 解析HTML注释渲染为彩色标签
- scrollTop保存修复文档阅读位置
2026-07-14 02:49:08 +08:00
hmo 48a420f922 修复文档滚动条跳回顶部: fill前保存scrollTop
- fS2/fH fill()前保存内层div的scrollTop
- fill()后用setTimeout恢复scrollTop
- 防止每10秒loadAll循环导致滚动位置重置
2026-07-14 02:49:08 +08:00
hmo 56c47a89cd Markdown渲染 + PRD需求文档(H Tab)
- mdRender(): 支持h1-h6/table/list/code/bold/link/blockquote/hr
- G 规范: dev-spec.md 以渲染后HTML展示
- H 需求: PRD.md 以渲染后HTML展示
- /api/prd: 新增路由读取PRD.md
2026-07-14 02:49:08 +08:00
hmo 71407681dd 修复闪烁: fI内fill后同步appendChild不跨tick
- fill('infra',h)只含Platform+Ejabberd
- 同一async函数内立即createElement+appendChild添加EasyTier/RDP
- onclick通过.onclick赋值而非HTML属性
- 浏览器在JS执行完前不渲染,所有内容同时出现
- Playwright验证: 0 errors
2026-07-14 02:49:08 +08:00
hmo 1eee90c31e 修复EasyTier/RDP闪烁: fI await status重建
- fI fill后立即await fetchEasyTierStatus/fetchRdpStatus
- 消除setTimeout导致的500ms闪烁窗口
- sections在同一个update cycle内完成重建
- Playwright验证: 0 errors
2026-07-14 02:49:08 +08:00
hmo debbd595ed EasyTier+RDP开关按钮 + G规范MD展示
- EasyTier: Turn On/Turn Off按钮 (onclick通过JS赋值,无引号问题)
- RDP: Enable/Disable按钮 (按钮状态与tunnel/rdp状态联动)
- G规范: 用<pre>展示dev-spec.md完整内容
- 使用document.createElement+onclick避免HTML引号转义地狱
- Playwright验证: 0 errors, 所有功能正常
2026-07-14 02:49:08 +08:00
hmo 876a42343b EasyTier+RDP恢复 + G规范Tab + dev-spec更新
- EasyTier VPN: /api/easytier + /api/easytier/toggle + dashboard展示
- RDP远程桌面: /api/rdp + /api/rdp/toggle + dashboard展示
- G规范子Tab: /api/spec路由 + dashboard展示完整dev-spec.md
- dev-spec.md: 新增G节(测试验证规范/弹窗铁律/路径规则)
- 修复JS函数名冲突导致页面白屏
- Playwright验证: 0 errors, 所有Tab正常
2026-07-14 02:49:08 +08:00
hmo 5fb04dd2d5 修复dashboard: JS语法错误导致页面完全空白
- 根因: Python脚本中引号嵌套导致生成无效JS
- 改用Python字符串拼接避免转义问题
- 0 JS errors (Playwright验证)
- 4 agent卡/启停按钮/服务标签/日志面板完整呈现
- 4个Tab: Agents/Kanban/Infrastructure/开发原则(A-F)
2026-07-14 02:49:08 +08:00
hmo d97a64ce2b 恢复正式版agent控制面板 + 开发原则父Tab
- Agents Tab: 完整agent卡/启停按钮/服务标签/日志查看
- Kanban Tab: 看板任务
- Infrastructure Tab: 平台服务+Ejabberd
- 开发原则 Tab: A-F子Tab(A源码/B服务/C监控/D修复/E成长/F期望)
- 排在后位,不喧宾夺主
2026-07-14 02:49:08 +08:00
hmo 3238ba54fb 自检修复: reflog读git + threaded=True + TODO误判修正
- Git: 从.git/logs/HEAD读取提交历史,不依赖git二进制
- Flask: threaded=True防止单线程阻塞
- TODO: 'already running'→completed而非failed
- E元成长: 改用reflog行数计算commit数
2026-07-14 02:49:08 +08:00
hmo f284ddfd3f A-F父Tab + E元成长API + 界面重排
- 结构: Overview / Kanban / Infra / 开发原则(A-F子Tab)
- E: 新增/api/metagrowth路由 + dashboard展示
- 排序: 开发原则排在最后
- 前端: 父Tab切换子Tab, localStorage记忆
2026-07-14 02:49:08 +08:00
hmo 8f5250b900 Tab布局 + 中文locale修复 + false positive修复
- Tab导航: A-F各一个Tab,body自动保存当前Tab
- 中文locale: schtasks输出'就绪'正确识别为scheduled
- 假阳性修复: watchdog检查兼容中文系统
- HTML精简至4KB内联,所有API 200
2026-07-14 02:49:07 +08:00
hmo 69fa67e24f F可视化: dashboard 完整实现 A-F 六原则呈现 + 弹窗修复
- A: git log + dirty status
- B: 服务架构矩阵 (/health + watchdog覆盖 + 拓扑依赖)
- C: Tier1/Tier2 监控结果 + 定时任务状态
- D: TODO执行记录 + escalation日志
- F: 期望状态 vs 实际状态合规矩阵
- Kanban: dashboard内嵌版块
- 弹窗修复: 计划任务改用pythonw.exe + subprocess加CREATE_NO_WINDOW
- 修复ast_grep_replace导致的
2026-07-14 02:49:07 +08:00
hmo 28ae15d49e Phase 1-2: 监控体系全面就绪
- 多进程看门狗: xmpp_watchdog.py (守护 bot + article_processor)
- Tier 1 快速健康检查: agents_health_check.py (5min)
- Tier 2 全面健康检查: agents_daily_health.py (每日08:00)
- TODO 自修复执行器: self_todo_executor.py (10min)
- 共享服务注册表: service_registry.py
- xmpp_agent_core: /health 免认证 + /send 端点
- Dashboard: SSH检测修复 + kanban版块 + 路径跨平台兼容
- 修复kanban-api-reference.md误导内容
- 修复R02: frp隧道heartbeat保活
2026-07-14 02:49:07 +08:00
hmoandSisyphus d72c1a907c chore: add Windows startup batch script, update service docs
- Replace start.ps1 with start.bat (avoids false-positive trojan warnings from Defender)
- Mark wechat_agent.py as stopped in README.md, add article_processor doc
- Keep start.ps1 deletion tracked

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-25 01:24:47 +08:00
hmoandSisyphus d406068c89 fix(easytier): add --no-listener flag to prevent port conflicts
Without --no-listener, EasyTier opens a listener on the TUN/TAP interface which can conflict with other EasyTier instances on the same network.

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-25 01:24:47 +08:00
hmoandSisyphus c6795bcb46 fix: decode HTML entities in wechat article URL from XML
WeChat XML uses &amp; to encode & in forwarded article URLs. Without html.unescape(), chksm and other query params were passed encoded to WeChat servers, causing signature mismatch and captcha block.

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-25 01:23:21 +08:00
hmo 4cf125231e docs: merge EasyTier into AgentsMeeting + cleanup hosts approach 2026-06-23 03:53:04 +08:00
hmo 5a5cc1b45d feat: kanban session routing for xxm + xiaoguo 2026-06-22 11:39:27 +08:00