taolib.symphony.agent.events#

AppServer 事件解析与令牌核算。

将 Codex app-server 输出的原始 JSON 事件解析为结构化对象, 并跟踪增量令牌使用情况。

Classes#

AppServerEvent

AppServer 事件。

TurnResult

轮次执行结果。

TokenAccounting

令牌使用追踪器。

Functions#

parse_event(→ AppServerEvent)

将原始 JSON 字典解析为 AppServerEvent。

Module Contents#

class taolib.symphony.agent.events.AppServerEvent#

AppServer 事件。

type: str#

事件类型(如 message, tool_call, turn_complete, error)。

data: dict#

事件附加数据。

raw: dict#

原始 JSON 字典。

class taolib.symphony.agent.events.TurnResult#

轮次执行结果。

success: bool#

轮次是否成功完成。

token_usage: int = 0#

本轮使用的令牌数。

error: str | None = None#

错误信息(如果轮次失败)。

taolib.symphony.agent.events.parse_event(raw: dict) AppServerEvent#

将原始 JSON 字典解析为 AppServerEvent。

参数:

raw -- 从 app-server 接收的原始 JSON 行。

返回:

结构化的事件对象。

class taolib.symphony.agent.events.TokenAccounting#

令牌使用追踪器。

增量跟踪每个轮次和会话的令牌消耗, 支持按轮次和总量查询。

_per_turn: list[int] = []#
_total: int = 0#
property total: int#

累计使用的令牌总数。

property turns: int#

已记录的轮次数。

record(tokens: int) None#

记录一个轮次的令牌使用。

参数:

tokens -- 本轮使用的令牌数。

get_turn_usage(turn_index: int) int#

获取指定轮次的令牌使用量。

参数:

turn_index -- 轮次索引(从 0 开始)。

返回:

令牌使用量,索引越界返回 0。

reset() None#

重置所有计数。