mcpField
O
opencode-conversation-analysis

opencode-conversation-analysis

github.com/connoradsエージェントワークフロー1892 回インストール2 日前に更新
リポジトリ

opencode-conversation-analysis について

opencode-conversation-analysis は、OpenCode のセッション内のユーザーメッセージを調べ、コーディングエージェントへの指示に見られる反復的なテーマや傾向を探るスキルです。メッセージを抽出・分割し、並列のサブエージェントで分析した後、Markdown レポートにまとめます。

主な機能

  1. 01OpenCode セッションのメッセージ抽出
  2. 02分析用データの分割
  3. 03サブエージェントによる並列分析
  4. 04テーマと例の統合
  5. 05Markdown レポートの出力

活用シーン

  1. 01コーディングセッションでの定番のフィードバックを確認
  2. 02依頼の具体化や範囲設定の傾向を把握
  3. 03コミュニケーションの好みや修正方法を分析

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/connorads/dotfiles --skill opencode-conversation-analysis

インストール後、Claude Code で/opencode-conversation-analysisを入力して読み込まれたか確認します。

同梱ファイルreferences/storage-format.mdscripts/extract.sh

詳細

会話分析

OpenCode セッションのユーザーメッセージを分析し、繰り返し現れるテーマ、コミュニケーションパターン、指示の調整方法を特定します。

重要なルール

  1. チャンクファイルを直接 cat したり読み込んだりしないでください。サイズが非常に大きく、コンテキストを圧迫します
  2. ファイルパスをサブエージェントに渡してください。各サブエージェントが独自に読み込んで分析します
  3. 並列サブエージェントを使用してください。チャンクごとに1つ起動し、同時に実行します
  4. サブエージェントからは構造化 JSON を受け取ります。最後に結果を統合します

ワークフロー

ステップ 1:抽出の実行
~/.agents/skills/opencode-conversation-analysis/scripts/extract.sh

このスクリプトは次の処理を行います。

  • 利用可能な場合、~/.local/share/opencode/opencode.db(SQLite)から読み込みます
  • 古い OpenCode のインストールでは、~/.local/share/opencode/storage/ にフォールバックします
  • メタデータ(session_id、title、timestamp、text)とともに、メインセッションからユーザーメッセージを抽出します
  • 10 文字未満のメッセージを除外します
  • 約 320k 文字(各約 80k トークン)のファイルにチャンク分割します
  • /tmp/opencode-analysis/chunk_*.jsonl に出力します

出力の概要を確認し、作成されたチャンクの数を確認します。

ステップ 2:並列サブエージェントの起動

各チャンクファイルについて、次のプロンプトテンプレートを使って general サブエージェントを起動します。

Read the file /tmp/opencode-analysis/chunk_N.jsonl which contains user messages from coding sessions (JSONL format with fields: session_id, session_title, timestamp, text).

Analyze these messages to identify recurring themes in how the user steers/guides AI coding assistants. Look for patterns like:
- How they give feedback
- How they correct mistakes
- How they scope/refine requests
- Communication style preferences
- Technical approaches they emphasize

For each theme you identify, provide:
1. Theme name (short, descriptive)
2. Description (1-2 sentences)
3. 2-3 direct quote examples from the messages

Return ONLY valid JSON in this format:
{
  "themes": [
    {
      "name": "Theme Name",
      "description": "Description of the pattern",
      "examples": ["quote 1", "quote 2"]
    }
  ]
}

すべてのチャンクサブエージェントを並列で起動します(1つのメッセージ内で複数の Task ツール呼び出しを行います)。

ステップ 3:結果の統合

すべてのサブエージェントから結果が返されたら、次の手順を実行します。

  1. すべてのチャンクからテーマオブジェクトを収集します
  2. 類似するテーマ(名前が同じもの、または説明が重複するもの)をグループ化します
  3. 重複するテーマの例を統合します
  4. 出現したチャンク数に基づいてテーマを順位付けします
  5. 各テーマにつき、最適な例を2~3個選びます
ステップ 4:出力形式

次の構成で、最終分析を Markdown として提示します。

# Themes in How You Steer AI Coding Assistants

Analysis of N messages across M sessions (date range)

---

## 1. Theme Name

Description of the pattern.

**Examples:**
- "direct quote 1"
- "direct quote 2"
- "direct quote 3"

---

## 2. Next Theme
...

結果はファイルに書き込まず、ユーザーに直接出力します(依頼された場合を除きます)。

カスタマイズオプション

ユーザーは次の項目を指定できます。

  • 別のチャンクサイズ:extract.sh の CHUNK_SIZE を編集します(デフォルトは 320000 文字)
  • 別のメッセージフィルター:extract.sh の MIN_TEXT_LEN を編集します(デフォルトは 10 文字)
  • サブエージェントのセッションを含める:extract.sh の parent_id IS NULL(SQLite)および parentID(レガシー)のフィルターを削除します
  • 期間で絞り込む:extract.sh にタイムスタンプによるフィルタリングを追加します

ストレージ形式のリファレンス

OpenCode の会話ストレージ構造の詳細については、references/storage-format.md を参照してください。

コメント