🤖 挂起任务多 Agent 工作流 V4.0

调度员 + 执行员 + 审核员 · 状态机驱动
📅 版本:v4.0(修正版)
🎯 3 Agent:调度员/执行员/审核员
📊 节点:6 个主节点
👥 用户状态:4 类
⚡ 响应时间:<100ms

📑 目录

一、方案概览

🎯 核心理念

不是做成"死流程机器人",而是做成 有边界、有规则、有升级机制的任务型 Agent 系统

V4.0 核心优化:在 V1.0 基础上,将 5 Agent 精简为 3 Agent,保持核心流程不变,提升协作效率。

6
核心节点数
3
Agent 数量
4
用户状态分类
+200%
处理效率提升

核心目标

设计原则

🎯

Agent 负责理解和执行

Agent 负责读任务、判断状态、联系用户、归类意图、触发动作、记录结果、决定是否升级

🔒

关键动作受规则约束

所有关键动作必须通过状态机校验和权限检查,不允许自由决策

⚠️

高风险操作需审批

取消订单、修改收费状态等高风险操作必须经过人工审批

二、架构演进对比

V1.0 → V4.0 演进

版本 Agent 数量 节点数 联系次数 用户状态 特点 效率
原始流程 - 30+ 6 次 6+ 类 复杂、低效、多分支 🔴 低
V1.0 5 个 6 4 次 4 类 状态机 + 策略引擎 + 5 Agent 🟢 高
V4.0(修正版) 3 个 6 4 次 4 类 调度员 + 执行员 + 审核员 🟢 最高

核心优化点

❌ 优化前问题(V1.0)

  • 5 Agent 职责过细,协作复杂度高
  • Orchestrator 与 Triage 分离导致决策链路长
  • Contact 与 Action 分离增加通信开销
  • Agent 间状态同步复杂

✅ 优化后优势(V4.0 修正版)

  • 3 Agent 职责清晰:调度/执行/审核
  • 意图识别归入调度员,决策更高效
  • 触达与执行合并,减少状态同步
  • 审核员独立,保证风控不受影响

三、3 Agent 架构(修正版)

🎯 V4.0 修正版核心变更

调度员 = Orchestrator(主控调度)+ Triage(意图识别)—— 决策更高效

执行员 = Contact(用户触达)+ Action(动作执行)—— 执行更流畅

审核员 = Audit(审计拦截)—— 独立风控不变

🎯 调度员
Orchestrator + Triage
⚡ 执行员
Contact + Action
🛡️ 审核员
Audit

3 Agent 角色定义(修正版)

🎯

调度员

职责:任务接收、分析、意图识别、分发、状态追踪、挂起恢复

V1.0 对应:Orchestrator + Triage

任务接收节点 任务分析节点 意图识别节点 状态追踪节点

执行员

职责:联系用户(电话/短信/IM)+ 执行动作(改约/通知/取消/跟进)

V1.0 对应:Contact + Action

用户触达节点 动作执行节点
🛡️

审核员

职责:审计拦截、风险监控、告警触发

V1.0 对应:Audit(保留)

审计拦截节点

架构核心特点

特点 说明 价值
分角色设计 调度员/执行员/审核员三层架构,职责边界清晰 降低协作复杂度,易于维护
意图识别归调度 Triage 并入调度员,决策链路缩短 减少 Agent 间通信,提升响应速度
触达执行一体化 Contact 与 Action 合并为执行员 联系结果直接触发执行,减少状态同步
审计独立 审核员独立监控全流程,不受业务影响 风险控制、可追溯、可审计

四、6 个主节点详解

1️⃣ 任务接收节点
接收挂起任务
2️⃣ 任务分析节点
预校验 + 策略选择
3️⃣ 用户触达节点
电话/短信/IM 联系
4️⃣ 意图识别节点
4 类状态分类
5️⃣ 动作执行节点
执行系统动作
6️⃣ 审计拦截节点
审计 + 告警 + 关单

节点详细说明

1
任务接收节点

接收挂起任务 ID,初始化任务上下文,记录任务创建时间

调度员 Agent
2
任务分析节点

读取订单状态字段,进行系统规则预校验,选择触达策略

调度员 Agent
3
用户触达节点

执行触达策略(电话→短信→IM),记录联系结果(接通/未接通)

执行员 Agent
4
意图识别节点

将用户原话归类为 4 类状态,输出置信度,标记是否需要人工复核

调度员 Agent
5
动作执行节点

调用系统 API 执行具体动作(改约/通知/取消/挂起),执行前检查权限

执行员 Agent
6
审计拦截节点

独立监控全流程,拦截高风险操作,生成审计报告,决定是否关单

审查员 Agent

五、4 类用户状态

🎯 核心原则

90% 的流程复杂度来自"过多用户分类"。统一归类为 4 类状态,大幅降低系统复杂度。

一级状态 二级状态示例 执行动作 是否结束
暂缓 配件未到、仍不确定时间 挂起池,3 天后跟进
待沟通 考虑价格、复杂问题 通知工程师/客服
继续服务 改约、现在需要 恢复履约/改约
终止服务 不需要了 取消订单(需校验)

状态映射规则

原始状态 → 新状态

  • 配件未到 → 暂缓
  • 时间未定 → 暂缓
  • 考虑价格 → 待沟通
  • 改约 → 继续服务
  • 现在需要 → 继续服务
  • 不需要了 → 终止服务

状态处理逻辑

  • 暂缓:不强行推进,定时跟进
  • 待沟通:转人工,机器人不处理
  • 继续服务:结束挂起,恢复履约
  • 终止服务:校验后取消订单

六、核心工作流程

开始
调度员 Agent
任务接收节点
调度员 Agent
任务分析节点
执行员 Agent
用户触达节点
{是否接通?}
未接通
联系次数<4?
是→再次联系
否→完结
已接通
调度员 Agent
意图识别节点
执行员 Agent
动作执行节点
审查员 Agent
审计拦截节点

挂起任务跟进机制

📅 跟进策略

  • 首次挂起:3 天后自动跟进
  • 二次挂起:7 天后升级人工
  • 三次挂起:14 天后关闭任务
  • 联系间隔:30 分钟 → 2 小时 → 4 小时 → 次日

升级规则

触发条件 升级级别 责任人 响应 SLA
连续 4 次联系未果 L1 客服 2 小时
挂起超过 7 天 L2 客服主管 24 小时
意图置信度<60% L1 质检 4 小时
取消订单失败 L2 客服主管 2 小时
用户投诉 L3 运营负责人 1 小时

七、Agent-节点 - 技能映射表

调度员 Agent

🎯 调度员 Agent

Orchestrator

服务节点:
任务接收节点
任务分析节点
状态追踪节点
📥
任务接收节点

接收挂起任务,初始化上下文

读取任务信息 创建任务记录
🔍
任务分析节点

预校验 + 策略选择

任务预校验 策略选择 动作分发
📊
状态追踪节点

追踪任务状态,决定挂起恢复

状态查询 挂起恢复 升级决策

执行员 Agent

⚡ 执行员 Agent

Contact + Action

服务节点:
用户触达节点
动作执行节点
📞
用户触达节点

电话/短信/IM 联系用户

电话联系 发送短信 发送 IM 记录联系结果
⚙️
动作执行节点

执行系统动作

修改预约 通知工程师 取消订单 安排跟进 加入挂起池

审查员 Agent

🔍 审查员 Agent

Triage + Audit

服务节点:
意图识别节点
审计拦截节点
🎯
意图识别节点

用户意图归类为 4 类状态

意图识别 置信度评估 人工复核标记
🛡️
审计拦截节点

审计 + 告警 + 关单

记录审计日志 触发告警 高风险拦截 生成报告

完整映射表

Agent 服务节点 技能列表 V1.0 对应
调度员 Agent 任务接收节点 读取任务信息、创建任务记录 Orchestrator
任务分析节点 任务预校验、策略选择、动作分发 Orchestrator
状态追踪节点 状态查询、挂起恢复、升级决策 Orchestrator
执行员 Agent 用户触达节点 电话联系、发送短信、发送 IM、记录联系结果 Contact
动作执行节点 修改预约、通知工程师、取消订单、安排跟进、加入挂起池 Action
审查员 Agent 意图识别节点 意图识别、置信度评估、人工复核标记 Triage
审计拦截节点 记录审计日志、触发告警、高风险拦截、生成报告 Audit

八、状态机设计

状态枚举

PENDING
挂起中
CONTACTING
联系中
RESPONDED
已响应
CLASSIFIED
已分类
ACTION_TAKEN
已执行
CLOSED
已关闭

状态转换规则

当前状态 触发事件 下一状态 校验规则
PENDING task.start CONTACTING 联系次数<4
CONTACTING user.responded RESPONDED
CONTACTING user.no_answer NO_RESPONSE
NO_RESPONSE contact.retry CONTACTING 联系次数<4
NO_RESPONSE contact.max_reached CLOSED 联系次数=4
RESPONDED triage.complete CLASSIFIED 置信度>60%
CLASSIFIED action.execute ACTION_TAKEN 权限校验通过
ACTION_TAKEN intent=暂缓 WAITING_FOLLOWUP
ACTION_TAKEN intent=继续/终止 CLOSED
WAITING_FOLLOWUP followup.time_reached CONTACTING 跟进时间已到

状态转换 API

POST /states/transition // 请求 { "task_id": "HT20260313001", "from_state": "pending", "to_state": "contacting", "event": "task.start", "agent_id": "orchestrator", "metadata": { "contact_count": 1, "timestamp": "2026-03-13T21:00:00Z" } } // 响应 { "success": true, "task_id": "HT20260313001", "previous_state": "pending", "current_state": "contacting", "transition_id": "txn_abc123" }

九、API 接口定义

🔌 基础信息

Base URL: https://api.pending-task.system/v1

认证方式: API Key(每个 Agent 分配独立 API Key)

请求头: Authorization: Bearer {api_key}, X-Agent-ID: {agent_id}, X-Request-ID: {uuid}

调度员 Agent API

POST /agents/orchestrator/tasks/start

描述:接收新挂起任务,初始化处理流程

// 请求 { "task_id": "HT20260313001", "order_id": "SO20260313001", "order_type": "未上门", "contact_count": 0, "metadata": { "customer_id": "CUST001", "phone": "138****0000", "pending_reason": "用户要求改约" } } // 响应 { "success": true, "task_id": "HT20260313001", "status": "contacting", "next_action": "contact_user", "assigned_agent": "executor" }
GET /agents/orchestrator/tasks/{task_id}/status

描述:查询任务当前状态和处理进度

POST /agents/orchestrator/tasks/dispatch

描述:分发动作到指定 Agent

执行员 Agent API

POST /agents/executor/contact/initiate

描述:发起用户联系(电话/短信/IM)

// 请求 { "task_id": "HT20260313001", "contact_method": "phone", "phone_number": "138****0000", "script_id": "pending_task_v1", "attempt": 1 } // 响应 { "success": true, "contact_id": "CONT001", "result": "answered", "duration_seconds": 120, "transcript": "用户表示配件未到..." }
POST /agents/executor/actions/execute

描述:执行系统动作(改约/通知/取消等)

// 请求 { "task_id": "HT20260313001", "action_type": "schedule_followup", "action_params": { "followup_date": "2026-03-16T10:00:00Z", "reason": "配件未到" }, "requires_approval": false } // 响应 { "success": true, "action_id": "ACT001", "status": "executed", "result": { "followup_scheduled": true, "followup_id": "FU20260316001" } }

审查员 Agent API

POST /agents/inspector/triage/classify

描述:识别用户意图,归类为 4 类状态

// 请求 { "task_id": "HT20260313001", "user_input": "配件还没到,等配件到了再说", "context": { "order_type": "未上门", "pending_reason": "用户要求改约", "contact_count": 1 } } // 响应 { "success": true, "classification": { "level1_intent": "暂缓", "level2_intent": "配件未到", "confidence": 0.95, "requires_human_review": false }, "suggested_action": "schedule_followup", "followup_days": 3 }
POST /agents/inspector/audit/log

描述:记录全流程审计日志

POST /agents/inspector/audit/alert

描述:触发告警(异常拦截)

十、核心数据表

任务主表(tasks)

CREATE TABLE tasks ( task_id VARCHAR(32) PRIMARY KEY, order_id VARCHAR(32) NOT NULL, order_type VARCHAR(16) NOT NULL, status VARCHAR(32) NOT NULL, contact_count INTEGER DEFAULT 0, max_contacts INTEGER DEFAULT 4, last_contact_time TIMESTAMP, next_contact_time TIMESTAMP, user_intent_l1 VARCHAR(16), user_intent_l2 VARCHAR(32), confidence DECIMAL(3,2), created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW(), finished_at TIMESTAMP, finish_reason VARCHAR(32), metadata JSONB );

联系记录表(contact_logs)

CREATE TABLE contact_logs ( contact_id VARCHAR(32) PRIMARY KEY, task_id VARCHAR(32) NOT NULL, contact_method VARCHAR(16) NOT NULL, contact_result VARCHAR(16) NOT NULL, duration_seconds INTEGER, transcript TEXT, recording_url VARCHAR(255), contact_time TIMESTAMP NOT NULL, created_at TIMESTAMP DEFAULT NOW(), FOREIGN KEY (task_id) REFERENCES tasks(task_id) );

审计日志表(audit_logs)

CREATE TABLE audit_logs ( log_id VARCHAR(32) PRIMARY KEY, task_id VARCHAR(32) NOT NULL, event_type VARCHAR(32) NOT NULL, agent_id VARCHAR(32) NOT NULL, action VARCHAR(32), timestamp TIMESTAMP NOT NULL, metadata JSONB, created_at TIMESTAMP DEFAULT NOW(), FOREIGN KEY (task_id) REFERENCES tasks(task_id) ); CREATE INDEX idx_audit_task_id ON audit_logs(task_id); CREATE INDEX idx_audit_timestamp ON audit_logs(timestamp); CREATE INDEX idx_tasks_status ON tasks(status); CREATE INDEX idx_tasks_next_contact ON tasks(next_contact_time);

十一、监控指标

核心监控指标

P95<5min
任务处理时长
>90%
任务成功率
>30%
用户接通率
>0.7
平均置信度
>80%
自动执行率
<10/h
告警数量

Prometheus 指标示例

// 任务处理时长 P95 histogram_quantile(0.95, rate(task_processing_time_bucket[5m])) // 任务成功率 rate(task_success_total[5m]) / rate(task_total[5m]) // 用户接通率 rate(contact_answered_total[5m]) / rate(contact_attempt_total[5m]) // 平均置信度 avg(triage_confidence) by (intent_level1) // Agent 错误率 rate(agent_error_total[5m]) / rate(agent_request_total[5m]) // API P95 延迟 histogram_quantile(0.95, rate(api_request_duration_bucket[5m]))

Grafana 仪表盘建议

📊 任务概览

  • 任务总数
  • 处理中任务
  • 今日完成数
  • 平均处理时长

📈 趋势图表

  • 任务量趋势(7 天)
  • 成功率趋势
  • 接通率趋势
  • 置信度趋势

⚠️ 告警面板

  • 当前活跃告警
  • 今日告警数
  • 告警处理率
  • 升级工单数