CatPaw 正式发布:从 3 万个 Agent 看企业级 AI 的落地路径

2026-07-28 29 预计阅读时间: 1 分钟
来源: my.oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

美团正式发布全场景 AI Agent 产品 CatPaw。比“发布”本身更值得关注的是其内部落地规模:累计覆盖 9 万名员工、搭建 3 万个 Agent,并已在多个真实业务场景中完成验证。这组数据说明,AI Agent 正在从少数人的对话工具,转向可批量创建、运行和治理的企业生产力基础设施。

规模化落地,难点不只是接入大模型

个人使用 AI 时,一个提示词加一个模型接口通常就能解决问题。但当使用范围扩展到数万名员工,工程重点会迅速改变。

层次 个人提效关注点 企业智能化关注点
输入 提示词是否好用 数据来源、身份和权限是否明确
执行 能否生成满意答案 能否调用业务工具并稳定完成任务
输出 内容是否可读 结果能否审计、复核和追责
成本 单次调用是否划算 并发、额度、模型路由和整体预算
维护 用户自行调整 Agent 的版本、评测、发布和下线

因此,“搭建 3 万个 Agent”传递出的关键信号,不只是 Agent 数量多,而是企业需要一套支持低成本创建、重复复用和集中管理的机制。否则,每个 Agent 都会变成独立脚本,最终形成新的技术债务。

来源摘要没有披露 CatPaw 的具体架构、官方 API 或工具协议,因此不能据此推断它采用了哪种模型、编排框架或权限系统。不过,从企业级 Agent 的通用工程需求出发,可以把落地链路拆成四层:

  1. 任务入口:聊天窗口、办公系统、业务后台或自动触发器。
  2. Agent 编排:解析意图,选择模型、知识和工具,维护任务状态。
  3. 业务工具:文档检索、工单、报表、代码仓库及内部服务。
  4. 治理系统:身份认证、权限校验、审计日志、质量评测和成本控制。

从个人助手走向业务 Agent

一个 Agent 是否真正进入业务,不能只看它能不能回答问题,而要看它能否完成有边界的动作。

个人场景往往从低风险任务开始,例如总结文档、整理会议纪要、生成代码框架。企业场景则可能进一步连接知识库和业务服务,形成“理解请求—获取上下文—调用工具—返回结果”的闭环。

可以用三个等级判断 Agent 的成熟度:

  • 建议型:只生成文本,由员工自行执行后续操作。
  • 协作型:读取授权数据,生成结构化结果,但关键动作需要人工确认。
  • 执行型:在明确权限和规则下调用业务系统,并记录完整审计信息。

风险也随等级上升。一个能写退款说明的 Agent,与一个能直接发起退款的 Agent,权限设计不能相同。企业部署时应优先让高风险动作经过人工确认,并对工具参数进行服务端校验,而不是相信模型输出天然正确。

可以这样实践:搭建一个带权限和审计的最小 Agent

下面是一个可直接运行的 Python 示例,用来演示企业 Agent 的最小闭环:根据请求选择工具、检查用户权限、执行操作,并把结果写入审计日志。

说明:这不是 CatPaw 官方 SDK,也不代表 CatPaw 的内部实现。 它是一个基于公开摘要抽象出的最小工程示例,使用 Python 标准库,不需要安装依赖。

将以下内容保存为 agent_demo.py

from __future__ import annotations

import json
import sys
import time
from pathlib import Path

AUDIT_FILE = Path("agent_audit.jsonl")

# 实际项目中应从统一身份与权限系统读取,不能硬编码在客户端。
USER_PERMISSIONS = {
    "alice": {"search_docs", "draft_reply"},
    "bob": {"search_docs"},
}


def search_docs(request: str) -> dict:
    return {
        "tool": "search_docs",
        "items": [
            {"title": "退款处理规范", "snippet": "高风险退款必须由负责人复核。"},
            {"title": "客服回复指南", "snippet": "回复应包含问题摘要和下一步动作。"},
        ],
        "query": request,
    }


def draft_reply(request: str) -> dict:
    return {
        "tool": "draft_reply",
        "draft": f"您好,我们已收到您的请求:{request}。相关团队正在核查,请等待进一步确认。",
        "requires_human_review": True,
    }


TOOLS = {
    "search_docs": search_docs,
    "draft_reply": draft_reply,
}


def choose_tool(request: str) -> str:
    keywords = ("回复", "邮件", "答复", "通知")
    return "draft_reply" if any(word in request for word in keywords) else "search_docs"


def write_audit(event: dict) -> None:
    event["timestamp"] = int(time.time())
    with AUDIT_FILE.open("a", encoding="utf-8") as file:
        file.write(json.dumps(event, ensure_ascii=False) + "\n")


def run_agent(user: str, request: str) -> dict:
    tool_name = choose_tool(request)
    permissions = USER_PERMISSIONS.get(user, set())

    if tool_name not in permissions:
        result = {
            "status": "denied",
            "user": user,
            "tool": tool_name,
            "reason": "用户没有调用该工具的权限",
        }
        write_audit(result.copy())
        return result

    try:
        output = TOOLS[tool_name](request)
        result = {
            "status": "success",
            "user": user,
            "tool": tool_name,
            "output": output,
        }
    except Exception as exc:
        result = {
            "status": "error",
            "user": user,
            "tool": tool_name,
            "reason": str(exc),
        }

    write_audit(result.copy())
    return result


if __name__ == "__main__":
    if len(sys.argv) < 3:
        raise SystemExit("用法:python agent_demo.py <用户> <请求>")

    response = run_agent(sys.argv[1], " ".join(sys.argv[2:]))
    print(json.dumps(response, ensure_ascii=False, indent=2))

运行两个不同权限的请求:

python agent_demo.py alice "请为客户生成一封退款进度回复"
python agent_demo.py bob "请为客户生成一封退款进度回复"
python agent_demo.py bob "查找退款处理规范"
cat agent_audit.jsonl

第一个请求会生成待人工复核的回复;第二个请求会因为 bob 没有 draft_reply 权限而被拒绝;第三个请求则可以正常检索文档。审计文件会保留每次工具选择、执行状态和用户身份。

接入真实大模型时,可以替换 choose_tool(),让模型输出受约束的工具名称和参数,但权限检查仍应保留在模型之外。例如,模型即使生成了 draft_reply 调用,也必须通过服务端权限校验后才能执行。

企业采用时应先建立护栏

CatPaw 在美团内部覆盖 9 万名员工、搭建 3 万个 Agent,说明 Agent 已具备组织级推广的现实基础。但企业不应简单追求 Agent 数量,更应关注它们是否持续产生可验证的业务价值。

落地时可以按以下清单推进:

  • 为每个 Agent 指定负责人、目标用户和明确的业务指标。
  • 区分只读工具与写操作工具,默认采用最小权限。
  • 对退款、发布、删除、付款等高风险动作增加人工确认。
  • 记录提示词版本、模型版本、工具参数和执行结果。
  • 建立离线测试集,发布前检查正确率、拒答和越权行为。
  • 设置调用额度、超时、重试和降级策略,避免成本或故障失控。
  • 定期下线低使用率、低质量或无人维护的 Agent。

真正的企业级 AI Agent 平台,不只是让员工“更容易创建机器人”,还要让组织知道这些 Agent 能访问什么、执行了什么、效果如何,以及出现问题时由谁负责。CatPaw 的大规模内部实践提供了一个重要信号:Agent 的竞争正在从模型能力,转向场景、工具和治理能力的综合工程。


相关推荐