Document read_file compact trade-off

This commit is contained in:
gui-yue
2026-05-31 18:14:44 +08:00
parent 4b87a07099
commit ae94cda0ed
3 changed files with 24 additions and 3 deletions

View File

@@ -252,6 +252,12 @@ CC ソース `query.ts` での実際の順序:
教学版の budget → snip → micro の順序はこれと一致する。教学版には contextCollapse メカニズムがない。
### read_file のトレードオフ
教学版の `micro_compact` は、古い `tool_result` を一律にプレースホルダへ置き換える。`read_file` も例外ではない。これは通常、機能的な正しさには影響しない。後でファイル内容が必要になれば、モデルはもう一度そのファイルを読めばよい。代償は、追加のツール呼び出しが発生し得ることと、prompt cache のヒット率が下がり得ること。
Claude Code は、この問題を教学版のような単純なルールでは処理していない。`Read` も microcompact 可能なツール集合に入れる一方で、別途 `readFileState` を維持している。変更されていないファイルの再読込では `FILE_UNCHANGED_STUB` を返し、compact 後には予算内で直近に読んだファイル内容を復元する(例:最大 5 ファイル、1 ファイル 5K token、合計 50K token。これは本番実装向けのキャッシュと復元メカニズムである。教学版ではそこまで展開せず、「古い結果を圧縮し、必要なら再読込する」という単純な trade-off を残している。
### 完全な定数リファレンス
| 定数 | 値 | ソースファイル |
@@ -282,6 +288,7 @@ CC の圧縮プロンプトには 2 つの厳格な要件がある:
### 教学版の簡略化は意図的
- micro_compact でテキストプレースホルダを使用 → API 層の `cache_edits` 権限がないため
- read_file は特別扱いしない → 教学版では必要時の再読込を受け入れ、readFileState と圧縮後復元の仕組みを導入しない
- token を文字数で推定 → 精密な tokenizer は教学の対象外
- 圧縮後のリカバリを省略 → 教学版は要約のみを保持し、ファイルの自動再付加を行わない
- 2 つの補助メカニズムを展開しない → 10% の細部に属する
@@ -290,4 +297,4 @@ CC の圧縮プロンプトには 2 つの厳格な要件がある:
</details>
<!-- translation-sync: zh@v1, en@v1, ja@v1 -->
<!-- translation-sync: zh@v2, en@v2, ja@v2 -->