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

62 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# メモリ機構: 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 のどれを選ぶかをこのカテゴリで説明可能にする。
### 判断ルール
- 保護閾値: **明示 invoke**`frequency >= 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`(保護閾値の依存)