Skip to content

API会話履歴の「(no content)」幽霊テキストブロック問題の修正

原文(日本語に翻訳)

API会話履歴に「(no content)」という幽霊のようなテキストブロックが出現する問題を修正し、トークンの無駄遣いとモデルの混乱の可能性を削減しました。

原文(英語)

Fixed phantom "(no content)" text blocks appearing in API conversation history, reducing token waste and potential model confusion

概要

Claude Code の内部API通信において、実際には内容がないにもかかわらず「(no content)」というテキストブロックが会話履歴に挿入される問題が修正されました。この問題は、不要なトークンを消費し、モデルの応答品質に悪影響を与える可能性がありました。

基本的な使い方

修正後の正常動作

bash
# Claude Codeセッションを開始
claude

# 通常の会話を行う
> "このファイルを読んで"
> "次にこのコードを修正して"

# 内部的にAPI会話履歴が正しく管理される
# 以前: 空のメッセージブロックが "(no content)" として挿入
# 現在: 実際のコンテンツのみが履歴に記録される

トークン使用量の確認

bash
# Task ツール使用時のメトリクス表示(v2.1.30で追加)
> "この機能を実装して"

# Task ツール実行後
# 表示: token_count: 5000, tool_uses: 3, duration: 30s

# 以前: 幽霊ブロックにより余計なトークンが消費
# 現在: 実際の内容のみがカウントされる

実践例

長時間セッションでのトークン節約

以前は長時間のセッションで幽霊ブロックが蓄積していました:

bash
# 長時間の開発セッション
claude

> "プロジェクトを初期化して"
> "認証機能を追加して"
> "データベース接続を設定して"
# ... 多数のやり取り ...

# 以前の問題:
# - 各メッセージ間に "(no content)" ブロックが挿入
# - 100回のやり取りで数千トークンの無駄
# - コンテキストウィンドウの圧迫

# 修正後:
# - 実際のメッセージのみが履歴に保存
# - トークン使用量が大幅に削減
# - より多くのコンテキストが利用可能

API 直接利用時の会話履歴管理

Claude API を直接使用する場合も恩恵を受けます:

bash
# Claude Code内部のAPI呼び出し
# POST /v1/messages

{
  "model": "claude-sonnet-4.5-20251101",
  "messages": [
    {"role": "user", "content": "Hello"},
    {"role": "assistant", "content": "Hi there!"},
    {"role": "user", "content": "Tell me about X"}
    // 以前: ここに {"role": "assistant", "content": "(no content)"} が挿入
    // 現在: 不要なブロックは含まれない
  ]
}

# 結果: よりクリーンな会話履歴、トークン節約

コンテキスト管理の改善

bash
# /context コマンドで会話履歴を確認
claude

/context

# 出力例(以前):
# Messages: 50
# Token usage: 25000
# (幽霊ブロック含む)

# 出力例(現在):
# Messages: 50
# Token usage: 18000
# (実際の内容のみ、約28%削減)

マルチターン会話の品質向上

幽霊ブロックがモデルの混乱を引き起こす可能性がありました:

bash
> "前回の結果を要約して"

# 以前の問題:
# - 会話履歴に "(no content)" が散在
# - モデルが「前回の結果」を正しく参照できない可能性
# - 応答品質の低下

# 修正後:
# - クリーンな会話履歴
# - モデルが正確に過去のコンテキストを参照
# - 一貫性のある応答

注意点

  • 自動修正: この修正は自動的に適用され、ユーザー側の設定変更は不要です。

  • 会話履歴の保存先: Claude Code は会話履歴を以下に保存します:

    • ~/.claude/history.jsonl - 会話の索引
    • ~/.claude/projects/ - 完全な会話データ
  • トークン節約の効果: 幽霊ブロックの数はセッションの長さと複雑さに依存しますが、長時間セッションでは数千トークンの節約が期待できます。

  • 関連する修正: v2.1.30では、thinking blocks に関連する他の会話履歴バグも修正されました:

    • API 400 エラー(thinking blocks の順序エラー)
    • /login 実行後の 400 エラー(thinking blocks 含む場合)
  • プロンプトキャッシング: 幽霊ブロックの削除により、プロンプトキャッシングの効率も向上します。クリーンな会話履歴はキャッシュヒット率を高めます。

  • 影響範囲: すべてのClaude Code セッションと API 呼び出しに適用されます。CLI、VSCode拡張、API直接利用すべてで恩恵を受けます。

関連情報