mcpField
R
read-knowledge-impact

read-knowledge-impact

github.com/dosu-aiエージェントワークフロー1148 回インストール5 週間前に更新
リポジトリ

read-knowledge-impact について

Dosu の read_knowledge 呼び出しがエージェントのセッションに与えた影響を監査するスキルです。既定では過去 30 日間の全プロジェクトを分析し、結果を分類して、確認用のセッション情報付き HTML レポートを作成します。

主な機能

  1. 01ローカルのエージェントログを検索
  2. 02Cursor、Claude、Codex、汎用ログに対応
  3. 03ナレッジ呼び出しの結果を分類
  4. 04影響分析の HTML レポートを生成
  5. 05範囲を限定したセッションビューア

活用シーン

  1. 01取得したナレッジがタスクに役立ったかの評価
  2. 02注意をそらす結果や無関係な結果の特定
  3. 03複数のエージェントセッションでの read_knowledge 呼び出し確認

MCP 対応

Dosu の read_knowledge MCP 呼び出しとその結果を過去のセッションから分析します。write_knowledge は呼び出しません。

インストール

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

$npx skills add https://github.com/dosu-ai/dosu-skill --skill read-knowledge-impact

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
classification.md
scripts/
activity_buckets.py
extract_read_knowledge.py
generate_impact_report.py
parse_agent_logs.py

詳細

read_knowledge の影響監査

自分のエージェントの軌跡に対する read_knowledge Dosu MCP の影響レポートを作成します。

過去1か月間のエージェントセッションを分析し、read_knowledge MCP の成功例と失敗例を特定してください。

成功例とは、read_knowledge の呼び出しで得られた情報が、質問と解決策に関連していた場合です。エージェントが計画やコードでその情報を明示的に引用している必要はありません。 失敗例とは、エージェントがその情報を気を散らすもの、または誤解を招くものと判断した場合です。

成功例と失敗例それぞれについて、次の形式で記載してください。

  • task -> エージェントが取り組んでいたタスク
  • knowledge -> 提示された情報
  • impact -> その情報が与えた影響

結果を HTML レポートとして作成してください。

製品

  1. ローカルのエージェントログを収集します(デフォルト:過去30日間、すべてのプロジェクト)。Cursor/Claude/Codex アダプターに加え、汎用 JSON/JSONL ウォーカー(Devin、Continue、Windsurf、DOSU_AGENT_LOG_DIRS など)。
  2. すべての read_knowledge 呼び出しとそのツール結果を抽出します。
  3. 各呼び出しを評価します。情報は質問と解決策に関連していたか(「エージェントが明示的に引用したか」ではありません)。
  4. HTML レポートを開きます(generate_impact_report.py --open)。

write_knowledge は呼び出さないでください。このスキルはレポート作成専用です。

セッションビューアー

すべての成功例に、レポート内のインライン文字起こしビューアーを開く「セッションを確認」コントロールを付けてください。

ビューアーの要件:

  • 強調表示された read_knowledge 呼び出しの前後を含む、時系列順の制限付きウィンドウを表示します。
  • 次の項目を視覚的に固定し、区別して表示します。
    1. ユーザーのタスク
    2. Dosu に送信されたクエリ
    3. Dosu が返したナレッジ
    4. その後のエージェントの推論、アクション、回答
  • ソースログに Dosu の結果が保存されている場合は、サニタイズ済みの結果全体を表示します。
  • 復元できない場合は「このログソースでは結果ペイロードを利用できません」と明記します。400文字のプレビューが完全な内容であるかのように示してはいけません。
  • ウィンドウ内にあるエージェントのその他のツール呼び出しは、入力と出力のサニタイズ済み切り詰めプレビューを含む、コンパクトなアクションターンとして表示します。ツール名だけでは、その呼び出しを評価するための情報が不足します。ログに記録されている場合は、呼び出しの前後のエージェントの推論(思考)ターンも含めます。
  • ネットワークに依存しない、自己完結型の HTML ダイアログまたはドロワーを使用します。
  • キーボード操作、Escape キーでの閉じる操作、読みやすいコードブロック、クエリとナレッジ結果のコピーボタンに対応します。
  • システム/開発者向け指示、シークレット、個人を特定できる情報、レシート ID は除外します。他のツールの完全な生ペイロードは含めず、範囲を制限したプレビューのみを表示します。
  • ソースとセッションを識別しますが、生のファイルシステムパスは表示しません。

サマリーカードは簡潔なままにします。文字起こしの詳細はセッションビューアー内だけに表示します。

新規実行: 必ず再抽出し、再分類してください。/tmp/rk-calls.json、/tmp/rk-findings.json、既存の HTML は無視します。以前のレポートが存在することを理由に処理をスキップしてはいけません。

質問しないこと

エージェント、期間、プロジェクト、詳細度を尋ねてはいけません。デフォルト:

項目デフォルト
期間--days 30
プロジェクト--all-projects(このマシン上のすべてのワークスペース)
ソースcursor、claude、codex、generic

ユーザーがすでに指定している場合(「このリポジトリ」「先週」「Claude のみ」)に限り、上書きします。

ワークフロー

Progress:
- [ ] 0. SKILL_DIR (this SKILL.md’s folder)
- [ ] 1. Extract read_knowledge calls (overwrite /tmp)
- [ ] 2. Classify every call from scratch
- [ ] 3. Write findings JSON
- [ ] 4. Open HTML report → short reply
ステップ 0 — スキルディレクトリ

SKILL_DIR は、この SKILL.md(現在読んでいるファイル)が含まれるディレクトリです。新しい分類器が読み込まれていることを確認します。

test -f "$SKILL_DIR/scripts/extract_read_knowledge.py"
grep -F '"relevant": "Returned information was relevant to the question and solution."' \
  "$SKILL_DIR/scripts/generate_impact_report.py"
grep -F "details class='fold'" "$SKILL_DIR/scripts/generate_impact_report.py"
grep -F "Result payload unavailable in this log source" \
  "$SKILL_DIR/scripts/generate_impact_report.py"

grep に失敗した場合は、古いコピーを使用しているため、処理を停止します。skills/read-knowledge-impact/ にある dosu-skill のチェックアウトを使用してください。

次に、以前の成果物を消去します。

rm -f /tmp/rk-calls.json /tmp/rk-findings.json /tmp/read-knowledge-impact.html
ステップ 1 — 抽出
# Set DAYS from the user's window BEFORE extract. The HTML reads this number.
#   past day / last 24 hours / today → DAYS=1
#   last week → DAYS=7
#   last N days → DAYS=N
#   unspecified → DAYS=30
DAYS=30
python3 "$SKILL_DIR/scripts/extract_read_knowledge.py" \
  --days "$DAYS" --all-projects \
  --out /tmp/rk-calls.json
ユーザーの発言フラグ
(デフォルト)--days 30 --all-projects
「このプロジェクト」/「このリポジトリ」--days 30(--all-projects を削除)
「直近 N 日間」/「過去 1 日」/「直近 24 時間」--days N(1 日の場合は --days 1)--all-projects
「Claude のみ」--sources claude --days 30 --all-projects

--days はファイルの更新時刻ではなく、呼び出し時刻(Cursor の <timestamp>/Claude の timestamp にある called_at)で絞り込みます。今日最後に触れられた長いチャットでも、先週の呼び出しは対象になりません。

各呼び出しには、id、source、transcript_id、path、query、result_preview、hint(empty/overflow/error/rejected/unknown)、およびセッションで最初に提示されたユーザータスクが含まれます。さらに、安定した位置情報(tool_call_id、line/position)と session_view も含まれます。session_view は呼び出し前後の、サニタイズされ長さが制限されたトランスクリプトウィンドウで、ソースログに保存されている場合は Dosu の完全な結果も含まれます(result_available)。Cursor の JSONL トランスクリプトでは通常、ツールの結果ペイロードが省略されます。その場合、ビューアーにはクエリとその後のコンテキストが表示され、結果が利用できないことも正直に示されます。大きすぎる結果は、可能な場合に agent-tools/*.txt のサイドカーから復元されます。

抽出ツールが calls: 0 と出力した場合も、空のレポートを開いてから終了してください。

ステップ 2 — 分類

references/classification.md を読んでください。以前の findings ファイルではなく、トランスクリプトに基づいて分類してください。

  1. トランスクリプトに明らかな矛盾がない限り、機械的なヒント(empty、overflow、error、rejected)をそのまま使用します。
  2. hint=unknown の場合は、その呼び出しの前後にあるセッションを確認します。まず呼び出しの session_view.turns を確認し、次に scripts/parse_agent_logs.py --digest <id> を実行します。それでも確認できない場合は、tool_use 付近の JSONL を読みます。
  3. outcome は次のいずれか 1 つに設定します:relevant、off_topic、empty、rejected、overflow、error、distracting。
  4. すべての relevant と distracting の呼び出し、および何が起きたか確認できる overflow/error の呼び出しについて、task、knowledge、impact を記入します。文章は最後まで書き、項目の途中で単語を切らないでください。レポートでは長い内容は「more」の後ろに折りたたまれます。プロンプトの生データや秘密情報は含めないでください。

relevant = 返された情報が質問と解決策に関連していた。エージェントがその情報を他の情報と区別して引用する必要はありません。コードを検索したり読んだりしていた場合も、relevant とします。

off_topic = 結果は返されたものの、この質問や解決策には関係がなかった。

distracting = 結果がエージェントを誤った方向へ導いた、コードベースと矛盾していた、または本当の答えを見えにくくした。

unused は決して使用しないでください。関連する結果が、他の情報と区別して引用されていなくても relevant とします。

ステップ 3 — Findings ファイル

/tmp/rk-findings.json に { "window": …, "calls": [ … ] } を書き込みます。window は /tmp/rk-calls.json から変更せずにコピーしてください(HTML が対象期間が 1 日か 30 日かを判別するためです)。各呼び出しには、抽出ツールの行に加えて outcome/task/knowledge/impact を記入します。抽出ツールのフィールドは保持してください。特に session_view は変更せずに引き継ぎます(機密情報が漏れているターンは削除してもかまいませんが、ターンを追加したり書き換えたりしないでください)。すべての relevant 呼び出しで session_view を保持してください。レポート生成ツールは、動作するビューアーがない場合、ハイライトを作成できません。サンプルだけを分類せず、すべての呼び出しを分類してください。

outcome_notes は設定しないでください。「Outcomes」テーブルの文面は generate_impact_report.py が生成します。関連する行には、必ず次の文をそのまま使用してください:"Returned information was relevant to the question and solution."

ステップ 4 — レポート
python3 "$SKILL_DIR/scripts/generate_impact_report.py" \
  --findings /tmp/rk-findings.json \
  --out /tmp/read-knowledge-impact.html --open

生成ツールは、すべてのハイライトに動作する Review session ビューアー(turns を含む session_view)があることを検証し、ない場合はエラーで終了します。その場合は findings を修正し、フィールドを削除しないでください。

トピック外、空、拒否された呼び出しは非表示になりません。各呼び出しは下部の折りたたまれた No effect セクションに表示され、独自の Review session ビューアーも備えます。そのため、「効果なし」というラベルも、ハイライトと同じ方法で監査できます。

件数(呼び出し数、関連する割合、ハイライト数、失敗数)を伝え、HTML が開いていることを報告してください。カードをすべてチャットに貼り付けないでください。

ガードレール

  • レポートにシークレット、個人を特定できる情報(PII)、生のログダンプを書き込まないでください。
  • 抽出ツールが検出していない呼び出しを作り出さないでください。
  • セッションが収集用、サブエージェントによるもの、または「分類済み」の場合でも、呼び出しを省略しないでください。
  • 以前の /tmp/rk-findings.json を再利用しないでください。必ず抽出ツールの出力に基づいて今回の実行を分類してください。
  • ユーザー向けの出力は、HTML レポートと簡潔な数値サマリーです。

コメント