🍣

VoltAgent V1ついにリリース! 0.1.x → 1.x 移行ポイントまとめ+VoltOpsの更新点

に公開

こんにちは!前々から使ってたTypescriptベースのAIエージェントフレームワークVoltAgentが先ほどV1.xにアップデートされました!
voltopsという管理画面でもUI面での改善が加えられ開発速度の向上が見込めそうです。

本記事は公式の移行ガイドをベースに、実機での所感(VoltOps の画面/ログ改善)も補足してまとめたものです。
参照: Migration guide: 0.1.x → 1.x

TL;DR

  • ai‑sdk をネイティブ採用: 独自 LLM プロバイダ層と @voltagent/vercel-ai を廃止。モデルは ai‑sdk のプロバイダを直接指定。
  • サーバはプラガブル化: コア内蔵サーバ撤廃。@voltagent/server-honoserver: honoServer() で渡す。
  • Memory v2(アダプタ化): LibSQL / PostgreSQL / Supabase などに拡張可能(デフォルトは InMemory)。
  • Observability は OpenTelemetry(OTel)に統一: レガシーのテレメトリエクスポータは削除。
  • Breaking Changes: abortController → abortSignal、Message Helpers が UIMessage に統一、onHandoff.source → sourceAgent

1.x の背景(なぜ変わったか)

  • コアの表面積縮小 & 可搬性向上(Node/Edge/Workers)。
  • ai‑sdk と一体化してストリーム/結果の挙動を安定化。
  • Memory をモジュール化し、インメモリから本番規模(LibSQL/Postgres/Supabase)まで段階的に拡張可能。
  • **標準的な観測(OTel)**を採用し、運用・可視化の選択肢を広げる。

Step 1. パッケージ更新

# レガシー削除
npm uninstall @voltagent/vercel-ai @voltagent/vercel-ui

# 必須導入
npm install @voltagent/core@latest @voltagent/server-hono@latest @voltagent/libsql@latest @voltagent/logger@latest ai

# 例: OpenAI(ai‑sdk の任意プロバイダに置き換え可)
npm install @ai-sdk/openai
  • Node >= 20(推奨/要件)、TypeScript 5.x 推奨。
  • ai@voltagent/core の peer 依存。未導入だと LLM 呼び出し時にモジュール解決エラー。

Step 2. コード移行(サーバ/LLM/Memory)

Before(0.1.x)

import { VoltAgent } from "@voltagent/core";
import { VercelAIProvider } from "@voltagent/vercel-ai";

new VoltAgent({
  agents: { agent },
  port: 3141,
  enableSwaggerUI: true,
  // server auto-started
});

After(1.x)

import { VoltAgent, Agent, Memory } from "@voltagent/core";
import { LibSQLMemoryAdapter } from "@voltagent/libsql";
import { honoServer } from "@voltagent/server-hono";
import { createPinoLogger } from "@voltagent/logger";
import { openai } from "@ai-sdk/openai";

const logger = createPinoLogger({ name: "my-app", level: "info" });

const memory = new Memory({
  storage: new LibSQLMemoryAdapter({ url: "file:./.voltagent/memory.db" }),
});

const agent = new Agent({
  name: "my-app",
  instructions: "Helpful assistant",
  // 0.1.x: llm: new VercelAIProvider(),  // ← 削除
  model: openai("gpt-4o-mini"),
  memory,
});

new VoltAgent({
  agents: { agent },
  server: honoServer({
    port: 3141,
    enableSwaggerUI: true,
    // 任意: 認証/カスタムルート
    // auth: jwtAuth({ secret: process.env.JWT_SECRET! }),
    // configureApp: (app) => {
    //   app.get("/api/health", (c) => c.json({ status: "ok" }));
    // },
  }),
  logger,
});

破壊的変更(押さえるべきポイント)

1. abortControllerabortSignal

const ac = new AbortController();
// 0.1.x: agent.generateText("...", { abortController: ac })
const res = await agent.generateText("...", { abortSignal: ac.signal }); // 1.x

2. Message Helpers は UIMessage を使用

import { addTimestampToMessage } from "@voltagent/core/utils";
import type { UIMessage } from "ai";

const msg: UIMessage = {
  id: "m1",
  role: "user",
  parts: [{ type: "text", text: "hello" }],
  metadata: {},
} as UIMessage;

const stamped = addTimestampToMessage(msg, "10:30");

3. onHandoff 引数名の変更

// 0.1.x
// onHandoff: ({ agent, source }) => { ... }

// 1.x
onHandoff: ({ agent, sourceAgent }) => {
  console.log(`${sourceAgent.name} → ${agent.name}`);
};

Memory v2(アダプタ方式)

  • new Memory({ storage: new LibSQLMemoryAdapter(...) }) のように構成。
  • InMemory を起点に、LibSQL / PostgreSQL / Supabase へ移行可能。
  • 取得・保存・検索(ベクター検索含む)の責務をアダプタに切り出し、本番移行やスケールが容易

Observability / VoltOps の更新点(実機所感つき)

1.x では Observability が OpenTelemetry(OTel) ベースに整理され、ログ/トレースの扱いが標準化。以下は実機使用で感じた改善点です。

1. 新しい Overview / Execution 画面

  • DAG 形式の実行ビューで、Input → Agent → Tool(s) → Output の流れを直感的に把握。
  • ノード単位で実行状態や成否が分かり、Auto-zoomSnapshot で視点固定も可能。
  • 右側の Timeline に span が並び、「First / Play / Last」切替でトレース時点を移動できる。

画像1(新 UI 概要): DAG + Timeline + 下部に AI Playground のレイアウト。
プロンプト/実行の前後関係が視覚的に追いやすく、「トレースが容易に」 なりました。

2. ツール/ステップ単位の詳細ログ

  • 各ツール呼び出しが step/span として記録され、名前・開始/終了・所要時間・ステータスが追跡可能。
  • ログに component: agentagentIdmodelNameTrace/Span ID などのメタ情報が付与。
  • 「Reasoning generated」「Calling tool」「Tool completed」など、思考/呼び出し/完了フェーズがはっきり分かる。

画像2(詳細ログ): ツール名(例: get_this_week_dates)、モデル名、Trace/Span が DEBUG ログで一覧でき、
「各ツールの詳細ログが見られる」 体験に直結しています。

3. OTel 準拠による拡張性

  • OpenTelemetry 準拠のスパン/ログ構造のため、OTel のプロセッサ/エクスポータ連携が取りやすい。
  • ローカル観測から本番の可観測性スタックまで、段階的に強化しやすい設計。

![Observability の新 UI(Execution View + Timeline + Playground)]

![ツール実行の詳細ログ(DEBUG レベルで step/span が確認可能)]

最小構成サンプル(1.x)

import { VoltAgent, Agent, Memory } from "@voltagent/core";
import { honoServer } from "@voltagent/server-hono";
import { openai } from "@ai-sdk/openai";

const agent = new Agent({
  name: "demo",
  instructions: "Be helpful",
  model: openai("gpt-4o-mini"),
  memory: new Memory(), // InMemory(まずはここから)
});

new VoltAgent({
  agents: { agent },
  server: honoServer(), // デフォルト: 3141
});

参考

Discussion