Skip to content

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 秒轮询检测状态变化

文件清单

页面

路由文件说明
/missionsmissions-client.tsxMissions 主页面

组件 (src/components/missions/)

组件说明
mission-card.tsx任务执行卡片(含终端)
grid-preset-picker.tsx网格布局选择器
task-picker-dialog.tsx启动任务搜索弹窗(模糊搜索 + 浏览 + 最近任务)
pane-selector-dialog.tsxnav 模式下的居中窗格选择弹窗
pane-navigation.ts窗格快捷字符与导航工具函数
merge-missions.ts轮询结果与本地卡片顺序的合并逻辑

Server Actions

  • getActiveExecutionsAcrossWorkspaces() — 获取所有 RUNNING 执行

状态管理 (src/stores/task-execution-store.ts)

Zustand store,管理活跃执行状态。