客服 AGENT 系统 · 架构方案 v1 · 讨论稿
Nexora Loop 客服 Agent 全链路架构
在现有 nexora-loop 客服平台上,自研一个 ReAct 单循环 Agent,把「客服入口 › 知识库应答 › 建工单 › 飞书派单」串成闭环。弃用 Mattermost 与 OpenClaw 网关;飞书只承担员工侧。核心是快慢分离:热路径极简保延迟,智能全部堆在客户看不到的慢路径。
owner: mike · base: nexora-loop (Next.js 16 + Prisma + Postgres) · 客户段零 OpenClaw · 开发段本期人工
01 / 数据流
一张图看懂整条链路
客户匿名访客走 widget,热路径只经过一个快 Agent;转工单后 Postgres 是唯一真相源,Deep Worker 异步把一句「催一下」嚼成带根因、查重、指派的结构化工单,再投影到飞书交给人工。
热路径(绿):客户提问 › Fast Agent › 流式 SSE 秒回。慢路径(黏土色):create_ticket 落库 › Deep Worker 异步 enrich › 飞书派单。
02 / 快慢分离
「更聪明」聪明在慢路径
不上 AutoGen / 多智能体编排——你的角色交接是被人工和时间隔开的异步流程,用不上实时 agent 协作。智能放在判断力和工具质量,不放编排框架。客户体验不受一点拖累,工单质量却上一个台阶。
客户等一个 FAQ 答案时,背后不跑 4 个 agent 握手;一句「催一下」被强模型异步嚼成一张带根因、查重、指派的工单。
03 / 落地边界
复用什么 · 新建什么 · 删掉什么
复用 · nexora-loop 现状
- public/widget.js — 客户挂件 + 原生 SSE,商城/ERP 已接
- lib/widget/stream-bus.ts — SSE pub/sub,流式回答复用
- lib/ticket/state-machine.ts — 工单状态机已存在
- Prisma + Postgres — 工单真相源直接落这
新建 · Agent 层(~200 行)
- lib/agent/loop.ts — ReAct 单循环,≤4 步兜底
- lib/agent/tools/ — 只 2 个:
search_kb(飞书文档+记忆搜索)/ create_ticket(解决不了就落库走开发流程)
- lib/agent/prompt.ts — per 租户 system prompt(SOUL 代码化)
- lib/agent/deep-worker.ts — 异步第二遍分析
删掉 · 不采用
- lib/mm/client.ts — 605 行 Mattermost client,删
- Mattermost channel — 入口收敛,员工只盯飞书
- OpenClaw 网关 — 客户段不碰(冷启动/idle-kill/cooldown 脆性)
- AutoGen / 多智能体编排 — 你这个形状用不到
关键设计约束
- 单一真相源 — Postgres 先落库;飞书 Task 只是投影
- 租户锁死 — 边界在 runTool 代码层,不信 LLM 传的 id
- KB 走 user token — bot 不能进 wiki(飞书硬限制)
- 失败不吞单 — 分析挂了也用原文建单 + 标记
- 快慢模型分工 — 快模型秒回;强模型 + thinking 做工单