Agent Skills by ALSEL
汎用LLM・AI開発⭐ リポ 59品質スコア 82/100

eliza

elizaOSマルチエージェントAIフレームワーク — キャラクターファイル、プラグインシステム、プラットフォームコネクタ、信頼スコアリング、RAGナレッジ、Solanaウォレット統合に対応しています。パーソナリティを持つ自律型AIエージェント、複数プラットフォームでのプレゼンス、オンチェーン機能を備えたエージェント構築時に活用できます。

description の原文を見る

elizaOS multi-agent AI framework — character files, plugin system, platform connectors, trust scoring, RAG knowledge, and Solana wallet integration. Use when building autonomous AI agents with personality, multi-platform presence, or onchain capabilities.

SKILL.md 本文

elizaOS

elizaOS は、永続的なパーソナリティ、マルチプラットフォームプレゼンス、オンチェーン機能を備えた自律型 AI エージェントを構築するための TypeScript フレームワークです。エージェントはキャラクターファイル(JSON パーソナリティ設定)を通じて定義され、プラグインシステム(アクション、プロバイダー、エバリュエーター)によって拡張され、Discord、Telegram、Twitter、Farcaster、およびカスタムインターフェースにデプロイされます。このフレームワークには RAG ナレッジシステム、ベクトル類似度検索を備えたメモリ管理、トランザクション安全性のためのトラストスコアリング、および plugin-solana を介したネイティブ Solana ウォレット統合が含まれています。

出典: https://github.com/elizaOS/eliza

よくある誤解

LLM は古いトレーニングデータを持っています。以下が最も一般的な間違いです。

  • 「npm/yarn でインストール」 → 推奨されるパッケージマネージャーは npm ではなく Bun です。CLI は @elizaos/cli であり、bun i -g @elizaos/cli でグローバルにインストールします。npm でも動作しますが、Bun はモノレポに必須であり、すべての elizaOS プロジェクトで強く推奨されています。
  • npx create-eliza-app を使用」 → これは v1 ブートストラッパーでした。v2 では、CLI をグローバルにインストール後に elizaos create を使用します。古い create-eliza-app コマンドは非推奨です。
  • 「プラグインはメインレポにある」 → v2 以降、プラグインは elizaos-plugins GitHub org 配下の専用リポジトリに分割されています。npm からインストール(@elizaos/plugin-solana)してください — モノレポからプラグインコードをコピーしないでください。
  • 「キャラクターはメインレポにある」 → キャラクターは https://github.com/elizaOS/characters に移動されています。メインレポには最小限のサンプルキャラクターのみが含まれています。
  • 「プロンプトを書くだけでエージェントが完成」 → elizaOS エージェントはプロンプトラッパーではありません。キャラクターファイルは bio、lore、メッセージサンプル、スタイルガイドライン、トピック、形容詞を定義します。ランタイムはこれらを使用してコンテキストウィンドウを動的に構築します。メッセージサンプルをスキップすると、ジェネリックでパーソナリティのない応答が生成されます。
  • 「アクションは単なる関数」 → アクションは validate(このアクションを実行すべきか?)、handler(実行)、および examples(LLM がいつ呼び出すかを学習するための few-shot)を実装する必要があります。サンプルがないと、モデルはアクションをトリガーしません。
  • 「メモリは自動」 → メモリシステムは会話履歴とナレッジ埋め込みを保存しますが、データベースアダプター(開発用 SQLite、本番用 PostgreSQL)を設定する必要があります。埋め込みモデルをデータベースをクリアせずに切り替えると、ベクトル次元の不一致が発生します。
  • 「トラストスコアリングはすべての悪い取引を防ぐ」 → トラストスコアリングはリコメンダーの信頼性とトークンパフォーマンスデータを使用してトークン安全性を評価しますが、これは ヒューリスティックであり保証ではありません。常にトランザクション制限を設定し、トラスト閾値を確認してください。
  • 「モノレポに pnpm/yarn を使用」 → モノレポは Bun ワークスペースを使用します。pnpm install または yarn install を実行するとエラーが発生するか、破損したロックファイルが生成されます。
  • Node.js バージョン → elizaOS は Node.js 23 以上を必要とします。それより前のバージョンは不可解なビルドエラーを引き起こします。

インストール

CLI(新規プロジェクトに推奨)

bun i -g @elizaos/cli
elizaos create my-agent
cd my-agent
elizaos start

elizaos create コマンドは対話型ウィザードを実行し、キャラクターファイル、デフォルトプラグイン、および環境設定でプロジェクトをスカッフォルディングします。

ソースから(コントリビューターワークフロー)

git clone https://github.com/elizaOS/eliza.git
cd eliza
bun install
cp .env.example .env
bun run build
bun run start

インストール確認

elizaos --version

キャラクターファイル

キャラクターファイルは、エージェントのアイデンティティ、パーソナリティ、および動作を定義する JSON 設定です。elizaOS プロジェクトにおいて最も重要なアーティファクトです。

コアフィールド

{
  "name": "Atlas",
  "description": "チェーン間のイールド機会を追跡する DeFi リサーチアナリスト",
  "bio": [
    "Atlas は 2020 年の DeFi サマー以来 DeFi プロトコルを追跡しているオンチェーンアナリストです。",
    "データ駆動型の見方と持続不可能なイールドへの懐疑で知られています。",
    "AMM 数学を発見した後、TradFi クォンツから暗号通貨にピボットしました。"
  ],
  "lore": [
    "監査されていないフォークで 40 ETH を失った経験があり、今はあらゆるコントラクトと対話する前にレビューします。",
    "15 チェーン全体の TVL フロー追跡する個人ダッシュボードを保持しています。",
    "直接尋ねられない限りメメコインについては議論することを拒否します。"
  ],
  "messageExamples": [
    [
      { "user": "user1", "content": { "text": "Base 上の新しい Aave マーケットについてどう思いますか?" } },
      { "user": "Atlas", "content": { "text": "Base Aave は興味深い — USDC のユーティライゼーションは約 78% で推移しているため、借入金利はすぐに上昇するでしょう。供給 APY もそれに続くはずです。cbETH が十分な流動性を持つようになったため、LST マーケットもそこで注視する価値があります。" } }
    ],
    [
      { "user": "user1", "content": { "text": "500% APY を提供しているこの新しいプロトコルでファーミングすべきですか?" } },
      { "user": "Atlas", "content": { "text": "どの TVL に対して 500% APY ですか? $5M 以下の場合、誰かが参加した瞬間にレートは崩壊します。エミッションがネイティブトークンかどうかを確認してください — その場合、あなたは出口流動性です。コントラクトを確認してください:フォークですか?監査済みですか?管理機能のタイムロックがありますか?" } }
    ]
  ],
  "style": {
    "all": [
      "クレームをする際に正確な数値とデータポイントを使用します。",
      "シルやファイナンシャルアドバイスは決して行わない — すべてを分析としてフレーミングします。",
      "ワンライナーではなく、中程度の長さのメッセージで応答します。"
    ],
    "chat": [
      "会話的かつ技術的です。DeFi 用語を自然に使用します。",
      "特定のプロトコルについて意見を述べる前に、澄ましている質問をします。"
    ],
    "post": [
      "番号付きのポイントを備えたスレッド形式の分析。",
      "常にデータを含めます:TVL、ユーティライゼーション率、APY 内訳。"
    ]
  },
  "topics": [
    "DeFi イールド戦略",
    "AMM メカニクス",
    "レンディングプロトコル分析",
    "オンチェーンデータ",
    "プロトコルリスク評価"
  ],
  "adjectives": [
    "analytical",
    "data-driven",
    "skeptical",
    "precise",
    "methodical"
  ],
  "modelProvider": "openai",
  "settings": {
    "model": "gpt-4o",
    "voice": {
      "model": "en_US-male-medium"
    }
  },
  "plugins": [
    "@elizaos/plugin-solana"
  ],
  "clients": [
    "discord",
    "telegram"
  ]
}

フィールドリファレンス

フィールド必須目的
namestringはい会話で使用される表示名
descriptionstringいいえエージェントの 1 行サマリー
biostring[]はいバックグラウンドステートメント — コンテキストの多様性のためにランダムに抽出
lorestring[]はいパーソナリティと知識境界を形作るバックストーリーファクト
messageExamplesarray[][]はいFew-shot 会話ペア — モデルはこれらからトーン、長さ、スタイルを学習
postExamplesstring[]いいえTwitter/Farcaster 用のサンプルソーシャルメディア投稿
style.allstring[]はいすべての出力に適用されるスタイルルール
style.chatstring[]いいえダイレクトメッセージとチャット用のスタイルルール
style.poststring[]いいえソーシャルメディア投稿用のスタイルルール
topicsstring[]いいえ専門分野 — エージェントが何に関与するかをガイド
adjectivesstring[]いいえパーソナリティ記述子 — システムプロンプト構築で使用
modelProviderstringはいLLM プロバイダー:openaianthropicgooglegroqollamallama_local
settingsobjectいいえモデル設定、音声設定、シークレット
pluginsstring[]いいえロードするプラグインの npm パッケージ名
clientsstring[]いいえプラットフォームコネクタ:discordtelegramtwitterfarcasterdirect

モデルプロバイダー

プロバイダーmodelProvider環境変数
OpenAIopenaiOPENAI_API_KEY
AnthropicanthropicANTHROPIC_API_KEY
Google GeminigoogleGOOGLE_API_KEY
GroqgroqGROQ_API_KEY
Ollama(ローカル)ollamaOLLAMA_SERVER_URL
Local Llamallama_localなし(モデルをダウンロード)

プラグインシステム

プラグインは elizaOS エージェント用の拡張メカニズムです。各プラグインは関連するアクション、プロバイダー、エバリュエーターをまとめて再利用可能パッケージにします。

プラグインインターフェース

import { Plugin, Action, Provider, Evaluator, Service } from "@elizaos/core";

const myPlugin: Plugin = {
  name: "my-plugin",
  description: "エージェントにカスタム機能を追加",
  actions: [myAction],
  providers: [myProvider],
  evaluators: [myEvaluator],
  services: [myService],
};

export default myPlugin;

アクション

アクションはエージェントが実行できることを定義します。ランタイムは LLM を使用して、会話コンテキストとアクションのサンプルに基づいて呼び出すアクションを決定します。

import { Action, IAgentRuntime, Memory, State, HandlerCallback } from "@elizaos/core";

const checkPriceAction: Action = {
  name: "CHECK_TOKEN_PRICE",
  description: "暗号通貨トークンの現在価格を取得",
  similes: ["GET_PRICE", "TOKEN_PRICE", "PRICE_CHECK"],
  validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {
    const text = message.content.text.toLowerCase();
    return text.includes("price") && (text.includes("token") || text.includes("$"));
  },
  handler: async (
    runtime: IAgentRuntime,
    message: Memory,
    state: State,
    options: Record<string, unknown>,
    callback: HandlerCallback
  ): Promise<void> => {
    const tokenSymbol = extractTokenSymbol(message.content.text);
    const price = await fetchPrice(tokenSymbol);
    await callback({
      text: `${tokenSymbol} は現在 $${price.usd} で取引されています(24 時間変化率:${price.change24h}%)`,
    });
  },
  examples: [
    [
      { user: "user1", content: { text: "今の SOL の価格はいくらですか?" } },
      { user: "agent", content: { text: "SOL は現在 $142.50 で取引されています(24 時間変化率:+3.2%)", action: "CHECK_TOKEN_PRICE" } },
    ],
  ],
};

プロバイダー

プロバイダーは各応答の前にエージェントのプロンプトにリアルタイムコンテキストを挿入します。これはエージェントの感覚システムです。

import { Provider, IAgentRuntime, Memory, State } from "@elizaos/core";

const portfolioProvider: Provider = {
  name: "PORTFOLIO",
  description: "エージェントの現在のウォレット残高を提供",
  get: async (runtime: IAgentRuntime, message: Memory, state?: State): Promise<string> => {
    const walletAddress = runtime.getSetting("SOLANA_PUBLIC_KEY");
    if (!walletAddress) return "";
    const balances = await fetchBalances(walletAddress);
    return `現在のポートフォリオ:\n${balances.map(b => `- ${b.symbol}: ${b.amount} ($${b.usdValue})`).join("\n")}`;
  },
};

エバリュエーター

エバリュエーターは各応答の後に実行され、会話を分析し、情報を抽出し、エージェントメモリを更新します。

import { Evaluator, IAgentRuntime, Memory } from "@elizaos/core";

const sentimentEvaluator: Evaluator = {
  name: "SENTIMENT_TRACKER",
  description: "会話全体でユーザーセンチメントを追跡",
  similes: ["MOOD_TRACKER"],
  validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {
    return message.content.text.length > 20;
  },
  handler: async (runtime: IAgentRuntime, message: Memory): Promise<void> => {
    const sentiment = await analyzeSentiment(message.content.text);
    await runtime.memoryManager.createMemory({
      userId: message.userId,
      agentId: runtime.agentId,
      roomId: message.roomId,
      content: {
        text: `ユーザーセンチメント:${sentiment.label} (${sentiment.score})`,
        metadata: { type: "sentiment", ...sentiment },
      },
    });
  },
  examples: [],
};

プラットフォームコネクタ

Discord

DISCORD_APPLICATION_ID=your_app_id
DISCORD_API_TOKEN=your_bot_token
{
  "clients": ["discord"]
}

エージェントは、メンションされているチャネルと DM で応答します。チャネル(ルーム)ごとに個別の会話メモリを保持します。

Telegram

TELEGRAM_BOT_TOKEN=your_bot_token
{
  "clients": ["telegram"]
}

グループチャットとダイレクトメッセージの両方をサポートしています。グループではエージェントは名前でメンションされたときまたは直接返信されたときに応答します。

Twitter

TWITTER_USERNAME=your_username
TWITTER_PASSWORD=your_password
TWITTER_EMAIL=your_email
TWITTER_COOKIES=your_cookies
{
  "clients": ["twitter"]
}

エージェントはツイートを投稿し、メンションに返信し、引用リツイートできます。ツイート作成には style.post を使用します。

Farcaster

FARCASTER_NEYNAR_API_KEY=your_api_key
FARCASTER_NEYNAR_SIGNER_UUID=your_signer_uuid
FARCASTER_FID=your_fid
{
  "clients": ["farcaster"]
}

メモリシステム

elizaOS はデータベースアダプター(SQLite または PostgreSQL)に支援された多層メモリシステムをベクトル埋め込みサポート付きセマンティック検索で提供します。

メモリタイプ

タイプ目的永続性
会話ルームあたりのチャットメッセージ永続的
ナレッジRAG ドキュメントとファクト永続的
説明ユーザーについてのエージェントの理解時間とともに更新
ファクト会話から抽出されたファクト永続的

メモリの作成

await runtime.memoryManager.createMemory({
  userId: message.userId,
  agentId: runtime.agentId,
  roomId: message.roomId,
  content: {
    text: "ユーザーは Solana DeFi プロトコルに関心がある",
    metadata: { source: "conversation", confidence: 0.9 },
  },
});

埋め込みはメモリ作成時にランタイムによって自動的に生成されます。手動の埋め込みステップは不要です。

メモリの検索

const relevantMemories = await runtime.memoryManager.getMemories({
  roomId: message.roomId,
  count: 10,
  unique: true,
});

const semanticResults = await runtime.memoryManager.searchMemoriesByEmbedding(
  await runtime.embed("Solana イールドファーミング"),
  {
    roomId: message.roomId,
    match_threshold: 0.8,
    count: 5,
  }
);

RAG ナレッジ

knowledge/ ディレクトリにファイルを配置するか、プログラム的にエージェントのナレッジベースにドキュメントを追加できます:

await runtime.knowledgeManager.createMemory({
  agentId: runtime.agentId,
  content: {
    text: documentContent,
    metadata: { source: "docs", filename: "protocol-overview.md" },
  },
  roomId: "knowledge",
});

ランタイムはドキュメントをチャンク化し、埋め込みを生成し、プロンプト構築時に関連するチャンクを取得します。

データベースアダプター

アダプターパッケージユースケース
SQLite@elizaos/adapter-sqliteローカル開発、シングルエージェント
PostgreSQL@elizaos/adapter-postgres本番環境、マルチエージェント、pgvector が必須

SQLite がデフォルトです。PostgreSQL の場合:

POSTGRES_URL=postgresql://user:password@localhost:5432/eliza

PostgreSQL アダプターは埋め込み保存と類似度検索のために pgvector 拡張が必要です。

マルチエージェントオーケストレーション

elizaOS は単一のランタイムで複数のエージェントを実行することをサポートしており、各エージェントは独自のキャラクター、メモリ、プラグインセットを持ちます。

ワールドとルーム

  • ワールド:サーバーまたはワークスペース(例:Discord サーバー、Telegram グループ)
  • ルーム:ワールド内のチャネルまたは DM

各エージェントはルームごとに独自のコンテキストを保持しますが、ワールドを共有するように設定できます。

複数エージェントの実行

elizaos start --characters characters/analyst.json,characters/trader.json,characters/moderator.json

またはプログラム的に:

import { AgentRuntime, defaultCharacter } from "@elizaos/core";
import { SqliteDatabaseAdapter } from "@elizaos/adapter-sqlite";

const db = new SqliteDatabaseAdapter("./data/db.sqlite");

const agents = await Promise.all(
  characters.map(async (character) => {
    const runtime = new AgentRuntime({
      character,
      databaseAdapter: db,
      token: process.env.OPENAI_API_KEY,
      modelProvider: "openai",
      plugins: character.plugins,
    });
    await runtime.initialize();
    return runtime;
  })
);

Solana 統合(plugin-solana)

@elizaos/plugin-solana パッケージはウォレット管理、トークン操作、DeFi インタラクションを提供します。

セットアップ

bun add @elizaos/plugin-solana
SOLANA_PUBLIC_KEY=your_public_key
SOLANA_PRIVATE_KEY=your_private_key
SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
BIRDEYE_API_KEY=your_birdeye_key
{
  "plugins": ["@elizaos/plugin-solana"]
}

機能

アクション説明
SEND_TOKENウォレット間の SPL トークン転送
SWAP_TOKENJupiter アグリゲーターを使用したトークンスワップ
STAKE_SOLバリデーターへの SOL ステーキング
CHECK_BALANCEウォレット残高の照会

トラストスコアリング

トラストエンジンは以下を組み合わせることでトランザクション安全性を評価します:

  1. トークンパフォーマンスデータ — 価格履歴、ボリューム、流動性深度
  2. リコメンダー信頼性 — トークンを提案したアドレスのトラックレコード
  3. リスクヒューリスティック — コントラクト経過時間、ホルダー集中度、流動性ロック
const trustScore = await runtime.providers.get("TRUST_SCORE");

トラストスコアは 0 から 1 の範囲です。キャラクターの設定で最小閾値を設定します:

{
  "settings": {
    "secrets": {
      "SOLANA_PUBLIC_KEY": "",
      "SOLANA_PRIVATE_KEY": ""
    },
    "trustScoreThreshold": 0.6,
    "maxTransactionAmount": 100
  }
}

環境変数

完全なデプロイメント用の必須およびオプション環境変数:

# LLM プロバイダー(少なくとも 1 つが必須)
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GOOGLE_API_KEY=
GROQ_API_KEY=

# プラットフォームコネクタ
DISCORD_APPLICATION_ID=
DISCORD_API_TOKEN=
TELEGRAM_BOT_TOKEN=
TWITTER_USERNAME=
TWITTER_PASSWORD=
TWITTER_EMAIL=
FARCASTER_NEYNAR_API_KEY=
FARCASTER_NEYNAR_SIGNER_UUID=

# Solana
SOLANA_PUBLIC_KEY=
SOLANA_PRIVATE_KEY=
SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
BIRDEYE_API_KEY=

# データベース
POSTGRES_URL=

# サーバー
SERVER_PORT=3000

.env ファイルをコミットしないでください。.env.example をテンプレートとして使用してください。

プロジェクト構造

my-agent/
├── characters/
│   └── my-character.json
├── knowledge/
│   └── docs.md
├── plugins/
│   └── my-plugin/
│       ├── src/
│       │   ├── actions/
│       │   ├── providers/
│       │   ├── evaluators/
│       │   └── index.ts
│       └── package.json
├── .env
├── package.json
└── tsconfig.json

CLI リファレンス

コマンド説明
elizaos create新しいプロジェクトをスカッフォルディング(対話型)
elizaos create my-agent名前でスカッフォルディング
elizaos startエージェントランタイムを開始
elizaos start --characters file.json特定のキャラクターで開始
elizaos --versionCLI バージョンを出力
elizaos [command] --helpコマンドのヘルプを表示

一般的なパターン

動的キャラクター読み込み

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
0xinit
リポジトリ
0xinit/cryptoskills
ライセンス
Apache-2.0
最終更新
2026/3/10

Source: https://github.com/0xinit/cryptoskills / ライセンス: Apache-2.0

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: 0xinit · 0xinit/cryptoskills · ライセンス: Apache-2.0