mcpField
A
analyze-chat-session

analyze-chat-session

github.com/arc-mcpAgent 工作流239250 次安装2 天前更新
代码仓库

关于 analyze-chat-session

此技能分析当前或指定对话中的工具调用、响应、错误和操作方式,并生成结构化反馈,面向改进 MCP 工具使用与 ARC-1 能力的团队。它会主动删除敏感信息,并按不同输出格式整理发现和改进建议。

主要功能

  1. 01梳理会话目标与工具调用
  2. 02识别冗余操作和恢复模式
  3. 03提出提示词、服务器及工作流改进建议
  4. 04生成 issue、internal 或 summary 报告
  5. 05对敏感信息进行脱敏

适用场景

  1. 01复盘 MCP 工具调用中的失败与低效
  2. 02为 ARC-1 整理可提交的问题建议
  3. 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 回归测试

输出两个列表:

  1. 立即执行的快速见效项(按影响力排序)
  2. 计划事项(归入最少数量的实施计划)

此分流部分在 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 阶段:提供后续选项

呈现报告后,提供以下选项:

  1. “创建 GitHub issue?” — 针对每项 ARC-1 改进建议,提出起草 GitHub issue 正文(发布前仍需用户审核)
  2. “深入了解某项发现?” — 深入探讨某个具体问题
  3. “重试失败的方案?” — 如果分析揭示了更好的策略,提出现在尝试该策略
  4. “保存为技能反馈?” — 如果分析揭示了应纳入技能的模式,提出更新相关的 .claude/commands/*.md 文件

参考:ARC-1 工具能力速查

使用此参考评估 LLM 是否使用了合适的工具。这是常见目标与最佳工具用法的简明对应表。

读取操作(SAPRead)
对象类型关键参数备注
CLASformat=structured(元数据 + 所有 include),method="*"(列出方法),method="name"(单个方法源码),include=testclasses|definitions|implementations|macros初次读取时始终优先使用 format=structured
DDLSinclude=elements(字段列表)字段列表对于理解 CDS 视图至关重要
FUNCgroup=<FUGR>(未缓存时必填),expand_includes=true(完整的组源码)解析组是常见的失败点
SRVB返回解析后的绑定信息不是原始 DDL
TABLE_CONTENTSmaxRows、sqlFilter数据预览 — 受 blockData 安全限制
搜索(SAPSearch)
  • searchType=object — 按名称/通配符搜索
  • searchType=source_code — 全文搜索(某些系统可能不可用)
写入顺序
  1. 先读取(了解当前状态)
  2. SAPWrite action=create 或 action=update 或 action=edit_method
  3. SAPActivate(单个或使用 objects[] 批量激活)
  4. 使用 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 工具
  • 不进行跨会话分析 — 每次只分析一段对话
  • 不进行实时监控 — 这是事后分析,而非实时仪表板

评论

支持 Markdown