很多团队做 AI Agent,上线前会问一个问题:

“成功率多少?”

这当然要看。

但只看成功率,很容易误判。

因为 AI Agent 的问题不是简单的成功或失败。

它可能成功调用了工具,但参数是错的。
它可能生成了回复,但用户改了 80%。
它可能完成了任务,但花了太多轮对话。
它可能没有报错,但绕了很远的路。
它可能看起来完成了,实际上需要人工补救。

这些情况如果只看 success = true,都看不出来。

Google 开发者更新提到 Antigravity、Gemini API 等工具正在面向 agentic development 推进,并强调从 prompt 到 production-ready application 的工具链。

Agent 越接近生产环境,可观测性越重要。

你需要知道的不只是:

它有没有完成?

还要知道:

它怎么完成的?
用了几步?
调用了哪些工具?
有没有被用户打断?
有没有高风险动作?
有没有反复修改?
有没有人工接管?
最终结果有没有被采纳?

这就是 Agent Observability。

一个最小的 Agent 观测数据可以这样定义:

from dataclasses import dataclass, field
from typing import Dict, List, Optional
from datetime import datetime

@dataclass
class ToolCallRecord:
    tool_name: str
    ok: bool
    latency_ms: int
    error_code: Optional[str] = None

@dataclass
class AgentRunMetrics:
    run_id: str
    task_type: str
    user_id: str
    started_at: datetime
    finished_at: Optional[datetime]
    success: bool
    total_steps: int
    tool_calls: List[ToolCallRecord] = field(default_factory=list)
    user_revision_count: int = 0
    human_handoff: bool = False
    risk_blocked: bool = False
    final_accepted: bool = False

这里面最容易被忽略的是几个指标。

第一,user_revision_count。

AI 输出后,用户改了多少次?

如果一个 Agent 每次都“成功”,但用户每次都要改五六轮,它就不是真的好用。

def revision_rate(total_runs: int, total_revisions: int) -> float:
    if total_runs == 0:
        return 0.0
    return total_revisions / total_runs

第二,final_accepted。

最终结果有没有被用户采纳?

很多 Agent 输出看起来完整,但用户最后没用。只看生成次数,会误以为系统很活跃;看采纳率,才知道有没有价值。

def acceptance_rate(runs: List[AgentRunMetrics]) -> float:
    if not runs:
        return 0.0
    accepted = sum(1 for run in runs if run.final_accepted)
    return accepted / len(runs)

这里可以举一个真实的指标解读。

某个客服回复 Agent,上线一周后,后台显示成功率 92%。

听起来很好。

但再看细一点:

最终采纳率只有 31%。
用户平均修改 4.8 次。
人工接管率 42%。
高风险话术拦截 18 次。
工具调用错误率只有 3%。

这说明什么?

不是工具接口有问题。

也不是 Agent 完全不能用。

而是它“能生成”,但生成的内容离可直接发送还很远。

这时候不应该继续吹成功率 92%,而应该把它从“自动回复客户”降级成“回复草稿助手”,重点优化话术边界和场景分类。

这才是可观测性的价值。

第三,human_handoff。

哪些任务最后转人工?

转人工不是坏事。恰恰相反,它能告诉你 Agent 边界在哪里。

def handoff_rate(runs: List[AgentRunMetrics]) -> float:
    if not runs:
        return 0.0
    handoffs = sum(1 for run in runs if run.human_handoff)
    return handoffs / len(runs)

第四,tool_error_rate。

工具调用失败率。

def tool_error_rate(runs: List[AgentRunMetrics]) -> Dict[str, float]:
    stats = {}

    for run in runs:
        for call in run.tool_calls:
            if call.tool_name not in stats:
                stats[call.tool_name] = {"total": 0, "error": 0}
            stats[call.tool_name]["total"] += 1
            if not call.ok:
                stats[call.tool_name]["error"] += 1

    return {
        tool: value["error"] / value["total"]
        for tool, value in stats.items()
        if value["total"] > 0
    }

第五,risk_blocked。

高风险动作被拦截了多少次?

这个指标很重要。它不是坏消息,而是安全系统在工作。

def risk_block_rate(runs: List[AgentRunMetrics]) -> float:
    if not runs:
        return 0.0
    blocked = sum(1 for run in runs if run.risk_blocked)
    return blocked / len(runs)

第六,step_count。

Agent 完成一个任务用了几步?

如果一个简单任务总是绕 10 步,说明 planner 或工具选择有问题。

def average_steps(runs: List[AgentRunMetrics]) -> float:
    if not runs:
        return 0.0
    return sum(run.total_steps for run in runs) / len(runs)

这些指标合在一起,才比单纯成功率更接近真实情况。

你可以把 Agent 监控面板分成四类:

效果指标:采纳率、用户修改次数、任务完成率。
效率指标:平均步骤数、平均耗时、工具调用次数。
风险指标:高风险拦截率、人工接管率、敏感动作触发率。
稳定性指标:工具错误率、超时率、JSON 解析失败率。

对应一个简单的聚合函数:

def build_agent_dashboard(runs: List[AgentRunMetrics]) -> Dict:
    return {
        "acceptance_rate": acceptance_rate(runs),
        "handoff_rate": handoff_rate(runs),
        "risk_block_rate": risk_block_rate(runs),
        "average_steps": average_steps(runs),
        "tool_error_rate": tool_error_rate(runs),
    }

上线后你会发现,有些 Agent 并不是不能用,而是需要缩小任务范围。

客服回复 Agent,完整回复采纳率低,但问题分类准确率高。那就不要让它直接写最终回复,先让它做分类。

代码 Agent,自动修改成功率一般,但解释旧代码很稳定。那就先放在代码理解环节。

资料总结 Agent,长报告容易漏细节,但短资料摘要效果很好。那就限制输入长度和任务类型。

前期做多模型测试时,可以用 gpt43.com跑同一组任务,比较不同模型在采纳率、修改次数、JSON 解析成功率、工具调用错误率上的差异。这样得到的结论,比主观说“这个模型更聪明”靠谱得多。

OpenAI Codex cloud 可以在后台并行处理任务,代表软件工程 Agent 正在从演示走向更真实的生产流程。

Agent 化工具越普及,团队越需要从“能跑”进入“可观测”。

AI Agent 上线后,别只盯着成功率。

真正重要的是:

用户有没有采纳?
人有没有少改?
风险有没有被拦住?
失败能不能被定位?
任务边界有没有变清楚?

没有这些指标,Agent 只是一个黑盒。

有了这些指标,Agent 才可能变成可治理的系统。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐