mcpField
R
ruminate

ruminate

github.com/potetoAgent 工作流564219 次安装32 周前更新
代码仓库

关于 ruminate

ruminate 是从 Claude 和 Codex 的历史对话中提取值得记录的知识的 Agent 技能,并与 reflect、meditate 配合使用。它通过并行分析、频率与影响筛选及现有内容去重,整理候选发现供用户审阅。

主要功能

  1. 01提取 Claude 和 Codex 对话
  2. 02并行分析分批对话记录
  3. 03识别偏好、技术经验与工作模式
  4. 04按频率和影响筛选发现
  5. 05去重并提交用户审阅

适用场景

  1. 01从历史对话补充脑库内容
  2. 02发现反复出现的用户偏好
  3. 03记录代码库特有的经验和注意事项
  4. 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. 定位对话

找到两个提供方的根目录:

  1. Claude 项目目录: ~/.claude/projects/-<cwd-with-dashes-replacing-slashes>/
  2. 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,不要让它们闲置。

评论

支持 Markdown