セッションログの繰り返し指示検出は字面正規化とセッション横断カウントで初手を張る
設計判断
ナレッジ管理
ログ解析
知識
判断
AIクライアントのセッションログ群から「ユーザーが繰り返している指示」を検出する仕組みは、埋め込みクラスタリングやLLM要約から始めず、字面ベースの機械クラスタリングで初手を張るのが安くて十分効く。ユーザーは同じ指示をほぼ同文で打ち直すため、可変部を畳むだけで主要な再発が拾える。
設計
- 正規化: 数値・ファイルパス・URL・コードブロック・画像参照をプレースホルダに畳み、空白と大小文字を統一する。これで「PR 123 のコメント精査」と「PR 456 のコメント精査」が同一グループになる
- グループ化: 正規化文字列の完全一致で束ね、文字 n-gram の Jaccard 類似で句読点・軽微な言い回し違いをマージする。全組み合わせは計算しない — 転置索引で共有 n-gram が一定数以上の組だけ類似度を計算し、高頻度 n-gram は候補生成から除外して計算量を抑える
- 再発は「セッション横断」でのみ数える。単一セッション内の同文連打はリトライやループ由来のノイズであり、自動化価値のシグナルではない
- LLM の役割は上位クラスタの取捨とルーティング判断だけに縮小する。決定論的な前段が候補空間を数十件に絞るため、LLM の読解コストが履歴全体から数十行の表に落ちる
適用条件と実測
- 先頭メッセージのサンプリングでは大幅に取りこぼす。再発指示はセッション途中(コミット依頼・再レビュー依頼・PR 操作など作業の節目)に集中する。実測では約2,700セッションの履歴で、先頭のみの走査が18セッションと数えた指示が全メッセージ走査では62セッション、先頭からは全く見えなかった指示が183セッションで最多だった
- 委譲で生成されたエージェント駆動セッションのメッセージは数えない。委譲テンプレートは逐語で繰り返されるため、除外しないと偽クラスタが上位を占拠する(人間駆動/エージェント駆動の判別基準自体は別メモ「AIセッションログの人間駆動/エージェント駆動判別」を参照)
- 中断定型文・画像のみ・挨拶などのノイズは、注入マーカー照合と正規化後の実質文字数で先に落とす
- 字面が違う同型指示(意味的な言い換え)はこの方式では統合できない。それが実際に必要だと分かってから埋め込みクラスタリングや LLM 要約を足す — 初手から入れると効果検証の前にコストだけ払う
検証
先頭のみ走査と全メッセージ走査で同じ履歴を数え、上位クラスタの顔ぶれと件数差を比較する。差が大きければ全メッセージ収集が正当化される。クラスタ表の上位は人(または LLM)が読み、実際の反復指示か(挨拶・承認定型文でないか)を確認してから下流(スキル化提案・手順文書化など)に流す。