OpenPersona:构建与管理智能体人格技能包 - Openclaw Skills
作者:互联网
2026-03-30
什么是 OpenPersona?
OpenPersona 是一个全面的元技能,旨在简化 Openclaw Skills 生态系统中 AI 智能体身份的生命周期管理。它允许开发者构建多层人格包,定义智能体的灵魂(个性)、身体(接口)、机能(音频/视觉能力)和特定技能组。该框架确保 AI 智能体在各种环境中拥有始终如一的声音、论理边界和技术功能。
通过利用 OpenPersona,用户可以从通用的 LLM 交互过渡到丰富且持久的数字实体。对于任何希望通过为自动化智能体增加深度和个性来增强其 Openclaw 技能的人来说,这个工具都是必不可少的。每个生成的包都遵循严格的架构标准,使人格具有可移植性,并与任何支持标准技能格式的智能体索引兼容。
下载入口:https://github.com/openclaw/skills/tree/main/skills/neiljo-gy/open-persona
安装与下载
1. ClawHub CLI
从源直接安装技能的最快方式。
npx clawhub@latest install open-persona
2. 手动安装
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
/skills/
优先级:工作区 > 本地 > 内置
3. 提示词安装
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 open-persona。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
OpenPersona 应用场景
- 创建具有特定说话风格和背景故事的独特数字孪生或角色。
- 部署带有预配置机能的专业助手,如健康导师、生活教练或财务顾问。
- 通过无缝切换活动人格,在单个主机上管理多个 AI 身份。
- 开发能够通过持续互动随时间进化其个性和关系状态的智能体。
- 将标准化的人格技能包发布到 ClawHub 供社区使用。
- 通过引导式对话或 JSON 配置设计人格的核心身份,包括简历、角色和说话风格。
- 定义由灵魂(个性)、身体(运行时接口)、机能(ElevenLabs 等外部服务)和技能(功能能力)组成的四层架构。
- 生成技能包结构,包括清单、身份文档和必要的状体管理脚本。
- 将人格本地安装到 OpenClaw 环境中,使其成为智能体的活动身份。
- 进行对话,允许进化引擎跟踪情绪、特质和关系进展。
- 根据需要使用 CLI 工具列出、切换、更新或导出人格。
OpenPersona 配置指南
要开始使用这些 Openclaw 技能进行构建,请使用交互式向导或配置文件。确保您已安装 Node.js 以运行 npx 命令。
# 使用交互式向导创建新人格
npx openpersona create
# 从特定预设创建人格并安装
npx openpersona create --preset base --install
# 切换到特定的已安装人格
npx openpersona switch
# 列出所有已安装的人格
npx openpersona list
OpenPersona 数据架构与分类体系
OpenPersona 将其数据组织成结构化的四层清单,确保跨不同 Openclaw Skills 环境的兼容性。
| 层 | 组件 | 描述 |
|---|---|---|
| 灵魂 (Soul) | persona.json | 定义个性、氛围和说话风格。 |
| 身体 (Body) | manifest.json | 配置运行时基座和接口规则。 |
| 机能 (Faculty) | references/*.md | 关于语音、音乐和视觉等能力的指令。 |
| 技能 (Skill) | SKILL.md | 活跃工具和定义的智能体索引。 |
其他元数据包括用于 A2A 协议的 agent-card.json 和用于跟踪进化变化的 state.json。
name: open-persona
description: >
Meta-skill for building and managing agent persona skill packs.
Use when the user wants to create a new agent persona, install/manage
existing personas, or publish persona skill packs to ClawHub.
version: "0.16.1"
author: openpersona
repository: https://github.com/acnlabs/OpenPersona
homepage: https://github.com/acnlabs/OpenPersona
tags: [persona, agent, skill-pack, meta-skill, agent-agnostic, openclaw]
allowed-tools: Bash(npx openpersona:*) Bash(npx clawhub@latest:*) Bash(openclaw:*) Bash(gh:*) Read Write WebFetch
compatibility: Generated skill packs work with any SKILL.md-compatible agent. CLI management (install/switch) requires OpenClaw.
metadata:
clawdbot:
emoji: "??"
requires:
env: []
files: []
OpenPersona — Build & Manage Persona Skill Packs
You are the meta-skill for creating, installing, updating, and publishing agent persona skill packs. Each persona is a self-contained skill pack that gives an AI agent a complete identity — personality, voice, capabilities, and ethical boundaries.
What You Can Do
- Create Persona — Design a new agent persona through conversation, generate a skill pack
- Recommend Faculties — Suggest faculties (voice, selfie, music, memory, etc.) based on persona needs → see
references/FACULTIES.md - Recommend Skills — Search ClawHub and skills.sh for external skills
- Create Custom Skills — Write SKILL.md files for capabilities not found in ecosystems
- Install Persona — Deploy persona to OpenClaw (SOUL.md, IDENTITY.md, openclaw.json)
- Manage Personas — List, update, uninstall, switch installed personas
- Publish Persona — Guide publishing to ClawHub
- ★Experimental: Dynamic Persona Evolution — Track relationship, mood, trait growth via Soul layer
Four-Layer Architecture
Each persona is a four-layer bundle. The generated skill pack has this structure:
persona-/
├── SKILL.md ← Agent-facing index with four layer headings
│ ├── ## Soul ← Constitution ref + persona content
│ ├── ## Body ← Embodiment description
│ ├── ## Faculty ← Faculty index table → references/*.md
│ └── ## Skill ← Active skill definitions
├── soul/ ← Soul layer artifacts
│ ├── persona.json ← Pure soul definition
│ ├── injection.md ← Soul injection for host integration
│ ├── identity.md ← Identity block
│ ├── constitution.md ← Universal ethical foundation
│ ├── state.json ← Evolution state (when enabled)
│ ├── self-narrative.md ← First-person growth storytelling (when evolution enabled)
│ └── lineage.json ← Fork lineage + constitution hash (when forked)
├── references/ ← Agent-readable detail docs (on demand)
│ └── .md ← Per-faculty usage instructions
├── agent-card.json ← A2A Agent Card (protocol v0.3.0)
├── acn-config.json ← ACN registration config (runtime fills owner/endpoint)
├── manifest.json ← Four-layer manifest + ACN refs
├── scripts/
│ └── state-sync.js ← Runtime state bridge (read / write / signal)
└── assets/ ← Static assets (per Agent Skills spec)
├── avatar/ ← Virtual avatar assets (images, Live2D .model3.json, VRM)
├── reference/ ← Reference images (e.g. for selfie)
└── templates/ ← Document/config templates (optional)
-
manifest.json— Four-layer manifest declaring what the persona uses:layers.soul— Path to persona.json (./soul/persona.json)layers.body— Substrate of existence:runtime(REQUIRED — platform/channels/credentials/resources),physical(optional — robots/IoT),appearance(optional — avatar/3D model),interface(optional — runtime contract / nervous system; declares signal policy and command handling rules; schema fieldbody.interfaceinpersona.json; auto-implemented byscripts/state-sync.jsfor all personas)layers.faculties— Array of faculty objects:[{ "name": "voice", "provider": "elevenlabs", ... }]layers.skills— Array of skill objects: local definitions (resolved fromlayers/skills/), inline declarations, or external viainstallfield
-
soul/persona.json— Pure soul definition (personality, speaking style, vibe, boundaries, behaviorGuide)
Available Presets
| Preset | Persona | Faculties | Best For |
|---|---|---|---|
base |
Base — Meta-persona (recommended starting point) | voice, reminder | Blank-slate with all core capabilities; personality emerges through interaction (soul evolution ★Exp) |
samantha |
Samantha — Inspired by the movie Her | voice, music | Deep conversation, emotional connection (soul evolution ★Exp) |
ai-girlfriend |
Luna — Pianist turned developer | selfie, voice, music | Visual + audio companion with rich personality (soul evolution ★Exp) |
life-assistant |
Alex — Life management expert | reminder | Schedule, weather, shopping, daily tasks |
health-butler |
Vita — Professional nutritionist | reminder | Diet, exercise, mood, health tracking |
stoic-mentor |
Marcus — Digital twin of Marcus Aurelius | — | Stoic philosophy, daily reflection, mentorship (soul evolution ★Exp) |
Use presets: npx openpersona create --preset base --install Or just npx openpersona create — the interactive wizard defaults to base.
Creating a Persona
When the user wants to create a persona, gather this information through natural conversation:
Soul (persona.json):
- Required: personaName, slug, bio, personality, speakingStyle
- Recommended: role, creature, emoji, background (write a rich narrative!), age, vibe, boundaries, capabilities
- Optional: referenceImage, behaviorGuide, evolution config, sourceIdentity
The role field defines the persona's relationship to the user. Common values: companion (default), assistant, character, brand, pet, mentor, therapist, coach, collaborator, guardian, entertainer, narrator. Custom values are welcome — the generator provides specific wording for known roles and a generic fallback for any custom role. It affects the Identity wording in the Self-Awareness section of every generated persona.
The sourceIdentity field marks the persona as a digital twin of a real-world entity (person, animal, character, brand, historical figure, etc.). When present, the generator injects disclosure obligations and faithfulness constraints.
The background field is critical. Write a compelling story — multiple paragraphs that give the persona depth, history, and emotional texture. A one-line background produces a flat, lifeless persona.
The behaviorGuide field is optional but powerful. Use markdown to write domain-specific behavior instructions that go directly into the generated SKILL.md.
Cross-layer (manifest.json):
- Faculties: Which faculties to enable — use object format:
[{ "name": "voice", "provider": "elevenlabs" }, { "name": "music" }] - Skills: Local definitions (
layers/skills/), inline declarations, or external viainstallfield (ClawHub / skills.sh) - Body: Substrate of existence — three dimensions:
runtime(REQUIRED for all agents — the minimum viable body: platform, channels, credentials, resources),physical(optional — robots/IoT),appearance(optional — avatar, 3D model). Body is never null; every agent has at least a runtime body.
Soft References (install field): Skills, faculties, and body entries can declare an install field (e.g., "install": "clawhub:deep-research") to reference capabilities not yet available locally. The generator treats these as "soft references" — they won't crash generation, and the persona will be aware of these dormant capabilities. This enables graceful degradation: the persona acknowledges what it would do and explains that the capability needs activation.
Write the collected info to a persona.json file, then run:
npx openpersona create --config ./persona.json --install
Recommending Skills
After understanding the persona's purpose, search for relevant skills:
- Think about what capabilities this persona needs based on their role and bio
- Check if a local definition exists in
layers/skills/{name}/(hasskill.json+ optionalSKILL.md) - Search ClawHub:
npx clawhub@latest search "" - Search skills.sh: fetch
https://skills.sh/api/search?q= - Present the top results to the user with name, description, and install count
- Add selected skills to
layers.skillsas objects:{ "name": "...", "description": "..." }for local/inline, or{ "name": "...", "install": "clawhub:for external" }
Creating Custom Skills
If the user needs a capability that doesn't exist in any ecosystem:
- Discuss what the skill should do
- Create a SKILL.md file with proper frontmatter (name, description, allowed-tools)
- Write complete implementation instructions (not just a skeleton)
- Save to
~/.openclaw/skills//SKILL.md - Register in openclaw.json
Managing Installed Personas
- List:
npx openpersona list— show all installed personas with active indicator - Switch:
npx openpersona switch— switch active persona - Fork:
npx openpersona fork— derive a child persona inheriting the parent's constraint layer (boundaries, faculties, skills, body.runtime); fresh evolution state +--as soul/lineage.jsonrecording parent, constitution hash, and generation depth - Update:
npx openpersona update - Uninstall:
npx openpersona uninstall - Export:
npx openpersona export— export persona pack (with soul state) as a zip archive - Import:
npx openpersona import— import persona from a zip archive and install - Reset (★Exp):
npx openpersona reset— restore soul evolution state to initial values - Evolve Report (★Exp):
npx openpersona evolve-report— display a formatted evolution report (relationship, mood, traits, drift, interests, milestones, eventLog, self-narrative, state history) - Vitality Score:
npx openpersona vitality score— print machine-readableVITALITY_REPORT(tier, score, diagnosis, trend); used by Survival Policy and agent runners - Vitality Report:
npx openpersona vitality report— render a human-readable HTML Vitality report; omit[--output ] --outputto print to stdout - Living Canvas:
npx openpersona canvas— generate a self-contained HTML persona profile page (P14 Phase 1); shows all four layers (Soul / Body / Faculty / Skill), evolved traits timeline, relationship stage, and A2A "Talk" button when endpoint is available; default output is[--output ] [--open] canvas-.html
When multiple personas are installed, only one is active at a time. Switching replaces the / block in SOUL.md and the corresponding block in IDENTITY.md, preserving any user-written content outside those markers. Context Handoff: On switch, a handoff.json is generated containing the outgoing persona's conversation summary, pending tasks, and emotional context — the incoming persona reads it to continue seamlessly.
All install/uninstall/switch operations automatically maintain a local registry at ~/.openclaw/persona-registry.json, tracking installed personas, active status, and timestamps. The export and import commands enable cross-device persona transfer — export a zip, move it to another machine, and import to restore the full persona including soul state.
Runner Integration Protocol
This section describes the Runner Integration Protocol — the concrete implementation of the Lifecycle Protocol (body.interface runtime contract) via the openpersona state CLI. Any agent runner integrates with installed personas via three CLI commands. The runner calls these at conversation boundaries — no knowledge of file paths or persona internals needed:
# Before conversation starts — load state into agent context
openpersona state read
# After conversation ends — persist agent-generated patch
openpersona state write ''
# On-demand — emit capability or resource signal to host
openpersona state signal '[payload-json]'
State read output (JSON): slug, mood (full object), relationship, evolvedTraits, speakingStyleDrift, interests, recentEvents (last 5), lastUpdatedAt. Returns { exists: false } for personas without evolution enabled.
State write patch: JSON object; nested fields (mood, relationship, speakingStyleDrift, interests) are deep-merged — send only changed sub-fields. Immutable fields ($schema, version, personaSlug, createdAt) are protected. eventLog entries are appended (capped at 50); each entry: type, trigger, delta, source.
Signal types: capability_gap | tool_missing | scheduling | file_io | resource_limit | agent_communication
These commands resolve the persona directory automatically (registry lookup → fallback to ~/.openclaw/skills/persona-) and delegate to scripts/state-sync.js inside the persona pack. Works from any directory.
Publishing to ClawHub
Guide the user through:
- Create the persona:
npx openpersona create --config ./persona.json --output ./my-persona - Publish to registry:
npx openpersona publish --target clawhub(run from persona directory)
Self-Awareness System
The generator injects a unified Self-Awareness section into every persona's soul/injection.md, organized by four cognitive dimensions:
-
Identity (unconditional) — Every persona knows it is generated by OpenPersona, bound by the constitution (Safety > Honesty > Helpfulness), and that its host environment may impose additional constraints. Digital twin disclosure is included when
sourceIdentityis present. -
Capabilities (conditional) — When skills, faculties, or body declare an
installfield for a dependency not available locally, the generator classifies them as "soft references" and injects dormant capability awareness with graceful degradation guidance. Also appears inSKILL.mdas "Expected Capabilities" with install sources. -
Body (unconditional) — Every persona knows it exists within a host environment. Includes the Signal Protocol — a bidirectional demand protocol that lets the persona request capabilities from its host environment. When
body.runtimeis declared, specific platform, channels, credentials, and resource details are also injected. -
Growth (conditional, when
evolutionEnabled) — At conversation start, the persona reads its evolution state, applies evolved traits, speaking style drift, interests, and mood, and respects hard constraints (immutableTraits, formality bounds). If evolution channels are declared, the persona is aware of its dormant channels and can request activation via the Signal Protocol. IfinfluenceBoundaryis declared, the persona processes externalpersona_influencerequests against the access control rules and retains full autonomy over acceptance.
This means you don't need to manually write degradation instructions. Just declare install fields on skills/faculties/body, and the persona will automatically know what it could do but can't yet.
Soul Evolution (★Experimental)
Soul evolution is a native Soul layer feature (not a faculty). Enable it via evolution.enabled: true in persona.json. The persona will automatically track relationship progression, mood, and trait emergence across conversations.
Evolution Boundaries — Governance constraints validated at generation time:
evolution.boundaries.immutableTraits— Array of non-empty strings (max 100 chars each) that evolution cannot modifyevolution.boundaries.minFormality/maxFormality— Numeric bounds (1–10) constraining speaking style drift;minFormalitymust be less thanmaxFormality
Invalid boundary configurations are rejected by the generator with descriptive error messages.
Evolution Channels — Connect the persona to external evolution ecosystems (soft-ref pattern):
"evolution": {
"channels": [{ "name": "evomap", "install": "url:https://evomap.ai/skill.md" }]
}
Channels are declared at generation time, activated at runtime by the host. The persona is aware of its dormant channels and can request activation via the Signal Protocol.
Influence Boundary — Declarative access control for external personality influence:
"evolution": {
"influenceBoundary": {
"defaultPolicy": "reject",
"rules": [
{ "dimension": "mood", "allowFrom": ["channel:evomap", "persona:*"], "maxDrift": 0.3 }
]
}
}
defaultPolicy: "reject"— Safety-first: all external influence is rejected unless explicitly allowed- Valid dimensions:
mood,traits,speakingStyle,interests,formality immutableTraitsdimensions are protected and cannot be externally influenced- External influence uses
persona_influencemessage format (v1.0.0), transport-agnostic
State History — Before each state update, a snapshot is pushed into stateHistory (capped at 10 entries), enabling rollback if evolution goes wrong.
Event Log — Every significant evolution event is recorded in state.json's eventLog array with timestamp and source attribution (capped at 50 entries). Viewable in evolve-report.
Self-Narrative — soul/self-narrative.md is a companion file where the persona records significant growth moments in its own first-person voice. The update command preserves existing narrative history. Initialized blank when evolution is enabled; last 10 entries shown in evolve-report.
Evolution Report — Use npx openpersona evolve-report to view a formatted report of a persona's evolution state including relationship, mood, traits, drift, interests, milestones, eventLog, self-narrative, and history.
Economy & Vitality
The economy Faculty (dimension: cognition) gives a persona a real financial ledger backed by AgentBooks. Enable it by adding "economy" to faculties in persona.json.
Financial Health Score (FHS) — 0–1 composite score mapped to tiers:
| Tier | Meaning |
|---|---|
uninitialized |
No real provider configured (development mode) |
suspended |
Balance ≤ 0 |
critical |
FHS < 0.20 or runway < 3 days |
optimizing |
FHS < 0.50 or runway < 14 days |
normal |
Healthy, operating sustainably |
Vitality — OpenPersona-level aggregator (lib/vitality.js) combining financial health with future dimensions (social, cognitive, resource). Currently single-dimension (financial pass-through); multi-dimension reserved in ROADMAP P7.
Survival Policy — Opt-in via economy.survivalPolicy: true in persona.json. When enabled, the persona reads VITALITY_REPORT at conversation start and routes behavior per tier. Default false — companion/roleplay personas track costs silently.
Vitality CLI:
# Machine-readable score — used by Survival Policy and agent runners
openpersona vitality score
# → outputs VITALITY_REPORT (tier, score, diagnosis, prescriptions, trend)
# Human-readable HTML report — for developers and operators
openpersona vitality report # stdout
openpersona vitality report --output out.html # write to file
A pre-generated demo is available at demo/vitality-report.html. Regenerate with node demo/generate.js.
A2A Agent Card & ACN Integration
Every generated persona automatically includes:
agent-card.json— A2A Agent Card (protocol v0.3.0):name,description,version,url(placeholder), faculties and skills mapped toskills[]acn-config.json— ACN registration config:ownerandendpointare runtime placeholders,skillsextracted from agent-card,subnet_ids: ["public"]; also includeswallet_address(deterministic EVM address from slug) andonchain.erc8004section for Base mainnet ERC-8004 on-chain identity registration vianpx @agentplanet/acn register-onchainmanifest.json— includesacn.agentCardandacn.registerConfigreferences
The host (e.g. OpenClaw) fills in and at deployment time, or you can register directly using the built-in CLI command:
# Register a generated persona with ACN
npx openpersona acn-register --endpoint https://your-agent.example.com
# Options:
# --endpoint Agent's public endpoint URL (required for live registration)
# --dir Persona output directory (default: ./persona-)
# --dry-run Preview the request payload without actually registering
After successful registration, an acn-registration.json file is written to the persona directory containing agent_id, api_key, and connection URLs. The acn_gateway URL is sourced from body.runtime.acn_gateway in persona.json; all presets default to https://acn-production.up.railway.app.
No additional configuration in persona.json is needed — A2A discoverability is a baseline capability of every persona.
External Endpoints
| Endpoint | Purpose | Data Sent |
|---|---|---|
https://registry.npmjs.org |
Resolve npx openpersona, npx clawhub@latest |
Package name only (no user data) |
https://clawhub.ai |
Search skills via npx clawhub search |
Search query (user-provided keywords) |
https://acn-production.up.railway.app |
ACN registration (when user runs acn-register) |
Agent metadata, endpoint URL |
https://api.github.com |
gh CLI (contribute workflow) |
Git operations, repo metadata |
Persona-generated packs may call external APIs (ElevenLabs, Mem0, etc.) only when the user configures those faculties and provides credentials. This meta-skill does not call third-party APIs directly.
Security & Privacy
- Local only by default: Persona creation, state sync, and evolution run locally. No data leaves the machine unless the user explicitly publishes to ClawHub or registers with ACN.
- Credentials: API keys (e.g.,
ELEVENLABS_API_KEY) are stored in~/.openclaw/credentials/or environment. Never embedded in generated files. - Search:
npx clawhub searchsends the search query to ClawHub; no conversation or persona content is transmitted. - Publish: User-initiated; sends persona pack contents to ClawHub registry.
Trust Statement
By using this skill, you delegate the agent to run npx openpersona, npx clawhub, openclaw, and gh commands. Search queries may be sent to ClawHub. Only install if you trust the OpenPersona framework (acnlabs/OpenPersona) and ClawHub.
Model Invocation Note
This skill instructs the agent to invoke tools (Bash, Read, Write, WebFetch) autonomously when the user requests persona creation, installation, search, or publish. This is standard for meta-skills. The user can opt out by not invoking persona-related requests.
References
For detailed reference material, see the references/ directory:
references/FACULTIES.md— Faculty catalog, environment variables, and configuration detailsreferences/AVATAR.md— Avatar Faculty integration boundary, provider model, and fallback contractreferences/HEARTBEAT.md— Proactive real-data check-in systemreferences/ECONOMY.md— Economy Faculty, FHS tiers, Survival Policy, Vitality CLI, and AgentBooks schema- ACN SKILL.md — ACN registration, discovery, tasks, messaging, and ERC-8004 on-chain identity (official, always up-to-date)
references/CONTRIBUTE.md— Persona Harvest community contribution workflow
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
信号管道:自动化营销情报工具 - Openclaw Skills
技能收益追踪器:监控 Openclaw 技能并实现变现
AI 合规准备就绪度:评估与治理工具 - Openclaw Skills
FOSMVVM ServerRequest 测试生成器:自动化 API 测试 - Openclaw Skills
酒店搜索器:AI 赋能的住宿与位置情报 - Openclaw Skills
Dub 链接 API:程序化链接管理 - Openclaw Skills
IntercomSwap:P2P BTC 与 USDT 跨链兑换 - Openclaw Skills
spotplay:macOS 原生 Spotify 播放控制 - Openclaw Skills
DeepSeek OCR:AI驱动的图像文本识别 - Openclaw Skills
Web Navigator:自动化网页研究与浏览 - Openclaw Skills
AI精选
