🚦判定ロジックの全体像
L1決定的ゲート → 点数の世界 → 閾値 → 3分岐の流れ、切断安全弁の非対称性、本線と観測(shadow)の分離を3つの図で。
「この電話を切るか・人へ通すか・AI が出るか」を Aegis がどう決めているか、判定の流れを3つの図で示す。
数字(0.8 / 0.3 / 0.6 / 0.95)はすべて 2026-07-21 にコードで裏取りした実値。
※設計構造の図解であり、性能値・実運用の保証は書かない(この仕様書の読み方)。
図1: 判定フロー全体
図: 判定フロー全体を2段で示す。第1段は着信時: route-decision が L1 決定的ゲートを上から順に照合(非通知(設定ON時)/blocklist/whitelist/保護フラグ)して block / human / ai の3分岐 — このレーンに点数は存在しない。アナウンス([社名部]→[用件部A〜D])は block のみに乗る。第2段は通話中・ai の通話のみ: Scorer はまず点数を見ないゲート(blocklist→whitelist→営業時間→認証KW・該当したら即確定)を通し、その後に点数の世界へ入る: KWスコア→開幕フロア(0.6 へ底上げ・安全弁 0.8 未満)→カテゴリ(一致なら閾値より先に確定)→閾値判定(block ≥ 0.8 / grey 0.3<s<0.8 は人へ / pass ≤ 0.3 は人へ)。LLM 由来の加点は fraud enum の 0.95 が唯一(安全弁超)。設計構造のみ・2026-07-21 にコードで裏取り。
図2: 安全弁の非対称性
図: 切断安全弁の非対称性。左(狭い道): should_terminate が true になるのは「action が遮断系(form_guided)」AND「spam_score ≥ 0.8(安全弁 AEGIS_TERMINATE_MIN_SCORE)」の2条件が揃った時だけ。唯一の例外は L1 決定的ゲート由来(blocked / after_hours)で、これは無条件切断・安全弁の対象外。右(広い道): 空 transcript(pending)・内部例外(error)・score が 0.8 未満(grey / pass)・転送先の解決失敗 — すべて人へ倒れる(fail-open)。2026-07-21 に verdict_port.py で裏取り。
図3: 本線と観測の分離
図: 本線と観測は構造で分離されている。左: 本線が判定する — 通話 → verdict port(champion = rules)→ action / should_terminate → 応対。右: 確定点(transcript-final)で、AEGIS_VERDICT_MODE=shadow のときだけ(既定は rules = 記録なし)、3つの収集器が記録のみを書く: rules 並走の記録(shadow_* 列)・会話の弧スコア Peak + Accumulation(arc_* 列)・検証層の発動条件観測(verification_* 列)。各収集器は独立の try/except に置かれ、片方の失敗が他方や通話記録本体を巻き添えにしない。×印の矢印がこの図の主役 — 観測から verdict / should_terminate / route-decision への配線は存在しない。2026-07-21 に realtime_session.py / arc_score.py / verification_trigger.py で裏取り。
考え方(なぜこの形か)
- L1 は点数を見ない — 登録済みの番号・時間外のような「明白な相手」に計算は不要。決定的ゲートは速く・無料で・判定理由が一義的に説明できる。点数の世界に入るのは、名簿で決められない相手だけ。
- カスケードの思想 — 簡単なものはルールで即断し、グレーだけを AI(LLM)に回す。お金と時間は「迷う電話」にだけ使う(はじめに 図3・図4と同じ原則)。
- shadow の思想 — 新しい物差し(llm 判定・弧スコア・検証層観測)は、判定に効かせる前にまず観測から始める。real 0 件の今から記録列だけ先に育てておけば、実機初日からデータが溜まる。
- FPR 規律 — 測定値は点推定で断言せず、Wilson 95% 信頼区間の区間表記で書く。数字の正は 判定ロジックと精度 へ。
ℹ️出典コード(正)
図の裏取り元: aegis-platform backend/engine/scorer.py(手順1〜7)・verdict_port.py(should_terminate 導出・fail-open)・
opener_floor.py(開幕フロア 0.6)・backend/api/route_decision.py(3分岐・アナウンス解決)・
backend/api/realtime_session.py(確定点の shadow 記録3本)・backend/services/tools_core.py(fraud enum 0.95)。
確定値を変えるときは先に SSoT。