AI与Agent · 2026-07-05

Agent任务日志应该记录哪些字段

Agent 任务日志不是聊天记录,而是可追溯的执行账本:身份、阶段、工具、产物、错误、人审、成本和安全边界都要能查到。

团队开始使用 Agent 之后,很快会遇到一个新问题:它做事很快,但做完之后,别人不一定知道它到底做了什么。一个 Agent 可能查了网页、读了文件、调用了工具、生成了图片、写了 JSON、改了队列、跑了发布 dry-run、写回知识库。最后它说“已完成”,团队却想问:哪一步完成了?证据在哪?失败过没有?谁批准发布?下次怎么复现?

这就是任务日志的价值。Agent 任务日志不是聊天记录,也不是把终端输出原样保存。它应该是一份可追溯的执行账本:记录任务身份、阶段状态、工具调用、重要产物、证据来源、错误恢复、人审结果和下一步。日志写得好,团队就能复盘、排障、审计、交接和改进工作流;日志写得差,Agent 做得越多,团队越难管理。

很多团队把日志当成“出了问题才需要的东西”。但对 Agent 来说,日志应该从第一天就设计。因为 Agent 常常会跨工具、跨文件、跨服务、跨时间执行任务。没有统一字段,后续追踪会很麻烦。

这篇文章给出一份面向团队管理者的 Agent 任务日志字段模板。它不是某个框架的官方标准,而是一组可以落地的记录方法。

Agent任务日志表图

先分清日志、追踪和指标

Agent 可观测性里,经常会混用三个词:日志、追踪、指标。它们相关,但用途不同。

日志记录事件。比如“开始生成图片”“dry-run 通过”“Personal OS 写回失败”“CSV 状态已更新”。它回答的是发生了什么。

追踪连接事件。OpenAI Agents SDK 的 Tracing 文档说明,SDK 内置 tracing,会收集 agent run 中的 LLM generations、tool calls、handoffs、guardrails 和自定义事件,帮助调试、可视化和监控工作流。也就是说,追踪不只看单条日志,而是把一次任务里的步骤串起来。

指标统计趋势。比如每天完成多少任务、平均耗时、失败率、重试次数、图片生成耗时、发布 dry-run 通过率。它回答的是整体运行情况。

OpenTelemetry 把 traces、metrics、logs 都放在可观测性框架里,并通过 Semantic Conventions 提供统一命名思路。对 Agent 团队来说,这提醒我们:字段命名要稳定,不要今天叫 taskId,明天叫 job_id,后天又叫 runName。

一个稳妥的起点是:每个任务有一份任务日志,每个阶段有事件记录,每次外部调用有 trace_id 或 run_id,最后再汇总成指标。

第一组字段:任务身份

任务身份字段让团队知道“这是什么任务”。没有身份,后面的日志都难以关联。

建议记录:

task_id 和业务 ID 要分开。task_id 是执行账本的 ID,article_id、order_id、ticket_id 这类业务 ID 是外部对象的 ID。一个业务对象可能经历多次任务,比如初稿、修订、审发、发布验证。混成一个 ID,后期很难追踪。

第二组字段:阶段和状态

长任务不能只写“完成”或“失败”。它应该有阶段状态。

建议记录:

阶段名称要贴近工作流,而不是贴近代码实现。比如内容生产可以有 context_loaded、sources_collected、draft_written、images_generated、manifest_checked、dry_run_passed、os_writeback_done。团队成员看到这些名字,应该能知道任务推进到哪里。

状态原因很重要。failed 只是结果,status_reason 才说明为什么。比如“图片生成第三张超时”“来源不足,需要补官方文档”“dry-run 被平台规则拦截”。没有原因,状态只是标签。

第三组字段:上下文和输入版本

Agent 的输出很依赖输入。输入变了,结果就会变。任务日志要记录当时用的上下文和输入版本。

建议记录:

这里要注意隐私和安全。日志不应该记录 token、cookie、完整密钥、私人原文或敏感输入。可以记录“从哪个安全来源读取了凭据”“使用了哪个环境变量名”,但不要把值写进日志。

第四组字段:工具调用和外部动作

Agent 的能力来自工具调用。工具调用如果不记录,后续就很难解释结果从哪里来。

建议每次工具调用记录:

input_summary 只写摘要,不写敏感原文。比如“调用 Personal OS context,查询词为 Agent 任务日志 字段”,不要把 token 写进去。side_effect 用来标记这次调用是否改变了外部状态,比如写文件、上传图片、发布草稿、更新任务系统。外部动作要写清楚,因为恢复任务时需要知道哪些步骤已经发生。

W3C Trace Context 规范定义了用于传播分布式追踪上下文的 HTTP 头和值格式,让跨服务请求可以被关联起来。Agent 如果跨多个服务运行,至少要有类似 trace_id、span_id、parent_span_id 的关联字段,方便把一次任务串成事件链。

Agent事件链图

第五组字段:产物和证据

Agent 任务的结果不应该只写“已生成”。要记录产物路径和证据。

建议记录:

对内容生产来说,article.md、article.html、sources.md、image_prompts.json、image_generation_manifest.json、image_contact_sheet.jpg、dry-run 输出、发布 URL 都应该进入日志。对代码任务来说,修改文件、测试输出、构建结果、PR 链接也应该进入日志。

artifact_hash 不一定每次都要有,但重要产物最好有。它能帮助判断文件是否被后续改过。没有 hash,也至少要有路径和更新时间。

第六组字段:错误、恢复和重试

任务日志必须能支持恢复,不只是记录失败。

建议记录:

错误类型要稳定,比如 temporary_network、invalid_input、permission_denied、quality_gate_failed、external_policy_blocked。不要每次写一段自由文本就结束。稳定类型能让团队统计:到底是接口不稳、输入质量差、权限问题多,还是图片质量门禁常失败。

recoverable 是一个实用字段。它告诉系统这次失败是否适合 Agent 继续处理。如果 recoverable=false,就不要自动重试,转入人审或等待外部条件。

第七组字段:人审和授权

Agent 任务日志不只记录机器做了什么,也要记录人在哪里做了判断。

建议记录:

NIST AI Risk Management Framework 强调通过治理、映射、测量和管理来处理 AI 风险。放在 Agent 任务里,治理不是一句口号,而是能看见谁做了什么判断、依据是什么、是否允许进入下一步。

尤其是对外发布、客户资料、财经、健康、法律等内容,人审和授权字段不该省。Agent 可以准备材料,但团队要知道谁承担了发布判断。

审计流程图

第八组字段:成本、用量和性能

团队管理者还需要知道 Agent 消耗了多少资源。

建议记录:

这些字段不只是为了算钱,也能帮助优化流程。比如某类任务总是图片生成耗时很长,团队就可以调整图片策略;某类任务总是重试多,说明输入或工具稳定性要改善;某个 Agent 产物很多但通过率低,说明质量门禁要前移。

第九组字段:安全和保留

日志本身也可能变成风险。如果日志里保存了密钥、私人信息、客户原文、未脱敏数据,问题会比没有日志更严重。

建议记录:

这里的原则很简单:日志要能追踪任务,但不应该泄露任务不该泄露的内容。对外协作时,最好能生成“可分享日志摘要”,只包含任务 ID、阶段、产物路径、验证结果和剩余风险,不包含原始敏感输入。

一条可用的日志记录长什么样

一条简化的 Agent 任务日志可以长这样:

{
  "task_id": "xy-plus-ai-014-production-20260703",
  "business_id": "XY-PLUS-AI-014",
  "title": "Agent任务日志应该记录哪些字段",
  "current_stage": "dry_run_passed",
  "stage_status": "done",
  "owner_agent": "codex",
  "risk_level": "normal",
  "artifacts": [
    "article.md",
    "image_generation_manifest.json",
    "output/publish_dry_run_xy_plus_ai_014.json"
  ],
  "last_error_type": null,
  "human_review_required": true,
  "next_action": "等待审发线检查并正式发布",
  "updated_at": "2026-07-03T15:10:00+08:00"
}

这不是完整 schema,但已经能回答很多问题:它是什么任务,做到哪一步,有哪些产物,是否需要人审,下一步是什么。

一张字段清单

如果只能先建一个最小版本,可以从 20 个字段开始:

这 20 个字段不复杂,但足以让团队从“Agent 做完说一声”升级为“Agent 做事可追溯”。

字段清单图

有些内容不要进日志

日志不是越详细越好。很多团队一开始为了追求可追溯,会把完整输入、完整输出、完整网页内容、完整终端输出都塞进日志。短期看起来资料很全,长期会带来搜索噪音、权限风险和存储压力。

Agent 日志应该尽量记录“足以复盘的摘要”和“能找到证据的路径”,而不是把所有原文复制一遍。比如来源资料可以记录标题、URL、访问时间和摘录路径,不必把整篇网页写进日志;工具调用可以记录输入摘要、输出文件和状态,不必保存完整密钥、请求头或用户私密原文;错误信息可以保留错误类型和可排查片段,不必把包含凭据的环境变量一起保存。

尤其不要记录五类内容:密钥和 token,cookie 和会话凭证,未经脱敏的客户资料,私人聊天或私人笔记全文,包含身份证号、手机号、地址、健康信息等个人数据的原始表格。需要排障时,可以把敏感内容放在受控证据文件或安全系统里,日志只保存引用路径和访问级别。

这条边界很重要。一个好的任务日志应该让团队能追踪 Agent 做了什么,而不是把所有风险集中到日志系统里。可追溯和少暴露并不冲突,重点是记录 ID、摘要、路径、状态和责任人。

字段落地可以分三步

团队不必第一天就把所有字段做成复杂平台。更实际的做法,是分三步落地。

第一步,先建最小执行账本。每个 Agent 任务都记录 task_id、business_id、current_stage、stage_status、artifact_paths、last_error_type、next_action、updated_at。这一步解决“做到哪了”和“下一步是什么”。

第二步,补上证据和恢复字段。把 source_paths、tool_calls、side_effects、retry_count、human_review_required、review_status 加进去。这一步解决“证据在哪”“失败怎么处理”“谁需要看”。

第三步,再接入标准化追踪和指标。把 trace_id、span_id、latency_ms、token 用量、图片生成次数、失败率、阶段耗时做成可查询数据。这一步解决跨服务排障和团队级复盘。

字段从小开始,并不代表管理粗糙。只要命名稳定、路径清楚、敏感信息不乱写,最小日志也能发挥作用。等任务量上来,再把日志、追踪和指标接到同一个可观测性系统里,成本会低很多。

结论:日志是 Agent 团队协作的共同语言

Agent 任务日志不是为了堆数据,而是为了让团队能管理自动化。它让管理者知道进度,让审稿人找到证据,让开发者定位错误,让发布负责人看到授权,让下一个 Agent 接得住任务。

好的日志不会把所有东西都塞进去。它会记录任务身份、阶段状态、工具调用、产物证据、错误恢复、人审授权、资源消耗和安全边界。它也会刻意避开密钥和敏感原文,只留下足够复盘和恢复的信息。

当 Agent 只是偶尔帮忙,日志可以很轻;当 Agent 开始承担内容生产、发布、数据处理或客户流程,日志就变成团队的共同语言。没有这门语言,自动化越多,管理越模糊;有了它,Agent 才能从“会做事”走向“做事可追溯”。