Files
Agent-System/.doc/ops/short-term/2026-09-26-jevdecide-soak.md
T

4.4 KiB
Raw Blame History

jevdecide-shadow 浸泡收口(short-term)

  • task_id: jevdecide-soak-2026-09-26
  • owner: pi
  • status: in_progress
  • 授权来源: 用户会话指令「把 FEATURE-MATRIX 中的 dialogue-ctx-injection、jevdecide-shadow、chat-semantic-replace 完成;严格按规范」
  • write_scope: internal/coordinator, internal/jevdecide, .doc
  • mutex: jevdecide
  • base_dev_sha: c373d6fbc0
  • capabilities: docs:publish, docs:approve, env:dev
  • policy_revision: AGENTS 2026-09 / agent-worktree-workflow r1 / validation-contract 2026-09-21
  • review_state: pending
  • integration_state: pending
  • deployment: pending(dev runtime assist 已配置)
  • cleanup: pending
  • remote_sync: not_requested

一、当前进度分析

已具备(dev 已合入 + local_dev 已验证):

  • internal/jevdecide client/circuit/flags/metrics + coordinator resolveRealtimeQuery/shadowProfile 接线;assist 模式规则漏检加成经 20 轮对话验收(B 组 10/10 决策加成,C 组 0 误伤)。
  • 本机 jev-service :8767(Qwen3-4B jev-clone)健康、decide 可用。

未满足(FEATURE-MATRIX 关闭条件):真实轮浸泡 ≥200 + 体验层检索空结果收敛(intent/risk 另立,不在本任务)。

环境事实(本轮核对):

  • no-docker dev runtime(单二进制)此前未接 jev(根 .env 无 JEV_* → mode=off);本轮已写入 JEV_DECIDE_MODE=assist、JEV_BASE_URL=http://127.0.0.1:8767、JEV_API_KEY(复用 configs/.env.dev 值),重启后以 jevdecide wired mode=assist 为准。
  • 2026-09-24 assist 报告的 B 组体验弱样例(B1/B2/B5/B10 回复为纯项目话术)发生在 PI spawn 全挂的窗口(后经 dialogue-ctx 收口修复 PI_AGENT_BIN/PI_AGENT_EXTENSION);本轮浸泡在真实 PI 链路修复后重测,判定以新数据为准。

二、方案

2.1 浸泡设计

  • 语料 20 条/轮 × ≥10 轮 ≥200 真实轮:A×4(规则命中基线)/ B×10(规则漏检、jev 候选)/ C×6(业务防误伤);轮间做城市/日期/措辞变体避免缓存。
  • 每轮真实 /api/v1/chat(真实 PI Runner + tavily 检索),逐轮落盘 checkpoint,可断点续跑。
  • 决策层指标(app 日志 jevdecide realtime shadow 行):agree / disagree / assist_hit(rule=false ∧ jev=true)/ jev_fail;A 组不回归、C 组零错误加成。
  • 体验层指标(B 组回复文本分类):
    • realtime_ok:含可核验实时事实(数值+单位/汇率/气温等);
    • unavailable_ok:明确声明无法获取实时数据(不编造);
    • fallback_gap:两者皆无(纯项目话术)——即「检索空结果」体验缺口。
  • 收敛判定:干预后 B 组 realtime_ok+unavailable_ok ≥ 90% 且无编造数值(fail-closed 方向)。

2.2 体验层收敛干预(按基线数据决定)

基线轮后若 fallback_gap > 10%:在 internal/coordinator/dialogue_llm.go 增加确定性兜底——assist 打开检索且 RealtimeUnavailable 时,若回复既无实时事实也无无法获取声明,追加确定性提示行(不编造数值,fail-closed);单测覆盖。若基线已收敛则不加代码,仅记录证据。

2.3 交付

浸泡证据(逐轮 JSON + 汇总)→ 测试报告 → 矩阵行更新(关闭条件满足)→ 收口清理。

三、计划

  1. 分析(§一)
  2. dev runtime 开 assist 并核验 wired 日志(jevdecide wired mode=assist)
  3. 基线轮(20 轮)+ 体验层判定(全量收敛,无需干预代码)
  4. (按需)确定性兜底——预注册阈值 ≥90%,实测 94%,未实施
  5. 浸泡 ≥200 轮(10×20,含基线,checkpoint 断点续跑)
  6. 汇总指标 + 测试报告 + 矩阵行更新
  7. 任务收口 + worktree 清理

四、结果登记

  • review_state: done(无代码变更;浸泡证据 13 条人工复核)
  • integration_state: docs-only(报告与矩阵)
  • deployment: dev_runtime_assist_on(本机根 .env assist;configs/.env.dev 维持;compose 默认 off 不变)
  • 验证结论: 关闭条件满足,见 浸泡报告——200 轮 / B 组 handled 94% / 零误伤 / 零 jev 失败
  • cleanup: 本任务 worktree 按门禁清理
  • remote_sync: not_requested(本地 dev 前进,未 push)