---
title: "VercelのエージェントフレームワークEveをちょっと触ってみた"
description: "Vercelが公開したオープンソースのエージェントフレームワークEveを、init・dev起動・最初のセッションまでローカルで動かしてみた軽い検証ログ。"
lang: "ja"
canonical: "https://llm-lab.dev/posts/vercel-eve-first-look/"
source: "https://llm-lab.dev/posts/vercel-eve-first-look.md"
publishedAt: "2026-06-19"
updatedAt: "2026-06-19"
category: "eve"
tags:
  - "vercel"
  - "agent"
  - "typescript"
---

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

import LinkCard from "../../components/LinkCard.astro";

> [!NOTE]
> この記事で確認したこと
>
> Eveの初回検証として、`init`、devサーバー起動、HTTP APIで最初のセッションが発行されるところまで確認しました。AI Gatewayの認証情報は未設定だったため実際のモデル呼び出しは通していませんが、ローカルサーバーが起動し、`sessionId`が返るところまでは見えています。
>
> セットアップで分かったことは、Node.js 24要求、対話式init、AI Gatewayのcontext window metadataへ到達できない環境では`modelContextWindowTokens`を直接指定する回避策が必要だったことです。

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

触る前に、Eveがどんな思想のフレームワークなのかも整理しています。

<LinkCard
  href="https://llm-lab.dev/posts/eve-vercel-agent-framework-survey/"
  title="VercelのAIエージェントFW「eve」を導入前に調査したメモ"
  description=""
  siteName=""
  image="/images/posts/eve-vercel-agent-framework-survey/heroImage.webp"
/>

## いきなり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](/blog/flue-1-0-beta-local-check)はNode 22で素直に動いたので、要求バージョンの差は最初に確認しておいたほうがよさそうです。

## initは対話式ウィザード

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

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

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

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

```ts
import { defineAgent } from "eve";

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

ツールやSkillのサンプルは生成されず、本当に骨格だけ、という印象です。`AGENTS.md`と`CLAUDE.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`を直接指定するエスケープハッチがドキュメント上に用意されていたので、それで回避しています。

```ts
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自体は素直に応答しました。

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

```json
{"continuationToken":"eve:...","ok":true,"sessionId":"wrun_..."}
```

`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.
```

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

## 今回はここまで

Node 24要求、対話式init、デフォルトモデルIDの噛み合わせ不良という3つの小さな壁を越えて、ローカルでHTTPサーバーが立ち上がってセッションが発行できるところまでは確認できました。実際のモデル呼び出し、ツール定義、Slack連携は、この初回検証の範囲外として残しています。
