
GEMINI.mdが500KBで勝手に切れる罠|VS Code差分上限の真因とRust防衛録
「さっき本番デプロイも Git の Push も正常に終わったはずなのに、なぜか GEMINI.md に保存されていない変更マーク(M)が出ている……?」――AI エディタ(本家 VS Code + Antigravity 拡張機能など)でプロジェクトの設計書・ルール定義書を長期間育てていると、ある日突然 ファイル末尾の数キロバイトが音もなく消滅する怪現象 に遭遇することがあります。
実際に当ラボの単一ルールマスター GEMINI.md が 全 1,272 行・515,618 バイト(503.5 KiB) に達した夜、Git への正常 Push から わずか 20 秒後 にディスク上の GEMINI.md が 512,033 バイト へ勝手に書き戻され、末尾約 3.6 KB が文章の途中で真っ二つに切断されて ... [truncated for diff preview] という 1 行にすり替わる事故が発生しました。
500 KiB(きっちり 512,000 バイト)を超えた際に発動する「エディタ拡張の Diff プレビュー切り詰め文字列のディスク逆流(書き戻し)バグ」 です。本記事では、1 秒・1 バイト単位のログ追跡で判明した事故の全貌と、.git/index.lock 制限下での無傷救出コマンド、そして二度と再発させないための 「役割別 2 冊分離(GEMINI.md + GEMINI_AXIOMS.md)× Pure Rust 二重検問ゲート」 の実装手順をすべて公開します。-
検索エンジン不要のRAG「DecisionRAG」とは?階層探索の数理と1日13ドル時代の節約術 : Wikipedia 268万段落から0.7〜1.8秒で正解を辿る検索機不要の階層探索『DecisionRAG』の数理と、Claude Code平均1日13米ドル時代の節約7習慣をまとめています。
-
イーロン・マスクxAI崩壊の真因とAI分業設計|GPU20万基の限界とCSS・Rust外堀術 : DeepMindの投機的カスケード研究やxAIの計算資源場所貸し転換、ジョブズ氏とマスク氏の比較から、CSS・SQLite・Rustによる3層オフロード設計を解説しています。
-
GEMINI.md・AGENTS.mdが長いと無視される原因|24KB壁・2万トークン予算と分割送信廃止術 : 単一ルール 24KB 上限と常時 2 万トークン予算を突破するため、常時コア 4 本だけ抽出し残りを Mac 側 Rust 検問と SQLite へ逃がした前編の設計録です。
-
AIブログ記事数が85本から爆発した5世代全記録|Argon移行と全Rust化の実測推移 : WordPress 手書き 5 年半 85 本の停滞から、VS Code + Gemini 4 Argon と 2.6 万行の全面 Pure Rust 化を経て 565 万字超へ成長した全体史です。
-
GPT-6 CyberがLinuxカーネルを30時間で948箇所突破|禁止ルール無効の罠とRust検問術 : プロンプトの「お願いルール」や読み込み失敗で無効化される安全装置の限界を解剖し、終了コードで物理遮断する Rust 検問フックを解説しています。
-
レガシーシステムのAI移行はなぜ失敗する?COBOL刷新の罠とSQLite・Rust検問の実証録 : 短い指示書と一括置換スクリプトで起きた巻き込み破壊を乗り越え、1,100 行超の憲法と 4 ミリ秒検問バイナリを育て上げた 12 段階の記録です。
-
VS Code や Antigravity、Cursor 等で
GEMINI.md・AGENTS.md・CLAUDE.mdを数百 KB 規模まで育てて運用している方 -
Git コミット直後なのに 覚えのない未保存変更(
M)が出たり、長大な Markdown・コードの末尾が勝手に欠落した経験がある方 -
自動デプロイや自動同期フック(
SessionStart/PostToolUse)を組んでおり、破損データが Git 履歴へ混入する事故を物理的に防ぎたい方 -
コードブロック内の解説例示を誤検知せず、本物の切り詰め破損や容量上限超過だけを数ミリ秒で遮断する Rust ガード を組み込みたい方

ちょっと待ってくれ!直前の作業でちゃんと git commit も git push も成功しとったんじゃろ?それなのに何で次のチャットを開いた瞬間、GEMINI.md と consts.ts の 2 ファイルに「保存できていない変更」が勝手に湧いて出たんじゃ!?

本当に背筋がヒヤッとする現象ですよね……!実はこれ、Git の保存失敗ではなく、Push が終わった「20 秒後」にエディタ側のプレビュー処理が正常なファイルを上からちょん切って上書きしていた んです。1 秒単位のタイムスタンプを順番に追いかけると、犯行の手口がびっくりするほど鮮明に浮かび上がってきますよ!
GitへPushした20秒後に起きた500KiB切断事件
異変に気づいたきっかけは、新しいチャットセッションを立ち上げた直後に VS Code のソース管理パネル に表示された、身に覚えのない 2 件の変更マーク(M)でした。対象ファイルはプロジェクトの憲法である GEMINI.md と、サイト全体の規模定数を管理している src/consts.ts です。
前日の最終デプロイが途中でコケたのかと思い、Git のコミット履歴(git log)とファイルシステムの更新時刻(mtime)、さらに差分(git diff)を突き合わせたところ、予想外のタイムラインが浮かび上がりました。
正常コミットから20秒後に上書きされたタイムライン
実際のタイムスタンプとバイト数の変化を時系列で並べたものが以下のフローです。
コミット c3a08286 にて、全 1,272 行・515,618 バイト(503.5 KiB)の正常な GEMINI.md が origin/main へ完全保存される。
エディタ拡張の変更承認・バッファ書き戻し処理が走り、ディスク上の GEMINI.md が 512,033 バイト(1,270 行)へ無警告で縮小上書きされる。
次セッション開始時の自動同期フックが「1,272 行 → 1,270 行に減った」と正直に読み取り、src/consts.ts の行数・容量定数まで書き換える。
未コミット変更の違和感から git diff を精査して切断を特定。Git 履歴の正常オブジェクトから 1 バイト完全一致で無傷復元を達成。
なんと、Git のリモートリポジトリ(origin/main)には 100% 無傷の GEMINI.md(515,618 バイト) がしっかり保存されていました。ところがその わずか 20 秒後(00:47:52)、AI の編集差分プレビューを閉じて確定するタイミングで、手元のディスク上の GEMINI.md だけが 512,033 バイト の切り詰められたデータで上書きされていたのです。
きっちり512,000バイトと33バイトの切り詰め文字列
「なぜ 512,033 バイトという中途半端な数字になったのか?」――ここを電卓で引き算した瞬間、すべての謎が一本の線でつながりました。実際に git diff GEMINI.md で検出されたファイル末尾の差分を見てみましょう。
--- a/GEMINI.md (HEAD: 515,618 bytes / 1,272 lines)
+++ b/GEMINI.md (Working Tree: 512,033 bytes / 1,270 lines)
@@ -1266,7 +1266,5 @@
- - 1269行目の途中で日本語の文章が続いていた本来のルール記述(以降も末尾まで約 3.6 KB の重要仕様が続く)...
+ - 1269行目の途中で日本語の文章が続いていた本来のルー
+... [truncated for diff preview]
末尾に勝手に挿入されていた見慣れない英語の 1 行 \n... [truncated for diff preview] のバイト数を数えると、改行コード(\n:1 バイト)を含めて きっちり 33 バイト です。
-
破損後のファイル総サイズ :
512,033バイト -
末尾に自動挿入された省略メッセージ :
\n... [truncated for diff preview]=33バイト -
差し引きの残存データ長 :
512,033 - 33=512,000バイト(=500 × 1,024バイト:1 バイトの狂いもない500 KiBジャスト!) -
静かに消滅していた末尾データ量 :
515,618 - 512,000= 末尾3,618バイト(約3.6 KB・第 10 章の重要運用仕様が丸ごと消失)
さらに厄介なのは、この切り詰め処理が「UTF-8 の文字境界」だけは壊さないようにスライスした上で改行と ... [truncated for diff preview] を付け足している点です。文字化け(不正バイト列)や YAML の構文エラーが一切発生しないため、エディタも OS も Git も「人間が末尾を削って英語のメモを 1 行書き足した正常なテキスト編集」と誤認してしまい、エラー画面ひとつ出さずに通過してしまう のです。
気づかずに次回デプロイしていたら起きていた時限爆弾
もしこの小さな異変に気づかないまま、「次の記事を書いたからいつも通り自動デプロイ(git add . && git commit && git push)を回そう」と実行していたらどうなっていたでしょうか。
当サイトの自動同期フックは GEMINI.md の物理行数と容量を計測して src/consts.ts へ反映する仕組みだったため、1,272行(約504KB) → 1,270行(約500KB) への減少すら「正常なスリム化」として処理していました。そのまま次回コミットを実行していれば、せっかく c3a08286 で無事だった Git 履歴の上に「末尾 3.6 KB が吹き飛んだ破損版 GEMINI.md」が正式な最新コミットとして上書き記録される時限爆弾 だったのです。
なお、AI エージェントのターミナルサンドボックス内から急いで git restore GEMINI.md を叩くと、.git/index.lock の作成権限が制限されていて Operation not permitted で弾かれる場合があります。そのような環境でも、Git 公式の git show コマンド を使えば .git/ ディレクトリへロックファイルを一切作らずに、最新コミット(HEAD)の無傷な中身だけを標準出力経由で 1 バイト違わず救出できます。
# サンドボックス内で .git/index.lock を作らずに HEAD から無傷復元する安全コマンド
git show HEAD:GEMINI.md > GEMINI.md
git show HEAD:src/consts.ts > src/consts.ts

ひええ……!512,000 バイトぴったりで切られとったとは、動かぬ証拠じゃな!しかし、そもそも何で「画面で見せるだけのプレビュー省略文字」が、大事な実ファイルの上に書き込まれてしまうんじゃ?

まさにそこが、エディタ拡張機能の設計で一番やってはいけない「表示用データと実データの混線」なんです。これまで私たちが乗り越えてきた 2 つの壁と並べて見ると、AI 開発環境のどこに落とし穴が潜んでいるのかがスッキリ整理できますよ!
AIルール定義に立ちはだかる3つの容量上限と正体
Google Antigravity の VS Code 拡張機能 や Cursor、Claude Code などの AI コーディング環境を使い込んでいると、プロジェクトの成長に合わせて 段階的にまったく別の容量制限(ハードリミット) にぶつかります。
当サイトが公開 85 本の時代から現在の公開 707記事(総文字数 565 万字超)へ育て上げる過程で、実際に正面衝突して突破してきた「3 つの壁」を一覧表にまとめました。
| 段階 | 壁の種類と上限値 | 発生する現象・症状 | 当ラボで実装した突破アーキテクチャ |
|---|---|---|---|
| 第1の壁 | 単一ルール注入上限 約 24,000 バイト(24 KB) |
日本語で約 8,000 文字を超えると後半がプロンプト注入時に切り捨てられ、末尾のルールだけ AI に毎回無視される | 常時必須のコア原則だけを 24 KB 未満のファイルへ自動抽出してインライン注入 |
| 第2の壁 | 常時注入の共通予算 合計約 20,000 トークン |
分割ファイルを全部 always_on にすると予算超過で除外され、条件付き分割も目次ポインタだけで毎回約 3,000 tok を浪費する |
条件付き分割ファイルを全廃し、常時コア 4本 以外は手元の Rust 検問と SQLite 検索へ完全オフロード |
| 第3の壁 (今回) |
Diff プレビュー上限 きっちり 512,000 バイト(500 KiB) |
AI が 500 KiB 超の単一ファイルを編集した際、差分プレビュー用の省略文字列(... [truncated for diff preview])が実ファイルへ逆流上書きされる |
マスターを役割別に 2 冊分離 して上限から遠ざけつつ、Pure Rust ゲートで切断文字列と 500 KB 接近を物理検問 |
24KB上限と2万トークン予算に続く第3の500KiB壁
前回の 24KB 壁・2 万トークン予算の検証記事 で解説した通り、「AI に毎回送りつけるルール(.agents/rules/ 配下)」を合計約 43 KB(常時コア 4本)に絞り込み、残りの膨大な仕様は手元の Mac 側の SQLite 全文検索(kb-search)で必要な数十行だけピンポイント抽出する構成に変えたことで、「人間が管理するマスター GEMINI.md 自体は 200 KB でも 400 KB でも 1 ファイルのまま育てられる」 はずでした。
実際、499 KiB(511,999 バイト)までは何ひとつ問題は起きませんでした。ところが日々の仕様永続化によって単一ファイルのサイズが 500 KiB(512,000 バイト:日本語の Markdown で約 17 万〜 18 万文字相当) の一線をわずか 3.5 KiB 超えた瞬間、今度はプロンプト注入ではなく エディタ UI の差分プレビュー層 が牙を剥いたのです。
表示用の省略テキストが実ファイルへ逆流する構造欠陥
ソフトウェア工学の視点で見ると、今回の現象は典型的な 「View(画面表示用の軽量データ)と Model(ディスクへ永続化する実データ)の境界破壊バグ」 です。
500 KiB を超える巨大なテキストファイルの変更差分(Diff)を Webview やエディタパネル上で全行シンタックスハイライト描画しようとすると、UI スレッドが固まって画面がフリーズしやすくなります。そのため、プレビュー表示用のテキストを先頭 500 KiB で打ち切り、末尾に ... [truncated for diff preview](差分プレビューのため省略)という案内ラベルを添える設計自体は理にかなっています。
-
本来あるべき正常な挙動 : AI ツール(
edit_file等)がディスク上の実ファイル(515,618バイト)を直接更新し、UI パネルには「表示専用に512,000バイトで切り詰めたコピー」だけを描画する。承認(Accept)ボタンを押したときはディスク上の実ファイルをそのまま正とする。 -
実際に起きていた危険な挙動 : 差分プレビュー用にメモリ上で切り詰めたテキストバッファ(
512,000バイト + 省略ラベル33バイト)が、変更確定やセッション状態同期のタイミングで 「編集後の最新ドキュメント内容」としてディスク上の実ファイルへそのまま書き戻されてしまった。
どれだけクラウド上の AI モデル(Gemini 4 Argon 等)が正確にファイルを編集できても、手元のエディタ拡張が最後に上からハサミを入れてしまえば防ぎようがありません。だからこそ、「エディタ側のバグがいつか直るのを待つ」のではなく、自分のローカル環境側で物理的に踏み抜けない防波堤を築くこと が重要になります。
二度と再発させない2冊分離とPure Rust二重検問
原因が 512,000 バイトの閾値と特定できた以上、場当たり的な手動復旧で終わらせず、以下の 2 段構えで 「そもそも上限に近づけない構造改革」と「万一混入しても 0.1 ミリ秒で叩き落とす機械検問」 を同時に実装しました。
-
共通システム仕様と分野別の専門公理をすべて 1 つの
GEMINI.md(503.5 KiB)へ詰め込み、Diff 上限を突破 -
プレビュー切断文字列(
... [truncated for diff preview])が混入しても構文エラーにならず素通り -
自動同期フックが「行数が減った正常な更新」と勘違いし、
consts.tsまで書き換えて汚染が拡大
-
本編
GEMINI.md(約 326 KiB)と公理編GEMINI_AXIOMS.md(約 179 KiB)へ無劣化で 2 冊分離 -
コード枠外に切断文字列が 1 行でも混入したら、同期を緊急停止してデプロイを
exit 1で物理遮断 -
単一ファイル
450 KiB到達で事前分割 Warning、500 KB(500,000バイト)超過で強制 Error ロック
本編326KiBと公理編179KiBへの無劣化2冊分離
まず考えたのは、「500 KiB を避けるために、昔のように 20 個の細かいファイルへバラバラに分割すべきか?」という点です。しかしファイルを細切れにすると、人間が全体像を読むときにファイル間を行ったり来たりする羽目になり、「唯一の真実(Single Source of Truth)」としての見通しが悪化してしまいます。
そこで GEMINI.md の章別バイト数を計測したところ、驚くほどきれいな境界線が見つかりました。
-
第 1 冊目:
GEMINI.md(全作業共通のシステム憲法・開発環境仕様:第 1〜6・8〜10 章) 分離後のサイズ:約326 KiB(約334 KB)。記事執筆ルール、UI サイズ階段、Astro ビルド設定、Pure Rust 2 大バイナリ仕様、RAMDisk 運用などを収録。500 KiB天井まで 約174 KiB(日本語で約 5.8 万文字分) の余裕を確保。 -
第 2 冊目:
GEMINI_AXIOMS.md(AI国家構想の核心公理マスター:第 7 章7.1〜7.23) 分離後のサイズ:約179 KiB(約183 KB)。ガジェットや Mac の実機レビュー記事を書くときには 1 行も読む必要がない「AI国家構想固有の制度・技術公理」だけを 1 文字の省略もなく完全分離。500 KiB天井まで 約321 KiB(日本語で約 10.7 万文字分) の余裕を確保。 -
検索・規模定数・ルール抽出の完全統合(既存記事との矛盾ゼロ) 手元の Pure Rust ツール(
gemini-gateおよびkb-search)を改修し、常時コア抽出も公理ピンポイント検索(./scripts/run_kb_search.sh axiom "7.23"→GEMINI_AXIOMS.md L282-L291を即時返却)も、そしてサイト内で公開している合算規模(現在 全 1,311行・約548KB)も、裏側で 2 冊を自動的に合算・横断処理する仕組みに統一。
なお、500 KiB 超の日本語ファイルをエディタ上で手動カット&ペーストして分割しようとすると、今度は読み取りチャンク境界でのマルチバイト文字欠けや改行コードのズレを招く恐れがあります。そのため、Pure Rust ゲートキーパー自身に Rust 標準の UTF-8 文字列スライス保証 を使った --split-axioms サブコマンドを組み込み、抽出前後の公理テキストが 1 バイトの狂いもなく完全一致することを機械検証した上で分割を実行しました。
さらに続編として、こうして 2 冊に分離した GEMINI.md・GEMINI_AXIOMS.md や進捗管理 TODO 群を見出し階層ツリー・構造化台帳として SQLite へ分解し、参照・追記時のファイル読込量を最大約 99% 削減した実装記録は『CLAUDE.md・GEMINI.md・TODO丸読みの罠|SQLite階層目次で読込99%減の実測録』にまとめています。
コード枠内の解説例示を誤検知しないRust検問ロジック
2 冊に分けて容量に余裕ができても、「将来また別の長大ファイルや記事で 500 KiB に近づいたらどうするのか」「もし別のタイミングで ... [truncated for diff preview] が混入したらどう止めるのか」という機械的な防波堤が欠かせません。
ここで 1 つ、実装上の重要な落とし穴(エッジケース)があります。もし検問プログラムを単純な部分一致(content.contains("... [truncated for diff preview]"))で書いてしまうと、今まさにあなたが読んでいるこの解説記事のコードブロック(差分例示)まで「破損ファイルだ!」と誤検知してデプロイを止めてしまう(偽陽性バグ) のです。
そこで tools/gemini-gate/src/rules_sync.rs および scanner.rs には、CommonMark 仕様のコードフェンス(``` および ~~~)の開閉状態を正確に追跡し、「コードブロックの外側に独立行として出現した本物の Diff 切り詰め行」だけを 100% 狙い撃ちする状態機械関数 を実装しました。
pub const DIFF_PREVIEW_TRUNCATION_LINE: &str = "... [truncated for diff preview]";
pub const SINGLE_RULE_FILE_WARN_BYTES: usize = 460_800; // 450 KiB で事前分割警告
pub const SINGLE_RULE_FILE_MAX_BYTES: usize = 500_000; // 512,000 bytes 到達前に物理遮断
/// フェンスコードブロック内の解説例示を除き、本物の Diff 切断行だけを検知して行番号を返す
pub fn detect_diff_preview_truncation(content: &str) -> Option<usize> {
let mut in_fence: Option<(char, usize)> = None;
for (idx, raw_line) in content.lines().enumerate() {
let line = raw_line.trim_end_matches('\r');
let trimmed_start = line.trim_start_matches(' ');
let leading_spaces = line.len() - trimmed_start.len();
if let Some((fch, flen)) = in_fence {
let cnt = trimmed_start.chars().take_while(|&c| c == fch).count();
if leading_spaces <= 3
&& cnt >= flen
&& trimmed_start[cnt * fch.len_utf8()..].trim().is_empty()
{
in_fence = None;
}
continue;
}
if leading_spaces <= 3
&& (trimmed_start.starts_with("```") || trimmed_start.starts_with("~~~"))
{
let fch = trimmed_start.chars().next().unwrap_or('`');
let cnt = trimmed_start.chars().take_while(|&c| c == fch).count();
let info = trimmed_start[cnt..].trim();
if !info.contains(fch) {
in_fence = Some((fch, cnt));
continue;
}
}
if trimmed_start.trim_end() == DIFF_PREVIEW_TRUNCATION_LINE {
return Some(idx + 1);
}
}
None
}
この関数を軸として、以下の 3 重の物理フェイルセーフ を gemini-gate の自己診断テスト(全 59 項目・実行時間 約 250 ミリ秒)へ組み込みました。
-
第1ロック(同期汚染の即時遮断) :
SessionStartやPostToolUseで走る--sync-rulesがGEMINI.mdまたはGEMINI_AXIOMS.mdに切断行を検知した瞬間、.agents/rules/やsrc/consts.tsへの書き換えを即座に中止(アボート)し、破損データの連鎖伝播を食い止めます。 -
第2ロック(
450 KiB早期警報と500,000バイト物理上限) : エディタの512,000バイト上限にぶつかる手前の460,800バイト(450 KiB)で「そろそろ章単位で分離を検討してください」と Warning を出し、500,000バイト(約488.3 KiB)を超えた時点で本番転送そのものをexit 1で強制ストップします。 -
第3ロック(全公開記事・システムファイルの横断スキャン) : ルール定義書だけでなく、全 707記事 の
.mdx原稿やTODO_ROADMAP.md、src/consts.tsに対しても同じ切断検知を 4 ミリ秒で走らせ、コード枠内の解説は偽陽性ゼロで通しつつ実被害だけを確実にブロックします。
AI にツールや自動検問ゲートを作らせるとき、Python や JavaScript のような動的スクリプトではなく、最初から文字境界・メモリ安全性・高速性をコンパイラが保証してくれる Rust を選んでおくと、こうした状態機械ガードも外部ライブラリ依存ゼロ・数ミリ秒で動く一生モノの資産になります。AI が出力した Rust コードの所有権やスライス境界の仕組みを手元で体系的に辞書引きしたい方には、定番の決定版である オライリー・ジャパン『プログラミングRust 第2版』 が 1 冊あると非常に心強いです。

なるほどなぁ!512,000 バイトの崖に落ちるずっと手前の 450 KiB で黄色信号を出して、500,000 バイトで踏み切りを下ろす上に、もし切り詰め文字が混ざったら同期までピタッと止めるんか!それなら夜中に寝ぼけてデプロイしても絶対に壊れんな!

そうなんです!「気をつけて毎回 git diff を隅から隅まで目視確認しよう」という人間の注意力に頼る運用は、規模が大きくなるほど必ずどこかで抜けてしまいます。一度踏んだ罠は、その日のうちに数ミリ秒の Rust 検問コードへ変えてしまうのが一番確実な再発防止策ですね!
まとめ:AI任せの自動化こそ機械の防波堤で守ろう
AI エディタと最上位モデルの進化によって、個人でも数百万字規模のメディアや何万行ものシステムを驚くようなスピードで育てられる時代になりました。しかしその裏側では、今回のような 「24 KB の単体ルール上限」「20,000 トークンの常時予算」「500 KiB(512,000 バイト)の Diff プレビュー書き戻し切断」 といった、ドキュメントの片隅にも大きく書かれていないツール側の物理上限が思わぬタイミングで顔を出します。
-
「Git Push 成功=手元のファイルも無事」とは限らない :
500 KiB(512,000バイト)を超えるファイルを AI に編集させると、Push 完了直後のプレビュー確定処理で末尾が\n... [truncated for diff preview]にすり替わることがある。 -
万一の破損時は
git show HEAD:<path> > <path>で無傷救出 : サンドボックス制限で.git/index.lockが作れない環境でも、Git オブジェクトから直接リダイレクト復元すれば 1 バイトの欠損もなく元に戻せる。 -
単一ファイルは
450 KiB以内を目安に「役割境界」で分冊する : 細切れにせず「共通システム憲法」と「ドメイン固有の専門公理・辞書」の 2 冊に分けることで、人間の読みやすさと上限回避を両立できる。 -
目視確認ではなくローカルの機械検問(
exit 1)で物理遮断する : コードフェンス内の解説例示を除外した上で、切り詰め文字列の混入と500,000バイト超過をビルド・転送前に自動ブロックする仕組みを置く。
1日約131円の母艦投資で守る565万字の知識資産
当サイトのように、RAM ディスク上に常駐させた Pure Rust の検問バイナリ(gemini-gate)と 1GB 超の SQLite 知識・会話履歴データベース(kb-search)を毎ターン数ミリ秒で連携させ、クラウド AI のトークン消費を抑えながら無事故で高速運用し続けるには、手元の Mac 母艦のメモリ余裕がそのまま快適さに直結します。
推論(試算)として、たとえば約 24 万円クラスの 64GB ユニファイドメモリ搭載機を導入して 5 年間(1,825 日)毎日開発や執筆に使い倒した場合、1 日あたりの快適コストは約 131 円(缶コーヒー 1 本分) です。スワップ発生による動作のもたつきや SSD 摩耗を気にせず、ローカル検問ゲートと AI エディタを余裕たっぷりに常駐させる母艦としては、好きな大画面モニターと組み合わせられる Apple Mac mini(Pro系チップ・64GBユニファイドメモリ構成) が抜群のコストパフォーマンスを発揮してくれます。
自分のルール定義を500KiB罠から守る診断プロンプト
最後に、ご自身のプロジェクトで育てている GEMINI.md や AGENTS.md、CLAUDE.md、あるいは長大な仕様書ファイルが「3 つの容量上限(24 KB / 20,000 tok / 500 KiB)」に引っかかっていないかを一発で点検し、安全なガードを組み込ませるためのコピペ用プロンプトを用意しました。
モデルの思考力不足による誤判定や雑なファイル分割事故を防ぐため、必ず 『Gemini 4 Argon』または同等以上の最上位推論モデル(Thinking / High 設定) を選択し、以下の枠内をコピーして貼り付けてみてください。
私のプロジェクトにある AI ルール定義ファイル(GEMINI.md / AGENTS.md / CLAUDE.md / .cursorrules / .agents/rules/* 等)および長大な Markdown・仕様書ファイルが、エディタ側の容量上限や Diff プレビュー切り詰めバグのリスクを抱えていないか診断・防衛設計を行いたいです。
まず以下の実測検証記事を読み込み、3つの容量の壁(①単一ルール24,000バイト上限、②常時注入20,000トークン予算、③単一ファイル512,000バイト[500 KiB]超過による `... [truncated for diff preview]` 書き戻し切断バグ)と対策構造を正確に把握してください。
https://lab.chihouzakki.com/blog/review/ai-editor-500kb-diff-truncation-trap-rust-guard/
【厳守してほしい手順】
1. いきなり既存ファイルを分割・書き換えせず、まずワークスペース内のルールファイル・仕様書・記事ファイルの UTF-8 バイト数一覧と、ワークスペース内に `... [truncated for diff preview]` の混入残骸が1件もないかを調査して報告してください。
2. 450 KiB(460,800 バイト)に近づいている単一ファイルがある場合は、人間の可読性を損なわない「役割境界での2冊分離案」を提示してください。
3. デプロイや Git コミット前に「コードフェンス内の例示を除いた切り詰め文字列混入」および「単一ファイルの 500,000 バイト超過」を機械的にブロックする軽量チェックの実装計画を提示し、私と合意してから実装に入ってください。
せっかく何ヶ月もかけて AI 相棒と一緒に育て上げた「プロジェクトの憲法」が、ある日こっそり尻切れトンボになってしまわないよう、ぜひファイルサイズが 500 KiB の壁に届く前に機械の防波堤を整えておいてくださいね!

▲ 大切な設計書を 2 冊に分けて機械の門番を置いておけば、もう尻尾が切れる心配はありません

