Skip to content

debugモード時に ~/.takt へ分析用イベントを蓄積し、ローカルで定量観測できるようにする #259

@nrslib

Description

@nrslib

背景

現在のデバッグ情報は主にプロジェクト配下 .takt/runs/.../logs に保存されるため、複数プロジェクト横断での品質傾向(レビュー往復率、同一指摘の再発、誤検知疑い)を定量観測しづらい。

目的

debug モード時のみ、分析向けの構造化イベントを ~/.takt/ に蓄積し、ローカル完結で継続的に可視化・分析できるようにする。

スコープ

  • debug.enabled = true のときのみ収集する(通常実行は影響なし)
  • 収集先はグローバルディレクトリ配下(例: ~/.takt/analytics/
  • 収集データは JSONL(追記専用)で保存
  • CLI から集計コマンドで参照できるようにする

仕様案

1. 保存先ディレクトリ

  • ~/.takt/analytics/events/
  • 日付または run 単位でローテーション(例: YYYY-MM-DD.jsonl

2. 収集イベント(最小)

  • review_finding
    • finding_id, status(new|persists|resolved), rule_id, severity, decision, file, line, iteration, run_id, timestamp
  • fix_action
    • finding_id, action(fixed|rebutted|not_applicable), changed_files, test_command, test_result, iteration, run_id, timestamp
  • movement_result
    • movement, provider, model, decision_tag, iteration, run_id, timestamp

3. 集計コマンド

  • 例: takt metrics review --since 7d
  • 出力指標(初期)
    • 同一 finding_id の再指摘回数
    • 2回以上往復率
    • 平均解決イテレーション
    • ルール別 REJECT 件数
    • rebuttal 後 resolved 率(誤検知疑いの近似)

4. プライバシー/容量対策

  • デフォルトでプロンプト本文・長文本文は保存しない(メタデータ中心)
  • 保存期間設定(例: 30日)と purge コマンドを用意
  • debug 無効時は一切書き込まない

受け入れ条件

  • debug.enabled=true 時に ~/.takt/analytics/events/*.jsonl が作成される
  • debug.enabled=false 時は作成・追記されない
  • 集計コマンドで上記5指標を表示できる
  • 既存 .takt/runs の挙動を壊さない
  • 単体テスト: 保存ON/OFF、イベント追記、集計ロジック、保持期間削除

実装タスク案

  1. イベントスキーマ定義(型 + バリデーション)
  2. analytics writer(append-only, mkdir -p, ローテーション)
  3. review/fix/movement 実行経路へイベント発火を追加
  4. metrics 集計CLI追加
  5. retention/purge 実装
  6. テスト追加

補足

  • 本機能は「ローカル完結」を前提にし、外部送信は行わない。
  • 将来必要ならエクスポート機能を別Issueで検討する。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions