analyze-patterns.zh-CN

Analyze operation logs to identify reusable skills and patterns across sessions.

分析 ~/.claude/tool_logs/operations.jsonl 操作日志,识别跨会话的重复模式,并自动生成可复用的 Skills。

步骤

1. 读取日志

读取 ~/.claude/tool_logs/operations.jsonl。如果文件不存在或为空,告知用户"日志还在积累中——使用几次会话后再试"并停止。如果超过 3000 行,只读取最近的 3000 行。跳过任何格式错误的行(并发写入或日志轮转可能导致不完整的 JSON)——不要因此失败。

2. 统计概览

提供基本统计信息:

  • 总记录数、会话数(不同的 sid)、时间跨度
  • 工具使用频率 TOP 5
  • 最常见的 10 个 Bash 命令(提取 input.command 字段)
  • 最常见的 5 个工作目录(cwd 字段)

3. 扫描已有技能

在检测模式之前,读取 ~/.claude/commands/ 中所有 .md 文件,了解已有哪些技能。对每个文件记录:

  • 文件名(技能名称)
  • 功能描述(用途/工作流)
  • 覆盖的关键操作(如具体命令、服务、主机等)

将此清单保留在内存中,供后续步骤对比使用。

4. 模式检测

sid(会话 ID)分组,在不同会话中寻找以下重复模式:

A. 重复命令

  • 在 >= 3 个不同会话中出现的相同或高度相似的 Bash 命令
  • 结构相同但参数不同的命令(如 ssh host "cd /opt/X && ..." 其中 X 不同)

B. 命令序列

  • 经常一起出现的 2-5 个操作组合(如 编辑配置 → 构建 → 部署 → 查看日志)
  • 固定顺序的工具调用链

C. 工作流模式

  • 部署流程:rsync/scp + ssh 重启 + 日志检查
  • 调试流程:grep 错误 → 读取文件 → 修改 → 测试
  • 数据管道:采集 → 处理 → 训练 → 评估

忽略:

  • 只在 1-2 个会话中出现的操作(如果总会话数少于 3 个,将阈值降低为 2)
  • 孤立的探索性操作(单独的 Read、Glob、Grep)
  • 来自当前分析会话本身的操作

5. 输出建议

对每个识别到的模式,先与步骤 3 中扫描的已有技能清单进行对比

  • 已覆盖:如果已有技能已经完整处理了该模式(相同操作、相同目标),直接跳过——不要建议创建
  • 部分重叠:如果已有技能覆盖了类似操作但范围或目标不同(如已有技能部署服务 A,新模式用相同步骤部署服务 B),建议更新已有技能使其更通用/参数化,而不是创建新技能。展示对已有技能的修改差异或建议变更
  • 全新模式:如果没有已有技能覆盖该模式,建议创建新技能

对每个建议,输出:

### 模式:<模式名称>
- **重叠度**:[无 / 与 `<已有技能>.md` 部分重叠 / 已被 `<已有技能>.md` 完全覆盖]
- **建议操作**:[创建新技能 / 更新已有 `<技能>.md` / 跳过(已存在)]
- **频率**:出现在 N 个会话中
- **典型步骤**:描述具体步骤
- **可参数化部分**:每次变化的部分,可替换为 $ARGUMENTS
- **建议技能文件名**:<name>.md
- **建议技能内容**:
(展示完整的 .md 文件内容,或展示对已有技能的修改建议)

6. 创建技能

展示所有建议后,询问用户要创建或更新哪些。确认后:

  • 新技能:将 .md 文件写入 ~/.claude/commands/
  • 更新已有技能:修改已有的 .md 文件
  • 告知用户可以通过 /<技能名> 调用

7. 日志维护

如果日志超过 50000 行,建议清理(保留最近 30000 行)。用户确认后执行清理。

注意事项

  • 生成的技能使用 $ARGUMENTS 接收用户提供的参数
  • 技能内容应该是给 Claude 的清晰指令,而不是 shell 脚本
  • 优先识别高价值模式(自动化后节省时间最多的操作)
  • 如果未找到任何模式,解释可能的原因(会话太少、工作内容差异大等),建议用户继续使用 Claude Code 积累更多会话后再次运行