Experiment-log-skill experiment-log
实验日志自动整理工具。自动捕获 Claude Code Session 中的对话内容,识别实验意图并记录。支持自动模式和手动模式。
install
source · Clone the upstream repo
git clone https://github.com/pengkangzhen/experiment-log-skill
Claude Code · Install into ~/.claude/skills/
git clone --depth=1 https://github.com/pengkangzhen/experiment-log-skill ~/.claude/skills/pengkangzhen-experiment-log-skill-experiment-log
manifest:
SKILL.mdsource content
实验日志工具
这个技能用于自动捕获和记录代码实验的问题探索过程,形成可追溯的树状实验日志。
核心特性
- 自动捕获:后台守护进程自动监控 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% → ✅ 自动记录结果: 成功
记录的结构化信息
每个实验节点自动记录以下详细信息:
| 字段 | 说明 | 提取方式 |
|---|---|---|
| 当前问题上下文 | 从消息中智能提取 |
| 可能的操作列表 | 识别列表、枚举词 |
| 当前执行的操作 | 识别"试试"、"用"等动词后的内容 |
| 错误信息 | 识别"报错"、"Error:"等 |
| 代码片段 | 提取 ``` 代码块 |
| 涉及的文件 | 识别文件路径模式 |
手动模式
斜杠命令
| 命令 | 用途 | 示例 |
|---|---|---|
| 启动新实验或查看当前实验 | |
| 记录新的尝试 | |
| 记录尝试结果 | |
| 查看实验树结构 | |
| 查看实验状态 | |
| 回退到父节点 | |
| 跳转到指定节点 | |
| 列出所有实验 | |
| 导出实验报告 | |
| 结束当前实验 | |
自然语言触发
用户也可以使用自然语言与技能交互:
| 意图 | 触发词示例 |
|---|---|
| 启动实验 | "启动实验,解决性能问题" |
| 记录尝试 | "尝试使用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