随机头像实验室

同一个名字 → 永远同一个头像 · seeded 确定性随机 + SVG 分层拼装 · 8 种头像风格可复现

全部风格都使用本地 SVG 或本地像素素材,种子由输入确定性派生。
官方系列Kimi Agent 官方像素头像

① 官方原版 · Kimi Agent

101 款 PNG

从 Kimi 官方 CDN(kimi-img.moonshot.cn/pub/okc-agent/)下载的原版头像,280×280 的 1-bit 像素 PNG。输入名字会确定性命中其中一款。

你的名字命中:
换名字即换头像,全部 101 款如下 ↓
本地生成零依赖 · seeded SVG 与本地像素素材

② 本地生成 · 手绘小人

部件组合式

发型 × 眉 × 眼 × 鼻 × 嘴 × 胡子 × 眼镜 × 肤色 × 服饰 × 背景色,用 seeded PRNG 逐层抽件拼成 SVG(即截图那种 notionists 风格)。点开任意头像可查看、复制、下载 SVG。

③ 本地生成 · 1-bit 黑白像素

Kimi Agent 风

纯黑像素 + 白底 + 浅灰细圆环,没有任何彩色填充——脸完全由黑色轮廓线和发型剪影定义(复古 Susan Kare 式肖像)。24×24 网格,能画出鼻子、胡茬、领子这类细节。

④ 本地生成 · 几何色块

marble 风

种子决定配色与图形的形状、位置、旋转,抽象但辨识度强(Boring Avatars 的思路)。

马卡龙像素圆形与方形 · 名字即种子

⑤ 本地生成 · 圆形马卡龙像素

圆形 SVG

低饱和马卡龙配色与圆形像素肖像。使用名字作为种子,同一名字始终生成同一张头像,全部本地生成并可下载 SVG。

纯本地 · 名字即种子 · 永远一致

⑥ 本地素材 · 方形马卡龙像素

16 款 · 男女各8

使用黑白 1-bit 人像与低饱和彩色背景的方形头像。可按性别筛选,同一名字在指定性别下会稳定命中同一款。

⑦ 本地生成 · 手绘涂鸦卡片

Sketchy Doodle

粗黑抖动墨线 + 白皮肤 + 粉彩圆角底,黑边卡片带倾斜与投影(拍立得感觉)。feTurbulence 置换滤镜模拟手绘抖动,全确定性生成,不包含文字。

⑧ 本地组合 · Notion 风格

分层 SVG

使用本地化的 Notion Avatar 分层素材,名字确定性选择发型与五官;同一名字始终得到同一张头像,不依赖外部服务。

实现原理 · 核心代码
// 1. 确定性随机:同一个 seed → 同一条随机序列
function mulberry32(seed) {
  return function () {
    seed |= 0; seed = (seed + 0x6D2B79F5) | 0;
    let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
    t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
    return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
  };
}

// 2. 用用户 ID 做种子,逐层抽取部件
const rand  = mulberry32(hash(userId));
const hair  = hairs[Math.floor(rand() * hairs.length)];
const eyes  = eyeStyles[Math.floor(rand() * eyeStyles.length)];
const mouth = mouths[Math.floor(rand() * mouths.length)];
// ... 肤色 / 服饰 / 背景 / 配饰同理

// 3. 按固定图层顺序拼成一个 <svg>:
//    背景圆 → 后发 → 脖子 → 衣服 → 耳朵 → 脸 → 前发 → 五官 → 配饰
// 组合数 = 各层变体数相乘,本页手绘小人约 200 万种不重复