mcpField
R
ruminate

ruminate

github.com/potetoエージェントワークフロー564219 回インストール32 週間前に更新
リポジトリ

ruminate について

ruminateは、ClaudeとCodexの過去の会話から記録価値のある知見を抽出するエージェントスキルで、reflectやmeditateを補完します。会話を並列分析し、頻度と影響で絞り込んで重複を除き、候補を確認用に提示します。

主な機能

  1. 01Claudeと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。各分析エージェントにスナップショットのパスを渡します。これにより、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. 分析チームを起動する

N人のエージェント(各バッチに1人、ステップ3のバッチ数に合わせる)でエージェントチーム(TeamCreate)を作成します。それぞれsubagent_type: general-purposeおよびmodel: opusを指定します。N人すべてを並列で実行します。

各エージェントへのプロンプトには、以下を含めます。

  • バッチのマニフェストパス($OUT_DIR/batches/batch_N.txt)
  • 出力パス($OUT_DIR/findings_N.md)
  • 脳にすでに記録されているトピックの一覧(ステップ1でまとめたもの)。エージェントが既知の知識を除外できるようにします
  • 抽出された各ファイルにはプロバイダー/ソースのメタデータヘッダー([PROVIDER]、[CWD]、[SOURCE_FILE])が含まれており、証拠のコンテキストとして使用するよう注意を促すリマインダー
  • 各会話から以下を抽出する指示:
    • ユーザーによる訂正:ユーザーがアシスタントの進め方、コード、または理解を訂正した箇所
    • 繰り返し現れる好み:ユーザーが明示的に求めたこと、または繰り返し異議を唱えたこと
    • 技術的な学び:コードベース固有の知識、注意点、発見したパターン
    • 作業パターン:ユーザーが好む作業の進め方
    • 不満:問題点、無駄な作業、うまくいかなかったこと
    • 求められたスキル:ユーザーが必要だと表明した機能

エージェントは、構造化された調査結果を出力ファイルに書き込みます。

5. 統合する

すべてのエージェントが完了したら、調査結果ファイルをすべて読みます。既存の脳の内容と照合し、バッチ間で重複を除去します。

頻度と影響度で絞り込みます。 調査結果の大半は追加する価値がありません。提示する前に、以下の基準で絞り込みます。

  • 頻度:複数の会話で話題になったか、ユーザーが同じ間違いを繰り返し訂正していたか。一度きりの訂正は、通常、脳に記録する価値はありません。脳には個別の出来事ではなく、パターンを記録します。
  • 事実の正確性:脳に記録された内容が、現在誤っていないか。(例:ルールが無効になったのに、脳には有効と記載されている。)これは頻度にかかわらず、常に修正する価値があります。
  • 影響度:これを記録しなければ、今後のセッションで同じ無駄な作業が繰り返されるか。一度5分かかった注意点は影響度が低く、3回にわたる訂正を招いたパターンは影響度が高いです。

積極的に除外します。 ノイズを含む9件より、重要度の高い3件を提示するほうが適切です。一度しか起きておらず、事実の訂正でもない調査結果は除外します。

6. 提示して適用する

調査結果を、finding、frequency/evidence、proposed action の列を含む表にまとめてユーザーに提示します。各調査結果が単発のものか、繰り返し見られる傾向なのかを正直に示します。何を追加する価値があるかは、ユーザーに判断してもらいます。

スキル固有の学びは該当するスキルに反映します。 特定のスキルの進め方、プロンプト、エッジケース、トラブルシューティングに関する調査結果があるか確認します。該当する場合は、スキルの SKILL.md または references/ を直接更新します。既存の内容との重複や矛盾を避けるため、まずスキルを読みます。

ユーザーが承認した変更のみ適用します。brain の記述規約に従います。

  • 1 ファイルにつき 1 つのトピックとし、ディレクトリに整理します
  • [[wikilinks]] を使って関連するノートをつなぎます
  • すべての変更後に brain/index.md を更新します
  • 新しいノートの作成より、既存のノートの更新を優先します
7. クリーンアップする

一時的な抽出ディレクトリを削除します。

rm -rf "$OUT_DIR"

ガイドライン

  • 厳選します。 会話の大半は、シグナルが弱いものです。自動タスク、些細なやり取り、すでに記録されている知識などです。本当に新しく、影響のある内容だけを取り上げます。
  • 既存の内容を優先して更新します。 調査結果が既存の脳の原則における特殊ケースである場合は、新しいノートを作成せず、既存のノートを更新します。
  • ユーザーの言葉を引用します。 調査結果がユーザーによる直接の修正に基づく場合は、ユーザーの言葉とソースファイルのパスを含めます。何が重要かを示す最も強いシグナルとなるためです。
  • 分析が完了したらエージェントを終了します。 アイドル状態のまま残さないでください。

コメント