问题域/PD-11

可观测性

Observability & Cost Tracking

LLM 调用链路追踪、Token 计量、成本分析、结构化日志。没有可观测性就是盲飞。

子问题

1.调用链追踪:每次 LLM 调用的输入/输出/耗时

2.Token 计量:精确统计每次调用的 token 消耗

3.成本分析:按模型、按任务、按用户的成本统计

4.结构化日志:可查询的结构化日志而非纯文本

5.告警机制:成本超限、错误率过高时告警

6.金融绩效指标年化参数适配:美股252/加密365/小时级1638的差异处理

7.持仓全量快照 vs 增量记录:全量快照便于任意时点恢复但文件膨胀快

8.多 Agent 滚动指标对比:expanding window 早期数据不稳定需设最小观测窗口

9.前端缓存版本检测:基于 position 文件 mtime 哈希判断数据是否更新

10.MCP 协议暴露可观测数据:外部 Agent 通过 MCP 工具查询 LLM trace 和日志,实现跨进程调试

11.认知循环六阶段日志分类:turn_input/llm_attempt/repl_result/repl_error/scheduler/feedback 覆盖完整决策链

12.O(turns²) 内存防护:LLM trace 不存储完整 messages 数组,改用 messageCount + estimatedTokens 做诊断

13.WebSocket 新连接历史回放:环形缓冲保留最近 1000 条事件,新客户端连接时一次性发送

14.JSONL 持久化类型白名单:仅 7 种事件类型写入磁盘,高频状态事件(brain_state/conversation_update)不持久化避免 I/O 瓶颈

15.Favicon 动态健康指示:浏览器标签页颜色变化免开 Dashboard 感知系统状态

16.JSONL 路径编码兼容:Agent 工具的路径编码规则变更会静默破坏日志定位

17.终端输出模式分类:从 Agent 终端 buffer 最后几行推断 active/idle/waiting_input

18.PR enrichment 并行容错:6 个 SCM API 调用 Promise.allSettled 部分失败仍可用

19.注意力分级:多 session 并行时按人类行动紧迫度排序,路由稀缺注意力

20.JSONL 大文件尾部读取:100MB+ session 文件只读末尾 128KB 的高效策略

21.PR enrichment 超时保护:外部 API 调用设 3-4s 超时,避免阻塞 Dashboard 渲染

22.Rate limit 自适应缓存:API 限流时自动延长缓存 TTL 从 5 分钟到 60 分钟

23.MCP 服务器三层递进检查:binary 存在→服务注册→认证状态的逐步深入诊断

24.install 闭环验证:安装流程末尾自动 doctor 确认实际效果

25.环境自动检测适配:SSH/Docker/Cloud 指标加权判断 local vs server

26.流式响应 span 生命周期管理:AsyncGenerator 的 span 需在流结束时才能关闭,中间状态不应污染 span 属性

27.OpenAI 兼容 API 提供商识别:从 client.base_url 推断实际提供商(Moonshot/DeepSeek),避免误判为 OpenAI

28.装饰器类型检查:确保装饰器只应用于正确的基类(ChatModelBase/AgentBase),避免误用导致属性提取失败

29.外部 TracerProvider 兼容:检测用户已设置的 TracerProvider(如 FastAPI auto-instrumentation),只添加 span processor 而不覆盖

30.评估门控支付:质量分数低于阈值时零支付,需前后端阈值常量一致

31.任务级成本聚合:内存累积多次调用后一次性写入,保证记录原子性

32.直报成本 vs 本地计算:OpenRouter 等提供商返回实际计费金额,应优先使用

33.task_completions 幂等替换:重试场景下同一 task_id 的记录需原地替换而非追加

34.经济状态恢复:跨 session 从 JSONL 末行恢复余额和累计值

35.环境变量劫持时机:模块导入时覆写 vs 运行时传参的 LangSmith SDK 兼容性

36.确定性 Example ID:SHA-256 seed 方案在指令微调后 ID 变化导致实验关联断裂

37.异步 URL 解析超时:LangSmith API 不可达时 2s 超时对 CLI 启动速度的影响

38.流式 token max 累积:多轮对话中 total_tokens 递增取 max 的正确性依赖 API 行为

39.操作历史自省:Agent 通过 MCP 工具查询自身操作历史,辅助决策

40.工具循环检测:识别 Agent 陷入只读不写的分析死循环并注入引导 prompt

41.对话轮次持久化:按 paper/session 组织完整对话记录,含内存优化事件

42.Token 双轨计数:tiktoken 精确计数为主、字符估算为回退的降级策略

43.日志文件触发热重载循环:日志写入触发 watchfiles 检测导致无限重启

44.多模块重复初始化 logging:多个入口模块各自调用 basicConfig 导致 handler 重复

45.Embedding 尺寸不一致诊断:混合提供商时 embedding 维度不匹配需要详细日志定位

46.Tracer 注入点选择:Factory 层 vs Agent 层 vs 手动注入,各有覆盖范围和灵活性权衡

47.Run Metadata 标签设计:哪些维度值得作为 trace 标签,影响后续筛选和聚合效率

48.Token 预算守卫 vs 精确计费:预算守卫防止成本失控但不提供精确账单,两者互补

49.Tracer 注入点选择的覆盖范围权衡:Factory 层全覆盖但无法区分调用场景,Agent 层可定制但易遗漏

50.短 UUID TraceID 碰撞概率:8 字符 hex 仅 4 字节熵,高并发下需评估碰撞风险

51.LangSmith 云端依赖的离线场景:网络不可达时 Tracer 回调的超时和队列行为

52.迭代 ROI 量化:每轮置信度增益与资源消耗的比值计算与趋势分析

53.自适应参数可观测:动态调整的阈值/预算/迭代上限需要日志记录以便调优

54.效率评级标准化:将迭代过程质量归纳为离散等级便于跨查询对比

55.停止原因分类:区分 5 种停止原因(达标/上限/超支/递减/其他)辅助系统调优

56.受众分层日志:同一事件需要为 LLM 决策、用户展示、开发者调试提供不同粒度的信息

57.工具参数内部键过滤:MCP 工具参数中混杂大量内部状态键需在日志中排除

58.MoviePy 渲染进度桥接:第三方库的 tqdm 进度条需桥接到 MCP progress 回调协议

59.artifact 级日志聚合:多媒体产物(视频片段/配音/字幕)各自需要独立的日志上下文

60.双定价表不一致:costs.py 用 per-token 常量,utils.py 用 per-1K 字典,两者可能对同一模型给出不同估算

61.JSON 全量覆写性能:每次 log_event 都 json.dump 整个文件,高频事件下 I/O 成为瓶颈

62.WebSocket 断连后日志丢失:CustomLogsHandler 的 send_json 在 WebSocket 关闭后静默失败,仅靠 JSON 文件兜底

63.去重决策可解释性:语义去重时输出相似度数值让用户验证合理性

64.transient 进度条与日志共存:进度条自动消失后不影响上方已输出的阶段日志

65.多源子源标签统一:不同数据源的子分类字段名不同需统一映射为人类可读标签

66.多 OTel TracerProvider 共存:LangWatch 独立 provider 避免覆盖 FastAPI 全局 provider

67.嵌套 Step Token 聚合:SDK 只读根 Step 数据,需递归遍历子 Step 汇总 token/cost

68.LangChain 回调桥接:不同追踪后端对 get_langchain_callback 的支持差异(4 个返回 None)

69.遥测 URL 分块:GET 请求 URL 超 2KB 时自动分块发送,二分搜索截断过长字段

70.并发组件 Span 父子关系:DAG 并行执行时 Span 嵌套关系退化为扁平结构

71.缓存命中率统计:区分缓存命中和实际 LLM 调用,计算命中率指导缓存策略优化

72.多 Worker 日志隔离:Gunicorn/Uvicorn 多进程部署时每个 worker 需独立日志配置

73.日志噪声过滤:高频健康检查和静态资源请求淹没有效日志,需路径级过滤

74.进程级内存监控:master 进程启动时报告内存基线,辅助判断内存泄漏

75.线程池卡死自动重启:检测卡死任务数超阈值后创建新 executor 替换旧的,需处理旧 executor 的 graceful shutdown

76.ContextVar 跨线程传播:ThreadPoolExecutor 的 worker 线程不继承主线程 ContextVar,需在 submit 时手动捕获并注入

77.Redis Hash 单字段无 TTL:Redis Hash 不支持为单个 field 设置过期时间,已完成任务需依赖整个 key 的 TTL 或后台清理

78.business_task_id 聚合状态判定:一个业务任务包含多个 item,需定义 any-failed/all-completed/else-in_progress 的聚合规则

79.HTTP 日志发送单例 + atexit:CustomLoggerRequestHandler 用双重检查锁单例 + atexit 注册清理,避免多实例和泄漏

80.定价表维护成本:100+ 模型价格需人工更新,新模型上线后存在滞后

81.全局 vs 角色级成本归属:所有角色共享一个 CostManager,无法按角色拆分成本

82.计费单位不统一:不同提供商用 $/1K 或 $/1M tokens,需在子类中分别处理

83.多加速器 VRAM 探测统一:CUDA/NPU/GCU/MUSA/MLU/SDAA/MPS 七种后端需逐一适配

84.batch ratio 决策可解释性:日志需标注 (from env) 或 (auto, vram=XGB) 帮助运维定位性能差异

85.Worker 空闲日志去重:轮询模式下空闲状态仅首次记录避免日志洪泛

86.SQLite 并发任务拉取:BEGIN IMMEDIATE + rowcount 检查防止多 Worker 重复拉取同一任务

87.Prometheus 文本→结构化 JSON 的实时解析与分类聚合

88.直方图桶按子系统特征定制:LLM 100ms-300s vs HTTP 1ms-60s

89.采集循环与持久化解耦:mpsc channel 异步写入避免阻塞采集

90.环形缓冲 + SQLite 双轨存储:内存保实时性,DB 保重启恢复

91.WebSocket broadcast 实时推送指标更新到 Dashboard

92.运行时健康监控:心跳检测、卡死 session 识别、队列深度追踪

93.工具循环检测:识别 Agent 陷入重复工具调用的死循环并熔断

94.Usage 时间序列:累积 token/cost 随时间变化的趋势数据与降采样

95.nostream tag 语义:流式追踪 vs 完整响应追踪的权衡,流式追踪产生碎片化 span 影响分析

96.评估实验元数据标准化:14 个配置参数的命名和类型需跨实验一致,否则无法筛选对比

97.pairwise 评估的位置偏差:LLM 裁判对第一个答案有系统性偏好,需 randomize_order 消除

98.多维评估分数聚合:11 个独立分数如何加权合并为单一质量指标,权重选择影响模型选型决策

99.图片 token 估算:多模态 Agent 需按 detail 级别和分辨率计算图片 token

100.流式与非流式统计一致性:流式用客户端估算、非流式用 API 返回值,两者存在系统性偏差

101.Observer 无状态 vs 有状态:每次查询创建新实例保证数据新鲜但增加 GC 压力

102.getattr 链式探测跨层统计:通过反射穿透多层封装获取内部统计数据的脆弱性

103.事务七态优先级排序:EXEC > AQUIRE > RELEASING > INIT > COMMIT > FAIL > RELEASED 的展示排序逻辑

104.LangGraph 内部元数据污染:langgraph_step/node/triggers 等字段淹没业务元数据需黑名单过滤

105.OTel resourceAttributes 膨胀:auto-instrumentation 注入大量属性需白名单精简

106.Scope 级 span 路由:同一 OTel SDK 产生的 span 需按 instrumentationScope 分流到不同后端

107.业务元数据标准化:tool/skill/model/query 等 30+ 字段需从多种命名风格中统一提取

108.多实例 Pino worker thread 内存膨胀:pino-pretty transport 每实例 spawn worker,需共享单例

109.AsyncLocalStorage 上下文丢失:setTimeout/EventEmitter/fire-and-forget promise 中 span 上下文断裂

110.LLM 中间件日志与业务日志统一:AI SDK LanguageModelMiddleware 需要桥接到自有日志系统

111.session 目录 symlink 跨平台兼容:latest 符号链接在 Windows 上可能失败需静默降级

112.Agent 状态机展示:10+ Agent 的 pending/in_progress/completed 三态实时转换与分组展示

113.报告完成度双条件判定:内容非空 AND 负责 Agent 已完成,避免中间轮次误判

114.消息去重:graph.stream 重复推送同一消息时通过 message_id 去重

115.Decorator 非侵入式日志:运行时包装方法实现日志持久化,不修改原始类

116.wandb Table 累积行数据的 bug workaround:每步创建新表复制旧数据避免 wandb#2981

117.mlflow 参数扁平化:dataclass/Enum/Path/list 需递归转换为 JSON 可序列化的扁平字典

118.分布式轨迹 dump 异步化:Ray Actor + deque 管理 pending futures 避免阻塞训练

119.per-token timing 的 token 基数选择:gen 阶段用 response tokens,其他阶段用 overall tokens

120.clip_ratio 指标设计:response 长度等于 max_length 的比例反映生成截断严重度

121.JSONL 多版本字段兼容:costUSD vs estimatedCostUsd 优先级与防双重计数

122.PR enrichment 半数失败判定:6 个并行 API 调用中 ≥3 个失败即判定 rate limited

123.终端输出历史污染:buffer 中残留的 Thinking 文本不应覆盖当前底部的权限弹窗

124.反向文件读取 UTF-8 安全:4KB 块边界可能切断多字节字符需累积后统一解码

125.CLI 短生命周期进程的 metrics 推送时机:必须在进程退出前完成,需要 5s 超时保护

126.零开销默认关闭:大多数用户不需要可观测性,不能因 OTel SDK 初始化拖慢命令执行

127.Decorator 透明插桩:业务代码无需感知遥测存在,通过接口包装自动添加 span + metrics

128.双轨记录策略:OTel 适合聚合分析(Grafana),JSONL 适合逐条审计和 git 共享

129.命令级根 Span 设计:在 CLI 框架的 PreRun 中创建根 span,通过 context 传播到所有下游操作

130.Happy Path Error 模式:预期路径失败时记录 WARN 并返回 fallback,减少样板代码

131.Token 经济学展示:向用户展示记忆复用的 token 节省比例,量化知识库价值

132.双端点健康检查:区分进程存活(health)和服务就绪(readiness)两种状态

133.版本不匹配检测:插件更新后检测 Worker 版本滞后并触发自动重启

134.五层配置优先级合并:CLI flags/env/project/user/defaults 的覆盖规则与冲突解决

135.npm 脚本自动化本地可观测性环境:下载/启动/配置/清理的全生命周期管理

136.Hook 扩展可观测性:通过 Stop/UserPromptSubmit 等 Hook 事件注入自定义监控逻辑

137.模型降级事件追踪:flash_fallback 事件记录自动降级链路辅助模型选择优化

138.工具审批决策追踪:accept/reject/modify 三态决策记录分析人机交互模式

139.拦截器快照隔离:调用过程中注册/注销拦截器不影响当前执行的一致性保证

140.content_hash 隐私保护:可观测数据记录 SHA-256 指纹而非原文,平衡追踪需求与数据安全

141.多模态调用追踪:vision/transcribe 等非文本调用的 metadata 采集(image_bytes/audio_bytes)

142.拦截器优先级洋葱模型:before 正序 after 逆序形成对称执行栈

143.Error-Driven Discovery 正则覆盖率:不同提供商的 400 错误格式差异大,需持续补充解析模式

144.Web Worker 跨线程日志归属:主线程和 Worker 的 console.log 混在同一控制台,仅靠前缀区分

145.Token 估算精度与分批效率的权衡:字符数/1.5 保守估算导致多分批,但避免了引入 tiktoken WASM

146.轮询日志降频策略:高频轮询场景下每 N 次才输出一条日志避免控制台洪泛

147.MFU 计算的 GPU 峰值 FLOPS 维护:新 GPU 发布后需手动添加到查找表

148.bpb vs loss 指标选择:tokenizer 无关的评估指标设计使跨实验对比更公平

149.代码膨胀度量:git 跟踪文件的行数/字符/token 统计作为项目健康信号

150.EMA 去偏:训练初期 smooth loss 的低估修正

151.分段报告崩溃安全:各阶段独立 .md 文件避免单文件追加的损坏风险

152.Prometheus 多进程目录残留:用户手动设置 PROMETHEUS_MULTIPROC_DIR 后未清理导致指标不准

153.OTel 环境变量大小写不一致:traceparent vs TRACEPARENT 在不同 OS 和容器运行时行为不同

154.MFU 计算的量化精度:FP8/MXFP4 等量化方法的 weight_byte_size 影响理论带宽估算

155.DP 多引擎 Histogram 聚合:多个 api_server 使用 prometheus mp 时 Histogram 可能不准确

156.KV Cache 驻留指标采样偏差:1% 采样率在低流量场景下样本不足导致统计失真

157.NVTX 与 CUDA Graph 互斥:layerwise NVTX tracing 不兼容 CUDA Graph 模式需运行时检测

158.Langfuse 与 LangGraph 线程池冲突:ThreadingInstrumentor 会干扰 LangGraph 内部线程池,需改用 config.callbacks 手动注入

159.SSE 事件队列日志洪泛:高频事件(writing_chunk/stream)需在入队时过滤 debug 日志避免淹没有效信息

160.任务日志文件生命周期:create_task_logger 创建的 handler 需在 finally 中 remove,否则 handler 泄漏

161.限流指标聚合到成本摘要:CostTracker.get_summary 聚合 RateLimiter 的等待统计,展示限流对延迟的影响

162.Stage 未关闭检测:多层嵌套中异常路径导致 open/close 不配对的诊断与恢复

163.双层 Profiler 统一:DB 层 JSON 树与 Core 层累加 map 两套计时体系的数据合并

164.CPU 时间 vs 墙钟时间:ElapsedCPUTime 排除 I/O 等待后的纯计算耗时对比分析

各项目的解法43 solutions

Signals

横向对比

维度MiroThinkerAI-TraderAIRIAgentOrchestratorAgentAgentScopeClawWorkDeepAgentsDeepCodeDeepTutorDeepWikiDeerFlowFastCodeFireRed-OpenStorylineGPT-ResearcherHorizonLangflowLightRAGMemOSMetaGPTMinerUMoltisOpenClawOpenOpenManusOpenVikingPageIndexReflyStagehandTradingAgentsVRAGagent-orchestratorbeadsclaude-memiflow-climemUmoyin-creatornanochatvLLMvibe-blogzvec
追踪方式LangChain StdOutCallbackHandler + verbose/debug 全局开关DebugService 单例 + WebSocket 实时广播 12 种事件类型解析 Claude Code 原生 JSONL 日志,零侵入式采集Channel.check() 去中心化自检,doctor 聚合遍历装饰器驱动,5 种专用装饰器(@trace_llm/@trace_reply/@trace_toolkit/@trace_format/@trace)EconomicTracker 中心化记账 + TrackedProvider 透明拦截LangSmith SDK 自动追踪 + 环境变量路由到独立项目三层独立追踪:LLM日志(JSONL) + 操作历史(内存列表) + 工作流进度(asyncio广播)Python logging 标准库,无分布式追踪LangSmith LangChainTracer 回调,Model Factory 层自动注入Python logging 分级日志 + iteration_history 列表内存追踪ContextVar 事件 sink + @wrap_tool_call 中间件拦截tiktoken 客户端估算 + cost_callback 回调链累加Rich Progress 四组件进度条 + Emoji 阶段标记,无外部追踪服务BaseTracer ABC + 7 适配器并行广播,asyncio.Queue 异步写入Langfuse drop-in 替换 AsyncOpenAI,环境变量开关零侵入Prometheus Counter/Summary/Histogram/Gauge 四类指标 + JSON 结构化事件日志双轨CostManager 基类 + 多态子类,每次 API 调用后 _update_costs 钩子自动累加loguru + time.time() 手动计时,无分布式追踪metrics crate facade + #[cfg(feature)] 编译期门控JSONL transcript 逐行追加 + 按需扫描聚合LangSmith 原生集成:@traceable 装饰器 + LangChain 自动追踪LLM 单例累积器,每次调用后 update_token_count 累加BaseObserver ABC + 4 具体 Observer 聚合到 ObserverService函数参数逐层传递 logger,无分布式 traceOTel NodeSDK 双轨:BatchSpanProcessor→Tempo + LangfuseSpanProcessor→LangfusePino multistream + AsyncLocalStorage span 上下文自动注入LangChain BaseCallbackHandler 四钩子(llm_start/chat_model_start/llm_end/tool_start)Tracking 类 6 后端广播,log(data,step) 统一接口JSONL 尾部读取 + 终端正则双轨检测OTel SDK + 命令级根 span,所有操作自动成为子 spanLogger 单例 + 14 组件标签 + correlation ID 数据流追踪OpenTelemetry SDK + OTLP/gRPC 导出,支持 Jaeger/GCP/AWS/Azure双层拦截器:LLM 调用层 + Workflow 步骤层,before/after/on_error 三阶段钩子console.log + [ModuleName] 前缀约定,无追踪框架wandb 实时推送 + 终端格式化行 + Markdown 分段报告三层并行OTel SDK + BatchSpanProcessor,OTLP gRPC/HTTP 双协议导出Langfuse CallbackHandler 自动追踪 + ContextVar 任务链路注入栈式 Stage 嵌套 + JSON 树,open/close 手动插桩
数据粒度每轮对话 + 每次交易操作(buy/sell/no_trade)LlmTraceEntry 记录 turnId/model/usage/durationMs/estimatedTokenssession 级聚合(input/output/cache_read/cache_creation 四种 token)渠道级四态(ok/warn/off/error)+ tier 分级Span 级别,每次 LLM/Agent/Tool 调用一个 span逐调用级别,任务级聚合写入,日级余额快照per-message usage_metadata 级别,区分 input/output tokensLLM响应级 + MCP工具调用级 + 工作流阶段级请求级 token 数 + embedding 验证统计每次 LLM 调用 + run metadata 标签(model/thinking/plan_mode)每轮迭代 5 维指标:confidence/gain/lines/ROI/budget%工具调用级:tool_start/tool_progress/tool_end 三事件单次 LLM 调用级,无 token 类型区分(input/output 合并估算)按 source/sub_source 两级分层统计,单条 item 级进度双层 ContextVar:图级 TraceContext + 组件级 ComponentTraceContext请求级 tracing(Langfuse)+ 调用级 token 累加(TokenTracker)user_id × task_type 多维标签,支持按用户按任务类型切分全局累计 prompt/completion tokens + 总费用,无单角色/单任务拆分流水线阶段级(load_image/infer/gc),非单请求级provider × model 双维度,4 种 token 类型分别计数每次 LLM 调用级,含 4 种 token 类型 + cost breakdown函数级:8 个搜索函数逐个追踪,6 个 Agent 节点逐个标记input/completion 两类,区分流式估算和非流式精确值model×provider 双维 token 统计 + 队列四态 + 事务七态trace/span/generation 三层,generation 含 model/usage/prompt 完整数据4 功能维度 × 5 指标(prompt/completion/reasoning/cached/time)全局累加:LLM 调用次数、工具调用次数、input/output tokens 四指标训练步级:20+ RL 指标 + per-token timing + GPU 吞吐session 级 token/cost 累加,含 cache_read/cache_creation 4 种 token存储操作级(20+ 方法)+ AI 调用级 + 命令级observation 级:每个 observation 的 read/discovery tokens8 种日志事件 + 6 种指标,token 按 5 类型分计单次 LLM 调用级:input/output/cached/reasoning tokens + latency_ms + finish_reason + content_hash批次级进度 + 单任务轮询 + 场景级事件三层每步终端行,每 100 步 wandb,eval 时 bpb/CORE请求级 TTFT/ITL/E2E + 迭代级 token 吞吐 + 组件级 FLOPs/带宽4 种 token(input/output/cache_read/cache_write)按 Agent 分组查询级多阶段嵌套(analyze→plan→search),微秒精度
持久化JSONL 双轨:对话日志按日期分文件 + 持仓日志追加式全量快照JSONL 文件(session-*.jsonl)+ 内存环形缓冲 1000 条依赖 Agent 自身 JSONL 文件,无独立存储层Config YAML 持久化配置状态,无运行时指标持久化OTLP/HTTP 导出到后端(Studio/CloudMonitor/Langfuse),不本地持久化三层 JSONL:balance + token_costs + task_completionsATIF-v1.2 JSON trajectory + LangSmith 云端LLM日志JSONL文件持久化,操作历史仅内存,对话日志Markdown持久化RotatingFileHandler 本地文件轮转LangSmith Cloud 托管,本地无持久化日志文件持久化,迭代指标仅内存(随请求生命周期)ArtifactStore JSON 文件 + meta.json 元数据索引JSON 文件全量覆写 + 文本日志文件双轨无持久化,仅终端实时输出,transient=True 完成后清除各适配器自行持久化到对应后端,无本地文件存储Langfuse Cloud/自托管持久化;本地 RotatingFileHandler 10MB×5Prometheus 内存指标 + Redis Hash 任务状态 7 天 TTL + 文件轮转日志Pydantic BaseModel JSON 序列化,Team.serialize 保存到文件stderr 输出 + SQLite 任务状态,无独立日志文件SQLite WAL 单连接 + mpsc 异步写入,7 天保留JSONL 文件,崩溃安全,rolling 日志 24h 清理LangSmith Cloud 托管,无本地持久化loguru 文件日志(时间戳命名),无结构化 JSON 持久化纯内存累加,无持久化(依赖外部落盘)Langfuse Cloud + OTLP→Tempo,进程内 Map 管理活跃对象6 文件分流:1 JSONL + 5 分类 pretty logDecorator 包装追加写入 message_tool.log + 报告段落独立 MD 文件 + 最终状态 JSON委托后端持久化(wandb cloud/mlflow/tensorboard 本地)JSONL 文件(Claude Code 原生)+ key=value 扁平 metadata 文件双轨:OTel 推送到 VictoriaMetrics + JSONL 本地审计按日期轮转文件日志(appendFileSync),~/.claude-mem/logs/OTLP 远程 + 本地文件导出(--telemetry-outfile)双轨无内置持久化,通过 after 拦截器外挂(日志/数据库/第三方追踪)localStorage 持久化模型限制发现缓存wandb 云端 + 本地分段 .md 文件合并为 report.mdPrometheus 多进程 .db 文件 + OTel OTLP 远程导出BlogTaskLog JSON 文件 + Langfuse 云端 + RotatingFileHandlerJSON 字符串序列化,无内置持久化,由调用方决定存储
多提供商无多 LLM 提供商追踪,单一 OpenAI 兼容接口xsai SDK 统一接口,usage 从 API 返回值提取仅适配 Claude Code,其他 Agent 需实现 Agent 接口12 渠道统一 Channel 接口,各自实现 check()支持 8 种提供商识别(OpenAI/Anthropic/Dashscope/Gemini/Ollama/DeepSeek/Moonshot/Bedrock)OpenRouter 直报成本优先,本地价格计算回退仅 LangSmith,无多后端适配include_models白名单过滤,支持Claude/GPT-4/o3-mini7 家 LLM 提供商统一 logger 接口仅 LangSmith,通过环境变量开关OpenAI + Anthropic 双提供商,统一 openai_chat_completion 封装硬编码 OpenAI 定价,未知模型返回默认值 0.00014 种 AI 提供商共享同一进度条,不区分提供商级指标7 个适配器同时激活:LangSmith/LangFuse/LangWatch/ArizePhoenix/Opik/Traceloop/OpenlayerOpenAI/Gemini 各自适配为统一 {prompt_tokens, completion_tokens, total_tokens}单一 Prometheus 后端,CustomLoggerRequestHandler 支持外部日志服务TOKEN_COSTS 覆盖 100+ 模型,15+ 提供商,含 6 套独立定价表不涉及 LLM 多提供商,聚焦 GPU 推理后端ProviderChain failover 链,每个 provider 独立 circuit breaker + 指标UsageLike 归一化 10+ 种字段命名到 5 字段标准结构通过 init_chat_model 统一接口支持 OpenAI/Anthropic/Google/Bedrock 等OpenAI + Azure + Bedrock 三提供商,Bedrock 适配层统一 usage 格式OpenAI/火山引擎/LiteLLM 三 Provider 分桶统计OTLP + Langfuse 双后端独立启用,环境变量驱动LLMClient 抽象层统一 usage 接口,支持 OpenAI/Anthropic/Google/Groq/Cerebras通过 LLM Client 工厂适配 OpenAI/Anthropic/Google/xAI/Ollama/OpenRouter,统一 usage_metadata 提取wandb/mlflow/swanlab/vemlp_wandb/tensorboard/console 6 种仅 Claude Code 插件,但 Agent 接口支持 codex/aider/opencode 扩展仅 Anthropic,但 token 计量从 API 返回值精确提取不涉及(专为 Claude SDK 设计,单提供商)OTel 标准协议,兼容 Jaeger/GCP/AWS X-Ray/Azure AppInsightsbest-effort 提取:_get_attr_or_key 同时支持 SDK 对象和 dict,适配 OpenAI/Doubao/Grok/OpenRouterFeatureRouter 多模型轮询调度 + 多 Key 轮转仅 wandb,DummyWandb 优雅降级可插拔 _REGISTERED_TRACING_BACKENDS + entry_points 插件 StatLoggerOpenAI/Anthropic/智谱/DeepSeek 四提供商 token 提取适配Factory 模式注册 Logger:ConsoleLogger + AppendLogger(glog)
日志格式JSONL 追加式,对话含 signature+messages,持仓含 date+id+action+positionsLlmLogEntry 六种 kind + tags 标签 + 链式查询 DSLJSONL(Claude Code 原生格式),每行一个 JSON 对象loguru 默认静默,--verbose 开启 stderr INFO自定义四级 JSONL(error/warning/info/debug)Python logging 标准模块,无结构化 JSONJSONL(默认) / 纯文本 / Markdown 三种可配置格式asctime-level-name-file:line-message 半结构化Python logging,格式 asctime-name-level-message标准 Python logging 格式,YAML 配置驱动colorlog 彩色控制台 + LOG_FORMAT 含文件名行号logging 文本 + JSONResearchHandler 结构化事件Rich markup 彩色输出 + logging.getLogger 标准日志双轨Pydantic Log 模型 + serialize() 序列化 + 降级 str() fallback结构化 Python logging,console 简洁 + file 详细双格式三层 Handler:console(no_datetime) + file(ConcurrentTimedRotating) + HTTP(custom_logger)loguru 结构化日志,双输出(stderr + 按日期文件),ToolLogItem Pydantic 模型loguru 默认格式,含时间戳/级别/模块/行号tracing crate 结构化日志 + MetricsLayer span→label 传播tslog JSON lines + console pretty/compact/json 三种风格loguru emoji 文本(运行时)+ structlog JSON/Console(结构化)Python logging + TimedRotatingFileHandler 文件轮转自定义 JsonLogger,全量 JSON 数组重写到文件console.log/warn/error 结构化前缀 [Langfuse]/[TraceManager]Pino JSON + 自定义 prettifyEvent 人类可读格式纯文本行日志(timestamp [type] content),非结构化斜杠分层命名空间 critic/score/mean,后端自动分组Claude Code JSONL(type/costUSD/usage/inputTokens 多字段兼容)JSONL append-only,通过 Kind 字段区分事件类型[timestamp] [LEVEL] [COMPONENT] [corrId] message {context} dataOTel 结构化日志,8 种事件类型各有独立属性 schemaPython logging + 拦截器自定义,无内置结构化日志格式[ModuleName] 前缀的 console.log/warn/error终端彩色格式化 + Markdown 分段文件结构化 logging + ColoredFormatter + 可配置 stream/level/prefix结构化 StepLog JSON + Rich 彩色控制台 + 按任务分离文件printf 格式化 + 级别/时间/线程ID/文件:行 结构化前缀
指标采集离线批量计算 14 项金融指标(CR/Sharpe/Sortino/Vol/MDD/Calmar/Win Rate 等)轮询式:5s 间隔读取 JSONL 文件 mtime + lastTypetoken计数(tiktoken精确+字符估算回退),无成本金额计算无独立指标采集,依赖 LangSmith 内置统计每轮迭代即时计算 ROI + 预算使用率,非事后汇总无独立指标采集,成本通过回调链内存累加OTel MeterProvider 单例 + PrometheusMetricReader + 4 种 Metric 类型statistic_data 全局字典追踪 llm_call/llm_cache/embed_call 三指标模块级纯函数 API,TimingSpan 双模式埋点(装饰器+with)仅 token 数和费用,无延迟/错误率等运行时指标time.time() 手动计时,输出 page/s 和 images/s 吞吐量Prometheus 文本导出 + 10s 间隔采集循环解析为结构化 JSON30s 心跳 + webhook/session/queue 全链路 + 诊断事件无独立指标采集,token 数据仅在日志中输出按需查询(@property 懒创建),非定时采集入口记录 total_page_number + total_token,流水线各步记录中间状态OTLPMetricExporter→Prometheus,60s 周期导出FlowLoggerMetrics 累加器,task 完成时聚合 durationMs/llmRequests/tokens/cdpEventsthreading.Lock 保护的内存计数器,被动拉取快照三层纯函数:data_metrics + timing_metrics + throughout_metricsDecorator 模式透明插桩,业务代码无感知Token 经济学(read/discovery/savings%)+ 进程池活跃数4 Counter + 2 Histogram,sessionId 全局关联BatchProcessor 返回 failedBatches/totalBatches 统计loss/bpb/MFU/tok_per_sec/CORE/ETA 六维指标Prometheus Counter/Gauge/Histogram 30+ 指标,1-2-5 序列桶GlobalRateLimiter 暴露 total_waits/wait_seconds 限流指标Core 层 map<string,double> 累加计时 + DB 层 JSON 嵌套树
可视化Matplotlib+Seaborn 4 维滚动指标图,6 Agent + 基准线对比,PDF 输出WebSocket 调试面板 + MCP REPL Server 外部 Agent 接入Next.js Web Dashboard + Kanban 分组 + 动态 Favicon 三色健康CLI emoji 文本报告,无 Dashboard/Web UIAgentScope Studio 原生可视化,展示调用链和 token 统计React Dashboard + Recharts 图表 + WebSocket 实时推送LangSmith Web UI + CLI 内嵌可点击线程链接WebSocket实时进度推送到前端,百分比+消息文本LangSmith Dashboard,支持按 metadata 筛选WebSocket 实时推送到前端 + JSON 文件事后分析Rich SpinnerColumn+BarColumn+MofNCompleteColumn 终端内实时渲染依赖 Langfuse Dashboard,无内置可视化无内置可视化,通过 logger.info 文本输出累计费用三层 API(/metrics + /api/metrics + /api/metrics/history)+ WebSocket 实时推送时间序列降采样 + 日/模型/工具多维聚合,UI 层渲染LangSmith Cloud UI:调用链视图 + 实验对比 + pairwise 排名无内置可视化,依赖日志文件人工分析tabulate ASCII 表格,适合 CLI 和日志无内置可视化,依赖 JSON 文件人工查阅Rich Live Layout 四区域仪表盘(Progress/Messages/Analysis/Footer),4Hz 刷新wandb Table 累积验证样本 + swanlab Text 格式化Next.js Dashboard + AttentionZone 分区 + ActivityDot 脉冲动画Grafana + VictoriaMetrics,推荐本地栈(:8428/:9428/:9429)Context 注入时 Markdown/ANSI 双格式展示经济学数据Jaeger UI(localhost:16686)+ npm run telemetry 一键部署wandb Dashboard 远程可视化 + Markdown 汇总表Langfuse 控制台 trace 视图 + SSE 推送 token_usage 到前端
成本追踪无 token/成本追踪,仅追踪交易层面的现金变化costUSD 优先,fallback Sonnet 4.5 定价估算($3/M in + $15/M out)记录 token 数量,但不计算成本金额(需外部系统根据定价表计算)四通道分离:llm_tokens/search_api/ocr_api/other_apitoken 累加但无定价表,不计算美元成本无成本金额追踪,仅token计数用于上下文管理仅 token 计数,无价格计算Token 预算守卫(SummarizationMiddleware 阈值触发),非精确计费tiktoken 精确 Token 计数 + API 层 prompt/completion/total 三字段research_costs 浮点累加器,支持阶段差值计算无成本追踪,AI 调用不记录 token 消耗Openlayer 适配器递归聚合嵌套 Step 的 promptTokens/completionTokens/cost仅统计 token 数,不计算费用(无价格映射)静态定价表 $/1K tokens,Fireworks 按模型尺寸分级 $/1M tokensinput/output/cache_read/cache_write 四种 token 按 provider×model 计数API cost 优先,回退到 config 价格表估算,记录 missing 计数无内置成本追踪,依赖 LangSmith 平台从 trace 数据提取仅 token 计数,无价格映射和成本计算仅 token 计数,无定价表和金额计算tiktoken 前置计算文档 token 总量,无 LLM 调用级 token 追踪LangChain tokenizer 精确计数 + countToken 回退,四维度分拆无内置成本计算,仅提供 token 计数供外部计费仅统计 token 数量,未计算美元成本costUSD 优先 → estimatedCostUsd 回退 → Sonnet 定价估算三级降级AI token 精确计量(input/output 分离),记录到 metrics + audit字符估算(4 chars/token)计算 read 成本,discovery_tokens 记录原始成本token.usage 按 input/output/thought/cache/tool 五类型分计提供 token 原始数据,成本计算由拦截器实现无显式成本追踪,仅通过 token 估算控制分批Lambda Cloud 定价表 × GPU 数量 × 运行时长估算PRICING 硬编码定价表 × 精确 token 数 → USD 实时估算
Agent 状态追踪position.jsonl 全量快照 + 单调递增 id 保证操作序列完整BrainStateEvent 三态(idle/processing/waiting)+ 队列长度六态模型:active/ready/idle/waiting_input/blocked/exited无 Agent 运行时状态,仅检查工具可用性@trace_reply 记录 Agent 输入输出消息,但不追踪内部状态变化Trajectory steps 记录 agent/user/tool 三类消息SubagentStatus 五态枚举 + stream_writer 6 种事件类型NodeSummary 按 artifact_id 聚合错误/警告_log_event 记录 research step 生命周期事件Redis Hash 四态(waiting/in_progress/completed/failed)+ business_task_id 聚合DagStats 四态(pending/in_progress/done/total)节点级追踪MessageBuffer 维护 12 Agent 的 pending/in_progress/completed 三态状态机6 态 ActivityState:active/ready/idle/waiting_input/blocked/exitedflash_fallback 事件追踪模型降级,tool_call 追踪审批决策SessionTracker 记录 review_score/depth_score/section_quality 趋势
崩溃安全JSONL append-only + fcntl 文件锁保证并行写入原子性进程退出 → exited 状态 → respond 注意力级别 → 通知人类JSONL追加写入天然崩溃安全,操作历史随进程丢失Tracer 附加失败 try/except 降级,不阻断核心流程developer_mode 分级:开发环境输出 traceback,生产环境返回结构化摘要getattr 安全提取 usage 字段,缺失时返回 0 不抛异常CostManager 状态可序列化恢复,Team.deserialize 支持断点续跑JSONL 追加写入 + appendFileSync + 500MB 文件上限loguru 文件 sink 自动 flush,structlog 无额外保护每次写入全量重写文件,进程崩溃不丢失已记录数据appendFileSync 同步写入 + stderr 回退 + happyPathError 优雅降级
业务元数据注入LangChain with_config 注入 tags=[signature, date] 和 run_nametask_id/date/attempt/wall_clock_seconds 关联到每条记录四维标签:model_name/thinking_enabled/is_plan_mode/subagent_enabled每个适配器独立转换 LangFlow 类型到后端兼容格式emit_monitor_event 自动提取 label/user_id/mem_cube_id/trace_id/host/env 等 12 个字段20 个标签键集中定义在 labels 模块,含 provider/model/tool/channel/roleaevaluate metadata 记录 14 个配置参数,实验完全可复现buildToolMetadata 注入 30+ 业务字段(skill/toolset/model/query)Pino mixin 自动注入 eventId(UUIDv7)/sessionId/taskId/stepId/actionIdLLMCallContext 携带 profile/operation/step_id/trace_id/tags 五维元数据
Worker日志隔离并行模式下 per-signature 独立 runtime_env.json 配置文件单进程架构,无Worker隔离需求无隔离,RotatingFileHandler 非进程安全ContextVar 隔离不同 Flow 执行的追踪上下文Gunicorn post_fork 钩子为每个 worker 独立配置 loggerContextFilter 从 ContextVar 注入 trace_id/env/user_type/user_name 到每条日志worker_id 前缀(hostname-device-pid)标识每条日志来源log_{rank} 文件 + rank 参数控制 GPU 内存日志单 Worker 守护进程,子进程 stderr 通过 ProcessRegistry 捕获WorkerBridge [WorkerBridge] 前缀区分主线程/Worker 日志per-engine label + PROMETHEUS_MULTIPROC_DIR 进程级隔离create_task_logger 按 task_id 创建独立 FileHandler
延迟统计无延迟统计,仅通过 verbose 模式输出 LLM 调用过程wall_clock_seconds 端到端任务耗时,含 API 重试等待DialogueLogger记录每轮duration,无单次LLM延迟统计SubagentResult 记录 started_at/completed_at 时间戳Langfuse 自动记录请求延迟,TokenTracker 不追踪延迟Summary 记录 task_duration 和 task_wait_duration,emit_monitor_event 计算 total_duration_ms阶段耗时 round(2) + 吞吐量 round(3),无百分位数HTTP/LLM/TTFT/Tool 四套独立直方图桶,LLM 桶覆盖 100ms-300savg/min/max/p95 + 按日聚合 + 12h 上限过滤无延迟统计,未记录 LLM 调用耗时全局 elapsed time(start_time 到当前),无单 Agent 耗时拆分codetiming.Timer 嵌套上下文管理器,per-token ms 转换tool.call.latency + api.request.latency 双 HistogramTaskPoller 记录 pollCount 和 elapsed,ping 测量 Worker 延迟TTFT/ITL/E2E/Queue/Prefill/Decode/Inference 七维延迟直方图ElapsedTime 单调时钟纳秒级 + ElapsedCPUTime 线程级 CPU 时间
金融绩效评估Sharpe/Sortino/MDD/Calmar/Win Rate 等标准金融指标,支持多市场年化参数
Span 传播EventBus AsyncLocalStorage 自动 traceId/parentId 传播无 OpenTelemetry,通过 JSONL entry type 隐式关联调用链通过 OpenTelemetry Context 自动传播,装饰器内调用 start_as_current_spanLangSmith trace context 通过 RunnableConfig 传播自定义 trace_id 通过 metadata dict 手动传播,非 OTel contextLangSmith 通过环境变量启用,LangChain 自动注入 spanArizePhoenix/Traceloop 用 W3C TraceContext 传播,Opik 用自定义 headerContextVar + ContextThreadPoolExecutor 自动传播 trace_id 到 worker 线程metrics-tracing-context MetricsLayer 自动将 span 字段注入指标标签LangGraph StateGraph 自动传播 trace context 到子图和并行节点OTel context.with 自动 parent-child + parentSpanId 手动嵌套AsyncLocalStorage mixin 自动注入 taskId/stepId/actionId 三层嵌套通过 context 自动传播,根 span 在 CLI 入口创建sessionId 作为公共属性贯穿所有日志和指标os.environ 注入 traceparent/tracestate,子进程自动继承LangGraph config.callbacks 注入,不用 ThreadingInstrumentor 避免线程池冲突trace_id 从 Profiler 经 SQLEngine 传播到 QueryPlanner
渠道分层PostHog 四平台独立 project key(Web/Desktop/Pocket/Docs)tier 0/1/2 按配置复杂度分层展示5 种数据源 × 子源标签两级分类统计Telegram/Discord/MCP 各有独立指标模块,channel 标签区分
版本追踪PostHog register app_version/commit/branch/build_timeGitHub API 轮询 latest release + commit SHA
日志噪声过滤persistEvent 白名单 7 种类型,brain_state 等高频事件不持久化parseJsonlFileTail 只读尾部 128KB,天然过滤历史噪声watch 命令正常时单行输出,异常时详细报告自定义 Filter 类按消息内容过滤exclude 集合过滤内部参数键 + summary_levels 控制输出级别propagate=False 防止 root logger 重复,无路径级过滤空闲状态仅首次记录 debug 日志,避免轮询刷屏EXCLUDED_SCOPES Set O(1) 排除 6 类基础设施 scopeNOISY_CDP_EVENTS 硬编码 Set 过滤 10 种高频 CDP 事件TaskPoller 每 10 次轮询才输出一次进度日志engine_is_idle 时降级为 debug 级别,避免空闲系统日志洪泛werkzeug/fsevents/httpcore/openai 四个高频 logger 静默
MCP 调试接口端口 3001 暴露 4 资源 6 工具,支持 SSE + Streamable HTTPtool_progress 实时进度回调 + MCPMoviePyLogger 渲染进度
卡死检测JSONL mtime 超过 readyThresholdMs(5min) 判定为 idle工具循环检测:连续N次只读不写触发分析循环告警SubagentExecutor 超时机制 + SubagentLimitMiddleware 并发截断无内置卡死检测,依赖 Gunicorn worker timeoutDispatcherMonitor 周期检查 running_tasks 耗时,超阈值自动重启线程池TaskScheduler 定期 reset_stale_tasks 重置超时 processing 任务cron stuck_jobs_cleared_total 指标,2h 阈值自动清理卡死任务120s 阈值 + session 状态机 + 工具循环 4 种检测器基于重复内容检测(duplicate_threshold=2),触发策略变更提示TransactionObserver.get_hanging_transactions 300s 阈值检测JSONL mtime 超 5 分钟阈值降级为 idle,lifecycle-manager 30s 轮询队列 3 分钟空闲超时 abort + 5 分钟孤儿收割器 + 版本不匹配重启TaskPoller 动态超时 + 30 分钟硬上限
注意力路由六级 AttentionLevel:merge > respond > review > pending > working > done6 级 AttentionLevel:merge > respond > review > pending > working > done
进程级监控findClaudeProcess() 通过 tmux pane TTY + ps 匹配进程无进程级监控,仅应用级日志get_vram 多加速器显存探测 + MINERU_VIRTUAL_VRAM_SIZE 覆盖ProcessRegistry Map 追踪 PID + 三层孤儿收割(注册表/系统/空闲)mark_process_dead 清理 + TemporaryDirectory 自动回收
健康端点SSE /api/events 提供实时 snapshot,含 heartbeat 保活MCP get_status 工具 + CLI doctor 命令双入口/health 返回 status+timestamp+service/health 轻量检查 + /status 完整状态 + /cache-stats 缓存统计LangFuse 1s 超时健康检查,Opik auth_check,Traceloop URL 校验dispatcher.stats() 返回 running/inflight/handlers 三项运行时统计/api/v1/health 含 DB 连通性 + 队列统计/metrics 端点 + uptime_seconds gauge + connected_clients gauge/health + /observer/system 双端点,聚合四组件健康SSE /api/events 5s 轮询 + 15s 心跳,无独立 health/readiness 端点双端点:/api/health(存活)+ /api/readiness(就绪,503 直到初始化完成)engine_sleep_state Gauge 三态(awake/weights_offloaded/discard_all)
缓存统计TTLCache 5min 默认 TTL,rate limit 时自适应延长到 60min无缓存统计CacheManager.get_stats() 返回 volume/items,支持 disk 和 Redisstatistic_data 区分 llm_call 和 llm_cache,可计算缓存命中率task 完成事件支持 cacheHit 标记,跳过 LLM 调用时记录 CACHE HITTTLCache 5min 默认 TTL,rate limit 时自适应延长到 60minModelRegistry 三层查找命中层级可从日志推断滑动窗口 1000 请求命中率 + KV 驻留生命周期/空闲/复用间隔
日志级别无日志级别,按 JSONL type 字段分类basic(3字段) / detailed(含token+session) 两级配置环境变量 LOG_LEVEL 动态配置INFO 默认,Tracer 附加用 DEBUG,失败用 WARNINGYAML 配置 4 级:DEBUG/INFO/WARNING/ERROR五级分层:ERROR/WARNING/INFO_LLM/INFO_USER/DEBUGINFO 为主,error 时 exc_info=True 输出堆栈Scraper 层 WARNING 级 logger,Orchestrator 层 Rich Console 直出VERBOSE_DEBUG 环境变量控制详细日志截断(150字)可配置 print_level + logfile_level 双级别,默认 INFO/DEBUGMINERU_LOG_LEVEL 环境变量,INFO/DEBUG 两级分流7 级(silent/fatal/error/warn/info/debug/trace)双 sink 分级:stderr INFO + 文件 DEBUG接口支持 info/error/debug/exception 四级,但级别未写入数据span 四级 DEBUG/DEFAULT/WARNING/ERROR三级 verbose(0=error/1=info/2=debug)映射到 Pino 标准级别DEBUG/INFO/WARN/ERROR/SILENT 五级,配置文件驱动通过 logPrompts 开关控制 prompt 内容记录粒度拦截器异常 logger.exception,业务调用 logger.debugroot=DEBUG + console=INFO + file=DEBUG 分层控制5 级 DEBUG/INFO/WARN/ERROR/FATAL,全局阈值控制
预算守卫无预算守卫,仅事后统计生存状态机四态 + is_bankrupt() 破产检测终止模拟行数预算 + 自适应阈值 + 四级效率评分 + 5 种停止原因分析无预算上限检查,仅被动累加和记录Team.invest 设上限,_check_balance 逐轮检查,NoMoneyException 终止无内置预算守卫,但 per-provider token 计数可外部实现阈值告警tokensLimit + compressionTokenThreshold 触发自动压缩无内置预算守卫,可通过 before 拦截器实现拒绝调用HARD_CAP_TOKENS=60K 硬上限 + outputBudget=maxOutput*0.8warn 告警 + abort 抛 BudgetExceededError 双模式熔断
安全审计config.yaml 权限检查 + 敏感值脱敏 to_dict()LOG_FILE_PATH 路径穿越防护_mask_secrets 递归脱敏 8 类敏感键名auth 模块追踪 login_attempts/success/failures/api_key_authSecurityFilter 10 关键词递归脱敏 + 10000 字符截断 + URL/SQL 脱敏SENSITIVE_KEYS 正则匹配 apikey/secret/token/password 等字段自动脱敏content_hash (SHA-256) 记录请求/响应指纹,不存储原文
Decorator 插桩业务代码无需感知,继承基类并加装饰器即可,零侵入TrackedProvider __getattr__ 代理 + CostCapturing 子类覆写无 Decorator,依赖 LangSmith SDK 自动插桩@log_exception + @log_time 双装饰器非侵入式无,成本追踪通过显式 cost_callback 参数传递trace_component asynccontextmanager 包裹组件执行,非侵入式TimingSpan 继承 ContextDecorator,perf_counter 高精度计时写入 Histogram@traceable 装饰器覆盖所有搜索函数,零侵入@Trace/@Measure 装饰器,运行时 Promise 检测兼容 sync/async@logAction + @logStagehandStep 两个装饰器自动包装方法运行时 Decorator 包装 MessageBuffer 方法,非侵入式日志持久化无 Decorator,采用上下文管理器 _timer 显式包裹WrapStorage 返回 InstrumentedStorage,实现相同接口Hook 系统(Stop/UserPromptSubmit)非侵入式扩展代理模式 __getattr__ 透明包裹,非 Decorator@instrument 装饰器预计算静态属性,sync/async 双模式ScopedLatency RAII 析构自动写入延迟,非 Decorator 模式
流式响应追踪_trace_async_generator_wrapper 包装 AsyncGenerator,流结束时统一提取 usage
OpenAI 兼容 API 识别从 client.base_url 推断提供商,支持 Moonshot/DeepSeek 等兼容 API
Token 计量从 ChatResponse.usage 精确提取 input_tokens/output_tokens,不估算
零开销路径_check_tracing_enabled() 检查开关,未启用时直接返回原函数结果无 LANGSMITH_API_KEY 时完全跳过追踪逻辑标准库零额外依赖,无 SDK 初始化开销is_tracing_enabled() 前置检查 + 延迟导入 LangChainTracerdeactivated 标志 + ready 门控双重检查,未启用时零开销Cargo feature flag 编译期剔除,未启用时零依赖零开销LANGCHAIN_TRACING_V2 环境变量全局开关,关闭后零开销三环境变量全空时 initTracer 直接返回,isMonitoringEnabled 前置检查CONFIG_DIR 为空时装饰器返回原方法,中间件返回 no-op无——StatsCallbackHandler 始终激活,但 Lock 开销极低TrajectoryTracker 环境变量开关,默认关闭环境变量未设置时安装 no-op provider,零内存分配telemetry.enabled 默认 false,不初始化 OTel SDKDummyWandb/DummyReport/print0 三重空操作替身try/except 导入 OTel + _IS_OTEL_AVAILABLE 全局标志,未安装时零开销TRACE_ENABLED/TOKEN_TRACKING_ENABLED/COST_TRACKING_ENABLED 三开关enabled() 短路检查,false 时所有 open/close/add 直接 return 0
GenAI 语义标准化遵循 OpenTelemetry GenAI 规范,使用 gen_ai.* 属性名
第三方平台兼容兼容 Alibaba Cloud CloudMonitor、Arize Phoenix、Langfuse
工具参数记录@trace_toolkit 记录工具名称、参数、返回值
异常追踪_set_span_error_status 记录异常类型和堆栈,span 状态设为 ERROR
批量导出BatchSpanProcessor 批量导出 span,减少网络请求
Lazy importsetup_tracing 时才导入 OTel SDK,避免未启用时的启动开销
外部 TracerProvider 兼容检测已有 TracerProvider,只添加 span processor 而不覆盖
JSONL大文件策略全量读取 readlines(),无尾部优化parseJsonlFileTail 只读末尾 128KB + readLastLine 反向 4KB 块读取
评估门控0.6 分阈值决定支付,前后端 QUALITY_CLIFF 常量一致Harbor reward feedback 写回 LangSmith tracepytest.mark.langsmith 标记 + assert eval_result.grade 门控
经济模拟初始余额 + 收支平衡 + 生存状态驱动 Agent 决策
评估指标设计harbor_reward 单一 score 反馈,支持 dry-run 模式11 个评估函数:6 维质量评分 + relevance/structure/correctness/groundedness/completenessbpb 替代 loss 实现 tokenizer 无关的跨实验对比
元数据清洗无显式清洗,metadata dict 直接透传到 LangSmith_cleanup_inputs 递归脱敏 api_key/password/server_urlFILTERED_METADATA_KEYS 黑名单剥离 LangGraph/LangChain 内部字段sanitizeOptions 递归遍历配置对象,敏感值替换为 ******
优雅关闭SessionLifecycleManager 两阶段清理:过期删除 + 数量限制裁剪TelemetryService.stop() flush 队列 → cancel worker → aclose httpx clientDispatcherMonitor.stop 逐个 shutdown 注册的线程池 + atexit 清理 HTTP loggerSIGINT/SIGTERM 信号处理 + atexit + worker thread joinSIGTERM→sdk.shutdown()→process.exit(0)PersistentPostRun 中 5s 超时 flush,确保 CLI 进程退出前推送完毕atexit 注册 LogUtil::Shutdown,确保 glog 刷盘
定价表维护双定价表:costs.py 硬编码常量 + utils.py 模型映射字典
去重决策透明输出 Jaccard title_sim 和 tag_overlap 数值辅助验证
DAG 统计穿透QueueObserver 通过 getattr 链式探测获取 DAG 执行器统计timing_raw Dict 在训练循环中逐层填充,步骤末尾一次性提交
五层配置优先级CLI flags > env > project > user > defaults 五层合并
过滤拦截LLMCallFilter 五维过滤 + Callable 自定义过滤 + Mapping 快捷构造
错误驱动发现从 API 400 错误正则解析模型限制并持久化缓存
MFU计算30+ GPU 硬编码 BF16 峰值 FLOPS 表 + 滑动窗口 FLOPs 修正
代码膨胀度量git ls-files 统计行数/字符/token/依赖数的 bloat 指标

最佳实践

1.从 API 返回值精确提取 token 数:不要用 len(content)/1.5 估算,误差 30%+

2.区分 4 种 token 类型:input/output/cache_read/cache_write 各有不同计费规则

3.适配多提供商差异:OpenAI 无 cache_write,Anthropic 有完整 4 种,需统一数据结构

4.结构化日志 + JSON 持久化:便于程序化分析成本分布和性能瓶颈

5.子 Agent 日志隔离:多 Agent 系统中每个子 Agent 的日志在独立 session 中

6.持仓日志用全量快照而非增量:每条记录包含完整 positions,任意行可独立恢复状态

7.操作 id 单调递增:保证操作序列可追溯,支持并发场景下的顺序判定

8.fcntl 文件锁保护并行写入:多 Agent 共享 position.jsonl 时防止数据交错

9.滚动指标设最小观测窗口:小时级 min_periods=10,日线 min_periods=3,避免早期极端值

10.WebSocket 广播前检查 readyState:避免向已断开的客户端发送数据导致异常

11.LLM trace 用 content.length/4 粗估 token 数:不依赖 tiktoken 库,适合轻量级场景

12.JSONL 持久化白名单而非黑名单:新增事件类型默认不持久化,避免意外 I/O 膨胀

13.MCP 协议暴露调试接口:比自定义 HTTP API 更标准化,外部 Agent 可直接接入

14.JSONL 尾部读取时跳过截断的第一行:offset > 0 时 slice(firstNewline + 1) 避免 JSON.parse 失败

15.costUSD 和 estimatedCostUsd 互斥累加:同一行只取一个,避免双重计费

16.Rate limit 时延长缓存 TTL 而非重试:GitHub API 限流是小时级重置,频繁重试浪费配额

17.反向读取 Buffer 拼接后再 toString:避免在多字节 UTF-8 字符中间截断导致乱码

18.被动观测优于主动注入:读 Agent 原生日志文件而非注入 SDK,零侵入零耦合

19.注意力分级按 ROI 排序:merge(一键完成)> respond(快速解锁)> review(需调查),人类行动成本递增

20.cost 字段优先级链:costUSD > estimatedCostUsd > token 估算,避免双重计数

21.enrichment 超时隔离:metadata enrichment 3s + PR enrichment 4s 独立超时,互不阻塞

22.check() 返回可操作的错误信息:每个 off/warn 状态附带具体安装命令,用户无需查文档

23.Config 双源加载:YAML 文件优先 + 环境变量回退,适配容器和 CI 场景

24.配置保存时自动 chmod 600:防止含密钥的配置文件被其他用户读取

25.流式响应包装器模式:用 _trace_async_generator_wrapper 包装 AsyncGenerator,在 finally 块中统一提取最后 chunk 的 usage,避免每个 chunk 都创建子 span

26.装饰器 end_on_exit=False:手动控制 span 生命周期,适配流式响应和异步场景

27.Lazy import OTel SDK:在 setup_tracing 时才导入 OpenTelemetry 库,避免未启用追踪时的启动开销

28.None 值过滤:span 属性字典用 {k: v for k, v in attrs.items() if v is not None} 过滤,避免 None 值污染

29.GenAI 语义属性命名:使用 gen_ai.request.model、gen_ai.usage.input_tokens 等标准属性名,而非自定义字段

30.Provider 包装器用 __getattr__ 代理非核心方法,保持接口透明

31.三层 JSONL 分离关注点:日级快照查趋势、任务级明细查归因、完成记录查进度

32.生存状态机将连续余额映射为离散状态,简化 Agent 决策和 UI 展示

33.评估门控阈值在后端和前端用同名常量定义,防止不一致

34.LangSmith 项目 URL 使用模块级缓存避免重复网络请求

35.异步 URL 解析用 asyncio.to_thread + 超时保护不阻塞 TUI 事件循环

36.评估场景用确定性 UUID 关联 instruction 到 LangSmith example 支持跨实验对比

37.Harbor feedback 写入前检查已有 feedback 避免重复

38.LLM 日志用 min_response_length 过滤短回复噪声:避免记录确认类短响应

39.操作历史暴露为 MCP 工具:让 Agent 可以自省操作记录辅助决策

40.进度回调用闭包工厂:捕获 task 引用,避免在工作流函数间传递状态

41.JSONL 追加写入天然崩溃安全:进程中断不丢失已写入的日志行

42.setup_logging 使用 force=True 防止多模块重复添加 handler

43.日志路径用 Path.resolve() + startswith() 防目录穿越

44.开发模式 monkey-patch watchfiles 排除 logs/ 目录避免热重载循环

45.在 Model Factory 层注入 Tracer:一处修改覆盖所有模型调用,零侵入业务代码

46.Tracer 附加用 try/except 降级:追踪是辅助能力,失败不应阻断核心功能

47.子 Agent 日志统一 [trace=xxx] 前缀:便于日志聚合工具按 trace_id 关联父子调用链

48.并发子 Agent 数量硬限制 [2,4]:防止 LLM 生成过多并行调用导致资源耗尽

49.Factory 层注入 Tracer 实现零侵入追踪:所有模型实例自动获得追踪能力,无需业务代码修改

50.双重检查锁保证多 Worker 下配置单例安全:避免 Gunicorn prefork 模式下重复初始化

51.Run Metadata 标签选择 3-5 个高价值维度:过多标签增加存储成本且降低筛选效率

52.每轮迭代即时记录五维指标而非事后汇总:便于实时监控和中途干预

53.用 ROI(confidence_gain/lines_added*1000) 量化每轮投入产出比:将继续/停止决策数据化

54.tiktoken 计数时设 disallowed_special=() 避免非英文文本中特殊 token 字符串导致计数失败

55.max_tokens 参数降级兼容:先尝试 max_tokens,BadRequestError 时回退 max_completion_tokens

56.用 @lru_cache 缓存 logger 实例 + handlers.clear() 保证幂等:避免多模块重复初始化导致日志重复

57.ContextVar 实现请求级事件 sink 隔离:GUI 和 CLI 可注册不同回调互不干扰

58.developer_mode 开关控制错误详情级别:开发环境输出完整 traceback,生产环境返回结构化摘要

59.阶段差值成本归属:记录阶段开始前的累计成本,结束后取差值,实现无侵入的阶段级成本拆分

60.LangSmith 零代码集成:仅通过环境变量启用外部追踪,不在业务代码中引入 Tracer 依赖

61.Rich Progress 用 transient=True 避免完成后进度条残留污染终端历史

62.批量 AI 调用失败时设 score=0 降级而非中断,保证进度条完整推进

63.Emoji 阶段标记比 [INFO] 前缀更利于人眼快速扫描定位当前阶段

64.环境变量驱动零配置激活:设了对应环境变量就启用 Tracer,不设就静默跳过,无需配置文件

65.懒加载 import 防止启动失败:每个 Tracer 的 SDK import 放在工厂函数内,未安装不影响其他 Tracer

66.asyncio.Queue 单 worker 串行化:避免多 Tracer 并发写入的竞态,同时不阻塞 DAG 主路径

67.ready 属性双重门控:__init__ 中检测可用性设 ready,所有方法入口检查 ready 后静默返回

68.独立 TracerProvider 避免全局污染:多 OTel 后端共存时各自创建 provider,不覆盖全局

69.Langfuse 零侵入集成:通过 import 层面替换 AsyncOpenAI 而非手动注入 tracer,业务代码零修改

70.双层统计互补:TokenTracker 统计精确 token(API 层),statistic_data 统计调用计数(缓存层),两者覆盖不同维度

71.流式响应从最后一个 chunk 提取 usage:OpenAI 流式 API 在最终 chunk 携带 usage 信息,需累积到流结束后统计

72.日志路径过滤器:用 logging.Filter 子类过滤 /health 等高频路径的 200 响应,保持日志信噪比

73.指标函数纯函数化:metrics.py 只暴露 task_enqueued/task_dequeued 等纯函数,不依赖任何业务类实例

74.事件日志 fire-and-forget:emit_monitor_event 外层 try-except 吞掉所有异常,可观测性永远不影响主流程

75.TimingSpan 继承 ContextDecorator:同时支持 @decorator 和 with 语句两种埋点方式,覆盖函数级和代码片段级

76.线程池健康检查双级检测:先检查单个任务是否超时,再检查线程池整体活跃度,避免误判

77.用 Pydantic BaseModel 作为 CostManager 基类:天然获得 JSON 序列化、字段验证、类型安全

78.pricing_plan 与 model 分离:同一模型在不同渠道(直连 vs OpenRouter)价格不同,用 pricing_plan 覆盖

79.流式 usage 三源适配:chunk.usage → choice.usage → 本地 tiktoken 计算,逐级降级

80.loguru 配置三步法:remove() 清除默认 → add(stderr, level) 统一入口 → 环境变量控制级别

81.吞吐量优于延迟:批处理场景用 items/s 而非 p99 延迟衡量性能

82.决策日志标注来源:自适应参数选择时明确标注 (from env) 或 (auto, resource=X) 便于排查

83.健康端点含业务指标:/health 不仅返回存活状态,还包含队列统计等业务健康信息

84.用 Cargo feature flag 而非运行时 if 门控指标代码:编译期零开销

85.指标常量集中定义在独立 crate 的 definitions.rs:IDE 可跳转,避免拼写错误

86.直方图桶按子系统定制:LLM 调用和 HTTP 请求的延迟分布差异巨大

87.SQLite 持久化用单连接池 + WAL 模式:低吞吐场景避免锁竞争

88.采集循环通过 mpsc channel 异步写入 DB:不阻塞 10s 采集节奏

89.JSONL 追加写入保证崩溃安全:appendFileSync 写到哪算哪,不丢数据

90.延迟统计设上限阈值(如 12h):过滤跨 session 的异常值避免 p95 失真

91.诊断 session 状态用 TTL+LRU 淘汰:防止长期运行的 daemon 内存泄漏

92.成本估算建立回退链:API 返回值 → 配置价格表 → 记录 missing 计数

93.为所有外部 API 调用统一添加 @traceable 装饰器,而非只追踪 LLM 调用

94.使用 langsmith:nostream tag 避免流式追踪产生碎片化 span,保证完整请求/响应对

95.aevaluate 的 metadata 应记录所有影响结果的配置参数(模型+行为+搜索),确保实验可复现

96.pairwise 对比评估必须 randomize_order=True 消除 LLM 裁判的位置偏差

97.emoji 前缀日志分类:用 ✨🛠️🔧🎯 等 emoji 标记 Agent 思考/选择/执行/完成,大量日志中快速定位

98.Token 限额异常不重试:TokenLimitExceeded 是确定性错误,排除在 retry 列表外避免无意义重试

99.tiktoken fallback 策略:未知模型名时降级到 cl100k_base 编码,避免初始化失败

100.Observer 三方法契约分离:get_status_table/is_healthy/has_errors 各司其职,is_healthy 和 has_errors 语义独立

101.聚合健康用 all() 短路:任一组件不健康即系统不健康,避免复杂加权

102.tabulate 表格化输出:CLI 和日志场景下比 JSON 可读性高,且自带对齐

103.用 LangfuseSpanProcessor.shouldExportSpan 在 SDK 层过滤,比 Langfuse 后端过滤更高效

104.SecurityFilter 默认开启 enableDataMasking,opt-out 比 opt-in 更安全

105.EXCLUDED_SCOPES 用 Set 而非 Array,O(1) 查找避免高频 span 的性能损耗

106.FilteredLangfuseCallbackHandler 继承官方 Handler 只 override 需要过滤的方法,最小化维护成本

107.按功能维度拆分 token 计数器:不同操作的 token 消耗模式不同,全局统计无法指导优化

108.Pino multistream 一写多读:同一事件同时写入 JSONL(机器分析)和 pretty log(人工调试)

109.装饰器零开销关闭:CONFIG_DIR 为空时直接返回原方法引用,无任何运行时包装

110.共享 Pino 实例避免 worker thread 泄漏:静态 sharedPinoLogger 防止高并发场景内存膨胀

111.Pino mixin 自动注入 span 上下文:避免手动传递 context 参数穿透多层调用栈

112.双路回调注入:LLM 构造函数注入追踪 LLM 事件,graph config 注入追踪工具事件,缺一不可

113.被动拉取统计快照:UI 按自身刷新率调用 get_stats(),避免高频事件推送的复杂度

114.Token 显示优雅降级:provider 不返回 usage_metadata 时显示 -- 而非误导性的 0

115.后端延迟导入:在 if 分支内 import,未启用的后端不拖慢启动

116.指标计算与记录分离:纯函数计算指标,Tracking 类只负责广播,便于单元测试

117.斜杠分层命名空间:critic/score/mean 格式让 wandb/tensorboard 自动按前缀分组

118.环境变量控制调试追踪开关:VERL_ENABLE_TRACKER 默认关闭,生产环境零开销

119.注意力路由按 ROI 排序:merge 一键完成最高,respond 快速解锁次之,working 不打扰最低

120.JSONL 尾部读取跳过首行:从文件中间开始读时第一行必然截断,必须丢弃

121.rate limit 时延长缓存而非重试:避免限流雪崩,同时在 UI 标记数据可能过期

122.双轨活跃度检测互补:终端正则快但粗,JSONL 类型推断慢但准,组合使用覆盖更全

123.环境变量驱动开关:`Enabled()` 纯环境变量检查,未设置时 `Init()` 只安装 no-op provider

124.Decorator 模式存储插桩:`WrapStorage()` 检查 `Enabled()` 后返回 decorator 或原始实例,零开销

125.AI token 从 API 返回值提取:`message.Usage.InputTokens`/`OutputTokens` 直接计量,不做估算

126.JSONL 文件权限 0644:audit trail 设计为可通过 git 共享,注释说明有意为之

127.PersistentPostRun 优雅关闭:5s 超时 `telemetry.Shutdown()` 确保 CLI 进程退出前 flush 完毕

128.Logger 懒初始化避免循环依赖:构造时不读配置,首次 log 时才初始化文件路径

129.语义化日志方法(dataIn/dataOut/success/failure/timing)比纯级别更易 grep 过滤

130.appendFileSync 同步写入保证崩溃前日志不丢失,stderr 作为最后回退

131.进程注册表用事件驱动(exit 回调)而非轮询,实时感知子进程退出

132.Token 按 5 种类型独立计数(input/output/thought/cache/tool),不同类型计费规则不同

133.CLI 遥测默认关闭且不初始化 SDK,确保无遥测需求时零性能开销

134.一键部署脚本封装 Jaeger + OTEL Collector 的下载/启动/配置/退出清理全流程

135.sessionId 作为公共属性贯穿所有日志和指标,实现单会话全链路关联

136.文件操作指标记录 MIME 类型和行数,支持按文件类型分析 Agent 行为模式

137.LLM 客户端统一返回 (pure_result, raw_response) 元组:wrapper 从 raw_response 提取 usage 而不侵入业务返回值

138.frozen dataclass 传递观测数据:拦截器收到的 Context/View/Usage 不可篡改,天然线程安全

139.Handle 模式管理拦截器生命周期:register 返回 Handle,dispose() 移除,避免忘记清理导致内存泄漏

140.依赖注入解决 registry↔store 循环引用:模块加载时注入读写函数而非直接 import

141.三层模型限制查找保证未知模型安全运行:缓存→静态表→保守默认值,宁可多分批也不撞限制

142.批次级容错统计而非全有全无:返回 failedBatches/totalBatches 让调用方决定是否接受部分结果

143.用 DummyXxx 鸭子类型替代条件判断:DummyWandb/DummyReport/print0 三重模式消除日志代码中的 if 分支

144.未知 GPU 返回 inf 而非抛异常:MFU 显示 0% 比中断训练更安全

145.wandb log 始终包含 step + total_training_flops 双 x 轴:支持按步数或按计算量对齐不同实验

146.bpb 替代 loss 作为评估指标:消除 vocab size 对损失值的影响,跨 tokenizer 可比

147.训练前 10 步不计入 total_training_time:排除编译预热对 ETA 估算的干扰

148.多进程 Prometheus 用 TemporaryDirectory 自动管理生命周期,atexit 时 mark_process_dead

149.跨进程 trace 传播用 os.environ 注入 + context manager 恢复,比 IPC 简单可靠

150.推理指标按 1-2-5 序列构建直方图桶,覆盖 1 到 max_model_len 的完整范围

151.空闲引擎日志降级为 debug:检测连续两个周期吞吐为零时切换日志级别

152.MFU 用分析式公式计算而非运行时采样:按 Attention/FFN/Unembed 组件分别估算 FLOPs 和带宽

153.每个任务创建独立 Langfuse handler 并设 session_id=task_id:同一任务的所有 Agent trace 自动归组

154.ContextVar 注入 task_id 到日志:异步任务链中自动传播,无需手动传参

155.StepTimer 上下文管理器自动计时:with StepTimer(log, agent, action) 自动记录耗时和异常

156.Rich 彩色输出自动降级:try import Rich,失败则 fallback 到 StreamHandler,不强依赖

157.SSE 事件自动附加 UUID id + timestamp:便于前端去重和排序

158.用 RAII 包装计时采集:ScopedLatency 析构自动写入,防止异常路径遗漏 close

159.栈式路径追踪嵌套关系:vector<Stage> 模拟调用栈,自然表达父子阶段层级

160.双模式激活(debug 标志 OR trace_id):本地调试和分布式追踪共用同一 Profiler