インストールとクイックスタート
このチュートリアルでできること
- ✅ 5分以内にDCPプラグインをインストール
- ✅ プラグインを設定し、インストールを検証
- ✅ 初回の自動トリミング効果を確認
現在の課題
OpenCodeを長期間使用すると、会話がどんどん長くなります:
- AIが同じファイルを何度も読み取る
- ツール呼び出しのエラーメッセージがコンテキストを埋め尽くす
- 各会話で大量のTokenを消費する
- 会話が長くなるほど、AIの応答が遅くなる
会話内の重複したコンテンツを自動的にクリーンアップしたいが、手動操作はしたくない。
コアコンセプト
**DCP(Dynamic Context Pruning)**はOpenCodeのプラグインで、会話履歴から重複したツール呼び出しを自動的に削除し、Token消費を削減します。
その動作:
- 自動検出:メッセージ送信ごとに会話履歴を自動的に分析
- スマートクリーンアップ:重複したツール呼び出し、期限切れのエラー、上書きされた書き込みを削除
- AI駆動:AIは
discardおよびextractツールを呼び出してコンテキストを最適化 - 透明で制御可能:
/dcpコマンドでトリミング統計を表示し、手動でクリーンアップを実行
核心メリット
- ゼロコスト:自動戦略はLLM呼び出しを必要としません
- ゼロ設定:インストールするだけ、デフォルト設定はすでに最適化済み
- ゼロリスク:LLMに送信されるコンテキストのみを変更し、会話履歴には影響しません
🎒 開始前の準備
インストールを開始する前に、確認してください:
- [ ] OpenCodeがインストール済み(プラグイン機能をサポート)
- [ ] OpenCode設定ファイルを編集する方法を知っている
- [ ] 基本的なJSONC構文を理解している(コメントをサポートするJSON)
重要なヒント
DCPはLLMに送信されるコンテキストの内容を変更しますが、会話履歴には影響しません。設定でいつでもプラグインを無効にできます。
進め方
ステップ1:OpenCode設定ファイルを編集
理由 OpenCode設定でDCPプラグインを宣言すると、OpenCodeの起動時に自動的に読み込まれます。
OpenCode設定ファイルopencode.jsoncを開き、pluginフィールドにDCPを追加:
// opencode.jsonc
{
"plugin": ["@tarquinen/opencode-dcp@latest"],
}期待される結果:設定ファイルに他のプラグインがすでにある場合(もしあれば)、配列の末尾にDCPを追加するだけです。
ヒント
@latestタグを使用すると、OpenCodeは起動時に最新バージョンを自動的に確認して取得します。
ステップ2:OpenCodeを再起動
理由 プラグイン設定の変更後、有効にするには再起動が必要です。
OpenCodeを完全に閉じて、再起動してください。
期待される結果:OpenCodeが正常に起動し、エラーメッセージが表示されません。
ステップ3:プラグインインストールを確認
理由 DCPプラグインが正しく読み込まれていることを確認し、デフォルト設定を確認します。
OpenCodeの会話で入力:
/dcp期待される結果:DCPコマンドヘルプが表示され、プラグインが正常にインストールされたことがわかります。
╭───────────────────────────────────────────────────────────╮
│ DCP Commands │
╰───────────────────────────────────────────────────────────╯
/dcp context Show token usage breakdown for current session
/dcp stats Show DCP pruning statistics
/dcp sweep [n] Prune tools since last user message, or last n toolsステップ4:デフォルト設定を確認
理由 DCPのデフォルト設定を理解し、プラグインが期待通りに動作していることを確認します。
DCPは初回実行時に自動的に設定ファイルを作成します:
# グローバル設定ファイルを表示
cat ~/.config/opencode/dcp.jsonc期待される結果:設定ファイルが作成され、初期状態では$schemaフィールドのみ含みます:
{
"$schema": "https://raw.githubusercontent.com/Opencode-DCP/opencode-dynamic-context-pruning/master/dcp.schema.json"
}設定ファイルは初期状態で$schemaフィールドのみを含み、その他のすべての設定項目はコード内のデフォルト値を使用します。手動で設定する必要なく使用できます。
デフォルト設定の説明
DCPのコードデフォルト値は以下の通りです(設定ファイルに書き込む必要はありません):
- deduplication:自動重複排除、重複したツール呼び出しを削除
- purgeErrors:4ターン前のエラーツール入力を自動的にクリーンアップ
- discard/extract:AIが呼び出せるトリミングツール
- pruneNotification:詳細なトリミング通知を表示
カスタム設定が必要な場合は、これらのフィールドを手動で追加できます。詳細な設定説明は設定ガイドを参照してください。
ステップ5:自動トリミング効果を体験
理由 実際にDCPを使用し、自動トリミングの効果を確認します。
OpenCodeで会話を行い、AIに同じファイルを複数回読み取らせたり、失敗するツール呼び出しを実行したりします。
期待される結果:
- メッセージを送信するたびに、DCPは会話履歴を自動的に分析
- 重複したツール呼び出しがある場合、DCPは自動的にクリーンアップ
- AI応答後、トリミング通知が表示される場合があります(
pruneNotification設定によります)
トリミング通知の例:
▣ DCP | ~12.5K tokens saved total
▣ Pruning (~12.5K tokens)
→ read: src/config.ts
→ write: package.json/dcp contextを入力して現在のセッションのToken使用状況を確認:
Session Context Breakdown:
──────────────────────────────────────────────────────────
System 15.2% │████████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ 25.1K tokens
User 5.1% │████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ 8.4K tokens
Assistant 35.8% │██████████████████████████████████████▒▒▒▒▒▒▒│ 59.2K tokens
Tools (45) 43.9% │████████████████████████████████████████████████│ 72.6K tokens
──────────────────────────────────────────────────────────
Summary:
Pruned: 12 tools (~15.2K tokens)
Current context: ~165.3K tokens
Without DCP: ~180.5K tokensチェックポイント ✅
上記のステップを完了すると、次のことができるはずです:
- [ ]
opencode.jsoncにDCPプラグインが追加済み - [ ] OpenCode再起動後、正常に実行できる
- [ ]
/dcpコマンドでヘルプが表示される - [ ] 設定ファイル
~/.config/opencode/dcp.jsoncが作成済み - [ ] 会話でトリミング通知が見える、または
/dcp contextでトリミング統計が見える
あるステップで失敗した場合:
opencode.jsoncの構文が正しいか確認(JSONC形式)- OpenCodeログでプラグイン読み込みエラーがないか確認
- OpenCodeバージョンがプラグイン機能をサポートしているか確認
落とし穴のヒント
問題1:プラグインが有効にならない
症状:設定は追加したが、トリミング効果が見えない
原因:OpenCodeが再起動されていないか、設定ファイルのパスが間違っている
解決策:
- OpenCodeを完全に閉じてから再起動
opencode.jsoncの位置が正しいか確認- ログを確認:
~/.config/opencode/logs/dcp/daily/ディレクトリのログファイル
問題2:設定ファイルが作成されない
症状:~/.config/opencode/dcp.jsoncが存在しない
原因:OpenCodeがDCPプラグインを呼び出していないか、設定ディレクトリの権限の問題
解決策:
- OpenCodeが再起動済みであることを確認
- 設定ディレクトリを手動で作成:
mkdir -p ~/.config/opencode opencode.jsoncでプラグイン名が正しいか確認:@tarquinen/opencode-dcp@latest
問題3:トリミング通知が表示されない
症状:トリミング通知が見えないが、/dcp statsにはトリミングが表示される
原因:pruneNotificationが"off"または"minimal"に設定されている
解決策:設定ファイルを変更:
"pruneNotification": "detailed" // または "minimal"まとめ
DCPプラグインのインストールは非常に簡単です:
opencode.jsoncにプラグインを追加- OpenCodeを再起動
/dcpコマンドでインストールを確認- デフォルト設定で使用可能、追加の調整は不要
DCPでデフォルトで有効な機能:
- ✅ 自動重複排除戦略(重複したツール呼び出しを削除)
- ✅ エラー削除戦略(期限切れのエラー入力をクリーンアップ)
- ✅ AI駆動ツール(
discardとextract) - ✅ 詳細なトリミング通知
次のステップ:設定をカスタマイズする方法を学び、トリミング戦略を調整してさまざまなシナリオのニーズに対応します。
次のチュートリアルの予告
次のチュートリアルでは**設定ガイド**を学びます
学習内容:
- 多階層設定システム(グローバル、環境変数、プロジェクトレベル)
- すべての設定項目の目的と推奨設定
- ターン保護、保護されたツール、保護されたファイルパターン
- さまざまなトリミング戦略を有効化/無効化する方法
付録:ソースコード参照
クリックしてソースコードの場所を表示
更新時間:2026-01-23
| 機能 | ファイルパス | 行号 |
|---|---|---|
| プラグインエントリポイント | index.ts | 12-102 |
| 設定管理 | lib/config.ts | 669-794 |
| コマンド処理 | lib/commands/help.ts | 1-40 |
| Token 計算 | lib/commands/context.ts | 68-174 |
重要な定数:
MAX_TOOL_CACHE_SIZE = 1000:ツールキャッシュの最大エントリ数
重要な関数:
Plugin():プラグイン登録とフック設定getConfig():多階層設定の読み込みとマージhandleContextCommand():現在のセッションのToken使用状況を分析