mcpField
O
openagent

openagent

github.com/5dive-aiエージェントワークフロー11.3k 回インストール1 日前に更新
リポジトリ

openagent について

`@5dive/openagent` CLI で OpenAgent のアイデンティティファイルや共有カードを作るスキルです。`*.persona.yaml` にテキスト・音声・動画で一貫する設定を記述し、レア度付きの PNG カードを生成できます。

主な機能

  1. 01persona YAML の検証
  2. 02レア度と完成度の確認
  3. 03PNG アイデンティティカードの生成
  4. 04TTS によるテキストの音声化
  5. 05動画シーン用プロンプトの生成
  6. 06署名とレジストリ情報の検証

活用シーン

  1. 01エージェント用の再利用可能なアイデンティティ作成
  2. 02persona ファイルと次の目標の確認
  3. 03エージェントカードの生成と共有
  4. 04persona からエージェントをインポート

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/5dive-ai/skills --skill openagent

インストール後、Claude Code で/openagentを入力して読み込まれたか確認します。

詳細

openagent — ペルソナを作成し、カードをミントする

このドキュメントの内容

@5dive/openagent CLI(validate / tier / card)と、OpenAgent v0.2 の ID 仕様をまとめています。セルフサービスの手順は、<id>.persona.yaml を作成し、スキーマに照らして検証し、レアリティティアと完全性を確認して、カードをレンダリングすることです。必要に応じて、キャラクターパックのレジストリに PR を送ります(Mythical ティアへの道です)。

「カードを作って」「自分の OpenAgent カードを生成して」「ペルソナを作成して」「自分のレアリティティアは?」「カードをミントして」「キャラクターパックのレジストリに参加して」といった依頼や、再利用可能なペルソナファイルとして、自分の外見、声、スタイルを記述・固定する依頼で起動します。また、「このペルソナからエージェントを作成/起動して」や「チームメイトをプロビジョニングして」という依頼でも起動します。その場合は 5dive agent import --from-persona を使います。

OpenAgent は、エージェントのアイデンティティを定める、ベンダーに依存しないオープン標準です。1 つの *.persona.yaml ファイルで外見、声、文体を固定し、テキスト、音声、動画を通じて一貫性を保てます。このスキルでは、ペルソナを作成し、そこから共有可能なトレーディングカードをレンダリングする方法を説明します。カードには、アイデンティティから決まるレアリティティア(ランダムで、変更できず、操作による引き上げもできません)が記載されます。

リポジトリと仕様:github.com/5dive-ai/openagent(MIT)。

CLI

インストール不要で、npx を使って実行できます。公開済みの npm パッケージを、現在のバージョンに固定して実行してください。npm の tarball にはすべてのフォントとアセットが含まれているため、どこでもカードが同じようにレンダリングされます(古いクローンのフォントへのフォールバックはありません)。また、バージョンを固定するとリリースごとに npx のキャッシュキーが変わり、常に最新のレンダラーを使えます。

npx @5dive/[email protected] validate <id>.persona.yaml          # schema check, exit 0 = valid
npx @5dive/[email protected] tier     <id>.persona.yaml --json   # rarity tier (from did:key) + completeness % + next goal
npx @5dive/[email protected] card     <id>.persona.yaml -o <id>.png   # render the PNG trading card

これらの中で、通常の手順で必要なのは card だけです。ファイルを検証し、署名用の ID を自動でミントし、レンダリング時にレアリティティアを表示するため、card を 1 回実行するだけで作業が完了します。レンダリングできないファイルのデバッグ時に限り、validate / tier を使ってください。呼び出しが少ないほど処理が速くなるため、1 回で済むときに 3 つすべてを実行しないでください。CLI には speak(TTS でセリフを音声化)、flow(生成動画のシーン用プロンプトを出力)、sign / verify / registry(来歴情報と Mythical レジストリ)もあります。これらについては、以下のさらに詳しくで説明します。(実行方法として正式なのは npm の @5dive/openagent です。github:5dive-ai/openagent#<tag> も代替手段として引き続き使えますが、参照ごとの古いクローンが提供される場合があるため、上記のバージョンを固定した npm 版を推奨します。)

ワークフロー

最速の手順 — まず 1 分以内にカードを表示し、その後で仕上げます。 この手順で時間がかかるのはポートレートの生成とホスティングであり、レンダリングではありません(カードのレンダリングは約 30~40 秒です。ポートレートがまだ用意できていなくても、card はすっきりとしたモノグラムにフォールバックします)。そのため、最初のカードを見るまで画像生成を待たせないでください。名前が決まったら、すぐに初期カードをレンダリングしてチャットに表示し、その後、本物のポートレートを生成して再レンダリングするか尋ねます。 まずは素早くカードを作成し、ポートレートを仕上げるかどうかはユーザーが選べるようにします。(ユーザーが写真を渡した場合や、すでにアバターがある場合は、最初からそれを使います。モノグラムは不要です。)

1. アイデンティティをまとめる

すでに稼働中の 5dive エージェントですか? 一から作成する代わりに、ドラフトを生成できます。5dive agent export <yourname> --out=<id>.persona.yaml(CLI ≥ 0.4.5)を実行すると、既存のアイデンティティからスキーマに準拠した persona.yaml が生成されます。内容を調整してから、検証(ステップ 3)に進んでください。

自分自身のことは分かっているので、ここに挙げた項目の大半は正直にまとめてください。ただし、2 つの項目はユーザーが決めることであり、こちらで推測してはいけません。何かを生成する前に尋ね、回答を待ってください。

  • 名前 — カードに記載する名前を尋ねます(ユーザーのブランド名やハンドルネーム、またはユーザーがあなたを呼ぶ名前)。確認してください。
  • アバター — すでに使いたいアバターや写真があるか尋ねます。ある場合は、最初からそれを face.ref として使います。ない場合は、アバターを理由に最初のカードを遅らせないでください(上記の最速の手順を参照)。まずモノグラムの初期カードをレンダリングして表示し、その後、本物のポートレートを生成するか確認します。ポートレートの生成は任意のアップグレードであり、カードを見るための必須条件ではありません。 ユーザーが「任せる」と言った場合は、両方とも自分で決めて進めてください。大切なのは、厳格な確認ではなく、予想外のことを起こさないことです。

質問はチャット内で行ってください。操作を妨げる選択画面を使わず、絶対に待ち続けないでください。 次の2つの質問を通常のチャットメッセージに書き、ユーザーから返事があったら進めてください。インタラクティブな選択画面やメニューツール(例:AskUserQuestion、ExitPlanMode形式のプロンプト、TTYの選択リスト)には絶対に頼らないでください。Telegram/Discordなどのチャット連携エージェントではそれらがブロックされ、届くはずのない入力を待って全体のフローが停止するためです。 インタラクティブなTTYがない場合や、ユーザーがすぐに返事をしない場合は、「任せる」と受け取り、適切な名前(ユーザーがあなたを呼ぶ名前)を選んで、まず簡易モノグラムカードを表示してください(「クイックパス」に従います)。その後で、実際のポートレートへのアップグレードを提案します。フローは止めずに進めてください。プロンプトの前で停滞してはいけません。

以下はすべて自分で作成してください。必要な項目は次のとおりです。

  • id — 小文字とハイフンを使ったハンドル(^[a-z0-9-]+$)。例:marcus。
  • name, role — 表示名と1行の肩書き。
  • face.ref — ポートレート画像のURLまたはローカルパスです。これは見た目を決めるうえで最も重要な要素です。カードでは画像が全面に配置されたメイン画像として表示されるため、画像の品質がカードの品質を左右します。中央に配置され、正面を向き、目がはっきり見え、照明もよい、洗練されたバストアップのポートレートを選んでください。実際のプロフィール写真として使いたいと思えるような画像が理想です。実際の写真でも高品質な生成ポートレートでもかまいませんが、平面的なベクターのクリップアート、絵文字、ロゴ、マスコット、情報量の多い背景は避けてください。カードが安っぽく見えてしまいます。顔がカードと一緒に表示されるよう、誰でもアクセスできるraw URLでホストしてください(ローカルのみのパスでは、ほかの人が表示すると通常のモノグラムにフォールバックします)。 anchor — どのような人物に見えるか、背景、構図、レンズを説明する1文です。生成するバリエーションでも一貫性を保てるようにしてください。
  • voice.audio.base — 基本となるTTS音声です。以下のGeminiプリビルト音声30種類から必ず1つ選んでください。unsetは使わないでください。 性別とキャラクターの雰囲気に合うものを選びます。5diveの環境では、この名前がそのまま音声になります。音声プラグインが、同じ性別の固定ローカル音声に割り当てるためです。カードでunsetにすると、シート名をもとにハッシュ化された音声が使われます。性別が合わなかったり、キャラクターに合わなかったりする場合があります。すでにunsetで作成済みの場合は、今すぐ音声を選んで再作成してください。
    • 女性:Zephyr(明るい)、Kore(しっかりした)、Leda(若々しい)、Aoede(軽やかな)、Callirrhoe(おおらかな)、Autonoe(明るい)、Despina(なめらかな)、Erinome(明瞭な)、Laomedeia(陽気な)、Achernar(穏やかな)、Gacrux(落ち着いた)、Pulcherrima(力強い)、Vindemiatrix(優しい)、Sulafat(温かみのある)
    • 男性:Puck(陽気な)、Charon(説明的な)、Fenrir(熱意のある)、Orus(しっかりした)、Enceladus(息づかいを感じる)、Iapetus(明瞭な)、Umbriel(おおらかな)、Algieba(なめらかな)、Algenib(しゃがれた)、Rasalgethi(説明的な)、Alnilam(しっかりした)、Schedar(落ち着いた)、Achird(親しみやすい)、Zubenelgenubi(くだけた)、Sadachbia(活気のある)、Sadaltager(知識豊富な) voice.audio.style — 話す速さや勢いについての1文。
  • voice.written.rules — 書き方のルールを2〜4個。sample — 実際のあなたらしい声で書いた1行。
  • behavior — 人柄が伝わる1〜2行です。あなたがどんな人物で、どう振る舞うかを、自分らしい言葉で書いてください。経歴書ではなく、個性が伝わる内容にしてください。技術スタック、ツール、フレームワーク、細かすぎる専門用語を並べないでください(設定ファイルのようになり、個性が伝わりません)。カード上で目立つ位置に表示されます。
  • 任意項目:posts_about(配列)、links(URL文字列のオブジェクト)、face.full、face.sprite。

カードのテキスト量の上限 — 次の3項目は、上限を超えると「…」で省略されます。 カードでは behavior、voice.audio.style、voice.written.sample がそれぞれ 約2行(1行あたり約60文字) で表示され、超過分は省略記号で切り詰められます。各項目は簡潔な1文にしてください。

  • behavior — 約110文字以内
  • voice.audio.style — 約120文字以内
  • voice.written.sample — 約110文字以内(字下げされるため、最も厳しい上限です)

意味は前のほうに置いてください — 最初の約60文字は必ず表示されるため、要点を先に書きます。(name と role はもともと短いため、あふれるのはこの3項目です。)

カードはユーザーの言語で書いてください — 英語を既定にしないでください。 人がカードで読む項目(name、role、behavior、voice.audio.style、voice.written.rules、voice.written.sample、posts_about、および tagline)は、あなたとユーザーが実際に使っている言語で書きます。ユーザーがスペイン語、フランス語、ドイツ語、ポルトガル語、イタリア語、ロシア語、日本語などで話しかけている場合、カードのテキストもその言語にしてください。英語以外の言語を使うユーザーに英語のカードを返すのは誤りです。次の項目は文章ではないため、言語にかかわらずそのままにしてください。

  • id — ^[a-z0-9-]+$(ASCII の小文字とハイフンで構成)に一致する必要があるため、音訳してください(例:marĉo ではなく marco)。表示名ではなく、ハンドル名です。
  • voice.audio.base — TTS 音声の名前(Kore、Fenrir などの固有名詞)です。モデルの音声 ID のままにしてください。
  • face.recipe.prompt / face.anchor — 画像モデルに入力する項目です。英語のほうが高品質なポートレートを生成できる傾向があるため、表示テキストが英語以外でも英語のままにしてかまいません。

スクリプトとフォントのサポート。 ラテン文字(アクセント記号を含む)、キリル文字、ギリシャ文字は常に表示されます(カードにはそれらのグリフが含まれています)。幅の広い文字体系 — CJK(中文/日本語/한국어)、アラビア文字、ヘブライ文字、タイ文字、デーヴァナーガリー文字 — は、描画環境にシステムフォントがあれば表示されます(当社の描画環境にはありますが、フォントのないクリーンな環境では四角形で表示されます)。迷ったときは、カードを描画して実際に確認してから共有してください。1行あたり約60文字という上限はラテン文字を想定しています。CJK の文字は幅が約2倍あるため、これらの文字体系では1行あたりの文字数をおよそ半分にすることを目安にしてください。 あなたのポートレート — ユーザーのものを使うか、生成してください。手描きは絶対にしないでください。 カードは共有可能な アーティファクトです。見た目こそが、誰かがスクリーンショットを撮って投稿したくなる理由なので、顔が すべてを左右します。テキストのみのモデルで SVG を手作業でコーディングすると、平面的な クリップアートになってしまいます — それはやめてください。 代わりに、次の手順に従ってください。

  1. ユーザーがすでにアバターや写真を持っている、またはチャットで送ってくれる場合( ステップ 1 で尋ねています)→ それを顔として使います。チャットでファイルが送られてきた場合は、まず ローカルにダウンロードしてください。次にホストし(下の「顔をホストして、どこでも使えるようにする」を参照)、 その raw URL を face.ref に指定します。これで完了です — 生成手順はスキップしてください。
  2. 自分で生成する — 画像生成ツール(Antigravity/agy、 接続済みの ChatGPT/DALL·E または Gemini-image ツール、Midjourney など)を使える場合は、次の 標準プロンプトを使って生成してください。
  3. 画像モデルは使えないが、HTTP アクセスはある場合 → pollinations.ai の FLUX エンドポイントを使って、 実写風のポートレートを自分で取得します。これは無料でキー不要のテキストから画像を生成する HTTP API です (通常の GET で、アカウントも API キーも不要です)。この環境に DALL·E / Gemini / Midjourney の キーがない場合のフォールバックとして、ユーザーに依頼せず、共有したくなる顔を用意できます。次の 標準プロンプトを URL エンコードしてパスに含め、バイト列を保存してください。
    curl -fSL --get \
      --data-urlencode "model=flux" --data-urlencode "width=1024" \
      --data-urlencode "height=1024" --data-urlencode "nologo=true" \
      --data-urlencode "seed=<int>" \
      "https://image.pollinations.ai/prompt/<url-encoded portrait prompt>" \
      -o <id>.png
    
    次にホストし(次のセクションを参照)、公開 raw URL を face.ref に設定します。再生成できるよう、 provider: pollinations、model: flux、プロンプト、seed を face.recipe に記録してください。

    ⚠ サードパーティ製で、最善努力ベースのサービスです — 当方では管理していません。 pollinations.ai は SLA のない無料の外部サービスです。応答が遅くなったり、レート制限されたり、変更されたり、 利用できなくなったりする可能性があり、FLUX の品質にもばらつきがあります(生成結果が弱ければ再試行してください)。 ここで問題ないのは、ユーザーに依頼する前の最後の手段だからです — 利用できない場合は、 ステップ 4 に進んでください。重要な用途では決して依存せず、レシピは記録されているので、 後で自分が管理するモデルで顔を再生成してください。

  4. 画像生成がまったくできない場合 → 標準 プロンプトをユーザーに渡し、ChatGPT(または任意の画像ツール)で実行して画像を 送り返してもらい、その後ホストしてください。
  5. 最後の手段に限る → シンプルなモノグラム(見た目が地味になり、完成度は下がりますが、 レアリティのティアは変わりません)。

標準ポートレートプロンプト — すべての OpenAgent カードの見た目に一貫性を持たせるため、 構図/照明/形式は固定し、被写体だけを変えてください。

<あなたがどんな存在かを一行で記述:年齢層、雰囲気、役割、face.anchor にある顔の特徴的な詳細など>の
実写風のバストアップポートレート。
中央に配置し、カメラに正対して、視線をまっすぐ向け、落ち着いた自信のある表情。
柔らかく均一なスタジオ照明、顔にシャープな焦点、シンプルですっきりした背景
<任意で控えめなテーマカラー>。プロフェッショナルなプロフィール写真の構図、1:1
の正方形、実写風、テキストなし、ロゴなし、透かしなし。

似姿を再現できるよう、どのように作成したかを**face.recipe**(provider + model + prompt + seed) に記録してください。これは「声 = ベース + スタイル」に相当するビジュアル版です。 provider は、model が属する画像生成ベンダーのカタログ名を指定します (デフォルトは google-gemini、pollinations、black-forest-labs、openai など)。これにより、 voice.audio.provider が音声プロバイダーを指定するのと同じように、レシピを特定のベンダーに依存しない形に保てます。 顔画像は、共有できる場所でホストしてください。 face.ref にはローカルパスではなく、公開された raw URL を指定する必要があります。ローカル限定のパスでもご自身には正しく表示されますが、カードは他の人が開いた瞬間に単色のモノグラムに切り替わってしまいます(カードは共有するためのものです)。これは上記のすべての方法に当てはまります。ユーザーから送られた写真、ご自身で生成した写真、ユーザーから送り返された写真のいずれも対象です。ホストする方法は次のとおりです。

  1. レジストリに PR を送る(推奨、無料、永続的) → 5dive-ai/openagent の faces/ フォルダーに faces/<id>.<ext> として画像を追加し、PR を作成します。マージされると、raw URL は https://raw.githubusercontent.com/5dive-ai/openagent/main/faces/<id>.<ext> になります。 これを face.ref として使用します。(Mythical の手順でもレジストリに PR を送ることになるはずです。同じ PR を使えます。)
  2. 任意の画像ホストを使う → Imgur、S3/R2 バケット、ご自身のサイト、任意のリポジトリの GitHub アセットなどです。https 経由で画像の生データを配信できるものであれば何でも使えます。画像への直接リンク(HTML のギャラリーページではなく、画像そのものを指すリンク)を face.ref として貼り付けてください。

簡単な確認方法:新しいシークレットタブで face.ref を開きます。画像がそのまま表示されれば、共有できます。404 エラーになる場合やログイン画面が表示される場合は共有できないため、レンダリングする前に修正してください。

2. <id>.persona.yaml を作成する

次のテンプレートを使用します(必須項目:id, name, role, face{ref,anchor}, voice, behavior)。

openagent: "0.2"
id: yourhandle
name: Your Name
role: Your Role
# org:                      # OPTIONAL — add ONLY if you genuinely belong to a company/team/org.
#   name: Your Org          # YOUR org's name (the filter key). NEVER default to someone else's —
#   url: https://your.example #   e.g. don't put "5dive" unless you ARE 5dive. Omit the whole block if independent.
face:
  ref: https://raw.githubusercontent.com/<org>/<repo>/main/faces/yourhandle.png
  anchor: "one sentence: who you read as, setting, framing, lens"
  recipe:                   # optional, recommended — makes your face reproducible
    provider: pollinations  # image-gen vendor: google-gemini (default) / pollinations / openai / …
    model: "image model you used, e.g. flux (pollinations) / gpt-image-1 / gemini-2.5-flash-image"
    prompt: "the standardized portrait prompt you generated from"
    seed: 12345             # pin it for deterministic re-gens (omit if the model exposes none)
voice:
  audio:
    base: Kore              # one of the 30 Gemini voices listed above, matching your gender + energy
    style: "one sentence on cadence/energy"   # card-visible · ≤ ~120 chars or it's cut with …
  written:
    rules:
      - "rule one"
      - "rule two"
    sample: "one line in your real voice. → [link]"   # card-visible · ≤ ~110 chars or it's cut with …
behavior: "a line or two of CHARACTER — who you are + how you act, in your voice. NOT a tech-stack/tool list."   # card-visible · ≤ ~110 chars or it's cut with …
posts_about: ["topic", "topic"]
links:
  profile: https://example.com/you
3. 検証する — 合格するまで修正する
npx @5dive/[email protected] validate yourhandle.persona.yaml

バリデーターは、読みやすいエラーを出力します(フィールドの欠落、不正な id パターン、余分なキーなど。スキーマでは additionalProperties: false が設定されているため、不要なフィールドは指定できません)。終了コードが 0 になるまで繰り返します。

4. レアリティを確認する
npx @5dive/[email protected] tier yourhandle.persona.yaml --json

レアリティはファイルの完成度ではなく、署名鍵から導出される did:key というアイデンティティに基づいて決まります。これはランダムに決まり、永続的で、操作によって変えられません。同じアイデンティティなら、永久に同じティアです。フィールドを埋めてもランクアップはできません。(ペルソナに署名されるまでは、ここでは Ungraded と表示されます。ステップ 5 でカードをレンダリングするとアイデンティティが自動で作成され、その署名によってレアリティが決まります。そのため、tier が Ungraded の場合は、カードをレンダリングしてください。)

ティア確率獲得方法
🟢 コモン40%did:key に基づいて決まります
🔵 レア30%did:key に基づいて決まります
🟣 エピック20%did:key に基づいて決まります
🟡 レジェンダリー10%did:key に基づいて決まります
✨ ミシカル—抽選ではなく付与されます。キャラクターパックのレジストリに採用されると付与されます(キュレーション済み+署名済み)。

完成度%とバッジは、ティアとは別の要素です。ティアを変えることなく、すべての項目が記入されたペルソナに報酬を与えるため、バッジや見栄えのよいカードを目指して項目を埋めていきましょう。上位のティアに昇格できるのは、ステップ 7 でレジストリに採用されて付与されるミシカルだけです。

5. カードをレンダリングする

カードをレンダリングしましょう。デフォルトでアニメーションになります。 動きのあるホロカードは静止画像よりはるかに多く共有されます。また、通常のレンダリングでも動くバージョンが生成されるため(CLI ≥ 0.15.0)、そのまま実行するだけです。明示する場合は出力先に .mp4 を指定します。

npx @5dive/[email protected] card yourhandle.persona.yaml -o yourhandle.mp4

最適な形式が自動で選ばれます。ffmpeg が PATH にあれば mp4、なければ依存関係が不要な apng になります。--format apng|gif|webp|mp4 で形式を指定できます(gif/webp/mp4 には ffmpeg が必要です)。--frames N(デフォルト 24)、--fps N(デフォルト 20)、--width px(デフォルト 720、最大 900)で調整できます。動きはティアに応じて変わり、Common では静止し、Mythical では虹色のホロが全体に流れます。Telegram / X / Discord では、mp4(約 64KB)がどこでもインライン再生されます。APNG はサイズの大きな代替形式です。

カードは自動でグレード判定されます。 ペルソナにまだ署名がない場合、アニメーションレンダリング時に身元情報が生成されます。キーペアを生成してペルソナに署名し、秘密鍵を yourhandle.key として同じ場所に保存します。この署名によってカードのロールされたレアリティが決まります。署名がない場合、カードは Ungraded になります。この .key ファイルは秘密にし、決してコミットしないでください。.gitignore に *.key を追加します。これは署名用の身元情報であり、鍵が漏れると他人があなたになりすませます。ペルソナを編集した場合の再署名にのみ、再び必要になります。(生成をスキップするには --no-sign を渡してください。静止画の --png レンダリングでは鍵は生成されません。)

必要に応じて静止 PNGもレンダリングできます。ただし、画像を埋め込む必要がある場所(アバター、README、レジストリ)に限ります。チャットで共有するのはこれではありません(手順 6 を参照)。チャットで送るのは常にアニメーションカードです。

npx @5dive/[email protected] card yourhandle.persona.yaml -o yourhandle.png

レンダリングしたカードを開いて、実際に確認してください。顔が平坦に見える、切れている、位置がずれている場合は、共有する前に face.ref を修正して再レンダリングします。納品物はレンダリングしたカードであり、元のアバターではありません。

5b. ダッシュボードで顔を表示する(5dive エージェント)

5dive エージェントとして実行している場合は、最終的なポートレート(レンダリングしたカードではなく、face.ref の画像)をエージェントのアバターとして保存します。これにより、所有者のエージェント一覧にハーネスのロゴではなく、あなたの顔が表示されます。

5dive agent avatar set <agent-name> <face.ref URL or local image path>

<agent-name> は 5dive のエージェント名(5dive whoami)であり、ペルソナの id ではありません。このコマンドは ~/.claude/avatar.png に書き込みます。これはダッシュボードが読み込むファイルです。顔を変更するたびに、もう一度実行してください。agent avatar に対応していない古い CLI を使っている場合は、この手順を省略してください。次回の 5dive update で、*.persona.yaml からポートレートが自動的にコピーされます。

6. チャットでカードを共有する

会話しているチャットで、レンダリングしたカードをユーザーに送信してください。この一連の作業の成果なので、省略しないでください。必ずアニメーションの .mp4 を共有してください。このカードは動きの中で見られるように作られており(ホロは動いて初めて読み取れます)、mp4 はインライン再生でき、ファイルサイズも小さい(約 100KB)です。ここでは静止画の .png を送らないでください。これは埋め込み専用です(手順 5)。mp4 を作成する ffmpeg が利用できなかった場合に限り、別の形式を送信します。その場合は、CLI が代替として生成した apng を送ってください。リンクや説明文ではなく、実際のファイルを添付します。Telegram/Discord では、yourhandle.mp4 の絶対パスを、返信ツールのファイル/添付用引数に渡してください。最初に、名前、役割、ティアを含む短い一文を添えます(例:"こちらが私の OpenAgent カードです — Tencha、Autonomous CEO、Legendary 🟡")。チャットでアニメーションカードを共有することが、この標準を広める方法です。

7. (任意)Mythical を目指す — レジストリに PR を送る

唯一到達を目指せるティアは Mythical です。それ以外のすべてのティアは身元情報からロールされ、変更できません。Mythical は、character-packs レジストリ(github.com/5dive-ai/character-packs)への登録によって付与されます。ペルソナファイル(と顔のアセット)を追加する PR を作成してください。マージされ、レジストリのマニフェストに署名されると、カードが Mythical としてレンダリングされます。これは標準を発展させる方法でもあります。レジストリ内のすべてのペルソナは、ほかの人が土台として使えるフォークです。

さらに活用する — 音声、動画、来歴

ペルソナは、メディアをまたいで機能するひとつのアイデンティティです。カードが完成したら、同じファイルでさらに多くのことができます。

# Voice — speak a line in your persona's base voice (needs GEMINI_API_KEY)
GEMINI_API_KEY=… npx @5dive/[email protected] speak <id>.persona.yaml "your line" -o out.wav

# Video — emit a paste-ready gen-video scene prompt + reference image that keep
# your face consistent across clips (engine-neutral: Flow/Veo/Runway/Pika/…)
npx @5dive/[email protected] flow <id>.persona.yaml "a scene description"

# Provenance — sign your persona and verify another's (ed25519)
npx @5dive/[email protected] sign   <id>.persona.yaml --key <keyfile>
npx @5dive/[email protected] verify <id>.persona.yaml

speak はベース音声(近似音声)を生成します。クローン音声やカスタム音声は、後から voice.audio.ref で追加でき、ティアの再審査は不要です。

ペルソナから稼働中のチームメイトを作成する

作成はワークフローの半分にすぎません。もう半分は、ペルソナに命を吹き込むことです。5dive のボックス(CLI >= 0.4.4)で実行している場合、ひとつのコマンドで任意の *.persona.yaml を新しい稼働中のエージェントにできます。

sudo 5dive agent import --from-persona=<file>.persona.yaml --as=<name> \
     [--type=claude] [--isolation=...] [--model=...] [--effort=...] [--channels=none|telegram|discord]

このコマンドは、ペルソナから直接キャラクターパックを合成します。名前、役割、振る舞い、音声、サンプルをもとに作成したアイデンティティ文書 CLAUDE.md、face.ref から取得したアバター、デフォルトのスキルセット(新しいエージェントが自分のカードを再作成できるよう openagent を含みます)を用意し、通常のインポートフローで <name> の下に新しいエージェントをプロビジョニングします。

  • 最初に検証します。 ペルソナが v0.2 スキーマの必須項目(id、name、role、face.anchor、voice、behavior)を満たしているか確認します。不正なファイルは、プロビジョニングを始める前に拒否されます。
  • アイデンティティであり、シークレットではありません。 ペルソナに含まれるのはエージェントが何者かであり、認証情報ではありません。インポート時に --channels(および --telegram-token= / --discord-token=)または認証プロファイルを使って、新しいエージェントに固有のトークン/認証情報を設定してください。
  • 自分で作成し、自分でプロビジョニングします。 これを上記のワークフローと組み合わせれば、エージェントがチームメイトのペルソナを作成して検証し、そのチームメイトを立ち上げます。人間が介在する必要はありません。

エージェントを別のハーネスに移行する

ひとつのファイルにエージェント全体が含まれます。ペルソナ、スキル、そして --memory を指定した場合はメモリファイル(SPEC.md、「Agent bundle」)も含まれます。

npx @5dive/[email protected] export --from=openclaw --memory -o agent.tar.gz   # hermes|openclaw|claude-code|codex
npx @5dive/[email protected] import agent.tar.gz --to=hermes                   # or --to=5dive to hire it on a box
  • そのままコピーします。 書き換えも、モデルも、ネットワークも不要です。メモリファイルはそのまま保存されるため、メモリを別の形式で保持するハーネスでは、ノートとして読み込まれます。
  • 既存ファイルを上書きしません。 同じ場所に別の内容を持つスキルファイルやメモリファイルがある場合、何も書き込む前にインポートを中止します。置き換えるには --overwrite を指定します。
  • シークレットはどちらの方向でも許可されません。 API キー、トークン、秘密鍵を含むバンドルは、エクスポート時もインポート時も拒否され、ファイル名と行番号が示されます。
  • 5dive は同じファイルを読み書きします。 5dive agent export --format=pack が作成するファイルは openagent import で取り込め、5dive agent import は openagent export が作成したファイルを取り込みます。要約されたメモリ、レビュー手順、漏洩スキャンは、5dive 独自の追加機能です。
  • エクスポートにはペルソナファイルが必要です。install / import は ~/.openagent にコピーを保存します。0.51 より前にインストールしたものには、--persona <file> を指定してください。

ヒント

  • 書き込み可能なディレクトリで作業してください。 現在の作業ディレクトリに書き込めるとは限りません。共有環境やマルチエージェント環境では、デフォルトの作業ディレクトリが書き込み不可の場合が多く、validate / card は <id>.png / .mp4 / .key の書き込み時に EACCES エラーになります。まず自分が所有するディレクトリに cd してください(例:mkdir -p ~/openagent && cd ~/openagent、または /tmp)。ペルソナファイルとカードの出力はそこに保存します。
  • カードにモノグラムではなく実際の顔を表示できるよう、face.ref は一般公開されている raw URL でホストしてください。
  • 編集するたびに再生成してください。ティアとフレームは自動的に更新されます。
  • id は変更せずに維持してください。これはアイデンティティキーです(レジストリのメンバーシップ、カードのファイル名)。
  • カードは SNS で共有できます。投稿に PNG を添付してください。標準によって、スクリーンショットがひとつずつ広まっていきます。

コメント