Files
my-resume/docs/plans/2026-06-11-ai-dialogue-redesign-design.md
2026-06-11 12:24:52 +08:00

88 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 设计文档:「与湛兮(花名)的数字思维体对话」作品集重设计
日期:2026-06-11
状态:已批准
备份:`../wang-yuanyou-fluid-portfolio-backup-20260611-110154/`
## 概念
整站是访客与「湛兮(花名)的 AI 分身」的一场对话记录。简历核心(最近一年做 SSE 流式对话、打字机渲染、思考态动画)即设计语言来源——网站本身就是其工作成果的活演示。3D 流体 =「思维体」,是画面中唯一的角色。
决策记录:
- 设计隐喻:AI 对话流(vs 职业河流 / 跨端粒子宇宙)
- 推进方式:滚动驱动的对话(vs 真·对话界面 / 滚动+问答入口)
- 流体形态:单一思维流体 + 三状态状态机(vs raymarched metaballs / GPGPU 粒子流)
- 视觉基调:深色 AI 实验室(vs 浅色编辑风 / 双主题)
- 技术路线:原生 Three.js 自写 shader + GSAP ScrollTrigger + Lenisvs 纯手写 / R3F
## 信息架构:7 轮问答
| # | 访客提问 | 回答内容 | 数据源 |
|---|---|---|---|
| 0 | —(开机自检) | 「你好,我是湛兮(花名)。」+ 身份一行 + 6 指标 token 式吐出 | metrics |
| 1 | 先介绍一下你自己? | 4 条概述逐行流式输出 | resumeSignals |
| 2 | 最近一年具体在做什么? | 4 张焦点卡依次「生成」 | focusAreas |
| 3 | 有实际项目证明吗? | 4 个项目,各为一轮子对话:项目名打字机 → 模块逐条吐出 | projects |
| 4 | 技能栈展开讲讲? | 7 组技能标签 token 流喷发归位 | skills |
| 5 | 之前的团队经历? | 3 段经历沿垂直对话流时间线生成 | experiences |
| 6 | 怎么联系你? | 联系方式 + 流体归于平静,「对话已保存」收尾 | — |
页面右侧(移动端顶部)设「会话进度轨」:7 节点对应 7 轮,可点击跳转,保证 HR 快速扫读。
## 思维流体(Three.js 自写 shader
- 几何:高细分 IcosahedronGeometry;顶点着色器 3 层 FBM simplex 噪声液态位移
- 片元:Fresnel 边缘辉光 + 双色渐变(青 #22d3ee ↔ 紫 #a78bfa+ 加性内核光晕
- 伴生粒子:约 2000 GPU 粒子,curl noise 流场
- 状态机(uniform 插值过渡):
- `idle`:低频低幅呼吸,粒子懒散环绕
- `thinking`:收缩 0.85x,噪声频率 ×3 搅动,色温升高,粒子吸入
- `answering`:回弹 1.1x 归位,粒子向内容区喷发消散,辉光脉冲与文字生成同步
- 流体位置随轮次左右缓移(lerp)与内容互让;鼠标轻微视差
## 非线性动画编排(GSAP ScrollTrigger + Lenis
每轮问答为一个 pin 区段,滚动量映射轮内时间轴:
1. 提问(0→15%):访客气泡逐字打出,steps() 离散节奏
2. 思考(15→35%):流体 thinking,内容区仅 shimmer 占位——刻意停顿即非线性核心
3. 爆发生成(35→75%):expo.out 爆发;标题打字机、卡片不等间隔 stagger(模拟 token 不均匀到达)、数字滚动跳变
4. 余韵(75→100%):流体回 idle,内容微视差上浮,解除 pin
每轮思考时长 / 爆发曲线 / stagger 间隔均不同(场景配置驱动),避免节奏雷同。向上滚动时时间轴反播,内容「被收回」。
降级:`prefers-reduced-motion` → 关 pin 与打字机、内容直出、流体仅呼吸;移动端粒子减半、DPR ≤ 2、细分降档。
## 视觉系统
- 背景 #070b14 近黑蓝 + 极淡网格点阵 + 流体环境光溢出
- 强调色:青 #22d3ee(访客/交互)、紫 #a78bfa(思维体/回答)、琥珀 #fbbf24(仅指标数字)
- 气泡语言:提问 = 右对齐细边框气泡;回答 = 无框流式文本块 + 左侧渐变「生成光标」竖线
- 字体:等宽(JetBrains Mono / 思源等宽回退)用于指标、token、技能标签;正文 Inter + 思源黑体
- 细节:回答块尾闪烁光标 ▋;项目 logo 复用 public/logos/
## 文件结构
```
src/
main.js # 入口:装配 + Lenis + 进度轨
resume-data.js # 不动(数据即简历)
dialogue.js # 7 轮问答文案与节奏配置
render.js # 由 resume-data 生成各轮 DOM
choreography.js # GSAP ScrollTrigger 时间轴编排
mind/
mind.js # 流体场景、状态机、粒子
shaders.js # GLSL
styles.css # 重写
index.html # 重写骨架
```
新依赖:gsap、lenis。重写 main.js / styles.css / index.html(旧版已整目录备份)。
## 性能与验收
- 单 canvas 固定底层;rAF 与 GSAP ticker 合并;目标桌面 60fps、移动 30fps+
- 文字全部真实 DOM(可选中/可索引),打字机仅控制 reveal;进度轨 + 锚点保证可跳转
- 验收:7 轮完整走查(含回滚反播)、375px 移动端、reduced-motion 降级、Lighthouse 不低于现版本