AIエージェントの会話ログを実測してトークン費用の発生源を潰す
会話ログを走査して「contextに貼られた一括データ」を増幅後トークンで順位付けし、最大の1件を要約ツールへ置き換える手順。実測で入力23,209→774tok(96.7%削減)。検出器が陥る罠2件と、圧縮率を守る回帰テストの型つき。
約9.2万トークンの節約 (API料金換算で約140円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「AIエージェントの会話ログを実測してトークン費用の発生源を潰す」は、AIのしつけカテゴリのAI指示書(MDファイル)です。会話ログを走査して「contextに貼られた一括データ」を増幅後トークンで順位付けし、最大の1件を要約ツールへ置き換える手順。実測で入力23,209→774tok(96.7%削減)。検出器が陥る罠2件と、圧縮率を守る回帰テストの型つき。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約9.2万トークン(API料金換算で約140円)・96%のトークンを節約できます。
- カテゴリ
- AIのしつけ
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約9.5万トークン
- この巻物使用時
- 約3,500トークン
- 節約量
- 約9.2万トークン (約140円)
- 更新日
- 2026-08-27
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/md-eb6ec6c5/raw を読み込んで、この指示書どおりに実装して"
中身
会話ログを実測して「context を太らせている一括データ」を特定し、要約ツールへ置き換える
AI コーディングエージェント(Claude Code / Cursor / Cline など、会話ログを JSONL で保存するもの)を チームで使っていると、トークン費用の大半が出力ではなく入力になる。原因は「一度 context に入った 大きなデータが、以降の全リクエストで再送され続ける」こと。この指示書は、それを推測せず実測で特定し、 最大の発生源だけを置き換える手順をまとめたもの。
実際にこの手順を回した結果、置換対象1件で 同一データの入力トークンが 23,209 → 774(96.7%削減) になった。
0. 前提と考え方
- コストは「貼った大きさ」でなく「貼った位置」で決まる。 会話の序盤に貼った 2,000 tok の表が、 終盤に貼った 15,000 tok より高くつく。以降のリクエスト数だけ再送されるため。 これを本書では 増幅後トークン = 生トークン × 以降のリクエスト数 と呼ぶ。
- したがって最適化の対象は「大きい応答」ではなく「早い段階で入った、大きくて構造化されたデータ」。
- 置き換えの方針は1つ: 取得して全文を context に貼るのをやめ、スクリプト側で集計・抽出して少量だけ返す。 全文はファイルへ落としておき、必要になった時だけ範囲を指定して読む。
1. 会話ログの構造を先に確認する(決め打ちしない)
多くのエージェントは 1 行 1 JSON の JSONL で会話を保存する。まず実物を見て、次の3つを特定する。
- アシスタントの発話行(ツール呼び出しを含む)の形
- ツール結果が入る行の形と、呼び出しと結果を結ぶ ID
- 1リクエストが何行に分かれるか
# 例: 最大のログを1本選び、行の型を数える
head -400 <ログ.jsonl> | \
jq -r '[.type, ([.message.content[]?.type] | join(","))] | join("/")' | sort | uniq -c
⚠️ ここが最初の罠。 多くのエージェントは 1 リクエストの応答を
thinking / text / tool_use の複数行に分けて保存する。行数をリクエスト数として数えると
2〜3倍の過大評価になる。実測例では assistant 250行 = 実リクエスト 107。
リクエスト単位の ID(requestId や message.id 等)の変化で数えること。
2. 「一括データ」の判定器を書く
大きいだけでは対象にならない。長いソースコードや散文は「必要な文脈」であって置換対象ではない。 表形式・構造化データに見えるものだけを拾う。
判定の順序と条件(閾値は 2,000 文字程度から):
| 種別 | 条件 |
|---|---|
| CSV | カンマ区切りで3列以上の行が5行以上、かつ最頻列数の行が全非空行の70%以上 |
| TSV | タブ区切りで2列以上、同上 |
| Markdown 表 | | で始まり | で終わる行が5行以上連続し、区切り行 |---| を含む |
| JSON 配列 | パースできて配列・要素5個以上・過半がオブジェクト(巨大時は },{ の出現回数で近似) |
⚠️ 2つ目の罠。 ファイル読み取りツールの出力は多くの場合
「行番号 + タブ(または矢印)+ 本文」(cat -n 形式)。剥がさずに判定すると
すべてのファイル読み取りが TSV と誤検出される。実測では最初の集計で上位10件中8件がこれで、
「一括データの話」が「ファイルを読んだ話」にすり替わっていた。
判定前に: 非空行の70%以上が /^\s*\d+(\t|→)/ に一致するなら、その前置きを全行から除去する
3. 帰属・増幅・集約
- 帰属: ツール結果は呼び出し ID で元の呼び出しに突き合わせ、「どのツールの・どの引数の呼び出しが貼ったか」まで出す。
シグネチャは可変部を伏せて正規化する(日付 →
<DATE>、3桁以上の数値 →<N>、 パスはディレクトリだけ伏せて basename は残す)。 ⚠️ パスを丸ごと<PATH>にすると全ファイル読み取りが1グループへ潰れ、 「どれを置き換えるか」が読めなくなる。 - 増幅: その行より後に現れるリクエスト数を掛ける。
- 集約:
(種別, ツール, シグネチャ)でまとめ、増幅後トークンの降順で並べる。
トークン推定は ASCII文字数 / 4 + 非ASCII文字数 / 1.6 程度の簡易式で十分(相対比較が目的のため)。
ただし置換前後は必ず同じ推定器で測る。別々の数え方で比べた数字は比較にならない。
4. 出力を読むときの鉄則
上位を1件ずつ「本当にそれか」と疑う。 上位が直感と違うときは、発見ではなく検出器のバグであることが多い。 実際この手順では、公開できる数字を出すまでに検出器の欠陥が2件(前述の行数カウントと行番号プレフィックス)見つかった。 どちらも「気づかなければ置換対象を完全に外していた」種類の誤りだった。
5. 最大の1件だけを置き換える
全部やろうとしない。増幅後トークンの上位1件が全体の3割を占めることは珍しくない。
置換ツールの設計(この形が汎用的に効く):
- 要約だけを標準出力へ返す: 件数、作成者・カテゴリ別の内訳、時間範囲、直近 N 件
- 1件あたりの本文に上限を設ける(例: 200文字 +
…(全N字))。 ⚠️ これが無いと、巨大な1件が予算を食い潰して「直近10件」が実質1件になる - 全体の出力予算(例: 6,000文字)を設け、超えたら削るが省略件数を必ず明示する。黙って切り捨てない
- 全文は
--raw-out <path>でファイルへ。標準出力には出さない。 「全文が要るときだけ読んでください」と一言添える - 絞り込みオプション(
--since/--grep/--limit)を持たせ、取得段階で減らす
回帰テストで「安いこと」を機械的に守る
要約ツールは放っておくと出力が育つ。圧縮率そのものをテストにする。
テスト: 実データ相当(例: 60件、本文200〜400字)を渡したとき、
要約出力の文字数が JSON 全文の 25% 未満であること
さらに、上限値を無効化するとテストが落ちることを一度確認する(変異テスト)。 落ちないテストは書いていないのと同じ。
6. 置き換えを「実際に使われる状態」にする
ツールを作っただけでは何も変わらない。チームの運用ルールに1行入れるまで含めて完了とする。
- チーム共通のルールファイル(エージェントが毎回読む設定ファイル等)に 「まとめ読みは一覧系ツールでなく要約ツールを使う」と書く
- 用途を分けて書くのが重要: 「まとめ読み=要約ツール」「少数を正確に読む=従来どおり」。 一律禁止にすると精度が要る場面で品質が落ちる
- 実測値(何 tok → 何 tok)を根拠として併記する。数字が無いルールは守られない
7. 完了条件(これを満たすまで「やった」と言わない)
- 一括データの貼付箇所を実測で列挙した(推測で書いていない)
- 上位1件を置換し、置換前後の入力トークンを同じ推定器で実測比較した
- 圧縮率の回帰テストがあり、変異させると落ちることを確認した
- 運用ルールに反映し、次に同じ作業をする人が自然に新しい経路を通る状態になった
付録: よくある誤りチェックリスト
- リクエスト数を「行数」で数えていないか(2〜3倍ずれる)
- ファイル読み取りの行番号プレフィックスを剥がしたか
- パス正規化で全部を1グループに潰していないか
- 置換前後を同じ推定器で測ったか
- 1件あたりの本文上限があるか(巨大な1件が予算を食う)
- 省略したとき、省略件数を明示しているか
- テストが空でない(変異させると落ちる)ことを確認したか
- 長い指示文をコマンドライン引数で渡していないか (シェルがバッククォートをコマンド置換として実行し、指示の一部が消える。 Windows は引数長の上限も短い。ファイル経由で渡す)
よくある質問
+「AIエージェントの会話ログを実測してトークン費用の発生源を潰す」とは何ですか?
会話ログを走査して「contextに貼られた一括データ」を増幅後トークンで順位付けし、最大の1件を要約ツールへ置き換える手順。実測で入力23,209→774tok(96.7%削減)。検出器が陥る罠2件と、圧縮率を守る回帰テストの型つき。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約9.5万トークンかかりますが、この巻物を使えば約3,500トークンで済みます。差し引き約9.2万トークン(API料金換算で約140円)・96%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
AI運用ルールを機械的に守らせる hook 設計 — ルール文が守られない本当の理由
チームでAIエージェントを使うと運用ルールが必ず守られなくなる。真因は「読んでいない」ではなく hook がそのマシンで登録されていない/委譲先が沈黙して壊れていること。禁止=実行前拒否・誘導=依頼時の具体コマンド注入・担保=セッション開始時の自己修復の3層、明示例外の短命トークン、warn→blockの段階昇格、BOM/サンドボックス/timeout など失敗が沈黙する罠と、環境依存で落ちないテストの作り方までを実測ベースでまとめた導入手順。
マキモノ検索スキル — AIが自分で巻物を探して使えるようになるMD
あなたのAIエージェント (Claude Code等) にこのMDを読ませると、開発タスクを受けたとき自動でマキモノAPIを検索し、最適な指示書を取得してから作業するようになります。導入は貼るだけ。
無人AIセッションのバックグラウンド委譲が静かに殺される事故を潰す
ヘッドレスで起動したAIエージェントがバックグラウンド委譲した子プロセスは、ターン終了で kill されるのに親は exit 0 を返す。機械的に deny するフック、通知の作り方、対応中フラグの戻し忘れ、Windows製worktreeがLinux側から解決できない罠までを含む恒久対策。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア