taolib.symphony.observability#

Symphony 可观测性子包。

提供结构化日志配置、令牌核算与运行时快照生成能力。

Submodules#

Classes#

MetricsCollector

令牌和运行时聚合器。

SnapshotGenerator

从 OrchestratorState 生成快照。

Functions#

configure_logging(→ None)

配置 structlog。

Package Contents#

taolib.symphony.observability.configure_logging(level: str = 'info', format: str = 'json', output: str = 'stderr') None#

配置 structlog。

参数:
  • level -- 日志级别,如 "debug"、"info"、"warning"、"error"。

  • format -- 输出格式,"json" 或 "console"。

  • output -- 输出目标,"stderr" 或 "stdout"。

class taolib.symphony.observability.MetricsCollector#

令牌和运行时聚合器。

累计跟踪所有 Codex 会话的令牌消耗和总运行时间。 支持从 Codex 事件流中提取绝对令牌值或增量累加。

_totals: TokenUsage#
_last_reported_input: int = 0#
_last_reported_output: int = 0#
_last_reported_total: int = 0#
_start_time: datetime.datetime#
update_from_event(event: dict[str, Any]) None#

从 Codex 事件更新令牌计数。

支持两种事件格式: 1. 绝对值格式(thread 级 tokenUsage.updated):直接覆盖总计。 2. 增量格式(单次 turn 的 input/output):累加到当前总计。

参数:

event -- Codex 事件字典,可能包含 "tokenUsage" 键。

update_from_thread(thread_data: dict[str, Any]) None#

从线程级别的 tokenUsage 数据更新总计(绝对值)。

适用于 Codex thread 对象中的 tokenUsage 字段。

参数:

thread_data -- 包含 tokenUsage 的线程数据。

property totals: TokenUsage#

当前令牌用量汇总。

property seconds_running: float#

从启动到现在的运行秒数。

to_dict() dict[str, Any]#

导出为字典,包含令牌用量和运行时间。

reset() None#

重置所有计数器和计时器。

class taolib.symphony.observability.SnapshotGenerator#

从 OrchestratorState 生成快照。

SnapshotGenerator 接收编排器的运行时状态,将其投影为 可 JSON 序列化的 SystemSnapshot 对象,供 HTTP API 和仪表板使用。

generate(state: Any) SystemSnapshot#

从编排器状态生成系统快照。

参数:

state -- 编排器运行时状态对象,需要包含以下属性: - running: dict[str, RunningEntry] — 运行中的 worker 映射 - retry_attempts: dict[str, RetryEntry] — 重试队列映射 - completed: set[str] — 已完成的问题 ID 集合 - codex_totals: TokenUsage — 令牌用量汇总 - codex_rate_limits: dict | None — 速率限制 - poll_interval_ms: int — 轮询间隔 - max_concurrent_agents: int — 最大并发数

返回:

SystemSnapshot 实例。

static _format_datetime(value: Any) str | None#

将日期时间值格式化为 ISO 8601 字符串。

static _extract_codex_totals(state: Any) dict[str, Any]#

从编排器状态提取令牌汇总。