关于 cxas-loss-analysis
cxas-loss-analysis 是分析 CCAI Insights 近期升级或未解决会话的 AI Agent 技能。它将真实失败归纳为模式,排除一开始就排斥 AI 的会话,并生成包含会话分类的 Markdown 报告。
主要功能
- 01提取失败会话记录
- 02识别并排除 AI 排斥情况
- 03概述升级原因
- 04将失败聚类为模式
- 05生成 Markdown 报告
适用场景
- 01复查虚拟 Agent 升级转接
- 02发现反复出现的解决失败
- 03区分 AI 排斥与服务问题
- 04生成会话失败分析报告
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ googlecloudplatform/ cxas-scrapi --skill cxas-loss-analysis安装后在 Claude Code 中输入/cxas-loss-analysis确认已加载。
附带文件scripts/fetch_losses.py
详细介绍
Insights 流失分析与报告生成器
此技能指导你(AI Agent)从 CCAI Insights 获取近期对话,筛选出已升级/未解决的会话(流失),分析其根本原因并归纳为失败模式,然后撰写专业的 Markdown 报告。
执行流程
请严格按以下顺序执行这些步骤:
步骤 1:参数验证
确认用户已提供以下必需参数:
project_id:托管 Insights 的 GCP 项目 ID。location:Insights 位置(例如,us)。app_id:目标 CXAS 应用 ID(例如,db9ee866-28db-458b-b835-78137c974779)。output_dir:用于保存最终报告和测试用例的目录。
如果用户希望限定分析范围,还需确认以下可选参数:
start_time:时间段的起始 RFC 3339 时间戳(例如,2026-05-20T00:00:00Z)。end_time:时间段的结束 RFC 3339 时间戳(例如,2026-05-26T23:59:59Z)。filter:要应用的自定义 API 过滤字符串(覆盖默认的流失过滤条件-labels.sessionContained="true")。limit:要获取并处理的最大对话数(默认值:500)。
步骤 2:提取流失对话记录
运行轻量级数据提取脚本,将流失对话记录导出为工作区中的分块 JSON 文件。
命令模板:
python3 -P .agents/skills/cxas-loss-analysis/scripts/fetch_losses.py \
--project-id "{project_id}" \
--location "{location}" \
--app-id "{app_id}" \
--limit {limit} \
--output-file "{output_dir}/raw_losses.json" \
[--start-time "{start_time}"] \
[--end-time "{end_time}"] \
[--filter "{filter}"]
注意:始终使用虚拟环境的可执行文件运行 python,并添加 -P 标志(例如,.venv/bin/python -P),以避免路径污染。
步骤 3:读取对话记录并总结升级情况
使用 view_file 或其他文件读取工具读取生成的 {output_dir}/raw_losses.json 文件。提取 chunks 列表(其中包含分块 JSON 文件的路径)。
对于 chunks 列表中的每个分块文件:
- 读取分块文件,加载其中的一批对话记录。
- 对于每份对话记录:
a. 分析客户(
user)与虚拟 Agent(agent)之间的对话。 b. 判断用户是否表现出 “排斥 AI”:- 定义:用户未与 Agent 进行实质性互动,或强烈表示希望与人工客服交流的会话(例如,在前 1~2 轮对话中,没有说明问题就立即要求“人工客服”“客服”或“代表”,或者明确表示不想与 AI/机器人交谈)。
- 如果检测到“排斥 AI”,则将该会话标记为排除,不纳入核心流失分析。记录原因(例如,“排斥 AI:用户立即要求转接人工客服”)。 c. 对于未排除的真实流失会话:
- 找出对话升级或未解决的原因。
- 用简洁的 1 句话概括失败/升级的主要原因(最多 20 个单词)。例如,“虚拟 Agent 因用户多次输入 PIN 错误而未能完成身份验证。”
步骤 4:将失败归纳为流失模式
查看步骤 3 中生成的全部真实(未排除)失败原因。运用分析能力,将这些失败原因归纳为 8 到 10 种不同且互斥的失败模式,以提供细致的洞察。
为每种模式定义:
- 模式 ID:简单的键(例如,
pattern_1、pattern_2……)。 - 名称:简短且具有描述性的名称(例如,“身份验证循环”、“不支持的客户意图”、“澄清时转接 Agent”)。
- 描述:用 1~2 句话清楚说明该模式及其触发条件。
步骤 5:对所有会话进行分类
将每个已分析的 conversation_id 映射到以下其中一项:
- 8 到 10 种已定义的失败模式之一。
- 如果用户表现出排斥 AI,则映射到
ignored_ai_aversion。
保留此映射,以供最终报告使用。
步骤 6:撰写 Markdown 报告
将分析整理为结构化的 Markdown 报告,并写入 {output_dir}/loss_patterns_report.md。使用以下结构:
# Loss Patterns Analysis Report
**Project**: `{project_id}`
**App ID**: `{app_id}`
## Executive Summary
A sample of up to {limit} conversations matching the filter was selected for detailed manual analysis and clustering to identify key patterns.
## Loss Patterns Distribution
| Pattern ID | Name | Count | Percentage of Genuine Losses |
| --- | --- | --- | --- |
| `pattern_1` | Pattern Name | Count | Pct% |
| ... | ... | ... | ... |
*Note: Ignored AI aversion sessions are excluded from the pattern distribution.*
## Detailed Patterns Breakdown
### `pattern_1`: Pattern Name
**Description**: Pattern description.
**Total Conversations**: Count
#### Examples & Failure Reasons:
- **Session `{conversation_id_1}`**: Failure reason from Step 3.
- **Session `{conversation_id_2}`**: Failure reason from Step 3.
---
## Appendix: Ignored Sessions (AI Aversion)
The following sessions were ignored from the pattern analysis because the user displayed AI aversion:
- **Session `{conversation_id_3}`**: AI aversion reason (e.g., *"User demanded human agent immediately"*).
- **Session `{conversation_id_4}`**: AI aversion reason.
步骤 7:向用户呈现摘要
在聊天中直接清晰地总结你的发现,指引用户查看 {output_dir}/loss_patterns_report.md,并突出显示关键模式和调整后的遏制率。