多 Agent 像素办公室
在 VS Code 或 code-server 中,将并行运行的 GitHub Copilot、Claude Code、主 Agent 和子 Agent 可视化为像素风办公室角色。

上游项目
本项目是以下项目的独立维护衍生版本:
原始 MIT 版权与许可声明保留在 LICENSE 中。本项目使用独立的名称、扩展 ID、发布者、命令命名空间、设置命名空间、存储目录和 Marketplace 条目。主要修改包括并行会话发现、主 Agent/子 Agent 关系、GitHub Copilot 与 Claude Code 支持、共享认证状态服务、code-server 支持和本地活动面板。
功能
- 同时显示多个 GitHub Copilot 和 Claude Code 会话。
- GitHub Copilot 与 Claude Code 钩子使用显式、独立的来源标记;两者可同时活动,即使会话 ID 相同也不会互相覆盖或误分类。
- 状态服务按阶段隔离采集:任一提供方的读取失败都不会中断同一轮里另一提供方的会话发现。
- 快照中的单条异常记录只会被就地修复,不会作废整份快照;无法归属的子 Agent 会提升为主 Agent,始终能获得工位并显示。
- 新提供方 Agent 到达快照时会先扩展对应工位再创建角色;Claude Code for VS Code 的会话元数据短暂消失时保留宽限,不会因切换到 Copilot 而漏建或过早移除小人。
- Webview 会持续核对快照 Agent、角色、工位数量和主/子分组;发现 Claude 或子 Agent 缺少角色、工位或分组错误时,会按完整快照自动重建办公室。
- GitHub Copilot 与 Claude Code 均支持多个并发子 Agent;子会话、子转录和内部工具统一归入正确父会话,不会将主 Agent 工具错误分配给唯一活跃子 Agent。
- 区分主 Agent 与子 Agent,并显示父子关系。
- 显示提供方、工作区、当前活动、活动工具、目标和更新时间。
- 按提供方或工作区筛选,并在导航树中组织父子 Agent。
- 提供响应式本地详情面板,显示当前工具和本次 Webview 生命周期内的活动历史。
- 动态生成六个实体房间:上层左侧主 Agent 办公室、右侧子 Agent 办公室,下层为接待区、会议室、休息室和茶水间。
- 不同父 Agent 的子工位在右侧办公室内保持独立分组,主 Agent 与子 Agent 的办公室和工位不会混用。
- 每个存活主 Agent 在主 Agent 办公室对应一个工位,每个存活子 Agent 在子 Agent 办公室对应一个工位;Agent 新增或销毁时工位同步增减。
- 会话结束后整个团队一起退场;Claude Code 被直接关闭时,会话文件消失即按
20 秒退场,不会留下长时间徘徊的小人。仍在执行工具的子 Agent 不会被连带清除。
- 两间办公室的工位均从左上角开始连续紧凑排列,不预留空工位;人物使用贴近电脑的最近安全站位。
- 四个功能房由一格实体木墙彼此隔开,并分别通过四格开放入口连接对应的上层办公室;接待区、会议室、休息室和茶水间的活动范围覆盖整间房,不再显示内部虚线框。
- 工具执行之间的模型生成期显示为“思考中”,Agent 留在工位;只有会话真正空闲后才会离开岗位。
- 空闲 Agent 会随机选择泡咖啡、接水、吃点心、看电视、打游戏、刷视频、看书或坐着休息;休息室与茶水间的活动位随 Agent 数量扩容,连续休闲有上限,休息结束后会真正回到自己的工位。
- 主 Agent 进入 plan 模式或启动子 Agent 时会在会议室开会,空闲子 Agent 自动参会;会议结束后各自回工位。
- 会议室配中央长会议桌与整圈座椅,无论几个 Agent 都按满座布置;会把人围死的位置只画椅子、不作为座位。
- 会议桌是长宽比不低于
3:1 的长方形,短边为主位:主持会议的主 Agent 坐在一端,其余 Agent 沿两侧就座。
- 新开会话或销毁 Agent 时办公室就地扩缩,已在场的小人留在原地并保住工位,不会整屋刷新。
- 接待区外墙有大门,所有 Agent 都从门口走进办公室,不会凭空出现;工位则按需即时出现。
- 工位行留有过道,别人的工位只能作为目的地而非通道;通道相遇会侧身让路,长时间走不通会改选目的地。
- 放大的电视会显示节目或游戏画面,右下角游戏机会在使用时点亮,咖啡机在煮咖啡时显示咖啡杯和蒸汽;任何新工具或工作状态出现后,Agent 会立即释放休闲位并返回岗位。
- 小人脚下的来源标签紧凑显示三行,依次为主/子 Agent、GitHub Copilot/Claude Code 和会话;角色上方只显示白底行为或工具气泡,不再绘制黑底状态文字。
- 人物、猫咪、电脑工位和全部家具按素材原始
100% 尺寸显示,并通过中央通道和各房间入口进行四方向寻路。
- 楼层平面按容器比例生成并按需增高或加宽,配合受限拉伸后完全占满面板,拖动窗口放大缩小都不留白;每个墙格都有实心木墙底板,缩放后不会露出亮色缝隙。
- 工具栏、提示条和状态栏是半透明浮层,导航与详情抽屉在任何宽度下都浮在办公室之上,不会挤压画布。
- 地板、墙体、窗户和房间标签预渲染到离屏图层,仅在楼层、时段或季节变化时重建,动画帧只绘制角色与会动的设施。
- 子 Agent 完成任务后会前往父 Agent 身边交接,再返回团队办公室。
- Agent 与猫咪均使用墙体、设施和动态占用避碰,不会穿墙或进入已占用格点。
- 木屋窗外按本机月份显示春、夏、秋、冬,并按本机时间显示凌晨、上午、中午、下午、黄昏和晚上。
- 两间办公室的窗户仅位于最上方,主 Agent 办公室顶部挂钟与本机时间一致;人物提供 18 种稳定分配的统一像素风款式。
- 使用本地 Python 状态服务,让多个扩展宿主共享同一状态流。
- 状态服务仅绑定
127.0.0.1,所有端点和钩子写入均使用本地随机令牌认证。
- 不向外部服务发送遥测或 Agent 数据。
环境要求
- VS Code 1.94 或更高版本,或基于兼容 VS Code 版本的 code-server。
- Python 3.9 或更高版本,可通过
python3、PYTHON,或 multiAgentPixelOffice.pythonPath 设置提供。
- 支持本地钩子的 GitHub Copilot 和/或 Claude Code。
安装与使用
- 安装扩展。
- 在命令面板运行 多 Agent 像素办公室:安装 GitHub Copilot 和 Claude Code 钩子。
- 从活动栏打开 多 Agent 像素办公室。
- 启动一个或多个 GitHub Copilot 或 Claude Code Agent 会话。
- 不再使用时,先运行 多 Agent 像素办公室:卸载 GitHub Copilot 和 Claude Code 钩子,再从扩展面板移除插件。顺序反了会留下残留钩子,详见下方卸载。
若升级后提示可信旧版状态服务仍占用端口,可运行 多 Agent 像素办公室:修复状态服务。扩展会再次核验进程和文件身份,并在确认后安全重启。
安装器可重复执行,只管理指向 ~/.multi-agent-pixel-office/ 中本扩展钩子的条目,并保留其他工具和扩展的钩子。
卸载(顺序不能反)
从扩展面板移除本插件之前,请先在命令面板运行「多 Agent 像素办公室:卸载 GitHub Copilot 和 Claude Code 钩子」。
VS Code 不提供「扩展正在被卸载」这一事件:插件从扩展面板被移除时,它得不到任何执行机会(deactivate() 只在窗口关闭或扩展被禁用时调用,且不保证在卸载时运行)。因此钩子条目只能由你主动卸下。
如果先移除了插件,~/.copilot/hooks/hooks.json 与 ~/.claude/settings.json 里的钩子条目会留在原地。此后每一次 GitHub Copilot 或 Claude Code 生命周期事件都会启动一个 python3 去连接一个已经没有人监听的端口(本机实测每次约 93 毫秒的额外开销),直到手动清理为止。
卸载钩子只会删除命令中含 ~/.multi-agent-pixel-office/hook.py 的条目;其他产品和第三方的钩子原样保留,随时可以重新安装。
如果插件已经先被卸载
此时安装器已经随插件一起被删除,按下面三步手动清理:
- 编辑
~/.copilot/hooks/hooks.json:删除 hooks 下所有 command 含 .multi-agent-pixel-office/hook.py 的条目;某个事件的数组因此变空时,把该事件的键一并删除。
- 编辑
~/.claude/settings.json:同样删除 hooks 下所有 command 含 .multi-agent-pixel-office/hook.py 的条目;仅为承载该命令而存在的 matcher 条目整条删除。
- 删除运行时目录:
rm -rf ~/.multi-agent-pixel-office。
文件名以 .multi-agent-pixel-office.backup 结尾的备份是首次安装前的快照。卸载既不会删除也不会还原它——在装过同类产品的机器上,它保存的是那个产品的配置。
本地管理文件
| 路径 |
用途 |
~/.multi-agent-pixel-office/hook.py |
最小化本地钩子客户端 |
~/.multi-agent-pixel-office/port |
状态服务回环端口 |
~/.multi-agent-pixel-office/token |
随机认证令牌;支持时权限为 0600 |
~/.copilot/hooks/hooks.json |
GitHub Copilot 钩子注册 |
~/.claude/settings.json |
Claude Code 钩子注册 |
扩展首次修改现有 JSON 文件前会创建一次备份。
隐私与安全
状态服务读取本地 VS Code、GitHub Copilot 和 Claude Code 会话元数据,以发现并行会话和子 Agent。它仅发布可视化所需字段,例如提供方、会话标识、工作区标签、工具名称、净化后的目标、时间戳,以及可用时的令牌计数。
- HTTP 仅监听
127.0.0.1。
- 快照、事件流、状态和钩子请求均需要本地随机令牌。
- 请求体、响应、Agent、工具、缓存、状态文件和会话尾部读取均有大小限制。
- 工具目标会尽量缩减为相对路径或文件名,并过滤常见凭据格式。
- 扩展不会显示或持久化提示词、模型响应、环境变量或凭据。
- 旧状态服务修复只接受固定历史摘要、受信扩展目录、匹配包身份、当前用户、PID 启动时间和完整命令行;未知或变化的进程不会被终止,也不会使用强制终止信号。
设置
| 设置 |
默认值 |
说明 |
multiAgentPixelOffice.port |
7933 |
本地状态服务使用的回环端口。 |
multiAgentPixelOffice.pythonPath |
空 |
Python 3 可执行文件;留空时使用 PYTHON、PYTHON3 或 python3。 |
multiAgentPixelOffice.autoShowPanel |
false |
启动后自动打开办公室面板。 |
开发
npm install
npm --prefix webview-ui install
npm run vscode:prepublish
npm run check # 同时类型检查扩展与 Webview
npm test # 类型检查 + Python 与 Node 测试套件
按 F5 启动扩展开发宿主。使用 npm run package 构建 VSIX。
归属与商标
本项目是独立的非官方项目,与 Microsoft、GitHub、Anthropic 或上游作者不存在从属或背书关系。
上游源码是 Clesley Oliveira 的 Copilot Pixel Agents:https://github.com/khalango02/copilot-pixel-agents,并采用 MIT 许可证。像素素材衍生自采用 MIT 许可证的 pablodelucca/pixel-agents;角色精灵基于 “JIK-A-4, Metro City” 图块集。保留声明见 LICENSE。
左右双房间的空间组织参考了 MIT 许可的 Hootbu Pixel Agents(hootbu/pixel-agents)默认布局概念。本项目仅重新实现其“左右房间、中央通道、中央桌组、贴墙家具”的组织规律,继续使用本项目自己的木屋绘制与现有合法素材;未复制其源码、家具图块或 README 中提及的付费 Office Interior Tileset。
GitHub、GitHub Copilot、Microsoft、VS Code、Claude、Claude Code 和 Anthropic 是其各自所有者的商标。