Skip to content

Hermes HUD v1.0.1

Choose a tag to compare

@Diabloluo Diabloluo released this 23 Aug 10:41
· 81 commits to main since this release
46e3342

[1.0.1] - 2026-08-23

Security

  • 重构脱敏器(hud/redaction.py):模式规则(Bearer / JWT / sk-* / Telegram bot token / 长 hex / base64)先行整体替换,杜绝"先匹配掉 Bearer 字样却把真正 token 留在后面"的截断泄漏;支持 JSON quoted keys("token":"xxx")、URL userinfo、Cookie/Authorization 整行兜底。
  • 日志指纹改为脱敏后生成fingerprint() 内部先 redact_line 再归一化,raw secret 不进入 fingerprint / incident / telemetry / WebSocket / REST。
  • 新增统一隐私工具:sanitize_path()(用户名与中间目录脱敏)、sanitize_cmdline()redact_obj()(dict 敏感键整体替换);应用于 session cwd、skill dir、dashboard cmdline、launchd ProgramArguments、cron deliver/script。
  • hud_alert.py 只从 .env 加载通知所需的 allowlisted 凭据(6 个变量),不再批量注入进程环境。

Correctness

  • 修复 Token/费用口径:辅助调用只统计 session_model_usage.task != ''task='' 是主会话重复记账);API calls 改用数据库 api_call_count 累计,不再每行 +1。
  • 修复告警恢复状态机:恢复通知至少一个渠道成功才置 recovered;全部失败保持 pending_recovery 并下轮重试;push item 直接携带 fingerprint。
  • Cron 事故指纹稳定化:cron:<id>:fail(不再随失败次数产生 fail-3/fail-4/...)。
  • 事故计数语义修正:新增 observationsstate_changes 字段;旧 telemetry.db 自动平滑迁移(无需删库)。
  • idle_seconds 改为基于最近活动(MAX(messages.timestamp)),无可靠数据时为 null。
  • 时区公共化:HUD_TIMEZONE > 系统本地时区 > UTC。

Performance

  • Snapshot 共享缓存 + 单飞锁:REST 与 WebSocket 共用同一份快照(实测 2 客户端 10 分钟:600 请求 → 300 次 collector)。
  • telemetry 落盘限频:每 60 秒最多一次。
  • 自动 retention:maintenance() 每天最多一次(指标 30 天 / 已恢复事故 90 天),meta 表持久化。

Compatibility

  • launchd 检测使用当前 UID(gui/<os.getuid()>);非 macOS 平台 not_applicable
  • 安装/卸载改用官方增量命令 hermes plugins enable/disable hermes-hud
  • 支持范围:Tested: macOS;Linux: expected / community testing welcome;Windows: experimental

Verification

  • pytest: 84 passed, 0 failed(隔离环境,零真实数据/网络)
  • secret leakage: 0(API / telemetry / alerts_state / fingerprint)
  • usage 手工对账:exact match
  • 10 分钟 1 REST + 1 WS 性能测试:PASS(600 请求 → 300 collector,10 telemetry 周期)
  • 3 页面并发:PASS(telemetry 写入不倍增)
  • DB lock errors: 0
  • GitGuardian: 0 findings(无 ignore 豁免)