日常用 Agent 写代码,很快就会碰到一件烦事:同一件事要开好几个 Agent 。 一个在修 bug ,一个在看 CI ,一个在 worktree 里试另一条线。它们共享同一个仓库、同一套上下文,工具却逼你切——终端 tab 、再开一个窗口、再开一个 TUI 。谁在等你确认、刚才看到哪一行,全靠脑子暂存。切两次,上下文就丢一块。 所以我做了 Mosaic 。一张无限画布,每个 Agent 是一块 tile 。同一个项目围着一个 Workspace ,位置就是上下文:要看谁,平移过去;要对照,两块并排放。多 Agent 开发从「切来切去」变成「摊在桌上」。 这张图是我自己在用的房间。几个彩色圆是不同项目的 Hub ,每个旁边挂着自己的 Grok ; worktree 也单独占一块。没有全屏切换,也没有把会话藏进标签页。 看到 FlutterFlow 的 Campus 之后,我决定用原生技术复刻这个「工具摊在画布上」的想法。Campus 装下来超过 900 MB ; Mosaic 现在 24.5 MB 。AppKit + SwiftUI ,终端是真 PTY ,笔记...