AgentDesk v1.6.3:用 Agent First 架构串起客服、人工接管与工单

2026-08-03 44 预计阅读时间: 1 分钟
来源: 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.

预计阅读时间:8 分钟

客服 Agent 真正困难的部分,不是生成一句流畅回答,而是判断何时检索知识库、何时继续追问、何时转给人工,以及如何把整个过程沉淀为可追溯的工单。AgentDesk v1.6.3 将运行时升级为 Agent First 架构,试图用统一的自主循环和上下文评估,把在线咨询、知识库问答、人工接管与工单处理放进同一条业务链路。

Agent First 改变的是运行方式

传统客服机器人通常按固定流程工作:识别意图、命中知识、生成回复。它适合边界清晰的高频问题,但一旦用户补充条件、切换诉求或要求执行后续动作,流程很容易断裂。

Agent First 架构更接近一个持续运行的决策循环:

  1. 接收用户消息和会话上下文。
  2. 评估当前问题、已知信息与风险。
  3. 决定直接回答、查询知识库、继续澄清、创建工单或请求人工接管。
  4. 执行动作并记录结果。
  5. 将新结果放回上下文,进入下一轮评估。

这次更新摘要明确提到统一自主循环与上下文评估。其价值不只是让模型“更自主”,而是让不同客服动作拥有一致的运行入口。团队因此可以围绕同一套会话状态设计权限、审计、超时和人工介入规则。

一条客服链路需要哪些状态

把 Agent 接入真实业务时,建议不要只保存聊天记录。至少应区分以下几类数据:

  • 会话状态:当前由 AI 处理、等待用户、等待人工,还是已经关闭。
  • 业务上下文:用户身份、订单号、产品版本、历史工单和已确认事实。
  • 决策记录:Agent 为什么查询某篇知识、创建哪类工单或触发转人工。
  • 动作结果:知识库命中内容、外部系统返回值、工单编号与人工处理结果。
  • 风险信号:低置信度、用户投诉、退款请求、敏感操作或连续失败次数。

其中“转人工”不应只是发送一句“请稍候”。交接数据需要包含问题摘要、已执行动作、待确认事项和相关业务标识。否则人工客服仍要从头阅读对话,AI 只缩短了回复时间,却没有缩短处理时间。

可以这样实践:给 Agent 增加可审计的动作网关

下面是一个可直接运行的最小 FastAPI 示例,用来演示 Agent 如何通过统一网关创建工单或请求人工接管。它不是 AgentDesk 官方接口定义,而是根据统一运行时思路给出的集成样例;接入时需要把内存存储替换为实际工单系统,并按 AgentDesk 的真实接口调整字段。

安装并启动:

python -m venv .venv
. .venv/bin/activate
pip install fastapi uvicorn
uvicorn app:app --reload --port 8080

创建 app.py

from datetime import datetime, timezone
from typing import Literal
from uuid import uuid4

from fastapi import FastAPI
from pydantic import BaseModel, Field

app = FastAPI(title="Customer Service Action Gateway")
EVENTS: list[dict] = []


class AgentAction(BaseModel):
    conversation_id: str
    action: Literal["create_ticket", "handoff"]
    reason: str = Field(min_length=3)
    summary: str = Field(min_length=3)
    customer_id: str | None = None
    confidence: float = Field(ge=0, le=1)


@app.post("/agent/actions")
def execute_action(request: AgentAction):
    event = {
        "event_id": str(uuid4()),
        "created_at": datetime.now(timezone.utc).isoformat(),
        **request.model_dump(),
        "status": "queued",
    }
    EVENTS.append(event)
    return event


@app.get("/conversations/{conversation_id}/events")
def list_events(conversation_id: str):
    return [
        event for event in EVENTS
        if event["conversation_id"] == conversation_id
    ]

触发一次人工接管:

curl -sS http://localhost:8080/agent/actions \
  -H 'Content-Type: application/json' \
  -d '{
    "conversation_id": "conv-2025-001",
    "action": "handoff",
    "reason": "用户要求退款,必须由有权限的人工客服确认",
    "summary": "用户反馈订单重复扣款,已核对订单号,尚未执行退款",
    "customer_id": "customer-42",
    "confidence": 0.62
  }'

查询该会话的动作记录:

curl -sS http://localhost:8080/conversations/conv-2025-001/events

这个示例刻意把 reasonsummaryconfidence 设为显式字段。生产环境还应补充调用方认证、幂等键、租户隔离、敏感信息脱敏、持久化存储和失败重试。尤其是创建退款、修改账户或发送补偿等高风险动作,不能只凭模型生成的参数直接执行。

上线时把自主权拆成等级

Agent First 不等于把所有决定交给模型。更稳妥的做法是按风险配置动作权限:

等级 Agent 能力 适用动作
L1 生成建议,人工发送 投诉、退款、合规咨询
L2 自动回复,可随时接管 知识库问答、状态查询
L3 自动调用低风险工具 创建普通工单、补充标签
L4 条件满足后执行 需要额度、身份或规则校验的操作

上线前可以用一份简短清单约束范围:确认每个动作都有审计记录;定义低置信度与连续失败的转人工阈值;验证人工接管后 Agent 不再重复发言;限制知识库内容和工具权限;统计一次解决率、转人工率、误操作率与平均处理时长。

AgentDesk v1.6.3 所体现的方向,是把 AI 从客服界面的一个回复组件,推进为业务链路中的运行单元。真正决定效果的仍是状态模型、工具权限、交接质量与审计机制。先从低风险问答和工单分流开始,再逐步开放动作权限,通常比一次性追求全自动更容易控制成本和风险。


相关推荐