つれづれなる Agent OPS
技術メモ

VercelのエージェントフレームワークEveをちょっと触ってみた

Vercelが公開したオープンソースのエージェントフレームワークEveを、init・dev起動・最初のセッションまでローカルで動かしてみた軽い検証ログ。

Vercelがeveというオープンソースのエージェントフレームワークを出していました。「エージェントはディレクトリである」というキャッチコピーが気になったので、まずは深く考えずに手元でinitしてみることにしました。今回は重い検証はせず、最初の一歩でどこにつまずいたかだけを残します。

いきなりNodeバージョンで止まった

npx eve@latest initを打つ前に、念のためバージョンを見ようとしたところで早速止まりました。

eve requires Node.js >=24. You are running v22.22.2. Please install a compatible Node.js version and try again.

手元の環境はNode 22系だったので、ここでNode 24を用意する必要が出てきました。今回の検証環境ではnvmが入っていなかったので、npm registry経由で配布されているnodeパッケージ(バイナリそのものを配るやつ)を使ってローカルにNode 24だけ転がし、PATHを通すという力技で対応しました。Astro陣営のFlueはNode 22で素直に動いたので、要求バージョンの差は最初に確認しておいたほうがよさそうです。

initは対話式ウィザード

Node 24を通したうえでnpx eve@latest init my-agentを実行すると、CLIヘルプには非対話用のフラグが見当たらず、そのまま対話ウィザードが進んで/home/claude/my-agentにプロジェクトが作られました。

生成された最小構成はこうなっていました。

my-agent/
├─ agent/
│  ├─ agent.ts
│  ├─ instructions.md
│  └─ channels/
│     └─ eve.ts
├─ AGENTS.md
├─ CLAUDE.md
└─ package.json

agent.tsはモデル指定だけのシンプルな1行ファイルでした。

import { defineAgent } from "eve";

export default defineAgent({
  model: "anthropic/claude-sonnet-4.6",
});

ツールやSkillのサンプルは生成されず、本当に骨格だけ、という印象です。AGENTS.mdCLAUDE.mdが最初から両方置かれているのは、コーディングエージェントに作業を引き継がせる前提の設計が伝わってきました。

デフォルトのモデルIDで早速詰まる

依存インストール後にeve devを叩くと、すぐにこんなエラーが出ました。

Cannot compile agent compaction because the primary compaction trigger model
"anthropic/claude-sonnet-4.6" does not have known AI Gateway context window metadata.

生成されたagent.tsに書かれていたモデルID表記(claude-sonnet-4.6、ドット区切り)が、ハイフン区切り(claude-sonnet-4-6)に直しても解消しませんでした。中身を覗くと、このエラーはモデルのコンテキストウィンドウ長をAI Gateway側に問い合わせて確認する処理で起きており、今回の検証環境からはそのGateway自体に到達できないことが後の検証で分かりました。ひとまずmodelContextWindowTokensを直接指定するエスケープハッチがドキュメント上に用意されていたので、それで回避しています。

export default defineAgent({
  model: "anthropic/claude-sonnet-4-6",
  modelContextWindowTokens: 200_000,
});

devサーバーは起動し、HTTP API越しに叩けた

ここまででeve devが起動し、ローカルにHTTPサーバーが立ちました。

[DEV] server listening at http://127.0.0.1:2000/
[DEV] Interactive UI disabled because the current terminal is not a TTY.

ターミナルUIは今回の実行環境(TTYなし)では無効化されましたが、HTTP API自体は素直に応答しました。

curl -X POST http://127.0.0.1:2000/eve/v1/session \
  -H "Content-Type: application/json" \
  -d '{"message": "こんにちは、自己紹介してください"}'
{"continuationToken":"eve:bd537d4d-...","ok":true,"sessionId":"wrun_01KVBNH3F1JFZ2N63QEWDXT8H3"}

sessionIdが発行されたので、ストリームエンドポイントを覗いてみると、想定通りAPIキー未設定で止まりました。

AI Gateway received no credentials. Run `eve link` to populate VERCEL_OIDC_TOKEN,
or set AI_GATEWAY_API_KEY — create a key at https://vercel.com/dashboard/ai/api-keys.

TODO 画像置き換え: curlでセッションを作成し、ストリームのJSONイベントが流れてくる様子のターミナルスクリーンショット

ここまでで、エラーメッセージが終始かなり具体的だった点は印象的でした。「何が足りないか」「どう直すか」までエラー文に書かれているので、初見でもリカバリの道筋は見えやすいです。

今回はここまで

Node 24要求、対話式init、デフォルトモデルIDの噛み合わせ不良という3つの小さな壁を越えて、ローカルでHTTPサーバーが立ち上がってセッションが発行できるところまでは確認できました。実際にモデル呼び出しまで通して、ツール定義やSlack連携まで触る部分は、もう少し腰を据えて別記事にします。

DUO

Author

DUOps

LLMOps、Agent、MCP、Langfuse、Cloudflare 周辺の実装と運用を、個人で試しながら記録しています。

Xを見る

Related