コーディングエージェントは「ランタイム選択」の時代へ
コーディングエージェントを実務に組み込むと、必ずランタイム固有の壁にぶつかります。Claude Code で動いていたワークフローを Codex に移そうとするとコードを書き直す必要があり、OpenCode を試すにはまた別の統合実装が要ります。セッション管理やツール承認の仕組みがランタイムごとに異なるためです。
Vercel の AI SDK Harness はこの問題に正面から取り組みます。既に定着したコーディングエージェントランタイムを 単一の統合インターフェースでラップし、アプリケーションコードを変更せずにランタイムを差し替えられるレイヤーです。今回のアップデートで Deep Agents と OpenCode のアダプタが加わり、対応リストは Claude Code、Codex、Deep Agents、OpenCode、Pi の計 5 種類になりました。
根拠資料: Vercel Changelog — Deep Agents and OpenCode harness adapters

追加された 2 つのアダプタをコードで確認
1. Deep Agents アダプタ — LangChain エコシステムとの接続
@ai-sdk/harness-deepagents は LangChain の deepagents ランタイムを Harness 上で動作させます。ファイル・シェルツール、スキル、ホストツール、マルチターンセッション、attach/resume、ツール承認が標準で含まれています。
// Deep Agents を HarnessAgent でラップする最小例
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { deepAgents } from '@ai-sdk/harness-deepagents';
const agent = new HarnessAgent({
harness: deepAgents,
});
この程度の記述でランタイムが切り替わります。アプリケーション側は harness の値だけを差し替えればよく、他のビジネスロジックはそのまま維持できます。
2. OpenCode アダプタ — サンドボックス内で実サーバーを起動
@ai-sdk/harness-opencode はアプローチが異なります。@opencode-ai/sdk を通じて サンドボックス内に実際の OpenCode サーバーを起動し、セッションイベントを Harness にストリーミングします。OpenCode の組み込みツール、組み込み/ホストツールの承認、モデル・プロバイダ・reasoning variant の選択まで対応します。
// サンドボックスで OpenCode サーバーを起動し Harness にストリーミング
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { openCode } from '@ai-sdk/harness-opencode';
const agent = new HarnessAgent({
harness: openCode,
});
両者に共通する重要点は、Vercel Sandbox 上で動作するという設計です。ローカル環境を汚染せず、隔離された実行レイヤーを確保できます。

対応ランタイムの比較
| ランタイム | アダプタパッケージ | 特徴 | 適したケース |
|---|---|---|---|
| Claude Code | @ai-sdk/harness-claudecode | Anthropic エコシステム、安定したツール群 | Claude Code のワークフローが既にあるチーム |
| Codex | @ai-sdk/harness-codex | OpenAI 系の推論性能 | GPT 系モデルを好むチーム |
| Deep Agents | @ai-sdk/harness-deepagents | LangChain deepagents、ファイル・シェル・スキル・マルチターン・承認 | LangChain ベースのエージェント資産を再利用したい場合 |
| OpenCode | @ai-sdk/harness-opencode | サンドボックス内で実サーバー起動、モデル・プロバイダ選択が自由 | OSS ランタイム、マルチプロバイダ検証 |
| Pi | @ai-sdk/harness-pi | 軽量ランタイム | 最小オーバーヘッドを求める場合 |
この技術の限界と注意点
- サンドボックス依存: OpenCode アダプタは Vercel Sandbox 内でサーバーを起動する構造のため、ローカル開発環境でそのまま再現するのは難しい場合があります。ローカルテスト戦略は別途設計する必要があります。
- バージョンドリフト: 各ランタイムは独立してリリースされるため、アダプタが特定バージョンのランタイムのみをサポートする状況が発生します。CI でアダプタとランタイムのバージョン組み合わせを固定することを推奨します。
- 抽象化の漏れ: 統合インターフェースが便利でも、ランタイム固有の機能が 100% 露出するわけではありません。特定ランタイムの特殊機能が必要な場合は、その部分だけ直接接続する判断が妥当です。
次のステップ
- まず
@ai-sdk/harness/agentのHarnessAgentインターフェースのドキュメントを確認してください。 - 既存のランタイムを 1 つ選び、小規模プロジェクトで Harness にラップするリファクタリングを試してみてください。
- サンドボックス隔離とツール承認ポリシーを自組織のセキュリティ要件と突き合わせると、導入判断がしやすくなります。

まとめ: ランタイムは差し替えるもの
AI SDK Harness のメッセージは明快です。エージェントランタイムはアプリケーションの部品であり、アプリケーションそのものではないという考え方です。Deep Agents と OpenCode の参加により選択肢が広がった今、「どのランタイムを使うか」よりも「どのランタイムをいつ差し替えるか」を設計する方が重要になります。