feat(sense): T-G5 Grader 决策组合(特征门×概率×conformal + /v1/route + 三态 mode)
- features.py:gate() 纯函数——轮数/字符估算/意图黑名单/仓库级信号/长度门 -> t1_hard_ok(任一硬门不过即 False,D-G1) - grader.py:Grader.decide §8 时序(embed 降级检查 -> 特征门 -> LinearHead 概率 -> conformal 阈值:p1>=τ1 且 t1_hard_ok->T1,p3>=τ3 或 repo_signals->T3, 其余 T2 默认;collect/shadow 只写观察 executed=现行为,live 决策即执行; 全模式 observer.log);工件/阈值缓存 + invalidate;D-G4 规则门退化 - routes:/v1/route 契约(D-G6 不落 query 原文) - fix(observer):embedding list -> BLOB 转换(修 sqlite 绑定) - 测试 +6(门矩阵/shadow 不改流/live 决策/降级/保守阈值/写观察),全量 405 passed
This commit is contained in:
@@ -97,6 +97,10 @@ class Observer:
|
||||
|
||||
def _write_rows(self, rows: List[Dict[str, Any]]) -> None:
|
||||
for row in rows:
|
||||
emb = row.get("embedding")
|
||||
if isinstance(emb, list):
|
||||
# 量化值以 0..255 无符号表示 -> BLOB
|
||||
row["embedding"] = bytes(bytearray(x & 0xFF for x in emb))
|
||||
self.store.insert_observation(row)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user