2026年6月28日/ 案例

TicketAgent 智能工单 Agent 平台

Java 21 + Spring Boot 3 + Spring AI 的企业智能客服工单 Agent 项目,覆盖 RAG 问答、置信度判断、低置信度转人工、工单流转、知识沉淀、MQ 异步链路和指标看板。

项目概览

主线、难点和结果。

负责范围

从后端到轻量前端的完整 MVP:RAG 检索问答、置信度评估、转人工工单、坐席处理、知识候选审核、Embedding 入库和指标看板。

核心难点

把 AI 回答失败后的处理路径做成业务闭环,而不是停留在一个聊天框:低置信度要转人工,人工答复要回写并沉淀为知识。

验证结果

当前记录 261 个核心单测通过;Docker Compose 可启动后端、PostgreSQL、Redis、RabbitMQ、Prometheus 和 Grafana。

关键流程

主链路怎么跑起来。

下面按顺序记录项目里真正跑通的几个环节。

01

业务闭环

提问、RAG、转人工、工单和知识沉淀串成一条链

用户提问后,系统先尝试 RAG 答复;置信度不足时创建工单,坐席处理结果进入知识候选,审核通过后重新入库。

02

RAG 工程

pgvector + 关键词召回 + RRF + 引用片段

检索链路使用向量召回、中文关键词/分类召回和 RRF 合并,并把引用片段写入提问记录。

03

兜底策略

三票否决置信度评估

向量相似度、引用片段和 LLM 自评任一失败即可触发转人工,避免 AI 不确定时硬答。

04

工程验证

261 个核心测试和 Docker Compose 本地闭环

测试覆盖分类、RRF、置信度、工单状态机、MQ 生产消费、知识审核和异常处理;本地基础设施可一键编排。

261
Tests
3
Roles
3
MQ flows

运行画面

运行画面

TicketAgent 四视图闭环演示动图
闭环演示动图:三角色入口、用户提问、坐席工单台和管理看板。
TicketAgent 用户提问页
用户提问页:通过 RAG 生成答复,低置信度问题会进入人工工单链路。
TicketAgent 坐席工单台
坐席工单台:低置信度问题转为工单后,可以认领、处理、提交答复并沉淀知识。
TicketAgent 管理看板
管理看板:观察命中率、转人工率、待处理工单和知识候选审核状态。
TicketAgent 登录页
三角色入口:用户、坐席和管理员分别对应提问、工单处理和知识审核。

问题

很多 AI 客服项目只展示“用户问一句、模型回一句”。真实企业服务场景需要处理模型不确定、人工介入、工单状态、处理记录、知识回流和指标复盘。

方案

我把 SmartKB 的 RAG 能力抽象到一个工单业务闭环里:用户提问后先分类和检索,AI 生成答复并进行三票置信度判断;低置信度触发 RabbitMQ 异步创建工单,坐席处理后生成知识候选,管理员审核通过后重新切片、Embedding 并入库。

展示重点

TicketAgent 不是另一个聊天框,它重点展示 AI 在不确定时如何进入人工流程,以及人工处理结果如何反哺知识库。

Ask -> Retrieve -> Answer -> Confidence -> Handoff -> Resolve -> Review -> Embed

工程讲解

这个项目可以从三条线看:RAG 检索与引用、三票置信度兜底、工单和知识沉淀闭环。重点是 AI 答不了时怎么进入人工处理,以及处理结果怎么回流到知识库。

实现细节

TicketAgent 的核心演示链路是用户提交问题后,系统先用规则和 LLM 做分类,再进行 pgvector 向量召回和关键词/分类召回,通过 RRF 合并 Top 片段交给 LLM 生成答复。回答结果会带引用片段,并写入 ask_record。

置信度不是简单相信模型自评,而是三票否决:最高向量相似度低于阈值、引用片段为空、LLM 自评为 low,任意一项命中都进入转人工。这样 AI 答不了的问题不会在界面上硬编答案。

低置信度问题通过 RabbitMQ 进入工单链路,坐席可以认领、处理并提交人工答复。工单解决后系统生成知识候选,管理员审核通过后创建知识文档、切片、Embedding 并写回 pgvector,类似问题下次就可以直接命中。

项目保留 Prometheus / Grafana 监控接口和业务聚合接口,用来观察命中率、转人工率、工单处理时长、失败问题和 token 消耗。当前重点放在本地可运行、链路闭环和关键取舍清楚。

放在项目集里看,它补上了 SmartKB 和 TicketRush 之间的空位:SmartKB 记录 RAG 基础能力,TicketRush 记录高并发后端能力,TicketAgent 记录 AI 能力如何接入业务流程。

TicketAgent's main demo path starts with user questions, classifies them using rules and an LLM, retrieves chunks through pgvector and keyword/category recall, fuses results with RRF, then sends context to the LLM for an answer. Citations are persisted with the ask record.

Confidence is not based solely on model self-evaluation. It uses a three-vote gate: vector similarity, citation availability and LLM self-evaluation. Any failed vote triggers human handoff.

Low-confidence questions enter the ticket workflow through RabbitMQ. Agents claim, handle and resolve tickets. Resolutions create knowledge candidates; approved candidates become documents, chunks and embeddings in pgvector.

The project keeps Prometheus/Grafana and business aggregation APIs for hit rate, handoff rate, ticket resolution time, failed questions and token usage. The current focus is local runnability, a complete loop and clear trade-offs, not platformization.

In the project set, it fills the gap between SmartKB and TicketRush: SmartKB records RAG capability, TicketRush records backend concurrency, and TicketAgent records AI capability inside a business workflow.

复盘

AI 应用的关键不是有没有聊天框,而是失败路径是否有兜底:低置信度、无引用、用户问题超出知识库时必须能转人工。
工单状态机、事件流水和知识候选审核让 RAG 项目更像业务系统,也更适合解释真实落地。
这个项目优先把提问、转人工、工单处理和知识沉淀这条主链路做完整。