关于 analyze-chat-session
此技能分析当前或指定对话中的工具调用、响应、错误和操作方式,并生成结构化反馈,面向改进 MCP 工具使用与 ARC-1 能力的团队。它会主动删除敏感信息,并按不同输出格式整理发现和改进建议。
主要功能
- 01梳理会话目标与工具调用
- 02识别冗余操作和恢复模式
- 03提出提示词、服务器及工作流改进建议
- 04生成 issue、internal 或 summary 报告
- 05对敏感信息进行脱敏
适用场景
- 01复盘 MCP 工具调用中的失败与低效
- 02为 ARC-1 整理可提交的问题建议
- 03改进团队的 SAP 开发技能和工作流
MCP 相关
分析内容涵盖会话中的 MCP 工具调用,并可提出 ARC-1 服务能力改进建议。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ arc-mcp/ arc-1 --skill analyze-chat-session安装后在 Claude Code 中输入/analyze-chat-session确认已加载。
详细介绍
分析聊天会话
分析当前对话中的工具调用、响应、错误和整体处理方式,生成一份结构化反馈报告。目标是持续改进 MCP 工具的使用模式、提示词策略和 ARC-1 服务端的能力。
此技能具有自省性——大模型会分析自己的聊天会话(当前会话或指定的会话),并生成可执行的反馈。
隐私声明——请先阅读
在将此技能的输出用于当前系统之外的场景(例如粘贴到 GitHub issue 或分享到聊天中)之前,用户必须检查其中是否包含敏感数据。
分析中不得包含:
- SAP 系统 URL、主机名、IP 地址或端口
- 用户名、密码、API 密钥、令牌或凭据
- 客户端编号、系统 ID(SID)或环境标识符
- 真实业务数据(客户名称、订单编号、财务数值、员工数据)
- 会暴露内部基础设施信息的文件路径(主目录、挂载路径)
- 会暴露内部命名约定的传输请求编号或包名称
- SAP 表格预览或 SQL 查询结果中包含业务数据的任何内容
大模型必须主动从输出中删去这些信息,并替换为 <SAP_HOST>、<USERNAME>、<OBJECT_NAME>、<TABLE_DATA_REDACTED> 等通用占位符。
生成报告后,请提醒用户:“请在组织外分享前,检查此报告是否仍包含任何敏感信息。”
智能默认值(静默应用,切勿询问)
| 设置 | 默认值 | 原因 |
|---|---|---|
| 输出格式 | issue(适用于 GitHub issue) | 最具可执行性 |
| 严重性筛选 | 所有级别 | 不遗漏任何问题 |
| 关注范围 | 整个会话 | 全面分析 |
| 敏感数据 | 全部删去(见隐私声明) | 默认确保安全 |
触发后立即使用智能默认值继续操作。无需提问。
输入
用户可以在对话期间或之后的任意时间触发此技能。无需额外输入——大模型会分析当前聊天上下文。立即使用智能默认值继续操作。
用户也可以选择指定:
- 关注范围——例如“关注写入操作”或“关注搜索失败”
- 输出格式——
issue(适用于 GitHub issue)、internal(详细,用于内部审核)或summary(简短,1 段) - 严重性筛选——仅报告超过指定阈值的问题(例如“仅报告阻塞项”)
第一阶段:整理会话目录
遍历整个对话并提取结构化目录。对于每一轮,记录:
1a. 确定目标
用户试图完成什么?对目标进行分类:
| 目标类别 | 示例 |
|---|---|
| 读取 / 探索 | 阅读源代码、了解某个类、探索依赖项 |
| 搜索 / 发现 | 按名称查找对象、搜索源代码、定位实现 |
| 写入 / 修改 | 创建对象、更新源代码、编辑方法、执行批量操作 |
| 诊断 / 调试 | 语法检查、单元测试、ATC、短转储、跟踪 |
| 导航 / 理解 | 查找定义、查找引用、代码补全 |
| 查询 / 数据 | 表格预览、自由格式 SQL、数据检查 |
| 上下文 / 架构 | 依赖关系图、使用情况分析、API 契约 |
| 激活 / 部署 | 激活对象、管理传输 |
| Lint / 质量 | 运行 Linter、修复 Lint 问题、检查规则 |
1b. 记录工具调用
对于会话中的每次 MCP 工具调用,请记录:
| 字段 | 要记录的内容 |
|---|---|
| 工具 | 调用了 11 个工具中的哪一个(SAPRead、SAPSearch 等) |
| 操作 | 具体操作/类型/包含项(例如,SAPRead type=CLAS format=structured) |
| 意图 | LLM 尝试获取什么信息? |
| 结果 | success、error、partial、empty、redundant |
| 错误类型 | 如果失败:not_found、auth、safety、network、validation、btp_unsupported、session、other |
| 令牌数 | 粗略估算:响应较小(< 1KB)、中等(1-10KB)还是较大(> 10KB)? |
| 是否必要? | 此次调用是否必要,还是可以通过其他方式获取相关信息? |
1c. 识别模式
查找以下反模式:
| 模式 | 描述 | 影响 |
|---|---|---|
| 大范围搜索 | 缩小范围前进行多次宽泛搜索 | 浪费令牌和时间 |
| 缺少 SAPContext | 逐个读取依赖项,而不是使用 SAPContext | 调用次数增加 5-10 倍 |
| 未使用结构化格式读取类 | 读取类时使用普通 SAPRead,而不是 format=structured | 无法获取元数据,需要额外调用来读取包含项 |
| 未修改就重试 | 不修改参数就重复相同的失败调用 | 纯粹浪费 |
| 猜错类型 | 使用错误的对象类型,然后再搜索正确类型 | 可以先使用 SAPSearch |
| 忽略错误提示 | 错误响应中包含提示(例如“使用 SAPSearch”),但 LLM 没有照做 | 错失恢复路径 |
| 重复读取 | 在同一会话中多次读取同一对象 | 可以缓存/重用之前响应中的内容 |
| 过度获取 | 只需要方法或某个部分,却读取整个对象 | 浪费令牌(使用 method 参数或 edit_method) |
| 未列出方法 | 修改类前没有先获取 method="*" 来了解 API | 盲目修改 |
| 操作顺序错误 | 例如,保存前尝试激活,或未先读取就写入 | 操作流程错误 |
| 忽略 BTP 限制 | 在 BTP 系统上尝试仅支持本地部署的操作 | 已知限制,应先检查 SAPManage features |
第 2 阶段:评估哪些做法奏效
2a. 成功的策略
找出并重点说明效果良好的做法:
- 高效选择工具 — 首次尝试就选对工具
- 恰当使用参数 — 使用了
format=structured、include=elements、method="*"等 - 有效恢复错误 — 遵循错误提示,在失败后切换策略
- 优先获取上下文 — 深入读取前先使用 SAPContext/SAPSearch
- 批量操作 — 适时使用 batch_create 或批量激活
- 方法级修改 — 使用
edit_method,而不是重写整个类
2b. 部分奏效之处
找出最终成功但效率不高的方法:
- 多用了多少次调用?
- 采取了什么纠正措施?
- 如果使用不同参数,首次尝试能否成功?
2c. 失败之处
找出始终未奏效的方法:
- 是否可以通过其他途径获取相关信息?
- 这是系统限制(BTP、权限、缺少功能)吗?
- 这是应该报告的工具限制吗?
第 3 阶段:生成改进建议
3a. 针对 LLM 的改进建议(提示词/方法)
用户可以将以下建议反馈到系统提示词或技能说明中:
- 策略改进 — “对象类型不确定时,先使用 SAPSearch,再使用 SAPRead”
- 参数优化 — “读取类时使用 format=structured,以减少调用次数”
- 顺序改进 — “尝试修改方法前,先读取方法列表”
- 错误恢复模式 — “SAPContext 用于 FUNC 失败时,明确传入 group= 参数”
3b. 针对 ARC-1(服务/工具改进)
应作为 GitHub issue 提交给 ARC-1 项目的建议:
| 类别 | 示例 |
|---|---|
| 缺少操作 | “无法按消息编号读取消息类文本” |
| 错误消息欠佳 | “FUNC 返回 404,但没有建议使用 SAPSearch 查找函数组” |
| 缺少参数 | “SAPRead 应支持读取 DDLS 的特定注解” |
| 性能 | “对于大型依赖关系图,SAPContext depth=2 会超时” |
| BTP 缺口 | “无法读取 BTP 上的服务绑定详情” |
| 文档 | “工具描述没有提到 method='*' 会列出所有方法” |
| 安全检查误报 | “安全检查阻止了合法的读取操作” |
| 缓存机会 | “同一对象读取了 4 次 — 服务应提示使用 SAPContext 缓存” |
3c. 针对用户(工作流改进)
针对用户工作流的建议:
- “为实时用法查询提供对象类型,避免额外的解析调用”
- “修改对象之前,先使用 explain-abap-code 技能了解对象”
- “尽可能提供对象类型,以避免搜索往返调用”
3d. 交付分流(快速见效项与计划工作)
对于每条建议,明确分类其交付范围:
| 类别 | 定义 |
|---|---|
| 快速见效项(本次会话) | 风险较低的提示词/技能/文档调整,无需新增后端基础能力即可立即实施 |
| 需要规划和实施阶段 | 需要更改代码、新增 ADT 集成、更新 schema/工具契约,或进行实时 SAP 回归测试 |
输出两个列表:
- 立即执行的快速见效项(按影响力排序)
- 计划事项(归入最少数量的实施计划)
此分流部分在 issue 和 internal 输出中为必填项。
第 4 阶段:生成报告
格式:issue(默认 — 可直接用于 GitHub Issue)
生成一份适合创建 GitHub issue 的报告。使用此模板:
## Session Analysis: <brief goal description>
### Goal
<1-2 sentences: what the user was trying to accomplish>
### Approach Summary
<3-5 bullet points: high-level steps taken>
### Tool Call Statistics
- Total calls: N
- Successful: N (N%)
- Failed: N (N%)
- Redundant/unnecessary: N (N%)
- Tools used: SAPRead (N), SAPSearch (N), SAPWrite (N), ...
### What Worked Well
- <bullet points of effective strategies>
### What Didn't Work
- <bullet points with error classification>
- **Error**: <redacted error summary>
- **Root cause**: <analysis>
- **Better approach**: <suggestion>
### Suggested ARC-1 Improvements
#### <Improvement 1 Title>
**Category**: Missing operation | Poor error message | Missing parameter | ...
**Severity**: blocker | major | minor | enhancement
**Description**: <what should change and why>
**Reproduction**: <generic steps, NO sensitive data>
#### <Improvement 2 Title>
...
### Delivery Triage
- **Quick Wins (this chat):**
- <item>
- **Needs Plan + Implementation Phase:**
- <item>
- <item>
### Prompt Strategy Recommendations
- <numbered list of approach improvements for future sessions>
---
*Generated by analyze-chat-session skill. **Review for sensitive data before sharing.***
格式:internal(详细的内部评审)
与 issue 格式相同,但还包括:
- 完整的工具调用目录表(参数已删减)
- 每次调用的 Token 用量估算
- 调用流程的时序图
- 详细的反模式分析,并注明具体轮次
格式:summary(简要)
用一个段落总结:目标、结果、效果最好的 2 项、效果最差的 2 项,以及影响最大的一条改进建议。
第 5 阶段:提供后续选项
呈现报告后,提供以下选项:
- “创建 GitHub issue?” — 针对每项 ARC-1 改进建议,提出起草 GitHub issue 正文(发布前仍需用户审核)
- “深入了解某项发现?” — 深入探讨某个具体问题
- “重试失败的方案?” — 如果分析揭示了更好的策略,提出现在尝试该策略
- “保存为技能反馈?” — 如果分析揭示了应纳入技能的模式,提出更新相关的
.claude/commands/*.md文件
参考:ARC-1 工具能力速查
使用此参考评估 LLM 是否使用了合适的工具。这是常见目标与最佳工具用法的简明对应表。
读取操作(SAPRead)
| 对象类型 | 关键参数 | 备注 |
|---|---|---|
| CLAS | format=structured(元数据 + 所有 include),method="*"(列出方法),method="name"(单个方法源码),include=testclasses|definitions|implementations|macros | 初次读取时始终优先使用 format=structured |
| DDLS | include=elements(字段列表) | 字段列表对于理解 CDS 视图至关重要 |
| FUNC | group=<FUGR>(未缓存时必填),expand_includes=true(完整的组源码) | 解析组是常见的失败点 |
| SRVB | 返回解析后的绑定信息 | 不是原始 DDL |
| TABLE_CONTENTS | maxRows、sqlFilter | 数据预览 — 受 blockData 安全限制 |
搜索(SAPSearch)
searchType=object— 按名称/通配符搜索searchType=source_code— 全文搜索(某些系统可能不可用)
写入顺序
- 先读取(了解当前状态)
SAPWrite action=create或action=update或action=edit_methodSAPActivate(单个或使用objects[]批量激活)- 使用
SAPDiagnose action=syntax或action=unittest验证
上下文与导航
SAPContext action=deps— 依赖关系图(优先于手动读取)SAPContext action=usages— 来自 SAP 的实时反向依赖SAPNavigate action=definition— 跳转到定义(需要 URI、行/列和源代码)SAPNavigate action=references— 使用位置
常见错误恢复路径
| 错误 | 恢复方法 |
|---|---|
| 404 Not Found | → 使用 SAPSearch 验证名称/类型 |
| FUNC without group | → 使用 SAPSearch 搜索函数名称,从结果中提取组 |
| BTP type not supported | → 检查错误中的 BTP_HINTS,使用等效云类型 |
| Source search unavailable | → 改用 SAPQuery 或对象搜索 |
| SAPContext usages fails | → 使用 SAPNavigate references 作为备用方案 |
| Activation fails | → 阅读激活错误,修复源代码后重试 |
| Lock conflict | → 对象已被其他用户锁定,请等待或使用其他对象 |
错误处理
| 情况 | 处理方式 |
|---|---|
| 会话非常短(少于 3 次工具调用) | 生成简要摘要,并指出数据有限会降低分析的实用性 |
| 会话中没有工具调用 | 报告未检测到 MCP 工具使用;建议在执行 SAP 操作的会话中使用此技能 |
| 所有调用均成功 | 着重报告效率和优化机会 |
| 所有调用均失败 | 着重分析根本原因,以及当前能力是否足以实现目标 |
| 结果不一 | 进行完整分析,重点关注失败→恢复模式 |
| 会话使用了非 ARC-1 工具 | 将这些工具单独列出;ARC-1 分析重点放在与 SAP 相关的调用上 |
说明
何时使用此技能
- 在复杂的调试或开发会话之后
- 通过反复尝试发现新的工具使用模式时
- 多种方法均告失败且希望记录经验时
- 准备 ARC-1 改进反馈时
- 入门时希望总结学习模式时
此技能不会做什么
- 不会自动创建问题 — 它会起草问题内容,但用户必须审核并创建
- 不访问系统 — 此技能只读取聊天记录,不会调用任何 MCP 工具
- 不进行跨会话分析 — 每次只分析一段对话
- 不进行实时监控 — 这是事后分析,而非实时仪表板