Walkabout 的目标是让应用自己完成导览、答疑和录制,作者无需再亲自做演示。它由依次搭建的三层能力组成。
第一层是导览。复制模板中的 Tour.tsx、steps.ts、halo.css(追加到应用的全局 CSS),无需额外库,Tour.tsx 就是完整实现。一个浮动指南卡片会带着聚光灯按真实页面逐页讲解,聚光灯随语音滚动到对应区块,自动前进实现免手动操作。光晕颜色应从宿主的 --primary 令牌取色,而非硬编码,这样换肤时无需改导览。先按宿主样式重写模板类名(如 shadcn 宿主的映射)。写 5–8 个步骤,每页一步,卡片正文两行;在 gen-tour-audio.py 的 SCRIPTS 中为每步写 2–5 段(选择器、文本)旁白,并给被描述的元素加 data-tour 属性。设置 ELEVENLABS_API_KEY 后运行生成器,产出 public/tour/*.mp3 与 tour/cues.gen.ts,两者都要提交。把 useTour() 接入应用外壳,首次登录时提示一次(localStorage),可从页脚/菜单重启,支持 ?tour=N 深链。验证方式是“游走”而非被动观看:中途点击离开当前步骤页面时,导览应暂停并显示“Paused while you explore”,回到后从原处继续,绝不重播音频或把用户拽回。自动化验证时,可用 --autoplay-policy=no-user-gesture-required 启动,或用真实输入点击启动导览;page.evaluate 里的 JS 点击不算用户手势。
第二层是问应用 AI 指南。复制 Assist.tsx、assist-routes.ts、assist-knowledge.ts、questions.sql,并彻底重写 knowledge.ts——它是助手唯一的事实来源,用平实文字说明应用是什么、每个页面、每条流程、限制与联系人,事实来自代码而非想象。系统提示要求只依据指南回答,其余转交人工联系人,纯文本且约 120 词以内;使用便宜快速的模型并关闭思考。每次提问都要记录(提问者、页面路径、延迟、答案/错误),并在浮窗链接的页面展示日志。游览或提示占用角落时隐藏 FAB。用三类问题实测:指南覆盖的、未覆盖的(如定价)、来自特定页面的。
第三层是演示视频。复制 record-tour.mjs 与 record-demo.mjs,需要 playwright 依赖、PATH 中的 ffmpeg/ffprobe、上镜的种子数据以及可无头登录的方式。无头认证是真正的难点:API 密钥应用可用 localStorage 引导,Cookie/OAuth 应用应使用 Playwright storageState 或已有的测试登录端点(只读/共享视图安全)。record-tour.mjs 通过 CDP screencast 采集无损 PNG 帧,再用 ffmpeg 按实测偏移混入原始 MP3;Playwright recordVideo 与 getDisplayMedia 两条路径不可用。record-demo.mjs 用 { say, do?, delayMs? } 片段驱动,旁白按文本哈希缓存,动作应使用基于角色的定位器,使每个演示同时成为无障碍回归测试;同一规格可输出 GIF 切片与可复现截图。为让改动可见,优先用 GIF 并在动作区域裁剪;导航/点击步骤需先悬停停顿再点击,并注入带光环和箭头的合成光标(注入目标所在框架,并按该元素框架内坐标定位),录制目标视口框并自动裁剪。GIF 应加底部进度条并适当放慢、提高采样帧率,避免加载动画占满某一步。
最后,用 ffmpeg 抽帧检查而非只看退出码,确认页面、聚光灯/动作与旁白音轨正确,再把宣传 MP4 放入静态资源并在 how-it-works 页用 <video controls> 播放。当视频是修复证明时,应先做盲审:独立代理只被告知结论,采样帧必须找到支撑全部结论的像素才算通过。完成后把应用加入 docs/pattern.md 的 Adopters 列表并记录新经验;该仓库是公开的,需匿名化,只提交可泛化的模式,绝不上传客户或公司名称、内部产品名、主机名/URL、账号/区域 ID、令牌、密钥、真实邮箱、文件路径、库表名等项目细节。
限制与注意事项:模板带有源应用的类名和配色,移植时需适配;旁白效果的依赖只能是 [i],加入 navigate 会导致每次点击重播音频甚至自跳转路由上卡死;arrivedRef 不能省略;深链启动没有用户手势,被拦截的 play() 应捕获并以暂停状态打开。资料未提供收费、价格或平台支持的具体信息。