VercelのAIエージェントフレームワーク「eve」を試してみた|ブログのナレッジで自作キーボードエージェントを作る

VercelのAIエージェントフレームワーク「eve」を試してみた|ブログのナレッジで自作キーボードエージェントを作る

2026.06.21

こんにちは、豊島です。

2026年6月17日、ロンドンで開催されたVercel Ship 26で、Vercelから新しいオープンソースのAIエージェントフレームワークeveが発表されました。2026年6月時点ではpublic preview(beta)です。

位置づけは「Next.js for agents」、Next.jsがWebアプリケーションにやったことを、AIエージェントに対してやろうとしているフレームワークです。
少し前にVercel Labsのvercel-openclawで知る、Vercelサービスの組み合わせ事例という記事で、AIエージェントを構築するために、Vercelのサービス群をどう組み合わせるかを整理し、設計を理解していたので、eveを触ったときに、「これが最初から入ってくるのか」と気づくことができました。
本記事では、まずeveを動かしてみたうえで、これまでのAIエージェント構築と何が変わるのかを見ていきます。

これまでどうやってAIエージェントを構築していたか

数時間動き続けたり、人の承認を待ったり、外部APIとつないだり、デプロイやクラッシュをまたいでも状態が消えないエージェントを作ろうとすると、毎回同じような土台を組む必要がありました。

前回vercel-openclawで見た構成でいうと、ざっくり次のような処理です

  • 状態の永続化と、中断・再開
  • エージェントが生成したコードを隔離するサンドボックスの管理
  • APIキーをサンドボックスの中に持たせず、外で預かって呼び出し時だけ差し込む仕組み
  • SlackやTelegramとの連携
  • 定期実行や停止中のサンドボックスを起動する仕組み

公式ブログIntroducing eveでは、「この土台がエージェントごとに作り直しになり、次のユースケースに何も引き継がれないことが課題だった」と紹介されていました。
Webアプリケーションフレームワークが登場する前、共通部分を手で書いていた状態に近い、という整理です。eveはそのエージェントの形をフレームワークにしたもの、という位置づけになります。

eveとは何か

eveの中心にあるのは、「エージェントは1つのディレクトリである」という考え方です。
agent/配下のディレクトリごとに役割が決まっていて、ツリーを見ればそのエージェントが何で、何ができるのかが一目で分かります。

agent/
  agent.ts          # 使うモデル
  instructions.md   # 役割や人格(システムプロンプト)
  tools/            # できること(1ツール=1ファイル)
  skills/           # 知識(Markdown、必要なときに読み込む)
  subagents/        # 作業を任せる子エージェント
  channels/         # どこから話しかけるか(Slack など)
  schedules/        # 定期実行(決まった時刻に動かす)

「batteries included」も掲げていて、耐久実行・サンドボックス・人間の承認・サブエージェント・チャネル・トレース/evals...といった、本番環境で必要なものが最初から入っています。
この全部入り+規約という方針は、Next.jsをはじめVercelのプロダクトに共通して感じるものですね。

背景や導入解説は公式ブログIntroducing eveによくまとまっています。
重複するので本記事では解説部分は省略し、私個人のブログのナレッジを使ってAIエージェントを構築してみました。

自分のブログのナレッジでAIエージェントを作ってみた

運営している自作キーボードのブログ(tysmmsy.dev)のナレッジを活かして、そのままエージェントを構築してみました。
このブログはContentfulをヘッドレスCMSにしていて、キーボードの記事もXポストの内容もすべてContentfulに入れています。
狙いはシンプルで、ナレッジを新しく書き起こすのではなく、CMSにあるコンテンツをeveのskillsとして変換しました。

構成はとてもシンプルで、

  • agent/instructions.md: dawne(キーボード用の名義)の人格と、「必ずブログの記述を根拠に答える。分からなければ正直に言う」というルール
  • agent/skills/: ブログの内容をMarkdownにしたスキル(30%キーマップの設計、ビルド代行サービス、個別のキーボード・パーツ)に、私の文体を再現する文体スキルを加えた4本から成っています
  • toolsはなし(ナレッジを元に回答するエージェントなので、skillsだけ)

skillsは知識だけでなく文体にも使えて、ブログ記事やXポストの語り口調をMarkdownにまとめておくと、回答のトーンも寄せることができます。
eve infoコマンドでそれらをちゃんと認識しているか確認できます。

$ eve info
 eve  v0.11.7

Application
Layout        nested
Compile       ready
Diagnostics   0 errors, 0 warnings
Instructions  instructions.md
Skills        4 skills

instructions.mdSkills(30%キーマップ・ビルド代行・個別ボード・文体の4つ)が認識されています。

構築手順

やったことは大きく3ステップで、実行したコマンドも下記の通りです。

  1. 雛形を作成後、agent/agent.ts(モデル指定)とagent/instructions.md(人格と「必ずブログの記述を根拠に答える」というルール)を置きます。
  2. 自作のスクリプトでナレッジをskillsに変換します。Contentfulからキーボード関連の記事を取り出し、agent/skills/にMarkdownとして書き出します。
  3. ブログとXポストの語り口調をskillsにまとめ、回答のトーンを私に合わせます。
pnpm dlx eve@latest init keyboard-agent   # 雛形を作成
pnpm exec eve link                        # Vercel にリンク(AI Gateway の認証)
pnpm run export:skills                    # Contentful の情報をskillsに書き出し(自作スクリプトですが、既存のデータに対してAIエージェントに「skillsに変換して」と頼むのと同様)
pnpm dev                                  # ローカルで起動して確認
pnpm exec eve deploy                      # 本番にデプロイ

繰り返しになりますが、すでに蓄積している情報を、eveの規約(agent/skills/にMarkdownを置く)に合わせて変換しただけで、ドメイン特化のAIエージェントを構築することができます。

作ったファイルの一部も転記します。

agent/instructions.md(人格と回答ルール)
あなたは dawne(豊島真也)の自作キーボードに関する知見を代弁するエージェントです。

dawne は次の2つの顔を持っています。

- キーマップ設計の実践者: 60% → 40% → 30%(36キー)と段階的にキー数を減らしてきた。
- ビルド代行サービスの運営者: 分割・トラックボール系を中心に、多数のキーボードを組み立ててきた(タグ #dawne_kbd_svc)。

回答のルール

- 日本語で答える。英語で質問されたら英語で答える。
- 文章のトーンは dawne 本人の文体に寄せる(詳しくは writing-style スキルを参照)。
- 必ず手元のスキル(dawne の実体験に基づく知識)を根拠にする。スキルに書かれていないことは、一般論だと断るか、分からないと正直に言う。スペックや事実を憶測で作らない。
- 質問が「キーマップ設計」「ビルド代行サービス」「個別のキーボード/パーツ」のどれに関するものかを意識し、該当するスキルを参照する。
- 具体的な数字や前提(キー数、レイヤー構成、対象キーボード名など)を明示する。
- dawne の主観や好み(黒で統一された見た目が好き、など)は「dawne の好み」として、一般的な事実と区別して伝える。
- 元記事やポストがある内容は、可能なら出典(tysmmsy.dev の該当 URL)を添える。
agent/skills/keymap-design.md(抜粋です。ブログ記事から生成しています)
---
description: dawne の 30%(36キー)キーマップ設計の考え方。キー数の変遷、レイヤー構成、キー配置、親指まわり、コーディング向けの最適化、編集ツールについて聞かれたら参照する。
---

# dawne のキーマップ設計(30% / 36キー)

## キー数の変遷

- 60% → 40% →(40% を 30% にして修行)→ 30%(36キー)で落ち着いた。
- キー数を減らすたびに「これ以上は減らない」と思ってきたが、36キーで一旦のゴールとした。

## 36キーマップの方針

- 仕事柄コーディングの機会が多く、Ctrl / Tab / Shift などの修飾キーや記号キーを、意識せず打てるかどうかを重視している。

## 編集ツール

- キーマップ編集には Vial を使用。主に Layer / Toggle 機能を使っている。

## 関連タグ・出典

- 出典: ブログ記事「30%キーボードのキーマップ 2026年版」 https://tysmmsy.dev/posts/try-keymap-for-30percent-kbd

ハマりポイント 無料枠のモデルアクセスについて

eve linkで認証を通したあと、最初に指定していたanthropic/claude-sonnet-4.6で動かそうとしたところ、次のエラーで止まりました。

MODEL_CALL_FAILED: Free tier users do not have access to this model.
Upgrade to paid credits to access this model.

これはクレジット残高ではなく、AI Gatewayの無料枠が対象モデルを限定しているためでした。対応は2つあり、

  • 無料で試す
    • agent/agent.tsのモデルを無料枠対象のものに変える(私は一番安いanthropic/claude-haiku-4.5にしました)
  • 制限を外す
    • AI Gatewayにクレジットをチャージして他のモデルを使う

今回、ローカルは無料枠のモデル、本番は上位モデル、と切り替えられるよう、モデルは環境変数で差し替える形にしました。

agent/agent.ts
export default defineAgent({
  model: process.env.AGENT_MODEL ?? "anthropic/claude-haiku-4.5",
});

モデル呼び出しはAI Gateway経由なので、Vercelコンソールの「AI Gateway」→「Usage」を開くと、どのモデルに何回リクエストが飛び、レイテンシやコスト等を確認できます。
例えば下記のようにanthropic/claude-haiku-4.5が3回動いてコスト$0.01、anthropic/claude-sonnet-4.6は1回だけ(0トークン(無料枠で弾かれた回))を確認することができます。

Vercel AI Gateway の Usage 画面。haiku-4.5 が3回・コスト$0.01、sonnet-4.6 は0トークン、右上に残りの Free Credit

AI Gateway自体の概要は別記事(Vercel AI GatewayがGAされました)にまとめています。

実際に聞いてみる

pnpm devにてローカルで起動してやりとりしてみました(起動時のあいさつ等は省略してます)
回答の前にload_skillが走って、ブログ由来のスキルを読み込んでいるのが見えます。

▌ LiNEA40について教えてください

▲ LiNEA40についてですね。詳しい情報を確認させていただきます。

✓ load_skill  skill="boards-and-parts"
  → # dawne が触れたキーボードとパーツ(ブログのスキルを読み込み)

▲ LiNEA40についてお答えします。

  LiNEA40 は dawne が組み立て代行で依頼が多いボードで、実際に何台も組んでいます。
  評価としては、黒デザインにシルバーのボール&ベアリングの相性が良い、とのこと
  (dawne の「黒で統一された見た目が好き」という好みと合致)。トラックボール
  搭載のコンパクトな 40% ボードです。

  より詳しい仕様(キー数の配置、PCB構成、対応スイッチなど)は、各キットの
  頒布元の情報をご確認いただくのが確実です。

読み込んだskillsを根拠に答えつつ、skillsにない細部は「頒布元で確認を」と正直に断っています。ブログという自分のナレッジが、そのままエージェントの土台になっているのが分かります。

デプロイする

デプロイしなくても上記のようにローカルで動作確認できます。
TUIで会話できるだけでなく、エージェントは同じHTTPルートをローカルでも返すので、curl http://localhost:3000/eve/v1/healthやセッション作成(POST /eve/v1/session)をそのまま叩くことができます。

eve deployは中身としてはvercel deploy --prod(本番デプロイ)で、未リンクなら先にプロジェクトのリンクとAI Gateway連携(環境変数の取得)もやってくれます。

デプロイができたら、次は実際に叩いて確かめるのですが、その前に、認証に触れておきます。
eveはエージェント呼び出しルート(POST /eve/v1/sessionなど)をデフォルトで保護するので、叩くにはまず認証を通す必要があります。
設定はagent/channels/eve.tsで行います。ローカルのeve devlocalDev()で素通ししつつ、本番はvercelOidc()(CLI・サービス間の認証)や、共有のユーザー名/パスワードで通すhttpBasic()などに切り替えます。eve init直後はplaceholderAuth()が入っていますが、これは本番リクエストを401で弾くだけの仮の設定なので、公開前に本物の認証へ差し替えます。

例)

agent/channels/eve.ts
import { eveChannel } from "eve/channels/eve";
import { localDev, placeholderAuth, vercelOidc } from "eve/channels/auth";

export default eveChannel({
  auth: [
    localDev(),        // localhost の eve dev は素通し
    vercelOidc(),      // 本番は Vercel OIDC で認証(CLI / サービス間)
    placeholderAuth(), // 未設定の状態。本番リクエストは 401。公開前に差し替える
  ],
});

本番(Vercel)で疎通確認する

eve deployコマンドで本番にデプロイした後は

  1. /eve/v1/health
  2. POST /eve/v1/session(セッション作成)
  3. GET /eve/v1/session/<id>/stream(ストリーム取得)

の順で確認します。

呼び出しルートは保護されるので、今回は確認用に、チャネル認証のplaceholderAuth()httpBasic()(共有のユーザー名/パスワード。値は環境変数)に差し替えて叩きました。認証なしのリクエストは401、正しい資格情報を付けると通ります。

# 本番にデプロイ(ドキュメントの正規フロー。内部で vercel deploy --prod)
eve deploy
# → Production: https://{xxxxx}.vercel.app  (READY)

# 死活確認(health は常に公開)
curl https://{xxxxx}.vercel.app/eve/v1/health
# → {"ok":true,"status":"ready", ...}

# セッション作成(httpBasic の資格情報つき。認証なしは 401)
curl -X POST https://{xxxxx}.vercel.app/eve/v1/session \
  -u "$EVE_BASIC_USER:$EVE_BASIC_PASSWORD" \
  -H 'content-type: application/json' \
  -d '{"message":"30%キーボードのキーマップで意識していることを教えて"}'
# → HTTP 202 / x-eve-session-id: wrun_...

# セッションのストリームを取得
curl -u "$EVE_BASIC_USER:$EVE_BASIC_PASSWORD" \
  https://{xxxxx}.vercel.app/eve/v1/session/<session-id>/stream

返ってきたイベントストリームを整形すると、こういう流れでした。本番環境でも、load_skillでブログのスキルを読み込んでから、それを根拠に回答しているのが分かります。

> 30%キーボードのキーマップで意識していることを教えて

session.started   model=anthropic/claude-haiku-4.5
assistant         キーマップ設計スキルを参照して、dawne が30%キーボードで意識していることをお答えします。
tool-call         load_skill  skill="keymap-design"
tool-result       # dawne のキーマップ設計(30% / 36キー) …(スキルを読み込み)
assistant         30%キーボードのキーマップで意識していることをお答えします。

                  主な考え方
                  最優先は「修飾キーと記号が無意識に打てるか」。仕事でコーディングが多く、
                  Ctrl / Tab / Shift や記号キーを意識せず打てることを重視。

                  レイヤー設計の学び
                  40%以降、各レイヤーに役割を持たせ、記号を左右対称でグルーピング。

                  土台になっている配置
                  初自作の 7sPro 以来、親指スペース/エンター、Lの横にハイフン、数字の置き方。
                  今では変えられない基盤。

                  使用ツール
                  キーマップ編集は Vial、主に Layer / Toggle 機能。

                  詳しくはこのブログ記事に: https://tysmmsy.dev/posts/try-keymap-for-30percent-kbd
turn.completed

これまでのAIエージェント構築と何が変わったか

ここでいう「これまで」とは、eveのようなフレームワークがない前提で、AIエージェント構築に必要な部分をVercelの各機能から自分で組み上げるやり方です。
前回の記事で整理したvercel-openclawはVercelの各サービスの組み合わせを実装で見ることのできる題材でした。
そこで見えた「自前で用意する部分」が、eveだとどう変わって、何がメリットになるかを整理します。

必要なもの これまで(手組み) eveだと メリット
状態の永続化、中断/再開 WorkflowとRedis(Upstash等)を自前で用意 セッションが標準で状態を保つ 永続化の作り込みが不要
コード実行の隔離 Sandbox SDKを直接叩いて管理 エージェントごとにサンドボックスが立ち上がる 隔離環境のライフサイクル管理が不要
モデルキーの管理 transformで認証を外から注入 AI Gateway+OIDCで解決 プロバイダーキーの管理が不要
外部サービスの認証情報 サービスごとに個別管理 Vercel Connectで短命トークンを払い出す 長期キーを自分で抱えなくて済む。モデルに認証情報が渡らない
人間の承認(Human in the loop) 承認の中断・再開も自前で実装 needsApprovalで承認待ちにできる 承認待ちの中断・再開が組み込み(待っている間はリソースを使わない)承認のやり取り自体はチャネル側
チャネル連携(Slack等) webhook、署名、トークンを個別実装 1チャネル=1ファイル webhookや署名などの定型実装が不要
定期実行 Cronやwakeの自前設計 schedules/にファイルを配置 スケジューラとwakeの設計が不要
観測・トレース 自前でログ整形 Agent Runs / OpenTelemetryの連携可能 各実行が自動でトレースになる(自前のログ整形が不要)
テスト 手動でログ確認 evalsで採点 テストをCIのゲートにできる

vercel-openclawでは、APIキーをサンドボックスの外で預かり、呼び出し時だけ差し込む仕組みを自前で組み、その都度「漏れていないか」を確かめていました。
eveではここがAI Gateway + OIDCと、Vercel Connect(用途ごとにスコープを絞った短命トークンを払い出すしくみで、2026年6月時点でpublic beta)に置き換わり、モデルに認証情報が渡りません。

他のフレームワークと比べると

LangGraphやMastra、AI SDKなどエージェントを構築する選択肢は多いですが、その多くはエージェントのロジックを組むライブラリで、本番で動かす土台(永続実行・隔離実行・デプロイ・監視)は別に用意する形が多いと思います。
このあたりをVercelサービスで一気通貫で管理できることがeveのメリットだと思います。

触ってみた所感と、気をつけるところ

気をつけるところとしては、2026年6月時点ではbetaであり、GAまでにAPIや挙動が変わる可能性があると明記されています。検証や記事化の際はバージョンを固定し、changelogを追っておくと安心です。

そして、フレームワークで補助できない部分が「そのエージェントが実際に何をするのか」です。
標準化されたぶん、勝負どころはtoolsとskills、つまりエージェント固有のドメイン知識と振る舞いの設計に寄っていきます。
今回、その勝負どころを自作キーボードブログのナレッジで実際に試しました。skillsを差し替えるだけで、汎用のデモが自分の専門領域に答えるエージェントに変わります。

ここからは主観ですが、AIエージェントが広がるほど、土台を組む部分は平準化されていきます。みんなが同じ土台に立つなら、最後に差がつくのは、領域をどれだけ深く理解し、言語化できているかだと思います。
今回スキル化できたのも、キーボードの知見をブログに書き溜めてきたからでした。

さいごに

betaではありますが、AIエージェント基盤を手さぐりで作っていた人ほど、その差分をはっきり感じることができると思います。
Next.jsがWebアプリケーション構築の手法として広まっていったように、eveもAIエージェント構築の前提になっていくのか、そう思わせてくれる手応えがありました。


「AI×SaaSで加速するWeb制作」ウェビナー開催

60分でわかる、Contentful・Cloudinary・v0・Vercelの連携によるWeb制作ワークフロー。
アイデアを即座に形にする 新しい仕組みを 豊富な実践デモ を交えながら解説します。開発のスピードアップ、リソース最適化、コスト削減を実現したい方は必見です。

AI×SaaSで加速するWeb制作ウェビナー

とりあえず申し込む



SaaS導入支援はクラスメソッドに!

クラスメソッドでは Contentful・Cloudinary・v0・Vercel など各種SaaS製品 の導入支援もしております。
具体的に課題をお知らせいただければ、適した商材のご提案も可能です。製品の詳細や支援の内容についてお気軽にお問い合わせください。

クラスメソッドに相談する

この記事をシェアする

関連記事