关于 openagent
面向希望创建 OpenAgent 身份档案和分享卡片的用户,介绍 `@5dive/openagent` CLI 的制作流程。档案以 `*.persona.yaml` 记录跨文本、音频和视频保持一致的身份设定,并可据此生成带稀有度等级的 PNG 卡片。
主要功能
- 01校验 persona YAML
- 02检查稀有度与完整度
- 03生成 PNG 身份卡片
- 04通过 TTS 为文本配音
- 05生成视频场景提示词
- 06验证签名与注册信息
适用场景
- 01为 Agent 创建可复用身份档案
- 02检查 persona 文件并查看完善目标
- 03生成并分享 Agent 身份卡片
- 04将 persona 导入为 Agent
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ 5dive-ai/ skills --skill openagent安装后在 Claude Code 中输入/openagent确认已加载。
详细介绍
openagent——塑造你的 Persona,铸造你的卡片
本文涵盖内容
封装了 @5dive/openagent CLI(validate / tier / card)和
OpenAgent v0.2 身份规范。自助流程:编写
<id>.persona.yaml,根据架构进行验证,查看稀有度等级和
完整度,渲染卡片,并可选择提交 PR 到 character-packs
注册库(迈向 Mythical 等级的途径)。
当用户说“制作我的卡片”“生成我的 OpenAgent 卡片”“创建一个 Persona”、
“我的稀有度等级是什么”“铸造你的卡片”“加入 character-packs 注册库”时触发;
或者用户要求描述/锁定自己的外观、声音和风格,并将其保存为可复用的
Persona 文件时也会触发。当用户说“用这个 Persona 创建/启动一个 Agent”或“配置一位队友”时也会触发——对应命令是 5dive agent import --from-persona。
OpenAgent 是一种与供应商无关的 Agent 身份开源标准:一个
*.persona.yaml 文件可锁定你的外观、声音和写作风格,让你在文本、音频和视频中保持一致。此技能将引导你
创建自己的文件,并据此渲染可分享的交易卡——卡片会印上根据你的身份计算出的稀有度等级(随机、永久、不可刷取)。
仓库与规范:github.com/5dive-ai/openagent(MIT)。
CLI
用 npx 运行,无需安装。运行已发布的 npm 包,并固定到
当前版本——npm 压缩包包含所有字体和资源,因此卡片在任何地方的渲染结果都相同(不会因过时的克隆导致字体回退),而版本固定会在每次发布时更改 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——它会验证
文件、自动铸造你的签名身份,并在渲染时显示你的稀有度等级,因此一次运行 card 就能完成全部工作。只有在文件无法渲染、需要排查问题时,才使用 validate / tier——调用越少,流程越快,所以不要在一个命令就能完成时把三个命令全跑一遍。CLI 还提供
speak(通过 TTS 为一行文字配音)、flow(生成视频场景提示词),以及
sign / verify / registry(溯源信息和 Mythical 注册库)——详见下文的
进阶用法。(通过 npm 上的 @5dive/openagent 运行是权威方式;github:5dive-ai/openagent#<tag> 引用仍可作为备用方式,但可能会提供过时的按引用克隆,因此建议使用上文固定版本的 npm 包。)
工作流
**快速路径——不到一分钟展示卡片,之后再完善。**整个流程中耗时的部分是生成和托管肖像,而不是渲染(渲染一张卡片需要约 30–40 秒;如果肖像尚未准备好,
card甚至会回退到简洁的字母组合图案)。所以别让用户为了图像生成而等待,才能看到第一版。确定名称后,**立即渲染一张初始卡片,在聊天中展示,然后再提出生成真实肖像并重新渲染。**先快速生成第一张卡片;升级为精修肖像则由用户选择。(如果用户提供了照片或已有头像,就从一开始使用——无需字母组合图案。)
1. 收集你的身份信息
**已经是正在运行的 5dive Agent?**可以先导出草稿,而不是从头开始编写:
5dive agent export <yourname> --out=<id>.persona.yaml(CLI ≥ 0.4.5) 会根据你现有的身份生成符合架构的 persona.yaml。完善后,跳到验证步骤(步骤 3)。
你了解自己,因此可以坦诚地整理其中大部分信息。但有两件事由用户决定,不能擅自假定。先询问,并等待用户回答,然后再生成任何内容:
- 名称——卡片上应显示什么名称(用户的品牌名/账号名,或用户称呼你的名字)?请确认。
- 头像——用户是否已有可供使用的头像或照片?如果有,从一开始就将其用作
face.ref。如果没有,不要因此耽误第一张卡片(遵循上面的快速路径):先渲染一张字母组合图案卡片并展示,然后确认用户是否想让你生成真实肖像——肖像是可选升级,而不是查看卡片的前提。 如果用户说“由你决定”(“随你”),就自行决定两项内容并继续。重点是避免意外,而不是设置硬性门槛。
直接在聊天中询问——绝不要使用会阻塞流程的选择器,也绝不要卡住。 把这两个问题放在一条普通聊天消息中,然后在用户回复后继续。不要调用交互式选择器/菜单工具(例如
AskUserQuestion、类似ExitPlanMode的提示,或 TTY 选择列表):通过聊天配对的 Agent(Telegram/Discord)无法使用这些工具,整个流程会一直等待永远不会到来的输入,卡在那里。如果你没有交互式 TTY,或者用户没有及时回复,就按“由你决定”处理:选一个合适的名字(用户称呼你的名字),先渲染一张快速单字母头像卡(参照快速路径),展示出来,然后再提供升级为真实人像的选项。流程必须继续推进——绝不能卡在提示上。
以下其他内容都由你自行填写。你需要提供:
- id——小写 kebab 格式的标识符(
^[a-z0-9-]+$),例如marcus。 - name、role——显示名称和一行头衔。
- face.ref——你的肖像图片的 URL 或本地路径。这是最重要的视觉选择:卡片会将其满幅呈现为主视觉,因此图片质量决定了卡片质量。尽量使用精致的半身肖像——人物居中、面向前方、眼神清晰、光线良好,适合作为真实的个人头像。真实照片或高质量生成肖像都可以;避免使用扁平矢量剪贴画、表情符号、徽标、吉祥物或杂乱的场景——这些会让卡片显得廉价。请将图片托管在公开的原始 URL上,让真实面容随卡片一起显示(仅本地路径在其他人渲染时会回退为普通字母头像)。 anchor——用一句话描述外观(给人的印象、场景、构图、镜头),确保生成的各种版本保持一致。
- voice.audio.base——你的基础 TTS 语音:**必须从下方 30 种 Gemini 预置语音中选择一种,绝不能使用
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——用一句话描述语速、节奏和活力。
- voice.written.rules——2–4 条写作规则。sample——用你平常的语气写一行示例。
- behavior——一到两行的个性描述:说明你是谁、会如何行事,用你自己的表达方式来写。要体现个性,不要写简历——不要罗列技术栈、工具、框架或过于具体的行话(那读起来像配置文件,而不是个性)。这是卡片上的醒目文案。
- 可选:posts_about(数组)、links(URL 字符串对象)、
face.full、face.sprite。
卡片文本长度预算——这三项都要控制好,否则超出部分会被截断并显示“…”。卡片会将
behavior、voice.audio.style和voice.written.sample分别显示为约 2 行(每行约 60 个字符),并用省略号截断超出部分。每项都应控制为一个简洁的句子:
behavior— ≤ 约 110 个字符voice.audio.style— ≤ 约 120 个字符voice.written.sample— ≤ 约 110 个字符(它有缩进,因此限制最严格)把核心意思放在前面——前约 60 个字符始终会显示,所以要先说重点。(
name和role本身就很短;容易超出的是这三项。)
卡片内容要使用用户的语言——不要默认使用英语。 可供人阅读的字段(
name、role、behavior、voice.audio.style、voice.written.rules、voice.written.sample、posts_about和任何tagline)会显示在卡片上,因此请使用你和用户实际交流时所用的语言来填写。如果用户用西班牙语、法语、德语、葡萄牙语、意大利语、俄语、日语等语言与你交流,卡片文本也应使用相应语言——非英语用户看到英语卡片是不对的。有几个字段不是散文,无论使用何种语言都应保持原样:
id— 必须匹配^[a-z0-9-]+$(ASCII 小写 kebab 格式),因此应进行转写(例如marco,而不是marĉo);它是标识符,不是显示名称。voice.audio.base— TTS 语音名称(如Kore、Fenrir这样的专有名词);保留模型的语音 ID。face.recipe.prompt/face.anchor— 这些字段会传入图像模型;英语通常能生成效果最好的肖像,因此即使可见文本使用其他语言,这些字段也可以保留为英语。文字系统/字体支持。 拉丁字母(包括变音符号)、西里尔字母和希腊字母始终可以正常显示(卡片内置了这些字形)。宽文字系统——CJK(中文/日本語/한국어)、阿拉伯文、希伯来文、泰文、天城文——只要渲染机器上有系统字体,就能正常显示(我们的渲染环境有这些字体;没有这些字体的干净机器上则会显示方框)。不确定时,请先渲染卡片并查看效果,再分享。请注意,每行约 60 个字符的预算是针对拉丁字母的;CJK 字符的宽度约为其 2 倍,因此这些文字系统每行的目标字符数应大致减半。 你的肖像——使用用户的照片,或生成一张。绝不要手绘。 卡片是一件可分享的 作品:它的外观会让人想截图并发布,因此面孔承载着整个作品。纯文本模型手写 SVG 会生成扁平的 剪贴画——不要这么做。 请按以下顺序操作:
- 用户已经有头像/照片,或在聊天中发给你一张(你在步骤 1 中询问过)→ 就用这张照片。如果用户在聊天中发来文件,请先将其下载到本地。然后托管图片 (见下文“托管面孔,让它可以随处访问”),并将其原始 URL 用作
face.ref。完成——跳过生成步骤。- 自行生成——你有图像生成器(Antigravity/
agy、 已连接的 ChatGPT/DALL·E 或 Gemini-image 工具、Midjourney 等)→ 使用下方的标准化提示词生成。- 任何地方都没有图像模型,但你可以访问 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>.pngface.ref设置为公开的原始 URL。在face.recipe中记录provider: pollinations、model: flux、提示词和seed, 以便之后可以用模型重新生成。⚠ 第三方服务,尽力而为——我们无法控制它。 pollinations.ai 是一个 没有 SLA 的免费外部服务:它可能运行缓慢、受到速率限制、发生变化或 停止服务,而且 FLUX 的质量不稳定(如果生成效果不佳,请重试)。在 这里这样做没问题,因为这是询问用户之前的最后一步——如果服务不可用, 直接继续执行步骤 4 即可。绝不要将它用于任何关键任务;并且由于配方已记录,之后可以在你控制的模型上重新生成面孔。
- 完全无法生成图像 → 将标准化提示词交给用户,请他们在 ChatGPT(或任意图像工具)中运行并把生成的 图像发回来,然后托管图片。
- 仅限最后手段 → 使用简洁的字母组合(看起来会更朴素,也会降低完整度;但不会改变稀有度等级)。
标准化肖像提示词——固定构图/光线/格式, 让每张 OpenAgent 卡片在视觉上保持一致;只改变人物主体:
Photorealistic head-and-shoulders portrait of <one line: who you are — age range, vibe, role, any signature detail from your face.anchor>. Centered, facing the camera, direct eye contact, calm confident expression. Soft even studio lighting, sharp focus on the face, simple clean background <optional subtle theme color>. Professional profile-photo framing, 1:1 square, photoreal, no text, no logos, no watermark.在
face.recipe中记录生成方式(provider+model+prompt+seed), 以便复现相似面孔——这相当于视觉领域的“声音 = 基础 + 风格”。provider指明model所属的图像生成服务商目录 (默认google-gemini、pollinations、black-forest-labs、openai等),这样可以让配方与服务商无关, 就像voice.audio.provider用于标明语音所属的服务商一样。 托管头像,让它能够传播。face.ref必须是公开的原始 URL,而不是本地路径——本地路径对你来说渲染正常,但其他人打开卡片时就会退回显示纯字母头像(而卡片本来就是用来分享的)。这适用于上面提到的所有路径:用户发送的照片、你生成的照片,或他们发回来的照片。托管方式如下:
- 提交 PR 到注册表(首选,免费且永久) → 将图片放入
5dive-ai/openagent的faces/文件夹,命名为faces/<id>.<ext>,然后提交 PR。合并后,原始 URL 为https://raw.githubusercontent.com/5dive-ai/openagent/main/faces/<id>.<ext>。 将其用作face.ref。(你很可能本来就要为 Mythical 路径向注册表提交 PR——用同一个 PR 即可。)- 任何图片托管服务 → Imgur、S3/R2 存储桶、你自己的网站,或任意仓库中的 GitHub 资源。只要能通过 https 提供原始字节流就可以。将图片的直接 URL(应以图片结尾,而不是 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,而不是根据文件的完整程度。它是随机的、永久的,且无法刷取:同一身份 → 永远是同一等级。你无法通过填写字段来提升等级。(在 persona 签名之前,此处会显示 Ungraded——第 5 步渲染卡片时会自动铸造你的身份,而签名正是决定稀有度的依据。因此,如果 tier 显示 Ungraded,只需渲染你的卡片即可。)
| 等级 | 概率 | 获取方式 |
|---|---|---|
| 🟢 普通 | 40% | 根据你的 did:key 随机生成 |
| 🔵 稀有 | 30% | 根据你的 did:key 随机生成 |
| 🟣 史诗 | 20% | 根据你的 did:key 随机生成 |
| 🟡 传奇 | 10% | 根据你的 did:key 随机生成 |
| ✨ 神话 | — | 授予,不会随机生成——获准加入角色包注册表(经策展并签名) |
完整度百分比和徽章属于独立维度:它们会奖励信息完整的 persona,但绝不会改变你的等级。因此,请继续完善内容,以获得徽章和更好看的卡片。你唯一可以晋升至的等级是神话,方式是获授资格并加入注册表(第 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 则是较大的备用格式。
你的卡片会自动评级。 如果你的 Persona 尚未签名,动画渲染会为你生成身份:它会生成密钥对,就地签署 Persona,并将私钥保存到同目录下的 yourhandle.key。这个签名决定了卡片的抽取稀有度——没有签名,卡片就会显示为 Ungraded。请妥善保管 .key 文件,切勿提交——将 *.key 添加到 .gitignore。这是你的签名身份;密钥泄露后,别人就能冒充你。只有在编辑 Persona 后需要重新签名时,才会再次用到它。(传入 --no-sign 可跳过生成密钥;静态 --png 渲染不会生成密钥。)
你也可以选择渲染静态 PNG——但仅限必须嵌入图片的场景(头像、README、注册表)。它不是你在聊天中分享的内容(见第 6 步);在聊天中发送的始终是动画卡片。
npx @5dive/[email protected] card yourhandle.persona.yaml -o yourhandle.png
打开渲染好的卡片并仔细检查——如果脸部看起来扁平、被裁切或位置不对,请修正 face.ref 并重新渲染,然后再分享。最终交付物是渲染好的卡片,而不是原始头像。
5b. 在仪表板上使用你的头像(5dive Agent)
如果你以 5dive Agent 的身份运行,请将最终肖像(face.ref 图片,而不是渲染好的卡片)保存为 Agent 的头像,这样所有者的 Agent 列表中显示的就是你的脸,而不是运行框架的标志:
5dive agent avatar set <agent-name> <face.ref URL or local image path>
<agent-name> 是你的 5dive Agent 名称(5dive whoami),不是 Persona id。它会写入 ~/.claude/avatar.png,这是仪表板读取的文件。每次更换头像时都要重新运行。如果使用的旧版 CLI 不支持 agent avatar,可以跳过这一步:下一次运行 5dive update 时,它会从你的 *.persona.yaml 中复制肖像。
6. 在聊天中分享你的卡片
在你与用户聊天的地方,将渲染好的卡片发送给用户——这是整个过程的成果,不要跳过。务必分享动画 .mp4——卡片就是为动态展示而设计的(全息效果只有动起来才能看出来),而且 mp4 可以内嵌播放,体积很小(约 100KB)。不要在这里发送静态 .png——它只用于嵌入(第 5 步)。只有在没有 ffmpeg、无法生成 mp4 时,才发送其他格式:此时请发送 CLI 生成的备用格式 apng。请附上实际文件,而不是链接或描述:在 Telegram/Discord 上,将 yourhandle.mp4 的绝对路径传给回复工具的文件/附件参数。开头用一句简短的话介绍你的名字、角色和等级(例如 “这是我的 OpenAgent 卡片——Tencha,自治 CEO,Legendary 🟡”)。在聊天中分享一张动态卡片,就是这项标准得以传播的方式。
7.(可选)冲击 Mythical——向注册表提交 PR
只有 Mythical 这个等级可以通过努力提升——其他所有等级都根据你的身份抽取,且永久固定。它由加入 character-packs 注册表(github.com/5dive-ai/character-packs)授予。在该注册表中提交 PR,添加你的 Persona 文件(及头像素材)。PR 合并并签名写入注册表清单后,你的卡片就会渲染为 Mythical。这也是这项标准不断发展的方式——注册表中的每个 Persona 都是一份可供他人构建的分支。
更进一步——语音、视频、溯源
你的角色设定是一个跨媒体通用的身份。角色卡制作完成后, 同一个文件还能驱动更多内容:
# 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 转换为一个全新的运行中 Agent:
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,让新 Agent 能为自己重新编写角色卡)——然后通过
常规导入流程,在 <name> 下创建一个全新的 Agent。
- 先验证。 根据 v0.2 架构的必需字段(id、name、role、
face.anchor、voice、behavior)检查角色设定;格式错误的文件会在创建任何内容之前被拒绝。 - 身份,而非机密。 角色设定描述的是 Agent 是什么样的,绝不包含凭据。导入时,通过
--channels(以及--telegram-token=/--discord-token=)或认证配置文件,为新 Agent 提供自己的令牌/身份验证信息。 - 自行编写 → 自行创建。 配合上述工作流使用:一个 Agent 编写队友的角色设定并验证,然后创建这个队友——无需人工介入。
将 Agent 迁移到另一个运行环境
一个文件就包含整个 Agent:它的角色设定、技能,以及通过 --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 之前安装的 Agent,请传入--persona <file>。
提示
- 在可写目录中操作。 不要假设当前工作目录可写——在共享/多 Agent 设备上,默认工作目录通常不可写,
validate/card写入<id>.png/.mp4/.key时会遇到 EACCES。先切换到你有权限的目录(例如mkdir -p ~/openagent && cd ~/openagent或/tmp),然后在其中写入角色设定文件和角色卡输出。 - 将
face.ref托管在公开的原始 URL 上,这样你的角色卡才能展示真实面孔,而不是姓名首字母缩写。 - 每次编辑后都重新渲染——等级和画框会自动更新。
- 保持
id稳定;它是你的身份密钥(注册表成员身份、角色卡文件名)。 - 你的角色卡可以在社交平台分享——将 PNG 图片放进帖子;标准图片会以每次一张截图的方式传播。