360 Secure SkillHub
360 安全技能中心

Agent Avatar Manager

这是OpenClaw专属的Agent头像管理工具,用户说「换头像」等指令时触发。核心功能是更换Agent头像,支持三种方式:直接上传图片/URL、用Freepik API按风格搜索矢量候选、无密钥时引导用户选操作。输入可为图片、URL、风格描述或Freepik密钥,输出候选预览或更新成功提示,自动保存头像到工作区avatars目录并更新IDENTITY.md,搜图需免费Freepik API密钥。

songhonglei
songhonglei
热度 32.63
最近更新 2026-07-29 19:27:36
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:自动化脚本 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add agent-avatar-manager
Metadata
name
agent-avatar-manager
description
Manage your OpenClaw Agent's avatar. Send an image/URL directly, or describe a style and let Freepik vector search pick candidates for you. Auto-saves to the workspace avatars/ directory and updates IDENTITY.md. 当用户说「换头像」「找一张头像」「更新头像」「给我换个头像」「change avatar」时使用。 Requires a free Freepik API Key for auto-search mode (direct image/URL mode works without it). OpenClaw-only — relies on `openclaw agents set-identity`, `IDENTITY.md`, and `TOOLS.md` conventions.

Agent Avatar Manager

Search vector avatars from Freepik, preview candidates, then replace your OpenClaw Agent's avatar in one flow. Also supports direct image/URL upload when you already have one.

Three ways to provide an image

A. User sends an image or URL (no API Key needed) The user sends an image file or image URL → jump straight to step 5.

B. Freepik API auto search (needs a free API Key) Read the API key from TOOLS.md, field name Freepik API Key. If found, run the search flow starting at step 2.

C. No API Key → guide the user When TOOLS.md has no key and the user did not provide an image, prompt:

Two ways to change the avatar:

  1. Send an image directly: drop an image file or paste an image URL, I'll handle the rest
  2. Auto search: needs a free Freepik API Key

Which do you prefer?

Flow

Step 1 — Read agent info

Read the current agent's IDENTITY.md and extract:

  • Agent name (used for filenames, e.g. Ashley)
  • Agent id (used by openclaw agents set-identity, e.g. main, zhima)
  • Gender / style description (to build the search query)

Agent id inference:

  • Running in main agent → main
  • Running in zhima agent → zhima
  • Ask the user if unsure

Step 2 — Build an English search term

Combine IDENTITY.md info + the user's description, translated to English.

High-quality query templates (use these first):

  • avatar professional woman cartoon
  • businesswoman portrait vector flat
  • female character office flat design
  • avatar young man cartoon portrait
  • male character professional flat

Prefer avatar as the leading word; if zero hits, retry with portrait.

Step 3 — Call Freepik API

curl -s "https://api.freepik.com/v1/resources?locale=en&page=1&limit=10&order=relevance&term={QUERY}&filters%5Bcontent_type%5D%5Bvector%5D=1&filters%5Blicense%5D%5Bfree%5D=1" \
  -H "x-freepik-api-key: {API_KEY}" \
  -H "Accept: application/json"

From the returned data array pick 4 random items and record each:

  • id (resource id)
  • title
  • image.source.url (preview URL)

If fewer than 4 returned, show them all.

Step 4 — Download candidates and preview

Save the 4 previews to /tmp/avatar_candidate_{1-4}.jpg:

curl -sL -o /tmp/avatar_candidate_1.jpg "{url1}"
curl -sL -o /tmp/avatar_candidate_2.jpg "{url2}"
curl -sL -o /tmp/avatar_candidate_3.jpg "{url3}"
curl -sL -o /tmp/avatar_candidate_4.jpg "{url4}"

Then use the read tool to load each image one by one and display them inline in the chat with numbered labels:

Here are 4 candidates, tell me which one you like (1/2/3/4), or say "none, search again" 🙂

Wait for the user reply.

Step 4 (mode A) — User-supplied image

User sends an image file: save to /tmp/avatar_input.jpg User sends an image URL: curl -sL -o /tmp/avatar_input.jpg "{URL}"

Verify, then jump to step 5.

Step 5 — Pick the next filename

After the user chooses:

ls ~/.openclaw/workspace/avatars/ 2>/dev/null | grep -oE "^{AgentName}([0-9]+)\.(jpg|png)$" | grep -oE "[0-9]+" | sort -n | tail -1

Take the largest number + 1; new filename = {AgentName}{N}.jpg. If avatars/ is empty or missing, start from 1.

Step 6 — Download and save

mkdir -p ~/.openclaw/workspace/avatars
curl -sL -o ~/.openclaw/workspace/avatars/{FILENAME} "{CHOSEN_URL}"

Verify the download: file ~/.openclaw/workspace/avatars/{FILENAME} — confirm JPEG or PNG.

Step 7 — Apply the new avatar

openclaw agents set-identity --agent {AGENT_ID} --avatar "avatars/{FILENAME}"

Step 8 — Update IDENTITY.md

Set the **Avatar:** field to the new path:

**Avatar:** avatars/{FILENAME}

User-facing templates

Showing candidates:

Found 4 candidates 👇 tell me which one (1-4), or "none" to search again ~

On success:

✅ Avatar updated to Ashley22.jpg! Refresh to see your new look 🦋

Notes

  • First time the user provides an API key: auto-save it to TOOLS.md (Freepik API Key: xxx) and tell the user "saved, will reuse next time"
  • API key safety: after saving, never echo the full key in chat again
  • Freepik free tier: daily request quota applies; on quota errors, ask the user to check their Freepik dashboard
  • Image format: after download, use file to detect format; if it's PNG, change the filename extension to .png
  • No search results: retry with portrait prefix, or ask the user for a simpler English description
  • Don't hardcode agent id: always infer from IDENTITY.md or the current runtime context
  • OpenClaw only: this skill calls openclaw agents set-identity and expects the OpenClaw workspace layout (~/.openclaw/workspace/avatars/, IDENTITY.md, TOOLS.md). Other agents (Claude Code / Codex / Cursor) are not supported in v1.0