feat(ai): redesign the Jev triage state and add JEV_MODE=enforce review rules

第 2 回キャンペーンの突き合わせ結果を反映した。triage の state にコードで計算した
最新値の要約(now: プローブ、1 分 p95、1 分エラー率、再起動数、slo_now_ok)と
直近 5 分のエラーログ抜粋を加え、recovering は slo_now_ok を読むだけにした。
layer の choice を irreversible_needed の noul に置き換え、target_valid は
カタログ action のときだけ尋ねる。JEV_MODE=enforce では review の 2 ルール
(best_action 不一致かつ確信度 0.9 以上、target_valid 0.5 未満)で提案を
escalate に格下げし、判断を res.jev.enforced に記録する。既定は shadow のまま。
This commit is contained in:
seon committed 2026-10-08 17:45:28 +09:00
1 parent 795be156d9
commit 13797e5741
5 files changed
+178 -30

No files matched your search

+12 -11
View File
@@ -36,15 +36,16 @@ type Config struct {
}
type Agent struct {
cfg Config
oai *openai.Client
tools *tools.Runner
harness *harness.Client
store *rag.Store
enums diag.Enums
promptV string
http *http.Client
jev *jev.Client // nil = shadow gates off
cfg Config
oai *openai.Client
tools *tools.Runner
harness *harness.Client
store *rag.Store
enums diag.Enums
promptV string
http *http.Client
jev *jev.Client // nil = shadow gates off
jevEnforce bool // JEV_MODE=enforce: review rules may downgrade a proposal to escalate
}
func New(cfg Config, oai *openai.Client, tr *tools.Runner, hc *harness.Client, store *rag.Store, enums diag.Enums, promptVersion string) *Agent {
@@ -63,8 +64,8 @@ func New(cfg Config, oai *openai.Client, tr *tools.Runner, hc *harness.Client, s
return &Agent{cfg: cfg, oai: oai, tools: tr, harness: hc, store: store, enums: enums, promptV: promptVersion, http: &http.Client{Timeout: 30 * time.Second}}
}
// EnableShadow turns the Jev shadow gates on (JEV_MODE=shadow). Answers are recorded only.
func (a *Agent) EnableShadow(c *jev.Client) { a.jev = c }
// EnableShadow turns the Jev gates on (JEV_MODE=shadow records only; enforce also applies the review rules).
func (a *Agent) EnableShadow(c *jev.Client, enforce bool) { a.jev, a.jevEnforce = c, enforce }
// Request is the harness -> AI VM contract (harness alerts.go diagnose()).
type Request struct {