遥测与可观测性

A3S Code 通过事件、追踪、验证报告和结果元数据提供运行证据。

结果元数据

Rust
Node.js
Python
Go
Rust
let result = session.send("Run release checks", None).await?;
println!("{}", result.usage.prompt_tokens);
println!("{}", result.usage.completion_tokens);
println!("{}", result.usage.total_tokens);
println!("{}", result.tool_calls_count);
println!("{:?}", result.verification_summary().status);
println!("{}", result.verification_summary_text());

追踪与验证

Rust
Node.js
Python
Go
Rust
let trace = session.trace_events();
let reports = session.verification_reports();
let summary = session.verification_summary();
let text = session.verification_summary_text();

Go 方法需要跨越原生桥接边界,因此会返回 error;Rust、Node.js 与 Python 的 这些进程内观察读取器是同步接口。

流式事件

流式输出返回带版本号的 AgentEvent 信封。version、type、payload 和可选 的 metadata 是稳定且无损的字段;文本、工具名、工具输出、错误、令牌总数和 验证摘要则是便捷投影。未来新增的未知 type 及其载荷仍会完整提供给宿主。

OpenTelemetry 导出

Rust 宿主启用 a3s-code-core 的 telemetry Cargo 特性(已包含在 server 与 full 组合中)后,可以通过 OTLP 导出 span。导出器位于 core/src/telemetry_otel.rs:

Rust
use a3s_code_core::telemetry_otel::TelemetryConfig;
let guard = TelemetryConfig::new("http://localhost:4317")
.with_service_name("my-agent")
.init()?;
// ... run sessions ...
guard.shutdown();

默认传输为 gRPC;with_otlp_http() 切换为 OTLP/HTTP。导出有时间上限,不可达的 收集器不会拖住编码回合或进程退出。Node.js、Python 与 Go 的 SDK crate 都没有声明 telemetry 特性,因此任何已发布的包都不包含该导出器;OTLP 导出仅供 Rust 嵌入方使用。 sdkCapabilities() 返回的 opentelemetry 条目是高级、由宿主持有的能力,并说明了 这一 Core 特性要求。

日志

产品遥测应优先使用结构化追踪事件和验证报告,不要解析控制台输出。