【免费下载链接】evlogDigging through logs is not observability. Its hope — wide events, structured errors, TypeScript-first, every runtime.项目地址https://gitcode.com/gh_mirrors/ev/evlog点击查看免费下载evlog 是 TypeScript 优先的宽事件Wide Events日志库而 evlog/eve 集成让基于 eve 构建的 AI Agent 获得真正的可观测性每一轮对话结束时产出一条宽事件token 用量、模型成本、每一次工具调用的耗时与成败全部收敛进同一个 JSON 对象——告别翻日志找上下文。为什么 AI Agent 可观测性要告别翻日志一次 Agent 对话可能触发多次模型调用、若干工具执行、甚至人工审批。用传统方式打散日志你会得到十几条彼此孤立的记录step completed、tool call、approval pending……排查一次退款为何失败得靠人脑把它们重新拼起来。evlog 的思路相反把**一轮 Agent 对话当作一个工作单元**在整个回合内持续累积上下文结束时一次性发出一条信息完整的宽事件。这个概念在官方教程里有完整讲解见 wide-events 文档。对 Agent 场景来说宽事件还额外回答了三个高频问题这轮花了多少钱——token 用量与成本按轮次自动汇总模型调了哪些工具、哪个慢了——每次工具执行都有耗时和成功状态业务发生了什么——工具内部用useLogger()补上的客户、订单、审批字段快速上手evlog/eve 钩子只需一个文件eve 会自动发现agent/hooks/下的钩子文件。接入 evlog 只需要新建一个文件核心逻辑在 defineEvlogHook// agent/hooks/evlog.ts import { defineEvlogHook } from evlog/eve import { createAxiomDrain } from evlog/axiom export default defineEvlogHook({ init: { env: { service: my-agent } }, drain: createAxiomDrain(), })就这么多。之后 eve 的每个流式事件turn.started、step.completed、action.result等都会被钩子自动收集无需中间件——因为 Agent 的工作单元是对话轮次不是 HTTP 请求。想让工具把业务字段写进宽事件在工具执行器里调用 useLogger() 即可它通过 AsyncLocalStorage 自动解析出当前轮次的 logger// agent/tools/lookup_order.ts const log useLogger() log.set({ order: { id: order.id, amount: order.amount } })宽事件长什么样一轮对话一条 JSON对话结束后drain 收到的是一条自包含的事件。以一个正在等待审批的退款请求为例摘自 eve 集成文档{ method: EVE, path: /sessions/sess_abc/turns/turn_0, status: 200, duration: 7.9s, eve: { sessionId: sess_abc, turnId: turn_0, phase: awaiting-approval }, customer: { slug: acme-corp, plan: enterprise }, order: { id: 4821, amount: 890 }, approval: { status: pending, tool: issue_refund }, ai: { model: deepseek/deepseek-v4-flash, calls: 2, inputTokens: 11724, outputTokens: 282, tools: [ { name: lookup_customer, durationMs: 26, success: true }, { name: lookup_order, durationMs: 13, success: true } ] } }注意eve.phase只有异常结束等待审批、被拒绝、取消、失败才会出现正常完成不产生噪音——宽事件依然宽但不啰嗦。Token 用量与工具调用追踪透明在哪ai字段的汇总由 buildAiField 从 eve 的流式事件中逐步累积见 TurnAccumulator 的累计器设计字段你能看到什么ai.inputTokens/ai.outputTokens本轮全部模型调用的 token 汇总ai.costUsd/ai.estimatedCost优先取 eve 上报的真实成本没有时按你配置的单价表估算ai.tools[].durationMs每次工具调用的耗时慢工具一眼定位ai.tools[].success工具成败失败还会带error原因ai.tools[].inputTokens工具结果回灌给模型的 token 增量把成本归因到具体工具eve.authorizations/eve.subagents连接授权、子 Agent 委派的耗时与结果eve.compaction上下文压缩次数以及触发时上下文有多满配合尾采样keep回调你可以只保留值得看的轮次——比如 token 超阈值或工具失败的对话其余按采样率丢弃成本可控。实战示例Clearbill 退款 Agent 的完整链路仓库自带一个客服退款 Agent 演示完整流程是lookup_customer→lookup_order→issue_refund金额超 $100 触发人工审批。三个工具都用useLogger()往当前轮次里写业务字段客户查询工具lookup_customer.ts退款工具含审批门与审计记录issue_refund.ts钩子配置批量落盘 尾采样保留退款/审计轮次agent/hooks/evlog.ts最终财务团队在日志后台拿到的是每轮一个 JSON客户、订单、退款、审计轨迹、token 用量、工具结果一个都不缺。示例项目说明见 examples/eve/README.md。本地跑起来git clone https://gitcode.com/gh_mirrors/ev/evlog cd evlog pnpm install pnpm example eve打开 http://localhost:3000点击示例提示词就能看到宽事件从等待审批到退款完成的全过程。进阶用 requestId 把 Trace 与宽事件双向打通eve 自带 Agent Runs 和 OpenTelemetry 链路追踪但 span 和宽事件默认互不相认。defineEvlogInstrumentation 会在每个模型调用 span 上打上evlog.request_id与evlog.session_id——和宽事件里的requestId是同一个值。于是你可以从 Braintrust、Datadog 或 Agent Runs 里的一条 trace直接跳到对应宽事件再跳回来。示例项目里就只有一行见 agent/instrumentation.tsexport default defineEvlogInstrumentation()另外开启sessionEvent: true后会话结束时还会额外发出一条会话级宽事件emitSessionEvent把整段对话的轮次数、总 token、总成本、用过的工具全部汇总成一行——一次对话一行的账单视角。生产环境最佳实践清单关注点建议隐私message默认omit不记录用户消息原文需要排查时再开preview默认截断 500 字符full前先过一遍 PII 政策终端输出生产设init.pretty: false美化输出只留给本地开发上报延迟用批量或异步 drain如createDrainPipeline包装绝不阻塞对话轮次内存maxSessions默认 256自动淘汰最久未活跃的会话状态版本eve 仍在 beta生产环境请锁定eve与evlog版本相关模块路径速查eve 集成实现packages/evlog/src/eve/index.tseve 集成教程5.use-cases/5.eve.md宽事件核心概念2.learn/2.wide-events.md完整退款 Agent 示例examples/eve/结构化审计日志packages/evlog/src/audit.ts一句话总结让 eve agent 的每一轮对话都留下一条讲清所有事的宽事件token 花了多少、工具跑了多久、审批卡在哪一步——打开日志就知道。赞分享【免费下载链接】evlogDigging through logs is not observability. Its hope — wide events, structured errors, TypeScript-first, every runtime.项目地址https://gitcode.com/gh_mirrors/ev/evlog点击查看免费下载相关推荐ottomator-agents 中的 Pydantic AI 入门实践构建一个带工具调用与 Langfuse 可观测性的对话 Agentottomator agents 中的 Pydantic AI 入门实践构建一个带工具调用与 Langfuse 可观测性的对话 Agent 本文以 ottom示例工程evlog enrichers实战自动为每条事件附加User-Agent、地理位置与trace上下文evlog enrichers实战自动为每条事件附加User Agent、地理位置与trace上下文 evlog 的 enrichers日志增强器 让每条treg Agent Skill 完全指南用一条 Token 把 3000 外部数据与生成式 API 变成 Agent 的可调用工具treg Agent Skill 完全指南用一条 Token 把 3000 外部数据与生成式 API 变成 Agent 的可调用工具 本文以 treg 官方后端API网关MCP 服务dsh-plugin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考