Hyprland 好看又好用。我的日常是在主屏和副屏之间铺开一大堆工作区,再让一群 Agent 同时干活。
可一旦 Agent 需要操作 GUI,它就会抢鼠标、抢焦点,还会把人的工作区突然切走。谁懂刚准备起飞,眼前却被 Agent 切成满屏红色报错的感觉。
Hyprland 目前没有可以直接拿来用的多 seat 方案。既然等不到,那就换个思路。
多 seat 等不来,就不让 Agent 碰人的 seat。
给每个应用一个独立工位
Wayland 的输入边界由合成器划定。每个需要被 Agent 操作的 GUI,都可以拥有一个自己的微型合成器。
- 外面仍是一个普通的 Hyprland 窗口,由人的桌面照常管理;
- 里面运行一个裁小的 Cage,只承载这一棵应用窗口;
agentseatd给 Agent 提供独立的虚拟鼠标、键盘、截图和控制接口;- 人的真实指针、键盘、宿主焦点、工作区和剪贴板都不需要让路。
资本家终于给 AI 员工分配了独立工位。
Agent 在里面想怎么点就怎么点,不会跑来和我互相肘击。当我亲自点进 AgentSeat 窗口时,Agent 还会暂时让座。老板亲自下场,AI 自动暂停。
同一台电脑上终于有了一种自然的协作状态。我继续在 Codex 里写程序,另一个 Agent 在独立应用里完成 GUI 工作,双方都不需要控制整张桌面。
它具体隔离了什么
AgentSeat 围绕一款普通应用划出一条窄边界。它只管好这一席,不会再造一套桌面。
- Agent 的虚拟指针不会移动宿主桌面的真实指针;
- Agent 的应用内焦点不会切换人的 Hyprland 工作区;
- Unicode 输入通过私有的一次性剪贴板完成,不替换宿主剪贴板;
- 原生 Wayland 应用走默认通道,旧式 X11 软件可以进入私有 XWayland 通道;
- 控制端退出后,GUI 与私有 seat 仍可保持驻留,后续 Agent 能按稳定会话身份重新连接。
AgentSeat 隔离的范围很明确。它管的是输入与焦点。文件系统、进程和网络仍沿用本地用户的原有权限。应用必须由 AgentSeat 启动,已经存在的宿主窗口无法跨过 Wayland 合成器边界直接搬进去。
为什么要做得这么轻
每个 AgentSeat 外层都是普通 Hyprland 窗口,内部只放一个精简的单应用微型宿主和一个原生事件循环守护进程。没有嵌套 Hyprland、完整桌面环境、虚拟机,也不需要修改 Hyprland。
最初的实际测试里,每个 GUI 壳子的额外内存大约在 17 MB 左右。空闲应用不会为了“看起来一直活着”而持续轮询。只有场景确实请求下一帧时,按需帧时钟才继续推进。
应用保持原样,人继续使用熟悉的界面。Agent 只多了一个不会打扰人的操作席位。
朝着真正 AI Native 的操作系统进发。Linux 系统万岁。