2D 试衣间原型先拆边界:本地手势换装与 LLM 语义指令分别验证 “挥手换一件衣服”和“衣服贴合人体”不是同一个问题。前者可以是有限手势触发资源切换后者需要人体定位、尺寸与遮挡处理。把两者混成一个 AI 试衣 Demo容易让截图替代了能力说明。这次只做可解释的 2D 原型MediaPipe Hand Landmarker 返回手部关键点不会顺带给出肩线和衣服版型。原型先采用人工提供的肩部锚点手势识别只发出 next 或 previous。这个范围适合验证交互不证明虚拟试穿的真实贴合效果。10 月 22 日公开的 Decisions API 把模型决策限制到调用方定义的类型与动作。可以借用这种边界思想处理“换成蓝色外套”但本例不调用任何在线模型我们只验证一个本地命令解析器。模型能读懂一句话并不代表它能安全提供任意图片 URL 或脚本。资源 ID 先通过白名单衣服来自应用内已许可资源表命令只接受 next、previous、select。坐标来自显式 fixture先在视频原始归一化坐标中计算再按 contain 的缩放和留白换算到画布。镜像只应用一次避免镜像视频叠加未镜像坐标导致左右反转。const clothesObject.freeze([blue-coat,white-shirt,green-vest]); function command(raw,current0){ if(!Number.isInteger(current)||current0||currentclothes.length)throw Error(index); let x;try{xtypeof rawstring?JSON.parse(raw):raw;}catch{return {ok:false,reason:json};} if(!x||typeof x!object||Array.isArray(x))return {ok:false,reason:object}; const keysObject.keys(x); if(x.actionselect keys.length2 keys.includes(id)){ const iclothes.indexOf(x.id);return i0?{ok:false,reason:id}:{ok:true,index:i}; } if(keys.length1 [next,previous].includes(x.action)){ return {ok:true,index:(current(x.actionnext?1:-1)clothes.length)%clothes.length}; } return {ok:false,reason:action}; } function anchorToCanvas({x,y},video,canvas,mirrorfalse){ if(![x,y].every(Number.isFinite)||x0||x1||y0||y1)throw Error(anchor); if(![...video,...canvas].every(vNumber.isFinite(v)v0))throw Error(dimensions); const sMath.min(canvas[0]/video[0],canvas[1]/video[1]); const wvideo[0]*s,hvideo[1]*s; return {x:(canvas[0]-w)/2(mirror?1-x:x)*w,y:(canvas[1]-h)/2y*h}; } const shoulderFixture{x:0.25,y:0.3}; // 人工输入绝非手部模型输出衣服不跟踪时按钮仍然能用图中左右两条路径分别代表手势事件和语义命令肩部锚点是人工输入。它不是人体模型的检测结果更不是试穿实拍。手势事件需要抬起、触发、冷却和重新武装的状态不能每帧检测到同一姿势就换装。摄像头失去目标时停止自动切换保留上一件衣服和键盘可操作的按钮不要推断“没看到手”等于用户确认购买。服装的缩放和遮挡尚未解决。真实试衣至少要回答肩部锚点由什么模型得到画面旋转后坐标是否正确手臂经过衣服前方时怎样分层不同体型与宽松衣物怎样处理这几项没有验证就应把页面称为 2D 换装原型。本轮没有开启摄像头、运行视觉模型或请求 LLM只验证非法命令、白名单、环绕选择和 contain/镜像坐标。也没有声称本地模型绝不联网模型文件获取、遥测和资源加载仍要分别审计。复现记录本轮在 Node.js v26.3.0 中运行随文核心逻辑的构造样例进程退出码为 0。测试输出PASS: command allowlist, unknown resources, extra fields, contain offset, mirror, invalid anchor将上方完整代码保存为 example.mjs以 Node.js 26 执行 node example.mjs 可加载核心与教学输入函数默认不访问网络、模型或硬件。浏览器适配入口需要明确传入对应对象本轮未执行这些入口。上面的通过项来自独立构造样例不能替代集成测试。资料与时效Hand landmarks detection guide for Web首次发布日期未核实更新 2026-08-17。Build more responsive apps with the Decisions API2026-10-22。Introducing Claude Fable 5.1 and Claude Mythos 5.12026-09。本稿对应原预排时段实际发布前须人工复核来源更正、SDK/API 版本及可用性不据此预言 10 月 24–31 日的新事件。