Atlas 技術版 > 📊 Mnemosyne Recall 品質監控(每週)
(purpose 尚未填寫 — manifest 為 draft/INFERRED)
mode=LLM state=scheduled enabled=1
schedule=20 7 * * 0
next_run=2026-10-25T07:20:00 last_run=2026-10-18T07:24:07
deliver=telegram model=gpt-5.6-luna provider=openai-codex
script=—
monitor_script=— monitor_url=—
skills=[]
workdir=—
prompt_sha256=c1128c9a5ab17654… chars=1355
skill_files={}
執行 mnemosyne_recall_diagnostics(reset=true) 取得上一個觀測窗的 recall metrics。 (回傳包含 totals、by_tier,以及與 totals 同層的 created_at=本觀測窗起點、snapshot_at=本次讀取時間) ## 第一步:判定 observation window - 若 status=disabled 或沒有 totals → window = UNAVAILABLE。記錄 baseline `YYYY-MM-DD|unavailable|unavailable`,回報 UNAVAILABLE 與建議行動後停止。 - 否則讀出 created_at(window_start)與 snapshot_at(window_end)。 diagnostics 是 process-local in-memory,Gateway 重啟就會歸零 —— 所以 window_start 晚於「上次 baseline 日期 +7 天 −6 小時」即代表本窗沒有涵蓋完整週期。 - window_start 早於該門檻 → **FULL_WINDOW** - window_start 晚於該門檻 → **PARTIAL_WINDOW**(例如 Gateway 中途重啟) ## 第二步:異常判斷(僅 FULL_WINDOW 執行) 1. **fallback rate > 10%**:fallback 調用佔比過高,表示語義搜尋經常找不到結果 2. **total 調用數異常下降**:與上週相比下降 > 50%(若無基準數據,跳過此項並標註「尚無基準」) 3. **任何 tier 的 hit count = 0 但上週 > 0** ## PARTIAL_WINDOW 的處理(重要) - 只回報 observation value(calls、fallback rate)並明示 `window=PARTIAL_WINDOW`。 - 不得與前一週完整數據直接比較,也不得觸發上面任一異常判斷(避免 Gateway 重啟造成假警報)。 ## 第三步:記錄 baseline 把本週結果附加到 ~/.hermes/data/mnemosyne_recall_baseline.txt,格式: `YYYY-MM-DD|total_calls|fallback_rate|window_state` - UNAVAILABLE 時寫 `YYYY-MM-DD|unavailable|unavailable|UNAVAILABLE` - 既有歷史行一律不得改寫(特別是 `2026-09-13|unavailable|unavailable` 必須保留原樣),只附加新行。 ## 第四步:回報 - FULL_WINDOW 且全部指標正常 → 回覆 "[SILENT]" - 否則回覆簡短摘要(window 狀態 + 指標名 + 數值 + 建議行動) - PARTIAL_WINDOW 若沒有其他異常 → 可以回覆 "[SILENT]",但 baseline 仍必須寫入並帶 PARTIAL_WINDOW 標記…
| rule | value | source |
|---|---|---|
| none extracted | ||
| kind | path | name | access |
|---|---|---|---|
| none | |||
Upstream: —
Downstream: —
Transitive downstream (0): —
| type | hard? | from | to | resource | origin | conf | evidence |
|---|---|---|---|---|---|---|---|
| none | |||||||
failure_streak=0
last_error=—
delivery_error=—
change_risk=LOW