feat: add baseline diagnosis signal store
This commit is contained in:
@@ -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 列表。
|
||||
"""
|
||||
...
|
||||
|
||||
@@ -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. 进化类型
|
||||
# =========================================================================
|
||||
|
||||
Reference in New Issue
Block a user