EASH · 智能对话运行逻辑说明

面向值班工程师与产品验收:Workbench 里你看到的回复是不是大模型?数据从哪来? 本文描述 G7/G8 当前实现(真实后端 · 禁止 Mock 降级)。

结论(第一个问题)
你在 Workbench 智能对话里看到的中文回复,是当前由真实大模型生成的,不是前端写死的模板,也不是「演示 Mock 文案」。
第二个问题:右上角乱码
若顶栏用户名显示为 值ç班 一类乱码,原因是 JWT 里含中文显示名,旧版前端用 atob() 解析未按 UTF-8 解码。 已修复web/shared/auth/eash-roles.ts 使用 TextDecoder)。 请硬刷新 Workbench(Cmd+Shift+R)或重新登录后应显示正常中文/英文用户名。
一、端到端运行链路(总览)
sequenceDiagram
  participant U as 值班员浏览器
  participant WB as Workbench :5174
  participant GW as accessgw :8080
  participant AG as agentsvc :8090
  participant TG as toolgate :8083
  participant LLM as LiteLLM → DeepSeek
  participant N4 as Neo4j / CMDB / ITSM
  participant PG as PostgreSQL

  U->>WB: 输入问题(流式)
  WB->>GW: POST /v1/chat/stream + JWT
  GW->>AG: 转发 RCA 或 问数 stream API
  AG->>TG: 只读工具(get_alert / query_service_assets …)
  TG->>N4: 真查询图谱 / 变更 / 告警
  N4-->>TG: JSON 事实
  TG-->>AG: 工具结果
  AG-->>WB: SSE event: trace(办事步骤)
  AG->>LLM: chat/completions stream=true
  LLM-->>AG: token 流
  AG-->>WB: SSE event: delta(打字机)
  AG-->>WB: SSE event: done(reply + context + trace)
  GW->>PG: 持久化会话消息 + task_records
          
环节是否真数据说明
左侧「今日会话」 PostgreSQL eash.sessions,经 accessgw GET /v1/sessions
左侧「自动推送」 Prometheus → Webhook → PG alert_events,最多展示 3 条
右侧「当前上下文」 来自工具链结果(告警 ID、CI、业务、变更单等),非前端编造
中间「助手回复」 大模型 DeepSeek 根据工具 JSON 事实生成自然语言;可流式输出
办事进度 / 数据依据 trace 数组;含一步 「大模型推理」(tool=litellm)
前端欢迎语 / 占位 固定文案 仅会话为空时的引导句;不是你的问答回复
Mock / 模板降级 禁止 G6/G7 铁律;见 docs/编码及开发规范 §3.6
二、根因分析智能体(支付网关告警根因分析)

验收句示例:「这次支付网关超时,跟最近的变更有没有关系?」

  1. 意图识别 — accessgw 根据 agent_id=agt-pay-gw-rca / scene=rca 走路径
  2. 解析告警 — ToolGate ops:get_alert / ops:resolve_firing_alert,数据来自 Neo4j + Prometheus 入图
  3. CI → 服务追溯ops:trace_ci_to_service
  4. 近期变更ops:list_changesops:get_change_detail(ITSM / PG 真数据,如 CHG00412)
  5. 指标快照(可选)ops:query_metrics → Prometheus
  6. 组装 report JSON — agentsvc 汇总工具结果(此时仍无自然语言回复)
  7. 大模型推理 — 将 report JSON + system prompt 发给 DeepSeek;生成你看到的 Markdown 中文
  8. 流式返回 — SSE delta 事件逐块推送;donecontext + trace

关键代码:services/agentsvc/app/rca_runner.py · services/accessgw/chat_stream.go · web/workbench/src/api/chat.ts

三、资产问数智能体(支付网关资产与依赖查询)

验收句示例:「支付网关集群有哪些 Pod、依赖哪些业务?」 / 「好啊,给我相关的拓扑吧」

  1. 识别服务对象 — 默认 svc-pay-gw 或从问题中解析
  2. 展开资产拓扑 — ToolGate ops:query_service_assets → Neo4j 图谱 + CMDB
  3. 整理 JSON — Pod、节点、LB、库、网络设备、业务服务列表
  4. 大模型推理 — DeepSeek 将 JSON 组织成可读中文(列表/段落),不得编造 JSON 外的事实
  5. 流式输出 — 同上 SSE 链路

你截图中列出的 pay-gw-01/02/03、对账/退款/在线支付等业务名,来自图谱 seed + 工具查询,由模型用自然语言表述,不是前端写死的假列表。

四、办事进度与「本次数据依据」

右侧「办事进度」与可展开的「本次数据依据」,对应后端返回的 trace 数组。典型步骤:

trace 名称含义是否调模型
识别查询对象 / 查询告警工具链前置
展开资产拓扑 / CI 追溯ToolGate 调 Neo4j/CMDB
整理资产数据 / 关联变更汇总 JSON
大模型推理LiteLLM → DeepSeek;detail 含 modeltool: litellm

消息 meta 里的 运维助手 · fc6dd777trace_id 前 8 位,用于审计与办事记录关联。

五、界面其它区域数据来源
UI 区域API存储
我的智能体(2 项)admin-bff /admin/v1/agents/published评测发布后的 PG 注册表
办事记录GET /v1/tasks每次对话完成后写 task_records
待我审批GET /v1/approvalsPG approval_items
顶栏「真实后端 · PostgreSQL」G7 固定 BFF 模式,无 Mock 切换
六、如何自证「真调了模型」
1. 看办事 trace
展开「本次数据依据」,应有一步 大模型推理 — ok,且 agentsvc 日志 / trace detail 含 litellmdeepseek-chat
2. 跑自动化 smoke(研发)
make test-g6-llm — 断言 trace 含「大模型推理」
make test-g7-workbench — 流式 SSE + delta 事件
make test-g8-closure — 对话写库 + 审批闭环
3. 断 Key 实验(仅本地)
去掉 .envDEEPSEEK_API_KEY 并重启 agentsvc → 对话应 失败并提示,而不是返回模板话术。
4. Admin 模型通道
http://localhost:5173/system/llm — 查看模型名与「测试连通」
七、常见问题(FAQ)
Q:回复很像模板,是不是假的?
A:G7 已软化 prompt,要求「像资深 SRE 自然对话」,但仍会基于工具 JSON 组织结构化内容。判断真伪看 trace 是否有「大模型推理」及工具步骤是否 ok,而非只看排版像不像报告。
Q:左侧告警为什么以前很多「开发模拟」?
A:来自 Prometheus 开发规则写入 PG 的真实告警记录;G7 已折叠 + 限 3 条,前端展示去掉「开发模拟」后缀。
Q:多轮追问(如「给我拓扑」)还算真模型吗?
A:每一轮用户发送都会重新走 accessgw → agentsvc → 工具(如需)→ DeepSeek。当前按 scene 路由,不是无约束自由 Agent(记 G8 backlog)。
Q:和 Admin 发布的关系?
A:Admin 评测 ≥80% 并发布 paygw/asset 后,Workbench「我的智能体」才出现 2 项;对话能力由 Pack 协议 + 已发布注册决定。

文档版本:G7/G8 · 2026-07-02 · 路径:docs/产品培训文档/EASH-智能对话运行逻辑说明.html