| name | experiment-log |
| description | 实验日志自动整理工具。自动捕获 Claude Code Session 中的对话内容,识别实验意图并记录。支持自动模式和手动模式。 |
实验日志工具
这个技能用于自动捕获和记录代码实验的问题探索过程,形成可追溯的树状实验日志。
核心特性
- 自动捕获:后台守护进程自动监控 Claude Code 对话历史
- 意图识别:自动识别实验意图(新问题、尝试、成功、失败等)
- 自动记录:无需手动触发,自动生成实验树
- 手动补充:支持斜杠命令和自然语言手动记录
使用场景
- 用户需要排查复杂问题时
- 用户需要尝试多种方案对比时
- 用户希望自动记录实验过程以便回顾时
- 用户需要生成实验报告时
自动模式(推荐)
启动自动记录守护进程
在终端中运行:
exp-log daemon start
exp-log daemon status
exp-log daemon stop
自动记录如何工作
- 守护进程监控
~/.claude/history.jsonl 文件
- 当检测到新的用户消息时,自动分析意图
- 根据意图类型自动创建/更新实验记录
- 实验数据保存在项目根目录下的
.experiment_logs/ 目录
自动识别的意图类型
| 意图类型 | 触发词示例 | 自动操作 |
|---|
| 新实验 | "帮我解决..."、"优化..."、"how to..." | 创建新实验根节点 |
| 尝试 | "试试..."、"用...方法"、"try using..." | 添加尝试子节点 |
| 分支 | "换个方法..."、"另一种方案..." | 添加并行尝试节点 |
| 成功 | "搞定了"、"成功了"、"it works!" | 标记当前尝试为成功 |
| 失败 | "不行"、"报错"、"failed" | 标记当前尝试为失败 |
| 放弃 | "算了"、"放弃"、"give up" | 标记当前尝试为放弃 |
自动记录示例
用户对话:
User: 帮我优化数据库查询性能
→ 📝 自动创建实验: "优化数据库查询性能"
问题: 数据库查询性能
可能操作: [自动提取]
User: 试试在 users 表添加索引,或者用 Redis 缓存
→ 🔬 自动记录尝试: "添加索引"
当前操作: 在 users 表添加索引
可能操作: 添加索引, Redis 缓存
User: 不行,查询还是很慢,报错:timeout exceeded
→ ❌ 自动记录结果: 失败
错误信息: timeout exceeded
User: 换个方法,试试 Redis 缓存
→ 🔀 自动记录分支尝试: "Redis 缓存"
当前操作: Redis 缓存
User: 搞定了!响应时间降了80%
→ ✅ 自动记录结果: 成功
记录的结构化信息
每个实验节点自动记录以下详细信息:
| 字段 | 说明 | 提取方式 |
|---|
problem_context | 当前问题上下文 | 从消息中智能提取 |
possible_actions | 可能的操作列表 | 识别列表、枚举词 |
current_action | 当前执行的操作 | 识别"试试"、"用"等动词后的内容 |
error_info | 错误信息 | 识别"报错"、"Error:"等 |
code_snippets | 代码片段 | 提取 ``` 代码块 |
files_involved | 涉及的文件 | 识别文件路径模式 |
手动模式
斜杠命令
| 命令 | 用途 | 示例 |
|---|
/explore [问题] | 启动新实验或查看当前实验 | /explore 解决性能问题 |
/try <描述> | 记录新的尝试 | /try 使用Redis缓存 |
/result <状态> [描述] | 记录尝试结果 | /result success 快了10倍 |
/tree | 查看实验树结构 | /tree |
/exp-status | 查看实验状态 | /exp-status |
/back | 回退到父节点 | /back |
/jump <节点ID> | 跳转到指定节点 | /jump a1b2c3d4 |
/log-list | 列出所有实验 | /log-list |
/log-export | 导出实验报告 | /log-export |
/log-close | 结束当前实验 | /log-close |
自然语言触发
用户也可以使用自然语言与技能交互:
| 意图 | 触发词示例 |
|---|
| 启动实验 | "启动实验,解决性能问题" |
| 记录尝试 | "尝试使用Redis缓存方案" |
| 记录结果 | "这次成功了"、"尝试失败" |
| 查看树 | "查看实验树" |
| 导出报告 | "导出实验报告" |
| 结束实验 | "关闭实验" |
完整工作流程
自动模式流程(推荐)
-
启动守护进程:
exp-log daemon start
-
正常与 Claude 对话:守护进程自动捕获并记录
-
查看实验进度:
/tree
-
导出报告:
/log-export
手动模式流程
-
启动实验:描述要解决的问题
/explore 优化数据库查询性能
-
记录尝试:尝试各种解决方案
/try 添加索引
/result failed 没有明显改善
/back
/try 使用Redis缓存
/result success 响应时间降低80%
-
查看进度:随时查看实验树
/tree
-
导出报告:生成 Markdown 报告
/log-export
-
结束实验:标记完成
/log-close
数据存储
实验数据存储在项目根目录下的 .experiment_logs/ 目录:
your-project/
├── .experiment_logs/
│ ├── <exp_id>/ # 每个实验一个目录
│ │ ├── experiment.json # 实验数据
│ │ └── *.bak.json # 备份文件
│ ├── daemon.pid # 守护进程 PID
│ ├── daemon.log # 守护进程日志
│ └── daemon_state.json # 守护进程状态
├── .git/
└── ...
项目根目录通过查找 .git、pyproject.toml 等标记文件自动识别。
示例输出
实验树结构(增强版)
[P] 优化数据库查询性能 [⏳]
└─ 问题: 数据库查询响应时间过长
└─ 可能操作: 添加索引, Redis 缓存, SQL 优化
└─ 当前操作: 添加索引
├── [A] 添加索引 [❌]
│ └─ 当前操作: 在 users 表添加索引
│ └─ 错误: timeout exceeded
│ └─ 结果: 查询还是很慢
└── [A] Redis 缓存 [✅] <-- current
└─ 当前操作: 使用 Redis 缓存热点数据
└─ 结果: 响应时间降低80%
实验详情示例
实验 ID: a1b2c3d4
问题: 优化数据库查询性能
节点详情:
[a1b2c3] 根节点
问题上下文: 数据库查询响应时间过长,需要优化
可能操作:
1. 添加数据库索引
2. 使用 Redis 缓存
3. 优化 SQL 查询语句
[e5f6g7h] 尝试: 添加索引
当前操作: 在 users 表的 name 字段添加索引
执行结果: 失败
错误信息: Query timeout exceeded
涉及文件: models/user.py, db/migrations/
[i9j0k1l] 尝试: Redis 缓存
当前操作: 使用 Redis 缓存热点数据
执行结果: 成功
涉及文件: cache/redis_client.py, services/user_service.py
导出报告格式
导出的 Markdown 报告包含:
注意事项
自动模式
- 守护进程需要在后台运行才能自动捕获对话
- 意图识别基于关键词匹配,可配置置信度阈值
- 实验数据保存在项目根目录的
.experiment_logs/ 目录
- 守护进程的 PID 和状态文件也在该目录下
手动模式
- 每次只能有一个活动实验
- 使用
/back 可以回到父节点继续尝试其他方案
- 使用
--branch 参数创建并行尝试:/try 新方案 --branch
通用
- 实验数据自动保存,重启后可继续
- 支持中英文混合意图识别
- 可通过 CLI 工具管理实验:
exp-log --help