关于 ruminate
ruminate 是从 Claude 和 Codex 的历史对话中提取值得记录的知识的 Agent 技能,并与 reflect、meditate 配合使用。它通过并行分析、频率与影响筛选及现有内容去重,整理候选发现供用户审阅。
主要功能
- 01提取 Claude 和 Codex 对话
- 02并行分析分批对话记录
- 03识别偏好、技术经验与工作模式
- 04按频率和影响筛选发现
- 05去重并提交用户审阅
适用场景
- 01从历史对话补充脑库内容
- 02发现反复出现的用户偏好
- 03记录代码库特有的经验和注意事项
- 04检查并修正脑库中的过时信息
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ poteto/ noodle --skill ruminate安装后在 Claude Code 中输入/ruminate确认已加载。
附带文件scripts/extract-conversations.py
详细介绍
Ruminate
从对话历史中挖掘值得纳入知识库、却从未记录的知识。它通过查看两个提供方的完整过往对话档案,与 reflect(当前会话)和 meditate(知识库审查)互为补充。
流程
使用 Tasks 跟踪进度。 为以下每个步骤创建一个任务(TaskCreate),开始时将其标记为 in_progress,完成后标记为 completed(TaskUpdate)。每个步骤完成后检查 TaskList。
1. 读取知识库
构建知识库快照:sh .claude/skills/meditate/scripts/snapshot.sh brain/ /tmp/brain-snapshot-ruminate.md。将快照路径传递给每个分析 Agent。这样可以避免将完整知识库加载到 ruminate 编排器的上下文中。
2. 定位对话
找到两个提供方的根目录:
- Claude 项目目录:
~/.claude/projects/-<cwd-with-dashes-replacing-slashes>/ - Codex 会话根目录:
~/.codex/sessions/
例如,/Users/lauren/code/noodle 对应 Claude 的
~/.claude/projects/-Users-lauren-code-noodle/,Codex 则使用 ~/.codex/sessions/。
3. 提取对话
运行提取脚本,解析两种 JSONL 格式并将内容拆分为多个批次:
SKILL_DIR="$(dirname "$(realpath "$0")")/.." # adjust path as needed
CLAUDE_DIR="$HOME/.claude/projects/-<project-slug>"
CODEX_DIR="$HOME/.codex/sessions"
OUT_DIR="/tmp/ruminate-$(date +%s)"
python3 "$SKILL_DIR/scripts/extract-conversations.py" "$OUT_DIR" \
--claude-dir "$CLAUDE_DIR" \
--codex-dir "$CODEX_DIR" \
--cwd "$PWD" \
--batches N
根据提取出的对话总数(Claude + Codex)选择 N:约每 20 段对话分为 1 个批次,最少 2 个,最多 10 个。
4. 组建分析团队
创建一个 Agent 团队(TeamCreate),包含 N 个 Agent(每个批次对应一个,与步骤 3 中的批次数相同),每个 Agent 的 subagent_type: general-purpose,model: opus。并行运行全部 N 个 Agent。
每个 Agent 的提示词应包括:
- 批次清单路径(
$OUT_DIR/batches/batch_N.txt) - 输出路径(
$OUT_DIR/findings_N.md) - 知识库中已记录的主题列表(根据步骤 1 汇总),以便 Agent 跳过已知知识
- 提醒:每个提取文件都包含提供方/来源元数据标头(
[PROVIDER]、[CWD]、[SOURCE_FILE]),应将其作为证据上下文 - 要求从每段对话中提取:
- 用户纠正:用户纠正助手的方法、代码或理解的情况
- 反复出现的偏好:用户明确提出或反复表示反对的事项
- 技术经验:特定代码库的知识、注意事项和发现的模式
- 工作流模式:用户偏好的工作方式
- 挫折点:摩擦、无谓的工作、出错之处
- 期望的技能:用户表示希望具备的能力
Agent 将结构化发现写入各自的输出文件。
5. 综合整理
所有 Agent 完成后,读取所有发现文件。与现有知识库内容交叉核对,并对不同批次的内容去重。
按频率和影响筛选。 大多数发现都不值得添加。提交之前应用以下筛选条件:
- 频率:这一点是否出现在多段对话中?或者用户是否反复纠正同一个错误?一次性的纠正通常不值得写入知识库——知识库应该记录模式,而非个例。
- 事实准确性:知识库中是否有内容已经过时或错误?(例如,某项规则已停用,但知识库仍将其记录为启用。)无论频率如何,这类内容都值得修正。
- 影响:如果不记录这一点,是否会导致未来会话反复浪费时间?一次耗费 5 分钟的注意事项影响较小;导致 3 轮纠正的模式影响较大。
严格筛除。 与其提交 9 条夹杂噪声的发现,不如提交 3 条信号强的发现。如果某项发现只出现过一次,且不属于事实修正,就跳过。
6. 展示并应用
用包含以下列的表格向用户展示发现:发现、频率/证据和建议操作。诚实说明哪些发现只是个例、哪些是反复出现的模式,让用户决定是否值得添加。
将技能专属的经验归入对应技能。 检查是否有发现涉及特定技能的工作方式,包括流程、提示词、边缘情况或故障排除。直接更新该技能的 SKILL.md 或 references/。先阅读技能内容,避免重复或与现有内容矛盾。
仅应用用户批准的更改。遵循 brain 的编写规范:
- 每个文件只讨论一个主题,并按目录组织
- 使用
[[wikilinks]]关联相关笔记 - 完成所有更改后更新
brain/index.md - 默认更新现有笔记,而不是创建新笔记
7. 清理
删除临时提取目录:
rm -rf "$OUT_DIR"
指南
- 严格筛选。 大多数对话的信号较弱,可能是自动化任务、简单交流或已记录的知识。只提取真正新颖且有影响的内容。
- 优先精简。 如果某项发现只是现有 brain 原则的特殊情况,就更新现有笔记,而不是创建新笔记。
- 引用用户原话。 如果某项发现源自用户的直接纠正,请附上用户原话和源文件路径;它们最能体现用户关注的重点。
- 分析完成后关闭 Agent,不要让它们闲置。