41 lines
1.5 KiB
Markdown
41 lines
1.5 KiB
Markdown
# Prune の savings 推定を正確にする
|
||
|
||
## 背景
|
||
|
||
現在の PruneHook は `savings_for_drop_impl(context, &snapshot, first..last)` で
|
||
候補範囲を「丸ごと drop した場合」の savings を計算し、`min_savings` と比較している。
|
||
|
||
しかし prune が実際に行うのは ToolResult の content を省略するだけで、
|
||
item 自体(summary、メタデータ)は残る。そのため `savings_for_drop` は
|
||
実際の節約量を過大評価しており、本来 prune 不要な場面でも発動しうる。
|
||
|
||
savings の推定は prune 側の責務であり、token_counter の汎用 API に
|
||
prune 固有の挙動を押し込むべきではない。
|
||
|
||
## 方針
|
||
|
||
PruneHook が「content 部分だけの savings」を計算する。
|
||
|
||
### 計算方法
|
||
|
||
候補の各 ToolResult について:
|
||
- content ありの item のトークン推定
|
||
- content を None にした場合(summary のみ)のトークン推定
|
||
- 差分が prune による実際の savings
|
||
|
||
バイト数の差分を measurement 由来の rate で換算するか、
|
||
`tokens_at` を使った前後比較にするかは実装時判断。
|
||
|
||
### 影響範囲
|
||
|
||
- `crates/pod/src/prune_hook.rs`: savings 計算ロジックの置き換え
|
||
- `crates/pod/src/token_counter.rs`: 必要に応じて content-level の推定ヘルパーを追加
|
||
|
||
## 依存
|
||
|
||
- [prune-projection.md](prune-projection.md) — prune が射影ベースになった後の方が設計しやすい
|
||
|
||
## ブロックする後続
|
||
|
||
- なし(チューニングの精度改善)
|