2026-09-23·by Sijie Wang#node#standmeet#architecture

monitor

支柱四·监控(最薄的支柱)

父级:key-designs

对运行中系统的调用时遥测(telemetry):这是宿主的第二个横切控制器,与 ACL 在时机上不同——ACL 作用于会话建立阶段(通过"未被发现"、capreg 里的 ErrHidden);监控则作用于调用时。在调用路径上内联生效的只有监控和 secret-scan(设计文档点名的 secret-scan 截至 2026-09-07 在 backend/ 下没有运行时实现——只有仓库构建期的 gitleaks 闸门:.gitleaks.tomlinfra/scripts/check-secrets.sh)。范围:系统健康(管理员/系统面板——一个迷你 Zabbix:健康状态/CPU/内存/磁盘/运行时长)+ 活动动态条(activity ticker)。会话记录/仪表盘属于产品功能,不是宿主遥测。

为什么叫"monitor"而不是"observer": 这里没有任何在有意义层面上被观察(observed)的东西——没有行为或状态被监视以用于推断;这只是资源与存活性遥测。(设计文档原文用的是"observer";这里做了名称修正。)

状态(2026-09-07,36789537d):已上线,真实数据。 stats 模块在 backend/internal/stats/(entity/repo/ops/facade);owner 侧 op 为 instance.status / instance.activity / instance.corpus_growth / instance.corpus_graph / instance.inference_usage / instance.jobs / instance.upgrade / instance.upgrade_check(golden:e2e/test/norm-outward-toolset.spec.ts),对管理后台以 GET /api/admin/system + /stats/{growth,graph,activity,jobs} 提供(routes/admin/instance.go)。版本/运行时长/go 运行时和依赖健康 ping 都是真的(cmd/server/port/sysinfo.go,宿主磁盘/内存/负载走 gopsutil);各服务的 CPU/内存自 2026-09-04 起来自每个容器自己的 cgroup v2——不用 docker socket(e3af33a1c,internal/infra/selfstat/selfstat.goapp/src/app/api/selfstat/route.ts),cluster/resources 面板自 2026-09-05 起约每秒实时刷新(4a082689a + 7ca16a50c 静默刷新,app/src/lib/admin/use-system-info.ts)。面板(app/src/components/admin/sections/SystemSection.tsx)包含 Upgrade · Deployment · Resources · Cluster · Sessions · 后台 Jobs · Health · Inference usage(inference_usage 表,stats/repo/inference_usage_repo.go)· Sandbox。"活动动态条"就是语料脉搏火花线(admin/chrome/SystemPulse.tsx,读 /stats/growth)加 instance.activity。e2e:admin-system*.spec.tsinference-usage.spec.tsdashboard-corpus-pulse.spec.ts。目前还没有子页面。

进行中、未上线: 第一方访客流量分析(settings → traffic;时间窗、90 天保留、每个浏览器事件都真的发出)在分支 worktree-traffic-analytics 上——。0993efbc8、c72d15b7d;截至 2026-09-07 有 18 个 commit 未合并。

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →