yoi/tickets/memory-gc.md
2026-04-26 17:00:38 +09:00

2.6 KiB
Raw Blame History

メモリ機構: GC定期再評価

背景

docs/plan/memory.md §GC の実装。Phase 2 は情報統合寄りだが、それでも残る重要度低下・類似 slug 乱立・replaced 滞留・sources 累積・現状不整合を整理する定期再評価経路。人間 offer はかけず、結果は git diff で検証する建て付け。

保護閾値は使用頻度メトリクスの明示 invoke frequency に依存する。

要件

Trigger

  • 定期実行(累積 input token ベース推奨、具体値は設定で tune、実装判断

実行主体と渡すツール

  • GC Agent が spawn
  • Phase 2 と同じ汎用 CRUD + 検索ツール + post-write Linter Hook
  • 入力: GC 対象 record 群 + Linter Warn + 使用頻度メトリクス + replaced chain + sources 過多情報

操作粒度

  • ファイル単位: 丸ごと drop / 複数ファイル merge / 1 ファイルの split
  • ファイル内部分: 節・箇条の削除 or 圧縮、sources 古いエントリの trim

評価カテゴリ

outdated, superseded, unused, noisy を GC 理由の分類として使う。record に一律の「stale」フラグは付けない。drop / merge / split / trim / rewrite のどれを選ぶかをこのカテゴリで説明可能にする。

判断ルール

  • 保護閾値: 明示 invokefrequency >= 1.0 invokes/Mtoken の record は drop / 大幅圧縮の対象外
    • 初期値 1.0、workspace 設定でカスタマイズ可
    • model_invokation 注入による常駐は計数対象外(別指標として参照のみ)
  • 単一 record が複数カテゴリに該当してもよい
  • 直接削除してよいが、誤判定しやすいものは merge / trim を優先prompt 側で誘導)

prompt

  • docs/plan/memory-prompts.md §GC prompt に従う

範囲外

  • 監査 LLM 層(将来検討)
  • Vector index / FTS5 導入将来検討、GC 判断には影響しない)
  • Workflow の GC 対象化(初期は触らない)

完了条件

  • Trigger で GC Agent が走り、不要 record が整理される
  • Linter Warn で検出した類似 slug 乱立などが GC でまとめて収斂する
  • 保護閾値超過 record が drop / 大幅圧縮から外れる
  • 置き換えは status: replaced + replaced_by で残り、直接削除と区別可能
  • git diff で drop / merge / split / trim / rewrite の理由が読める

参照

  • docs/plan/memory.md §GC / §使用頻度メトリクス / §判断ルール
  • docs/plan/memory-prompts.md §GC prompt
  • tickets/memory-phase2-consolidation.md(ツール構成の共通化)
  • tickets/memory-usage-metrics.md(保護閾値の依存)