两个主体,一张桌子

探索面向 AI 的交互边界

AI 工作台

Weave 精灵图板 · AI 创作画布

纯浏览器的通用 AI 创作工作台:素材与 AI 动作组成一张可追溯的二分图。

技术栈5
Vue 3TypeScriptVue FlowPinia二分图
技术难点3
  • 静默失败最难查:无密钥或对应模型留空时会产出本地占位物,画布上看不出是假的
  • 关系必须是唯一数据层,画布上的连线只能作它的投影,否则连线会变成第二份真相
  • Agent 发起的动作要和人类操作完全同构,否则「人类接管」这件事没有落点
技术亮点4
  • 素材与动作构成二分图;产物本身也是素材,创作过程因此天然可追溯
  • 关系带来源:人类创建画实线、Agent 创建画虚线,人一接管就翻回实线
  • 无密钥时 Agent 回退确定性规则,入口不因缺配置而失效
  • 组件标注、术语速查、文档截图共用同一份数据,三个投影不会各自漂移

线上 App

Zifo 知否 · 课文逐词朗读

课文 mp3 同步逐词高亮 + 波形进度,像 Apple Music 歌词那样听课本。

技术栈6
Vue 3Web AudioCanvasTTMLWhisper静态资源驱动
技术难点5
  • Whisper 吐出的是整段词流,课本却要按句分组——得按原句词数切回来,零时长的词还要插值补上
  • TTML 用 itunes 命名空间,时间还有 0.2s 与 00:00:01.540 两种写法,都得认
  • 用户手动滚歌词时播放器仍在推高亮,两者抢同一个滚动位置
  • 页面到 Unit 的映射写死了两份(前端一份、离线脚本一份),加一课必须同时改
  • 演示要在 iframe 里自动播放:需要宿主委派权限 + 用户手势,而选页与解码都是异步的
技术亮点5
  • 运行时零推理——Whisper 只在离线跑一次,时间轴当静态资源发出去
  • TTML 既是机器的产物也是人能接着改的中间格式,前端直接喂给歌词组件
  • 加一课只需放两个文件、改一个配置数组,不碰后端
  • 波形自己算自己画,没有引第三方波形库
  • demo 入口零侵入:独立入口 + 多入口构建,主应用一行没改

网页工具

Pinbod 平铺 · 手写无限画布

从零手写的一块无限画布:拖出形状、连上箭头、画手绘线,导出 PNG / SVG / JSON。

技术栈6
Vue 3TypeScriptCanvas 2Drough.jsDexieMCP
技术难点4
  • 撤销重做要能同步,就不能用快照——整体覆盖会抹掉远端刚做的修改
  • 吸附没有滞回会在边界反复吸放,得命中后锁线、拖离超过 12px 才解锁
  • 箭头端点要贴着轮廓,矩形 / 椭圆 / 菱形 / 多边形各需一套求交
  • Canvas 画形状、DOM 接交互分两层,但两层必须共用同一套视口变换
技术亮点5
  • 引擎是纯 TypeScript、零 Vue 依赖,可以脱离界面单独跑测试
  • AI 的操作走和人同一条提交路径,因此天然可撤销、可重放
  • 语义导出不靠截图——连线关系本身就是图骨架,噪音一概不导
  • 桥侧 Node 探测本机客户端并写好 MCP 配置,用户不用手抄 JSON
  • 用可复现基准否掉了空间索引:2000 个形状每帧遍历加裁剪 1.46ms

开发框架

NodePlayer 节点汪 · 连线即执行

把节点连起来,图就自己跑;改一个参数,只重算受影响的那几个。

技术栈6
Vue 3TypeScriptVue Flow自研执行引擎elkjsMCP
技术难点4
  • 调度就绪判定必须看「入边前驱」——一开始误用了出边,执行顺序整个颠倒
  • 缓存命中的节点必须移出 pending,漏了这一步 worker 会死循环
  • 没有就绪节点时要等待而不是收尾,否则并发调度会提前宣告完成
  • 引擎必须和渲染解耦,节点组件只读状态,否则执行态和界面会互相拉扯
技术亮点5
  • 跨运行缓存:节点缓存键是「参数 + 上游输出」的哈希,未变的分支直接复用
  • 三种自驱都不用点按钮:加载即执行、连接即运行、改参数即重算
  • 引擎与渲染解耦,节点组件只读 state / progress / outputs
  • MCP 暴露 8 个工具,外部 AI 能自己把图搭出来,导出的 JSON 可直接导回应用
  • elkjs 动态 import —— 1.4 MB 的布局库不进首屏(实测首屏无该请求)

Excalibur 誓约之剑

俯视角自动射击:你只管走位,攻击自己发生,一波一波打下去。

小游戏

可试玩2026-06
技术栈5
Pixi.jsWebGL战争迷雾对象池配置驱动
技术难点3
  • 战争迷雾每帧都要重算视野,全图两万多格全扫会拖垮帧率
  • 子弹、敌人、掉落物高频创建销毁,GC 抖动会让帧率忽高忽低
  • Service Worker 写死缓存名 + cache-first,重建后页面会指向已删除的资源,而且无法自愈
技术亮点4
  • 战争迷雾只算视野半径内的格子:22500 → 约 3800 格,砍掉 83%
  • 手写对象池复用子弹与敌人,池内数量可以直接观测
  • 波次、敌人、武器、套装全是配置表驱动,加一种敌人只要加一条
  • 零运行时依赖:唯一的 Pixi 挂在开发依赖里,构建期打进产物