Slug: missions
功能介绍
Mission Control 是多任务监控面板,跨工作区展示所有正在运行的任务执行,每个卡片嵌入实时终端,可以同时观察多个任务的执行状态。
主要能力:
- 网格布局:支持多种预设布局(1x1、2x1、3x2、2x2、4x2、3x3),布局选择持久化到 localStorage,下次打开自动恢复
- 实时终端:每个任务卡片嵌入 xterm.js 终端,实时显示 Claude CLI 的输出
- 工作区筛选:通过下拉框按工作区过滤,只显示特定工作区下的运行任务
- 启动任务搜索弹窗:点击「启动任务」直接打开搜索弹窗,Fuse 模糊搜索任务,或按「工作区 → 项目」浏览,并展示最近任务列表(一次加载至多 100 条最近任务,搜索结果上限 30 条)。弹窗打开时不自动聚焦搜索框(Base UI
initialFocus)——需按一次Tab才聚焦,避免浏览器的历史下拉在弹窗上方遮挡干扰 - 恢复历史会话:弹窗中对带 sessionId 的任务可一键恢复 Claude CLI 会话,否则启动新执行
- 双导航模式:input 模式(默认,卡片自动聚焦各自终端,可直接打字)与 nav 模式(弹出居中窗格选择器,按
1–9 / A–Z快捷字符或点击定位窗格)。模式切换按钮 +Ctrl+;退出到 nav - 拖拽排序:使用 dnd-kit 拖拽调整卡片顺序
- 自动更新:4 秒轮询刷新执行状态,任务完成后卡片自动移除
- 停止执行:手动停止正在运行的任务,卡片随即移除
详细说明
导航模式
- input 模式:进入页面默认模式,每个窗格挂载时自动聚焦其终端,鼠标点入窗格即回到该模式
- nav 模式:通过模式切换按钮或
Ctrl+;进入,弹出居中的窗格选择弹窗,所有窗格按网格平铺并标注快捷字符与面包屑标题,按字符或点击即选中并开始输入
卡片生命周期
- 启动执行或恢复会话后,卡片出现在面板中
- 执行过程中实时显示终端输出
- 手动停止或自然完成后,卡片自动从面板移除
- 通过 4 秒轮询检测状态变化
文件清单
页面
| 路由 | 文件 | 说明 |
|---|---|---|
/missions | missions-client.tsx | Missions 主页面 |
组件 (src/components/missions/)
| 组件 | 说明 |
|---|---|
mission-card.tsx | 任务执行卡片(含终端) |
grid-preset-picker.tsx | 网格布局选择器 |
task-picker-dialog.tsx | 启动任务搜索弹窗(模糊搜索 + 浏览 + 最近任务) |
pane-selector-dialog.tsx | nav 模式下的居中窗格选择弹窗 |
pane-navigation.ts | 窗格快捷字符与导航工具函数 |
merge-missions.ts | 轮询结果与本地卡片顺序的合并逻辑 |
Server Actions
getActiveExecutionsAcrossWorkspaces()— 获取所有 RUNNING 执行
状态管理 (src/stores/task-execution-store.ts)
Zustand store,管理活跃执行状态。
