Flow AI · 这颗点

琥珀色的点,睁开了眼睛。

Flow AI 的标志是四个点,向上汇成一个琥珀色的点。这个琥珀色的点就是 Flow Intelligence。它不是一个物件,而是一束光:一个智能的核心,两只眼睛是光缺席的地方。奶白色的点是它派出去的智能体,它们是实心的,因为智能体做的是实实在在的工作。这一页是这个角色、它的物理,以及在本站驱动它的引擎,和这里的一切一样开源。

状态
身体

在舞台上移动指针:眼睛先动,身体慢一拍跟上。不管它时,它会自己四处看。

眼睛 · 圆形,偏高偏左  ·  状态 · 待机

一次运行

一项任务,从头到尾,只由这个角色来讲。

这是世界级角色要通过的测试:访客不读一个字,只看这颗点,能否明白产品在做什么?一条指令进来,它读网站,向三个智能体交代任务,它们回来,它把成果暂存并等待人来审核,人批准,它休息。

找出人们向 AI 询问奥克兰热水缸的问题,修好应该回答这些问题的页面。全部暂存,先不发布。
三个页面已暂存。等待你审核。

运行 · 就绪

  1. 00收到指令点头
  2. 01阅读网站扫视
  3. 02交代三个智能体分离
  4. 03智能体工作中环绕
  5. 04智能体返回合并
  6. 05已暂存,等你光环
  7. 06已批准点头,眯眼
  8. 07休息待机
23 秒。不需要文字,但这两条消息展示了它在演示窗口中的位置。

物理

为什么它现在有了生命感。

早先的版本用线性缓动移动眼睛,那是光标的动法。活物的动作是眼跳和弹簧。八处改动,都很小,都借自动画的基本功,而非凭空发明。

眼线 · −0.36 r 中心 · 左偏 0.15 r 间距 · 0.58 r 右眼 · ×1.2 光晕 · 2.1 r,会呼吸 眼睛 · 0.17 r 身体 · r 比例在任何尺寸下不变。小于 32 像素时不画眼睛。
  1. 弹簧,而非缓动。视线是一个阻尼弹簧(刚度 140,阻尼 18),会微微过冲再稳住,像真的眼睛。
  2. 眼跳。没人理它时,每 1.5 到 4 秒选一个新点跳过去。眼睛从不漂移。
  3. 眼先动,身后随。身体通过一个更慢的弹簧,慢一拍朝视线方向倾斜。这个延迟就是重量感。
  4. 透视。向右看时,右眼放大 6%,左眼缩小 12%。平面的圆盘变成了一颗头。
  5. 预备动作。眨眼前,眼睛先放大 4% 持续 60 毫秒再闭上。闭眼 70 毫秒,睁眼 140 毫秒。自然界没有对称的动作。
  6. 眼睛是缺席。在光核上,眼睛是光不在的两处,所以没有高光:光本身没有高光。实心的智能体点在每只眼的左上保留一点奶白,让眼睛显得湿润而圆。
  7. 挤压与拉伸。呼吸时纵向拉伸 1.2%;点头时压扁到 90%,再经同一个弹簧恢复。
  8. 向下看时眼睛变细。视线下落时眼睑合上 15%,于是阅读看起来像阅读。

眼睛工作室

画两只眼睛的十二种方法。点一个试试。

同样的身体、同样的墨色、同样的物理。整个性格都在眼睛里,所以这是最重要的决定。

本站采用:Flow Intelligence 用圆形、偏高偏左,每个智能体各有一种眼型,十个一眼可辨。

独一无二

眼睛让它成为一张脸,行为让它只属于这里。

谁都能画一个带眼睛的点。这些行为来自 Flow AI 真正在做的事:读网站、给智能体交代任务、等人审核、在奥克兰的夜里工作。

01 · 双眨眼

招牌眨眼。

人眨一次。这颗点快速眨两次,像相机确认对焦。最小的商标。

02 · 逐行阅读

它一行一行地读。

工作时,眼睛从左扫到右,再换一行,像人读书一样。从外面看,AI 搜索审计就是这个样子。

03 · 看你打字

注意力跟着你走。

聚焦输入框,它就看过去。打字时跟着光标。停下来,它抬头看你。

04 · 点头

批准就是一个点头。

一次运行被批准时,身体往下一沉,眼睛眯起。没有对勾,没有彩带。像同事点一下头。

05 · 奥克兰时间

它按你的作息。

奥克兰晚上十点到早上六点,网站上的点进入暗夜状态。地球另一边的访客看得到:你睡着时,它还在工作。

06 · 由点组成的眼睛

眼睛就是那条轨迹。

轨迹折叠时,离琥珀点最近的两个奶白点成了眼睛。标志和脸是同样的四个点。

标志与像素网格

轨迹保持抽象。角色从 32 像素起才出现。

小于 32 像素时,眼睛只是两个污点,所以页眉和页脚保持原来的轨迹。网站图标是唯一的例外:一个带眼睛的琥珀点,在 16 像素网格上手绘,而不是缩放。

标志动画 · 智能体出发、工作、再合并回来
128 · 有眼睛
64 · 有眼睛
32 · 下限
24 · 页眉,无眼睛
网站图标 · 32
16 · 标签页

网站图标,画在网格上。

半径六像素、边缘柔和的琥珀光核,两个 2×2 的墨色方块,位于中线上方一像素,相距两像素。把大脸缩小只会得到一团灰;把方块放在网格上,眼睛在每个标签栏里都清晰。32 像素版本是同一张图放大一倍,所以同样清晰。

以 favicon.svg 发布,眼睛加上 shape-rendering="crispEdges",并为 Safari 和 iOS 另出 32 和 180 像素的 PNG。

辨认智能体

十个智能体,十个奶白点,各有各的眼睛。

颜色不能用(只有三种墨色),所以身份都在眼睛里。每个智能体拥有一种按职责选定的眼型,一周之后,“最近”列表不看标签也能读懂。把指针放到任一智能体上:它看你一眼,再移开,像同事打个招呼。

API 里保留了一个后备方案,供以后新增的智能体使用:FlowDot.mount(el, {agent: 'new-agent'}) 会从名字推导出一张稳定的脸。

在网站上

它在网站上的位置。

五个地方,都很小,都在现有版式里。这个角色是一种在场,不是在首屏大喊大叫的吉祥物。

AI search fixes等待你审核

    演示窗口。每次运行带着它的智能体的点;状态栏里的 Flow Intelligence 一直看着你,直到你批准。

    Flow AI.如何运作指南与我合作 ↗

    悬浮页眉。轨迹保持不变。在琥珀色按钮上悬停时,↗ 圆圈会变成这颗点一瞬间:一瞥,而不是噱头。

    Flow Intelligence 正在读你的网站……

    加载与空状态。工作时这颗点呼吸、阅读;全站没有一个转圈图标。

    这一页流到别处去了。

    404 页面。它先看左,再看右,然后看你。

    夜间运行,02:14 · 三份草稿已为早晨暂存

    灯灭了,只有眼睛在发光。用于人不在时发生的一切。

    规范与 API

    开发者需要的一切,都在这一页。

    驱动这一页的引擎就是参考实现:一个文件,无依赖,7 KB。挂载到任意 SVG 上,其余交给它。下面的动效表是它遵守的规则。

    时刻时长曲线动的是什么
    视线spring k 140 · d 18临界阻尼眼睛位置,横向最多 0.18 r,纵向 0.14 r。远眼缩至 0.88,近眼放大到 1.06。
    身体跟随spring k 40 · d 10欠阻尼朝视线方向倾斜最多 6 度,慢一拍。
    眼跳every 1.5 to 4 s即时目标新的注视点在 ±0.5、±0.35 之内。仅在没有其他事吸引注意时。
    眨眼60 · 70 · 140 ms放大、闭、睁眼睑从上方合拢。双眨眼在 260 毫秒后重复。静止时每 3 到 6 秒一次。
    呼吸3.9 s periodsine纵向拉伸 1.2%。工作时快 6 倍。
    点头600 ms半正弦身体下沉 r 的 10% 并压扁至 0.9;眼睑合至 0.4;再经身体弹簧恢复。
    分离与合并1.1 s per dot, 0.55 s apart三次缓出经由黏液滤镜(100 单位下模糊 2.2,alpha 矩阵 22 −10)。智能体沿轨迹的对角线出发。
    光晕2.1 r · 0.85 to 1.0正弦,半速光的呼吸在强度上,不在大小上。等待审核时亮 0.15。夜间状态降到 0.08。
    审核光环2.9 s periodsine一道 1.5 单位的琥珀色光环在 r + 6 与 r + 18 之间呼吸,不透明度 0.2 到 0.9。
    减少动态——视线直接跳转,没有弹簧、眼跳、眨眼和呼吸。状态依然可辨。

    API

    <script src="/assets/dot.js" defer></script>
    
    // Flow Intelligence, 48 px, in the demo window status
    var fi = FlowDot.mount(document.querySelector('#status svg'), { role: 'flow', style: 'high' });
    fi.set('review');          // idle · think · work · review · done · late · error
    fi.lookAt(0.2, -0.1);      // −1..1, overrides saccades until lookAt(null)
    fi.nod();                  // on approve
    fi.blink(true);            // double
    
    // an agent, 28 px, in Recents. Style comes from the agent map,
    // or is derived from the name for agents the map does not know.
    FlowDot.mount(li.querySelector('svg'), { role: 'agent', agent: 'ai-search' });
    
    // the dark state follows Auckland time on its own
    FlowDot.autoNight(fi);     // 22:00–06:00 Pacific/Auckland
    
    // every mounted dot shares one requestAnimationFrame loop and
    // pauses off screen. Nothing is hidden if the script fails:
    // the SVG you mount can carry a static dot as its fallback.

    本页所用引擎的源码:显示 dot.js

    规则

    什么让它可爱,而不是企业吉祥物。

    永远

    • 两只眼睛,别无其他。没有嘴、手臂、眉毛或帽子。表情来自眼型、方向和眨眼的时机。
    • 光与物。Flow Intelligence 是发光的琥珀色核心,品牌唯一允许的发光,因为它是网站上唯一不是物件的东西。智能体是实心奶白。眼睛是墨色,或光的缺席。
    • 不对称的眼睛。右眼大 20%。对称读作图标,不对称读作脸。
    • 双眨眼,每 3 到 6 秒一次。绝不是看得出的循环。
    • 弹簧与眼跳。没有滑动。眼睛跳,身体稳。

    绝不

    • 32 像素以下不画眼睛,手绘的网站图标除外。
    • 没有第二个角色。智能体靠眼睛区分,不靠颜色、衣服或体型。
    • 不说话。它永远没有对话气泡。演示窗口里的对话属于产品,不属于角色。
    • 没有悲伤状态。失败是眯平的眼睛和一点倾斜,不是眼泪。
    • 没有为动而动。每个动画都标记一个真实状态:工作、等待、完成、离开。