feat: add baseline diagnosis signal store

This commit is contained in:
2026-07-15 12:01:30 -04:00
parent 01f2e7c7b9
commit 6b85fcbe1c
4 changed files with 317 additions and 1 deletions
+45 -1
View File
@@ -7,7 +7,10 @@ SkillStore / PromptStore 为同步(文件读取量小且快),RunLog 为异
from __future__ import annotations
from typing import Any, Protocol, runtime_checkable
from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable
if TYPE_CHECKING:
from core.evolution.types import DiagnosisSignalRow
@runtime_checkable
@@ -104,3 +107,44 @@ class RunLog(Protocol):
轨迹记录字典列表。
"""
...
@runtime_checkable
class DiagnosisSignalStore(Protocol):
"""逐题诊断信号存储端口。
隔离 SQLite 实现细节,app/core 不写裸 SQL。逐题 upsert 落盘、
支持断点续跑(done_question_ids 查已完成集合)。
"""
def upsert(self, row: DiagnosisSignalRow) -> None:
"""写入或覆盖单题诊断信号(按主键幂等)。
参数:
row: 待持久化的诊断信号行。
"""
...
def done_question_ids(self, baseline_run_id: str, diag_fingerprint: str) -> set[str]:
"""查询指定 run 与诊断指纹下已完成的 question_id 集合。
参数:
baseline_run_id: baseline run 标识。
diag_fingerprint: 诊断口径指纹。
返回:
已落盘信号的 question_id 集合,用于断点续跑跳过。
"""
...
def load(self, baseline_run_id: str, diag_fingerprint: str) -> list[DiagnosisSignalRow]:
"""加载指定 run 与诊断指纹下的全部诊断信号行。
参数:
baseline_run_id: baseline run 标识。
diag_fingerprint: 诊断口径指纹。
返回:
还原后的 DiagnosisSignalRow 列表。
"""
...
+38
View File
@@ -300,6 +300,44 @@ class DiagnosisResult:
degraded_question_ids: list[str] = field(default_factory=list)
@dataclass(frozen=True)
class DiagnosisSignalRow:
"""单题诊断信号行,即 baseline run 逐题诊断的持久化单元。
供后续视频级切分选择器消费;由 (question_id, baseline_run_id,
diag_fingerprint) 唯一确定,逐题 upsert 支持断点续跑。
属性:
question_id: 题目唯一标识。
video_id: 对应视频唯一标识。
baseline_run_id: 产出该信号的 baseline run 标识。
diag_fingerprint: 诊断口径指纹,隔离不同诊断配置的信号。
task_type: 题目任务类型。
error_type: 错误类别(extraction/search/reasoning/mixed);
T0/uncertain 行为 None。
cause_category: 病因类别(defect/lapse);不适用为 None。
tier: 诊断分层(T0/T1/T2/uncertain)。
evolution_target: 进化目标(tool/skill/system);
error_type 为 None 时亦为 None。
degraded: 是否为降级信号(judge 解析失败时生成)。
infra: 是否为 INFRA 护栏排除行。
session_id: 关联的会话标识;不适用为 None。
"""
question_id: str
video_id: str
baseline_run_id: str
diag_fingerprint: str
task_type: str
error_type: str | None
cause_category: str | None
tier: str
evolution_target: str | None
degraded: bool
infra: bool
session_id: str | None
# =========================================================================
# 3. 进化类型
# =========================================================================