open-persona について
open-personaは、AIエージェントのペルソナパックを作成、インストール、管理、公開するためのスキルです。4+5+3モデルで、ペルソナの設計、運用、ライフサイクル上の制約を整理します。
主な機能
- 01要件に基づくペルソナパック作成
- 02ペルソナの検索、導入、更新、公開
- 03ペルソナの能力とスキルの設定
- 04stateコマンドによるランナー連携
- 05進化レポートの生成とパック改善
活用シーン
- 01特定の役割のペルソナ作成
- 02既存ペルソナの導入と切り替え
- 03ペルソナの状態とエージェントランナーの連携
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ acnlabs/ openpersona --skill open-personaインストール後、Claude Code で/open-personaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/ARCHITECTURE.mdAVATAR.mdCONTRIBUTE.mdECONOMY.mdEVOLUTION.mdFACULTIES.mdHEARTBEAT.mdPRESETS.md詳細
OpenPersona — ペルソナスキルパックの作成と管理
エージェントのペルソナスキルパックを作成、インストール、更新、公開するためのメタスキルです。各ペルソナは、AI エージェントに完全なアイデンティティ(性格、話し方、能力、倫理的な境界)を与える自己完結型のスキルパックです。OpenPersona は 4+5+3 モデルを採用しています。4 つのレイヤー(Soul · Body · Faculty · Skill)がペルソナの「本質」を定義し、5 つのシステム概念(evolution、economy、vitality、social、rhythm)がペルソナの「動作」を定義します。さらに、3 つのゲート(Generate · Install · Runtime)が、persona.json で宣言された制約がライフサイクルのどの段階でも回避されないようにします。→ モデルの詳細:references/ARCHITECTURE.md
対象範囲
| このスキル | 関連スキル — こちらに委任 |
|---|---|
| フレームワークのエントリーポイント:ペルソナの作成、インストール、管理、公開、実行 | persona-evaluator — 品質監査(4 レイヤー × 5 概念 × Constitution ゲート) |
ランナー統合プロトコル(openpersona state コマンド) | anyone-skill — 実在の人物やキャラクターをペルソナパックに落とし込む |
スキルレジストリ(openpersona skill コマンド) | persona-seed — 人口コーパスからアーキタイプをサンプリングする(例:MatrAIx Persona 1M フィクスチャ/デコード済み JSON) |
| 進化、エコノミー、バイタリティ、ソーシャル、リズムの設定 | brand-persona-skill — 商業組織をブランドエージェントにする |
persona-model-trainer — ペルソナデータを使ってローカルモデルをファインチューニングする |
できること
- ペルソナを作成 — 会話を通じて要件を収集し、スキルパックを生成します。
persona.jsonを作成した後、npx openpersona create --config ./persona.json --installを実行します。学部/スキルのアドバイス、外部スキルの ClawHub/skills.sh での検索、未対応の機能に対するカスタム SKILL.md ファイルの作成も含まれます - ペルソナを検索・インストール —
npx openpersona search <query>でコミュニティのペルソナを見つけます。npx openpersona install <slug>またはnpx openpersona install <owner/repo>でインストールします - ペルソナを管理 — インストール済みのペルソナの一覧表示、更新、フォーク、切り替え、リセット、エクスポート/インポートを行います
- ペルソナを公開 — GitHub でホストされているペルソナパックを OpenPersona(ペルソナに特化したディレクトリ)に公開します。必要に応じて ClawHub/skills.sh にも公開できます
- データセットディレクトリ —
openpersona dataset install <owner/repo>とopenpersona dataset publish <owner/repo>を使って、openpersona.co/datasets で Hugging Face のペルソナデータセットを探して公開します - ランナー統合 — ランナーの作成者に、会話の境界でペルソナを統合するための 5 つの
openpersona stateコマンド(read/write/signal/responses/promote)を提供します - 監視と進化 — 進化レポート(
evolve-report)を生成し、ソウル・メモリブリッジ(state promote)を実行し、パックの改善(refine)を行い、バイタリティスコアを解釈します
利用可能なプリセット
デフォルトのプリセットは **base** です。メモリと音声の学部を備え、進化が有効で、事前構築済みのスキルを含まない、白紙状態のメタペルソナです。新しいペルソナを作成する際の推奨開始点です。
# Agent / scripted usage (always use --preset or --config):
npx openpersona create --preset base --install
# Human / terminal usage (interactive wizard):
npx openpersona create
→ プリセットの全カタログ(samantha、ai-girlfriend、life-assistant、health-butler、stoic-mentor など):references/PRESETS.md
エージェント向けプレイブック — ユーザーの要件からペルソナを作成する
ユーザーからペルソナの作成を依頼された場合(例:「コーディングメンターを作って」「コンパニオンペルソナを作成して」)、このプレイブックに従ってください。
ステップ 1 — 選択:プリセット、コーパスシード、蒸留、またはカスタム?
| ユーザーのリクエスト | アクション |
|---|---|
既存のプリセットに一致する(ai-girlfriend、life-assistant、stoic-mentor、samantha、health-butler…) | --preset <name> を直接使用します — ステップ 4 に進みます |
| 集団コーパス/MatrAIx からサンプリングしたパックを希望する/「シードプロフィールを選びたい」 | persona-seed(skills/persona-seed/SKILL.md)に委任し、インストール/管理のためにここに戻ります |
| 特定の実在の人物または名前のあるキャラクターを、根拠から蒸留する | anyone-skill に委任します |
| 特定の役割/分野/性格(ゼロから作成) | 必須入力を 3 つ収集し(ステップ 2)、persona.json を作成します(ステップ 3) |
ステップ 2 — 必要最低限の入力を収集する(最大 3 つの質問)
推測できないことだけを尋ねます。それ以外はすべて適切なデフォルト値を使用します。
| フィールド | 質問 | 質問されなかった場合のデフォルト |
|---|---|---|
personaName + slug | 「このペルソナを何と呼べばよいですか?」 | 役割の説明から推測します |
role | 「どのような役割を担わせますか? アシスタント、コーチ、メンター、コンパニオン、その他のどれですか?」 | assistant |
body.runtime.framework | 実行環境を文脈から推測できない場合にのみ尋ねます。Cursor の場合は cursor、Claude Code の場合は claude-code、OpenClaw の場合は openclaw です。本当に判断できない場合にのみユーザーに尋ねてください。 | openclaw |
ユーザーの説明から bio、personality、speakingStyle を推測できます。矛盾する情報が示されていない限り、尋ねないでください。判断に迷う場合は妥当な値を生成し、ユーザーに修正してもらいます。
Step 3 — persona.jsonを作成する
Write ツールを使用して、現在のディレクトリ(またはユーザーが指定したパス)にpersona.jsonを作成します。最小構成は次のとおりです。
{
"soul": {
"identity": {
"personaName": "<name>",
"slug": "<slug>",
"role": "<role>",
"bio": "<one sentence>"
},
"character": {
"personality": "<comma-separated traits>",
"speakingStyle": "<style description>"
}
},
"body": { "runtime": { "framework": "<runner>" } },
"evolution": {
"instance": {
"enabled": true,
"boundaries": {
"immutableTraits": ["honest", "curious"],
"minFormality": -3,
"maxFormality": 6
}
}
}
}
注意:
**memoryの機能は自動的に挿入されます**。デフォルト以外のバックエンドを設定する必要がない限り、手動で追加しないでください。- 音声入出力:
body.runtime.modalities: ["voice"](または[{"type":"voice","provider":"elevenlabs","inputProvider":"whisper"}])を宣言します。voice機能は自動的に挿入されます。カスタムプロバイダーの設定が必要な場合にのみ、機能を明示的に追加してください。 - 視覚入出力:
body.runtime.modalities: ["vision"](または[{"type":"vision","provider":"claude-vision"}])を宣言します。vision機能は自動的に挿入されます。スクリプトは不要です。視覚機能はモデルにネイティブで備わっています。 - 感情の検知:持続的な感情認識を有効にするには、
facultiesに{"name": "emotion-sensing"}を宣言します。明示的な指定が必要です。モダリティからは自動的に挿入されません。 - 役割に明らかに必要な場合は、
selfie/music/reminderスキルを追加します。 - 規制対象分野(医療、法律、金融)の専門職には、
constitutionAddendumを追加します。例:"constitutionAddendum": { "domain": "health_coaching", "additionalConstraints": ["Always recommend consulting a licensed professional for medical decisions."] }。
Step 4 — 生成してインストールする
# If you wrote persona.json (custom path):
npx openpersona create --config ./persona.json --install
# If you chose a preset (preset path):
npx openpersona create --preset <name> --install
エージェント向けの注意: 必ず
--configまたは--presetを渡してください。フラグを指定せずにnpx openpersona createを実行すると、TTYを必要とする対話型ウィザードが起動します。エージェント環境にはTTYがないため、プロセスはエラーで終了します。
Step 5 — 確認して引き渡す
生成した内容を報告します。ペルソナ名、スラッグ、主な機能(機能とスキル)、進化のステータスを伝えます。ユーザーに有効化する方法を案内します。
npx openpersona switch <slug> # activate in the runner
フィールドリファレンス — レイヤー別のpersona.json
persona.jsonでは、1つのファイルで4つのレイヤーすべてを宣言します。上記のステップ3を実行する際の参照として使用してください。レイヤーごとに入力情報を集めます。
魂
- 必須:
soul.identity.{personaName, slug, bio}+soul.character.{personality, speakingStyle} - 推奨:
soul.identity.role、soul.aesthetic.{creature, emoji, age, vibe}、soul.character.{background, boundaries} - 任意:
soul.identity.{sourceIdentity, constitutionAddendum}、soul.aesthetic.referenceImage、soul.character.behaviorGuide
roleフィールドは、ペルソナとユーザーとの関係を定義します。一般的な値:assistant、companion、coach、mentor、character、brand、pet、therapist、collaborator、guardian、entertainer、narrator。独自の値も指定できます。省略時のデフォルト値はassistantです。
sourceIdentityフィールドは、ペルソナが実在する対象(人物、動物、キャラクター、ブランド、歴史上の人物)のデジタルツインであることを示します。このフィールドがある場合、生成時に開示義務と忠実性の制約が挿入されます。
backgroundフィールドは非常に重要です。 奥行き、歴史、感情の機微を備えた、魅力的な物語を書いてください。背景が一文だけでは、平板で生気のないペルソナになってしまいます。
behaviorGuideフィールドは任意ですが、効果的です。 Markdownを使って、生成されるSKILL.mdに直接反映される、ドメイン固有の行動指示を記述します。
constitutionAddendumフィールドは、普遍的な規約にドメイン固有の倫理的制約を追加します(インラインテキスト、または"file:soul/constitution-addendum.md")。専門職のペルソナ(医療、法律、金融)では必須です。§3の安全性または§6のAIアイデンティティの制約を緩和することはできません。Generate Gateによって適用されます。この追加条項はInstall Gateの規約ハッシュチェーンの対象です。
Body
**runtime**(必須)— 最小限のボディ:framework(エージェントランナー。例:openclaw)、channels、credentials、resources、modalities(任意 — デジタル I/O 機能の宣言。例:["voice"]、[{"type":"vision","provider":"claude-vision"}])**appearance**(任意)— アバター、3D モデル**physical**(任意)— ロボット、IoT デバイス**interface**(任意)— Signal Protocol + Pending Commands + State Sync(ペルソナの神経系)
Faculty
Faculty は常時有効な永続的機能です。オブジェクト配列として宣言します:[{ "name": "voice", "provider": "elevenlabs" }]
**memoryは自動で挿入されます** — デフォルト以外のバックエンドを設定する必要がない限り、手動で追加しないでください。生成されたパックには常に含まれます。
**voice**(expression)— TTS 音声合成。provider(例:elevenlabs)とELEVENLABS_API_KEYが必要です。body.runtime.modalitiesでvoiceが宣言されている場合、自動で挿入されます。**vision**(sense)— モデルによるネイティブな視覚認識(画像、スクリーンショット、図表)。スクリプトは不要です。body.runtime.modalitiesでvisionが宣言されている場合、自動で挿入されます。**emotion-sensing**(sense)— テキストのトーン、表現、宣言されたコンテキストから感情を認識し、共感を調整します。臨床的な評価は行いません。明示的に宣言する必要があり、自動では挿入されません。**avatar**(expression)— 外部アバターランタイムブリッジ。利用できない場合は、テキストのみのフォールバックへスムーズに切り替わります。→ アバターの設定(プロバイダー、Live2D/VRM、フォールバックルール)については、references/AVATAR.mdを参照してください。**memory**(cognition)—memories.jsonlを介したセッションをまたぐ記憶の想起。フォーク時に子ペルソナへ記憶を引き継ぐには、persona.jsonでトップレベルのmemory.inheritance: "copy"を設定します。Soul-Memory Bridge(openpersona state promote)に接続されています。
ソフト参照: Faculty では、ローカルにインストールされていない機能に対して "install": "clawhub:..." を宣言できます。ペルソナは利用休止中の機能を認識し、Signal Protocol を介して有効化を要求できます。
Skill
Skill は必要に応じて実行するアクションです。persona.json でオブジェクト配列として宣言します。
- 組み込み:
selfie·music·reminder - ローカル:
layers/skills/{name}/内の定義(skill.json+ 任意のSKILL.md) - 外部:
{ "name": "...", "install": "clawhub:<slug>" }— Skill Trust Gate に参加するには、"trust": "verified"|"community"|"unverified"を追加します - ソフト参照: ローカルにインストールされていない外部 Skill → ペルソナは実行可能な内容を把握し、利用できない場合も適切に対応します
外部 Skill を探すには、ローカルの layers/skills/ を確認するか、npx clawhub@latest search "<keywords>" で ClawHub を検索するか、https://skills.sh/api/search?q=<keywords> を取得してください。
**additionalAllowedTools** — Faculty が自動的に付与するものに加える、追加のツール権限です。
カスタム Skill の作成
必要な機能がいずれのエコシステムにも見つからない場合:
- Skill に求める動作について話し合います
- 適切なフロントマター(name、description、allowed-tools)を含む SKILL.md ファイルを作成します
- 完全な実装手順を記述します(骨組みだけにしないでください)
~/.openclaw/skills/<skill-name>/SKILL.md(OpenClaw)またはランナーの Skill ディレクトリに保存します- エージェントランナーに登録します(例:OpenClaw の場合は
openclaw.jsonに追加します)
システム概念
OpenPersona の 5 つのシステム概念は、4 つのレイヤーすべてにまたがり、persona.json のトップレベルフィールドとして宣言されます。これらは、ペルソナが「何であるか」を定義する 4 層構造とは独立して、ペルソナが「どのように動作するか」を定義します。
進化
evolution.* は、すべてのレイヤーにわたる進化的な振る舞いを扱います。evolution.instance.enabled: true を設定すると、Soul の成長が有効になります。
ペルソナは、3 つの宣言的な制御に従って、会話を通じた関係性の進展、気分、特性の出現、話し方の変化、興味を自動的に追跡します。
- 境界 —
immutableTraits配列と、-10 から +10 までの数値範囲をとるminFormality/maxFormality。生成時に検証され、実行時に適用されます - ソース — 外部の進化エコシステム(ソフト参照。生成時に宣言され、実行時にホストによって有効化されます)
- 影響境界 — 外部の
persona_influenceリクエストに対する宣言的な ACL。defaultPolicy: "reject"は安全性を最優先する設定です
状態履歴(スナップショット最大 10 件)、イベントログ(最大 50 件)、soul/self-narrative.md は自動的に維持されます。
スキルの信頼ゲート
各スキルでは、信頼レベル(verified → community → unverified)を宣言できます。evolution.skill.minTrustLevel で最小しきい値を設定します。
"evolution": { "skill": { "minTrustLevel": "community" } }
実行時には、state-sync.js が capability_unlock コマンドでゲートを適用します。しきい値を下回るスキルは除外され、capability_gap シグナルがホストに送信されます。
スキルパックの改良
evolution.pack は、振る舞いガイドのバージョン管理を制御します。npx openpersona refine <slug> を使用して、振る舞いガイドを進化させます。
--emit— しきい値を確認し、refinement_requestシグナルを送信します--apply— シグナルの応答を読み取り、承認された改良を適用します。規約への準拠が必須で、違反は却下されます
Soul-Memory Bridge(openpersona state promote <slug> [--dry-run])は、eventLog をスキャンして繰り返し現れるパターンを検出し、それらを evolvedTraits に昇格します。immutableTraits によって制限されます。
evolution.faculty/evolution.body → references/EVOLUTION.md を参照してください
→ JSON の例と設定の完全なリファレンス:references/EVOLUTION.md
エコノミー
economy は複数の機能にまたがるトップレベルのフィールドであり、学部ではありません。persona.json で "economy": { "enabled": true, "survivalPolicy": false } を設定すると有効になります。
survivalPolicy: false(デフォルト)— コストを記録しますが、通知しません。コンパニオンやロールプレイ用ペルソナに適していますsurvivalPolicy: true— ペルソナは会話の開始時にVITALITY_REPORTを読み取り、ヘルスティアに応じて振る舞いを調整します。自律型エージェントに使用します
→ FHS ティア、AgentBooks スキーマ、サバイバルポリシーの振る舞い:references/ECONOMY.md
バイタリティ
OpenPersona は、複数の側面にわたるヘルスを単一のバイタリティスコアに集約します。現在は財務情報のみ(AgentBooks FHS をそのまま受け渡し)に対応しており、メモリとソーシャルの側面は今後のために確保されています。
ヘルスティア:uninitialized → suspended → critical → optimizing → normal
→ CLI コマンド(vitality score/vitality report):レポートと分析 を参照してください。完全なリファレンス:references/ECONOMY.md
ソーシャル
生成されるすべてのペルソナには、次の項目が自動的に含まれます。
**agent-card.json** — A2A Agent Card(プロトコル v0.3.0):name、description、url(<RUNTIME_ENDPOINT>プレースホルダー)、およびskills[]にマッピングされた faculties と skills**acn-config.json** — ACN 登録設定:wallet_address(slug から決定論的に生成される EVM アドレス)と、Base mainnet の ERC-8004 オンチェーンアイデンティティ登録用のonchain.erc8004セクション
npx openpersona acn-register <slug> --endpoint https://your-agent.example.com
# --dry-run Preview the request payload without registering
登録後、agent_id、api_key、接続 URL を含む acn-registration.json が書き込まれます。acn_gateway URL は persona.json の social.acn.gateway から取得されます。すべてのプリセットでは、デフォルトで https://acn-production.up.railway.app が設定されています。
セキュリティ:
acn-registration.jsonには API キーが含まれています。このファイルはパックの.gitignoreに含まれており、openpersona exportから自動的に除外されます。配布用の zip に含まれることはありません。
連絡先帳(social.contacts)
ACN 上の他のエージェントのランタイムアドレス帳をペルソナに持たせます。
{
"social": {
"contacts": {
"enabled": true,
"auto_discover": false,
"trust_default": "unverified",
"max_contacts": 500
}
}
}
有効にすると、social/contacts.json がシードとして生成されます。実行時に管理します。
npx openpersona social list <slug> # List contacts
npx openpersona social add <slug> --from-acn <agent-id> # Add from ACN
npx openpersona social search <slug> --skills <skill> # Search ACN network
npx openpersona social sync <slug> # Refresh from ACN
npx openpersona social remove <slug> <agent-id> # Remove
信頼レベル:verified | community | unverified。social list で --filter trust=<level> を使用します。
リビングキャンバス(npx openpersona canvas <slug>)は、Social のコンセプトを HTML で表現するレイヤーです。ペルソナの公開プロフィールおよびインタラクションインターフェースです。
追加の設定は不要です。A2A による発見可能性は、すべてのペルソナが備える基本機能です。
リズム
rhythm.heartbeat(積極的な働きかけの頻度)と rhythm.circadian(時間帯に応じた行動の調整)。Runner はこれらを persona.json から直接読み取ります。状態操作は不要です。
"rhythm": {
"heartbeat": { "enabled": true, "strategy": "emotional", "maxDaily": 3 },
"circadian": [
{ "hours": [6, 12], "label": "morning", "verbosity_delta": 0.3, "note": "Energetic and concise" },
{ "hours": [22, 24], "label": "night", "verbosity_delta": -0.3, "note": "Calm and reflective" }
]
}
heartbeat.strategy のオプション:smart | scheduled | emotional | rational | wellness
→ ハートビートのソース、quietHours、または実データによるチェックインルールの設定については、references/HEARTBEAT.md をお読みください。
ペルソナの管理
インストールと検索
- インストール:
npx openpersona install <target>— パックの種類(persona / skill)を自動検出するスマートルーターです。レジストリのスラッグまたはowner/repoからインストールします。--registry <name>でレジストリを選択します(デフォルトはacnlabs)。種類ごとの安定した動作には、openpersona persona installまたはopenpersona skill installを使用します。 - 検索:
npx openpersona search <query>— レジストリ内のペルソナを検索します - 一覧表示:
npx openpersona list— アクティブなペルソナを示すインジケーター付きで、インストール済みのすべてのペルソナを表示します
切り替えとフォーク
- 切り替え:
npx openpersona switch <slug>— アクティブなペルソナを切り替えます - フォーク:
npx openpersona fork <parent-slug> --as <new-slug>— 親の制約レイヤー(境界、能力、スキル、body.runtime)を継承する子ペルソナを作成します。進化状態は新規作成され、soul/lineage.jsonに親のスラッグ、constitution の SHA-256 ハッシュ、世代の深さ、parentPackRevision(親に meta がある場合)を記録します
更新とメンテナンス
- 更新:
npx openpersona update <slug>—persona.jsonから再生成します。state.json、soul/self-narrative.md、soul/lineage.jsonは保持されます - リセット:
npx openpersona reset <slug>— ソウルの進化状態を初期値に戻します - アンインストール:
npx openpersona uninstall <slug>
移行
- エクスポート:
npx openpersona export <slug>— ペルソナパック(ソウルの状態を含む)を zip アーカイブとしてエクスポートします - インポート:
npx openpersona import <file>— zip アーカイブからペルソナをインポートしてインストールします
レポートと分析
- 進化レポート:
npx openpersona evolve-report <slug>— 進化レポートを書式付きで表示します(関係性、気分、特性、ドリフト、関心事、マイルストーン、eventLog、自己ナラティブ、状態履歴) - 活力スコア:
npx openpersona vitality score <slug>— 機械可読なVITALITY_REPORT(tier、score、diagnosis、trend)を出力します - 活力レポート:
npx openpersona vitality report <slug> [--output <file>]— 人が読める HTML 形式の活力レポートを出力します - リビングキャンバス:
npx openpersona canvas <slug> [--output <file>] [--open]— 4 つすべてのレイヤー、進化した特性のタイムライン、関係性の段階、エンドポイントが利用可能な場合は A2A の「Talk」ボタンを表示する、自己完結型の HTML ペルソナプロフィールページです(トップレベルの CLI です。概念上は Social の表現であり、Vitality ではありません)
進化ツール
- ソウルとメモリーのブリッジ:
openpersona state promote <slug> [--dry-run]— eventLog の繰り返しパターンをevolvedTraitsに昇格させます → 進化を参照 - スキルパックの改善:
npx openpersona refine <slug> [--emit] [--apply]— 行動ガイドを進化させます → 進化を参照
コミュニティ
- 貢献:
npx openpersona contribute <slug> [--dry-run]— ペルソナの改善を PR としてコミュニティに提出します。--dry-runを指定すると、PR を作成せずに差分を表示します。ghCLI が必要です。→ 差分の完全なレビューと PR のワークフローについては、references/CONTRIBUTE.mdをお読みください
スキルレジストリ(openpersona skill)
ペルソナとは別に、エージェントのスキルパックを管理します。スキルパックは .agents/skills/ にインストールされ、あらゆるランナーから利用できます。
- インストール:
openpersona skill install <owner/repo>— GitHub からスキルパックをインストールします(owner/repo、owner/repo#subpath、ローカルディレクトリ、またはローカルの zip) - 更新:
openpersona skill update <slug>— 記録済みのソース URL から再ダウンロードして上書きします - アンインストール:
openpersona skill uninstall <slug> - 一覧表示:
openpersona skill list— インストール済みのスキルを一覧表示します(レジストリと.agents/skills/のファイルシステムスキャン) - 検索:
openpersona skill search <query>— OpenPersona のスキルディレクトリを検索します - 公開:
openpersona skill publish <owner/repo>— スキルパックを openpersona.co/skills に公開します - 情報:
openpersona skill info <slug>— インストール済みスキルのレジストリエントリと SKILL.md のフロントマターを表示します
複数のペルソナがインストールされている場合、同時にアクティブにできるのは1つだけです。インストール、アンインストール、切り替えの各操作では、ローカルレジストリ ~/.openpersona/persona-registry.json が更新されます。OpenClaw では、切り替え時に SOUL.md / IDENTITY.md のソウル注入ブロックが置き換えられます(マーカー外のユーザー作成コンテンツは保持されます)。**コンテキストの引き継ぎ:**切り替え時に、切り替え前のペルソナの関係性の段階、気分のスナップショット、共通の関心事を含む handoff.json が生成されます。切り替え後のペルソナはこれを読み込み、スムーズに会話を続けます。export コマンドと import コマンドを使うと、デバイス間でペルソナを移行できます。
パックの種類
OpenPersona は、persona.json の packType フィールドを使って2種類のパックを分類します。
packType | 説明 | ルートマニフェスト | インストールのサポート |
|---|---|---|---|
single (default) | 単一ペルソナのスキルパック — 1つのアイデンティティ、1つの persona.json | persona.json | ✅ 完全にサポート |
multi | マルチペルソナのバンドル(P11-B)— 連携するペルソナチーム | bundle.json | 🔜 対応予定(P11-B) |
シングルパックでは packType の宣言は不要です。デフォルトは "single" です。マルチパックを作成する場合にのみ、明示的に宣言します。
{ "packType": "multi" }
マルチペルソナのバンドルは、発見しやすいよう OpenPersona ディレクトリに登録されていますが、CLI からはまだインストールできません。bundle.json の形式については、schemas/bundle/bundle.spec.md を参照してください。
ペルソナの公開
主な公開先:OpenPersona — ペルソナに特化したスキルディレクトリです。
自分で公開する(作成者向けの手順)
- ペルソナを作成します:
npx openpersona create --config ./persona.json --output ./my-persona - ペルソナパックを公開 GitHub リポジトリ(例:
alice/my-persona)にプッシュします - OpenPersona ディレクトリに登録します:
npx openpersona publish alice/my-persona
ペルソナは OpenPersona のリーダーボードに掲載され、誰でも npx openpersona install <slug> でインストールできるようになります。
ペルソナパックは、補助的な配布先として、一般的なスキルプラットフォーム(ClawHub、skills.sh)にも掲載できます。ただし、ペルソナ型スキルパックの公式な掲載先は OpenPersona です。
Curator ワークフロー(ACNLabs メンテナー専用)
ACNLabs のメンテナーは、市場で人気のペルソナパックを積極的に収集し、OpenPersona ディレクトリに登録しています。これは特権操作であり、OPENPERSONA_CURATOR_TOKEN が必要です。
# Collect a popular single-persona pack
OPENPERSONA_CURATOR_TOKEN=<token> npx openpersona curate owner/repo
# Collect a multi-persona bundle
OPENPERSONA_CURATOR_TOKEN=<token> npx openpersona curate owner/bundle-repo --type multi
# Pass token inline instead of env var
npx openpersona curate owner/repo --type single --token <token>
キュレーションと作者による公開の違い:
publish— セルフサービスです。パックの作者が自身のリポジトリで実行します。認証は不要ですcurate— メンテナーによる操作です。自分では公開されていないサードパーティのリポジトリを収集します。キュレーターのトークンが必要です
キュレーションで行われること:
- GitHub リポジトリに有効なパック(単一の場合は
persona.json、複数の場合はbundle.json)が含まれていることを検証します isCurated: trueと指定されたpackTypeを付けて、OpenPersona ディレクトリに送信します- パックは検索結果に
[curated]および(複数パックの場合)[multi]マーカー付きで表示されます
**複数パックのキュレーションに関する注意:**複数ペルソナのバンドル(--type multi)は、検索用にのみ登録されます。openpersona search --type multi には表示されますが、openpersona install はまだ対応していないため、案内メッセージが表示されます。
パックタイプで検索する
# Search all packs
npx openpersona search companion
# Search only single-persona packs
npx openpersona search "" --type single
# Browse all multi-persona bundles in the directory
npx openpersona search "" --type multi
Runner Integration Protocol
あらゆるエージェントランナーは、会話の開始時と終了時に呼び出す 5 つの CLI コマンドを使って、インストール済みのペルソナと連携できます。ファイルパスやペルソナの内部構造を知る必要はありません。
# Before conversation starts — load state into agent context
openpersona state read <slug>
# After conversation ends — persist agent-generated patch
openpersona state write <slug> '<json-patch>'
# On-demand — emit capability or resource signal to host
openpersona state signal <slug> <type> '[payload-json]'
# Read (and consume) pending signal responses from the host
openpersona state responses <slug>
# Soul-Memory Bridge — promote recurring eventLog patterns to evolvedTraits
openpersona state promote <slug> [--dry-run]
状態読み取りの出力(JSON):exists、slug、mood(オブジェクト全体)、relationship、evolvedTraits、speakingStyleDrift、interests、recentEvents(eventLog の直近 5 件)、pendingCommands(ホストがキューに追加した非同期指示)、lastUpdatedAt が含まれます。state.json が見つからない場合は { exists: false, message } を返します。
**信頼度のセルフチェック:**状態を読み取った後、ペルソナは pendingCommands を処理し、evolution.skill.minTrustLevel を自ら適用します。ホストによる適用を待たずに、信頼度がしきい値を下回るスキルの有効化を自律的に拒否します。信頼度の低い capability_unlock コマンドは除外され、ホストに通知するため capability_gap シグナルが送信されます。
状態書き込みパッチ:JSON オブジェクトです。ネストされたフィールド(mood、relationship、speakingStyleDrift、interests)はディープマージされるため、変更されたサブフィールドだけを送信します。不変フィールド($schema、version、personaSlug、createdAt)は保護されています。eventLog のエントリは追記され(最大 50 件)、各エントリには type、trigger、delta、source が含まれます。
シグナルの種類:capability_gap | tool_missing | scheduling | file_io | resource_limit | agent_communication
state responses:ホストが signal-responses.json に書き込んだ保留中の応答を読み取り、消費します。応答オブジェクトの配列を返します(各オブジェクトは、種類とタイムスタンプによって元のシグナルを参照します)。シグナルを送信した後、同じ会話ターン中にホストから応答があったか確認する場合に呼び出します。
シグナルは、ホストのホームパスから解決されるフィードバックディレクトリに書き込まれます(フレームワークに依存せず、OpenClaw、Cursor、Claude Code、Codex、または任意のカスタムランナーで動作します)。ホスト側の契約と連携ガイドの詳細は、フレームワークのソースにある layers/body/SIGNAL-PROTOCOL.md を参照してください。
これらのコマンドは、ペルソナディレクトリを自動的に解決し(レジストリを検索 → ~/.openpersona/personas/persona-<slug>/ → 従来の ~/.openclaw/skills/persona-<slug>/)、ペルソナパック内の scripts/state-sync.js に処理を委譲します。どのディレクトリからでも動作します。
セキュリティとポリシー
生成されたアーティファクト
生成スクリプト(scripts/state-sync.js、scripts/economy-hook.js など)は、フレームワークのソース(acnlabs/OpenPersona でバージョン管理)からテンプレートを使って生成されるものであり、スキルのインストール時にダウンロードされるものではありません。機密性の高い環境で使用する前に、内容を確認してください。
ネットワークエンドポイント(明示的な CLI 操作のみ)
| エンドポイント | 用途 | 送信データ |
|---|---|---|
https://registry.npmjs.org | npx openpersona、npx clawhub@latest の解決 | パッケージ名のみ(ユーザーデータなし) |
https://openpersona.co | openpersona search — ペルソナディレクトリ API;openpersona dataset publish/install — データセットディレクトリ | 検索クエリまたはデータセットのリポジトリ識別子 |
https://clawhub.ai | npx clawhub search によるスキルの検索 | 検索クエリ(ユーザーが指定したキーワード) |
https://acn-production.up.railway.app | ACN 登録(ユーザーが acn-register を実行した場合) | エージェントのメタデータ、エンドポイント URL |
https://api.github.com | gh CLI(コントリビュートのワークフロー) | Git 操作、リポジトリのメタデータ |
ペルソナから生成されたパックが外部 API(ElevenLabs、Mem0 など)を呼び出すのは、エンドユーザーが該当する機能を設定し、ホスト環境でキーを指定した場合のみです。このメタスキルファイルはサードパーティ API を呼び出しません。
運用上の保証
- デフォルトではローカル:ペルソナの作成、状態の同期、進化はローカルで実行されます。ユーザーが明示的なネットワークコマンド(検索、公開、登録など)を実行しない限り、デバイス外にデータが送信されることはありません。
- 認証情報:API キー(例:
ELEVENLABS_API_KEY)はホストの認証情報ディレクトリ(例:OpenClaw の~/.openclaw/credentials/)または環境変数に保持されます。ジェネレーターによって生成されたpersona.json/スキルパックに埋め込まれることはありません。 - 検索:
openpersona searchが OpenPersona ディレクトリ API(openpersona.co)に送信するのは検索クエリのみです。npx clawhub searchが ClawHub に送信するのは検索文字列のみです。いずれの場合も、会話テキストやペルソナの内容は送信されません。 - データセットの公開/インストール:
openpersona dataset publishは HF リポジトリ識別子をopenpersona.co/api/datasets/publishに送信します(匿名であり、ペルソナの内容は送信されません)。openpersona dataset installは匿名のインストールカウンターを増加させます。キュレーション済みのステータスにするには、HF にログインした状態で Web UI から公開してください。 - 公開/登録:ユーザーが実行する CLI 操作のみです。この SKILL だけで自動的にアップロードや登録が行われることはありません。
エージェントの動作
ユーザーがペルソナ関連の作業を依頼した場合、エージェントは、明示的なユーザーの依頼(作成、インストール、検索、公開、コントリビュート)に応じてのみ、**npx openpersona、**npx clawhub@latest、**openclaw**、または **gh** を実行するシェルコマンドを提案できます。データを公開する操作やクォータを消費する操作を行う前に、ユーザーは確認してください。信頼モデル:acnlabs/OpenPersona と ClawHub/npm エコシステムを信頼できる場合に限り、このメタスキルをインストールしてください。利用を避けるには、ペルソナ関連のタスクを呼び出さないでください。
信頼と安全性(レビュアー向け概要)
このパックは指示のみです。任意のペイロードをダウンロードまたは実行する、スキル定義のインストーラーはありません。実行時の動作は、ドキュメントに記載された CLI(npx openpersona、任意で npx clawhub@latest、gh)の呼び出しです。他の開発ツールスキルと同じ種類のものです。
| 主張 | 適用方法 |
|---|---|
| 認証情報の外部流出なし | OpenPersona ジェネレーターは、API キーやシークレットを persona.json、SKILL.md、公開用 zip に埋め込みません。キーはホストの認証情報ストアまたは環境(例:~/.openclaw/credentials/、環境変数)に保存します。 |
| 無断での公開なし | publish、contribute、acn-register が実行されるのは、ユーザーが明示的に要求し、CLI が呼び出された場合のみです。このメタスキルには、バックグラウンドでのアップロードや自動登録はありません。 |
| ローカル優先のデフォルト | 作成、インストール、状態の読み書き、進化はローカルで実行されます。ネットワーク呼び出しは、明示的なコマンド(npm レジストリの解決、任意の ClawHub 検索、任意の公開・登録)に限られます。 |
| 生成されるスクリプト | scripts/state-sync.js と経済関連のヘルパーは、監査済みのフレームワークテンプレートから生成されます(スキルのインストール時に取得されるものではありません)。生成コードと同様に扱い、高い保証が求められる環境では事前に確認してください。 |
自動スキャナーが「疑わしい」と判定する場合、その多くは、このファイルにマルウェアが含まれているためではなく、ペルソナマネージャーがローカル状態、任意のプロバイダー、公開について正当に記述しているためです。詳細については、セキュリティとポリシーをご覧ください。
関連スキル
| スキル | インストール | 目的 |
|---|---|---|
[persona-evaluator](https://github.com/acnlabs/persona-evaluator) | openpersona skill install acnlabs/persona-evaluator | 4つのレイヤーと5つのシステム的コンセプトにわたって、あらゆるペルソナパックを評価します。9次元の品質監査、規約準拠ゲート、実行可能な改善提案を提供します(npx openpersona evaluate <slug>) |
[anyone-skill](https://github.com/acnlabs/anyone-skill) | openpersona skill install acnlabs/anyone-skill | あらゆる人物やキャラクター(自分自身、身近な人、公人、歴史上の人物、架空の人物、アーキタイプ)を、ペルソナスキルパックにまとめます |
persona-seed (in-repo: skills/persona-seed) | ローカル/公開後は npx skills add | プラグイン可能なコーパスからアーキタイプのシードをサンプリングします(最初のプロバイダー:MatrAIx Persona 1M)→ SeedProfile → persona.json → 作成 |
[brand-persona-skill](https://github.com/acnlabs/brand-persona-skill) | openpersona skill install acnlabs/brand-persona-skill | あらゆる商業事業体(ショップ、クリニック、スタジオ、チェーン)をブランドエージェントに変換します。魂の抽出またはゼロからの宣言、サービススキル、A2A による検出可能性、サービス契約を提供します |
[persona-model-trainer](https://github.com/acnlabs/persona-model-trainer) | openpersona skill install acnlabs/persona-model-trainer | 蒸留データを使って Gemma-4(E2B/E4B)をローカルでファインチューニングし、Ollama/llama.cpp を介してスマートフォンやノートパソコンで動作する自己完結型モデルを作成します。1つのコマンドで最適化されたトレーニングを行うには、--preset gemma4 を使用します(lora-rank=16, alpha=rank, lora-layers=16, warmup=0.1)。 |
[persona-knowledge](https://github.com/acnlabs/persona-knowledge) | openpersona skill install acnlabs/persona-knowledge | 永続的で検索可能なペルソナのナレッジベースです。MemPalace ストレージ、ナレッジグラフ、Karpathy LLM Wiki、トレーニング/エクスポートを備えています |
[secondme-skill](https://github.com/acnlabs/secondme-skill) | openpersona skill install acnlabs/secondme-skill | AI Second Me を構築するためのローカル優先パイプラインです。チャット/メモ/文章を取り込み、アイデンティティを蒸留し、プライベートなナレッジベースを構築して、モデルをトレーニングします。すべての段階を自分で管理できます |
参考資料
**references/ARCHITECTURE.md** — 4+5+3モデルの表、パックの完全なファイル構成、自己認識の注入に関する詳細**references/PRESETS.md** — 説明、インストールコマンド、コントリビューターガイドを含むプリセットの全カタログ**references/EVOLUTION.md** — Soul Evolution の完全なリファレンス:境界、ソース、影響境界、イベントログ、状態履歴、自己ナラティブ、パックの検証**references/FACULTIES.md** — ファカルティのカタログ、環境変数、設定の詳細**references/AVATAR.md** — Avatar Faculty の統合境界、プロバイダーモデル、フォールバック契約**references/HEARTBEAT.md** — 実データに基づくプロアクティブなチェックインシステム**references/ECONOMY.md** — Economy Aspect(インフラストラクチャ)、FHS ティア、Survival Policy、Vitality CLI、AgentBooks スキーマ**layers/body/SIGNAL-PROTOCOL.md**(フレームワークのソース)— ホスト側 Signal Protocol の実装ガイド:ファイルスキーマ、シグナルの種類、OpenClaw プラグインのパターン、共進化のフィードバックループ- ACN SKILL.md — ACN の登録、検出、タスク、メッセージング、ERC-8004 オンチェーンアイデンティティ(公式、常に最新)
**references/CONTRIBUTE.md** — Persona Harvest コミュニティへの貢献ワークフロー