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。
关键流程
主链路怎么跑起来。
下面按顺序记录项目里真正跑通的几个环节。
业务闭环
提问、RAG、转人工、工单和知识沉淀串成一条链
用户提问后,系统先尝试 RAG 答复;置信度不足时创建工单,坐席处理结果进入知识候选,审核通过后重新入库。
RAG 工程
pgvector + 关键词召回 + RRF + 引用片段
检索链路使用向量召回、中文关键词/分类召回和 RRF 合并,并把引用片段写入提问记录。
兜底策略
三票否决置信度评估
向量相似度、引用片段和 LLM 自评任一失败即可触发转人工,避免 AI 不确定时硬答。
工程验证
261 个核心测试和 Docker Compose 本地闭环
测试覆盖分类、RRF、置信度、工单状态机、MQ 生产消费、知识审核和异常处理;本地基础设施可一键编排。
运行画面
运行画面





问题
很多 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.
复盘