zizi d6e977a5ac feat(tier2): 图说对账补全核心引擎待补——n≥30 runbook基建+观测成本接线+L3软检(全加性/observe-only)
按 tier2 图说目标做缺口分析(8族逐元素比对),补齐 0号 spike 为过门收窄掉、
但图说明确要求的「核心引擎待补」项。全部加性/observe-only:金标冒烟仍 ACCEPT
(九门9/9+富游戏三门3/3,门一道没放松),真依赖下全链 import+自测+一款真 M3 跑验证通过。

G族(n≥30 runbook 执行基建):
- worker/config.py: build_model_openai 便宜档 client(deepseek 经 new-api OpenAI 兼容路,与 M3 Anthropic 路并存)
- worker/run_record.py: G4 采集字段表 → 可序列化 RunRecord(含退路树分流键 fail_system)
- worker/fallback_tree.py: 退路树五出口判定器(Q1–Q4 数字触发线,★阈值常量区待校准)
- batch_run.py / aggregate.py: model×variant×n 批跑(断点续跑/失败隔离)+ 矩阵聚合三图喂判定器

H族(观测/成本接线,把孤儿件缝进 run 主链):
- observability/newapi_pricing.py: 活读 new-api /api/pricing 倍率(取不到回落显式参数+告警)
- middleware.py: Tier2TraceMiddleware 挂 writer agent 最外层洋葱,ReAct 全事件旁路 ingest
- agent_loop/studio.py 收口: records→cost_for_run 折¥;真跑实测 cost_rmb=1.29(newapi-live)、trace 647事件 dropped=0
- contracts/trace/: additive trace 事件契约位(忠实 trace.py 落 sink 形状)

D族(L3 视觉软检接线,observe-only):
- agent_loop/studio.py: 收口调一次 M3 多模态(真截图+真玩取证→fun映射0-100),只写 verdict.L3,绝不参与 decision
- 真跑实测 L3 score=25 准确指出空心表现层;decision=fix 仍由 L1硬门/熔断裁、与 L3 无关(防 Goodhart 成立)

留后(不投机抢建):工作室 Agent Team/第二装载落库/控制面/Agent Service 等按 plan 决策②⑤ gate 到 B门后;
n≥30 等统计相是「跑」非「写」(批跑底座已就位);A-model 4插件复用待合并对账;4处图说 spec-drift 待 doc 线回写。
详见 tier2/HANDOFF.md「图说对账补全」节。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 02:11:59 +00:00

58 lines
2.0 KiB
Python

"""tier2/gen-worker/observability —— tier2 富游戏自治线 · 观测与成本模块(M6)。
设计源 = docs/architecture/架构/生成引擎/tier2细节图说-H-观测与成本.md(H 族三图,当 spec):
- H3 成本台账:RecordingChatModel(AnthropicChatModel) 抓 per-model token → new-api quota 折¥
→ 落采集字段(cost_rmb / tokens_by_model);权威成本口径=new-api quota,不按公开单价估。
- H1/H2 统一 trace:订阅 AgentScope 官方 Event System(typed 事件流),映射成统一 trace 形状
(公共核心子集 traceId/step/cost/verdict/timestamp + tier2 扩展段),best-effort 不阻塞主生成流程。
三个子模块:
- cost —— RecordingChatModel(Anthropic 路录制变体) + new-api quota 折¥(纯函数,显式传参)。
- newapi_pricing —— new-api /api/pricing + /api/status 计费参数活读取(喂 cost_for_run 的 pricing/qpu/usd_rate;
best-effort 取不到回落显式参数,httpx 惰性 import,6c6g 仍可 import 本模块)。
- trace —— Event System → 统一 trace 形状的 adapter(best-effort)。
tier2 .agent 红线:复用只走显式传参,endpoint/key/model/pricing/quota 全显式传入,禁读 wg1 模块级全局。
"""
from .cost import (
RecordingChatModel,
compute,
cache_hit_tokens,
tokens_by_model_from_records,
cost_for_run,
GroupedRecorder,
)
from .newapi_pricing import (
fetch_pricing,
fetch_status,
fetch_pricing_params,
DEFAULT_QUOTA_PER_UNIT,
DEFAULT_USD_RATE,
)
from .trace import (
TraceAdapter,
TraceStep,
to_trace_step,
)
__all__ = [
# ── 成本(H3)──
"RecordingChatModel",
"compute",
"cache_hit_tokens",
"tokens_by_model_from_records",
"cost_for_run",
"GroupedRecorder",
# ── new-api 计费参数活读取(H3 接线)──
"fetch_pricing",
"fetch_status",
"fetch_pricing_params",
"DEFAULT_QUOTA_PER_UNIT",
"DEFAULT_USD_RATE",
# ── trace(H1/H2)──
"TraceAdapter",
"TraceStep",
"to_trace_step",
]