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.md
source content

实验日志工具

这个技能用于自动捕获和记录代码实验的问题探索过程,形成可追溯的树状实验日志。

核心特性

  • 自动捕获:后台守护进程自动监控 Claude Code 对话历史
  • 意图识别:自动识别实验意图(新问题、尝试、成功、失败等)
  • 自动记录:无需手动触发,自动生成实验树
  • 手动补充:支持斜杠命令和自然语言手动记录

使用场景

  • 用户需要排查复杂问题时
  • 用户需要尝试多种方案对比时
  • 用户希望自动记录实验过程以便回顾时
  • 用户需要生成实验报告时

自动模式(推荐)

启动自动记录守护进程

在终端中运行:

# 启动后台守护进程
exp-log daemon start

# 查看守护进程状态
exp-log daemon status

# 停止守护进程
exp-log daemon stop

自动记录如何工作

  1. 守护进程监控
    ~/.claude/history.jsonl
    文件
  2. 当检测到新的用户消息时,自动分析意图
  3. 根据意图类型自动创建/更新实验记录
  4. 实验数据保存在项目根目录下的
    .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缓存方案"
记录结果"这次成功了"、"尝试失败"
查看树"查看实验树"
导出报告"导出实验报告"
结束实验"关闭实验"

完整工作流程

自动模式流程(推荐)

  1. 启动守护进程

    exp-log daemon start
    
  2. 正常与 Claude 对话:守护进程自动捕获并记录

  3. 查看实验进度

    /tree
    
  4. 导出报告

    /log-export
    

手动模式流程

  1. 启动实验:描述要解决的问题

    /explore 优化数据库查询性能
    
  2. 记录尝试:尝试各种解决方案

    /try 添加索引
    /result failed 没有明显改善
    
    /back
    /try 使用Redis缓存
    /result success 响应时间降低80%
    
  3. 查看进度:随时查看实验树

    /tree
    
  4. 导出报告:生成 Markdown 报告

    /log-export
    
  5. 结束实验:标记完成

    /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 报告包含:

  • 问题概述
  • 尝试路径
  • 结果统计
  • 详细记录

注意事项

自动模式

  1. 守护进程需要在后台运行才能自动捕获对话
  2. 意图识别基于关键词匹配,可配置置信度阈值
  3. 实验数据保存在项目根目录的
    .experiment_logs/
    目录
  4. 守护进程的 PID 和状态文件也在该目录下

手动模式

  1. 每次只能有一个活动实验
  2. 使用
    /back
    可以回到父节点继续尝试其他方案
  3. 使用
    --branch
    参数创建并行尝试:
    /try 新方案 --branch

通用

  1. 实验数据自动保存,重启后可继续
  2. 支持中英文混合意图识别
  3. 可通过 CLI 工具管理实验:
    exp-log --help