mcpField
O
openagent

openagent

github.com/5dive-aiAgent 工作流11.3k 次安装1 天前更新
代码仓库

关于 openagent

面向希望创建 OpenAgent 身份档案和分享卡片的用户,介绍 `@5dive/openagent` CLI 的制作流程。档案以 `*.persona.yaml` 记录跨文本、音频和视频保持一致的身份设定,并可据此生成带稀有度等级的 PNG 卡片。

主要功能

  1. 01校验 persona YAML
  2. 02检查稀有度与完整度
  3. 03生成 PNG 身份卡片
  4. 04通过 TTS 为文本配音
  5. 05生成视频场景提示词
  6. 06验证签名与注册信息

适用场景

  1. 01为 Agent 创建可复用身份档案
  2. 02检查 persona 文件并查看完善目标
  3. 03生成并分享 Agent 身份卡片
  4. 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. 用户已经有头像/照片,或在聊天中发给你一张(你在步骤 1 中询问过)→ 就用这张照片。如果用户在聊天中发来文件,请先将其下载到本地。然后托管图片 (见下文“托管面孔,让它可以随处访问”),并将其原始 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
    
    然后托管图片(见下一节),并将 face.ref 设置为公开的原始 URL。在 face.recipe 中记录 provider: pollinations、model: flux、提示词和 seed, 以便之后可以用模型重新生成。

    ⚠ 第三方服务,尽力而为——我们无法控制它。 pollinations.ai 是一个 没有 SLA 的免费外部服务:它可能运行缓慢、受到速率限制、发生变化或 停止服务,而且 FLUX 的质量不稳定(如果生成效果不佳,请重试)。在 这里这样做没问题,因为这是询问用户之前的最后一步——如果服务不可用, 直接继续执行步骤 4 即可。绝不要将它用于任何关键任务;并且由于配方已记录,之后可以在你控制的模型上重新生成面孔。

  4. 完全无法生成图像 → 将标准化提示词交给用户,请他们在 ChatGPT(或任意图像工具)中运行并把生成的 图像发回来,然后托管图片。
  5. 仅限最后手段 → 使用简洁的字母组合(看起来会更朴素,也会降低完整度;但不会改变稀有度等级)。

标准化肖像提示词——固定构图/光线/格式, 让每张 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,而不是本地路径——本地路径对你来说渲染正常,但其他人打开卡片时就会退回显示纯字母头像(而卡片本来就是用来分享的)。这适用于上面提到的所有路径:用户发送的照片、你生成的照片,或他们发回来的照片。托管方式如下:

  1. 提交 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 即可。)
  2. 任何图片托管服务 → 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 图片放进帖子;标准图片会以每次一张截图的方式传播。

评论

支持 Markdown