概要
OpenCodeは人気のあるAIコーディングエージェントだが、設計やセキュリティ面で重大な問題を抱えている。 プロンプトキャッシュやコンテキスト管理が不十分で、ユーザー体験も悪化。 システムプロンプトや権限管理、エージェント間のやり取りにも多くの欠陥。 ツール設計も一貫性に欠け、ユーザーの操作ミスや危険な挙動を誘発。 全体として、現状のOpenCode利用は推奨できないとの結論。
OpenCodeの基本的な問題点
- OpenCode は AIコーディングエージェント として人気だが、 TypeScript製 でGitHubスター数は16万以上
- セキュリティ設計 や システムソフトウェア原則 を無視した設計
- Webスタック 上でLLMパイプ処理を行うツールで、パイプ部分に多くの問題
- LLM利用自体の是非と、マシンの安全性は分けて議論する必要性
プロンプトキャッシュの問題
- LLMサーバーはOpenAI API互換のため、 会話全体を毎回送信 し、 SSEストリーム で応答
- アップロードコストが二次関数的に増加 し、 JSONラッピング でさらに非効率
- サーバーはキャッシュを用いて高速化 するが、OpenCodeの実装が不完全
- ファイルシステム全体をグロブして毎回AGENTS.mdを再読込
- ツールコールのコンテキストを毎回刈り込み、キャッシュ無効化
- システムプロンプトに毎回日付を挿入し、0時でキャッシュミス発生
- キャッシュミスが頻発し、待機時間が長くなる
プルーニング(文脈削除)の問題
- 固定しきい値(例:40,000トークン)で古い文脈を削除
- 重要な仕様書や計画が削除され、エージェントが正しく実装できなくなる
- skillツール以外はすべて均等に削除対象
- プルーニングとコンパクション(要約)の相互作用も悪い
コンパクション(要約)機能の問題
- 全セッションを新しいプロンプトで再評価し、長時間待機が発生
- 要約プロンプトがセッションの先頭に挿入され、効率悪化
- 手動でノートを書かせた方が有効
- Piのようなセッションツリー方式が参考になる
システムプロンプトの問題
- デフォルトプロンプトが冗長かつ質が低い
- プロンプトの内容や品質がモデル毎に大きく異なる
- Planモードの書き込み制限説明が実際と異なり混乱
- グローバルでのプロンプト編集が不可、プロジェクト毎に手動設定が必要
権限プロンプトの問題
- プロジェクト外ファイルアクセス時にYes/No/Alwaysのみ
- Neverが存在せず、サブエージェントの挙動も不安定
- 頻繁な許可プロンプトで意思決定疲労が発生し、危険行為を許容しやすい
エージェント間のやり取りの問題
- SSEストリーム中のメッセージ送信タイミングが不明確
- 割り込み時にメッセージが消失しやすい
- サブエージェントとの直接対話が不可
- サブエージェントの失敗でコンテキストが全消失
- サブエージェントの再利用が逆にキャッシュミスを誘発
エージェントツール設計の問題
- editツールは精密な検索置換が必要で、失敗時の修正が複雑
- Planモードのquestionツールは自然言語での質問に劣る
- grepやglobツールはbashと機能重複
総評
- OpenCodeは設計・実装・ユーザー体験・セキュリティいずれも未熟
- 現状では利用推奨できず、他のアプローチやツールの検討が望ましい