# 应用导航与系统工具入口 UI 设计 ## 文档信息 | 项目 | 内容 | | --- | --- | | 状态 | 应用中心与本机推理监控已接入源码,整体验收待完成 | | 版本 | 0.4 | | 日期 | 2026-09-17 | | 关联 PRD | [应用导航与系统工具入口 PRD](./prd.md) | | 功能逻辑 | [功能逻辑设计](./logic-design.md) | | 全局规范 | [GoodBuddy 统一界面设计系统](../../../UI-DESIGN.md) | 本文定义已接入的应用中心、共同设置和本机推理监控界面,以及待实现的右侧资源监控界面。 行为以[功能逻辑](./logic-design.md)为准,需求保留 FR-1 至 FR-16 与既有 US 编号。 根 UI 规范已同步应用中心与工具入口规则;共享控件、主题、设置 Modal 与工作栏布局遵守根规范。 ## 1. 侧栏信息架构 ```text 品牌 项目名称(固定双行控件的第一行) 全局活动汇总/暂无活动(第二行) [新对话] [搜索图标] 当前对话 应用(按保存顺序;知识库始终显示,可选应用仅显示启用且常驻项) 运行记录 最近对话 ... ──────────────────────── [应用 v] | [设置] ``` “当前对话”和“运行记录”属于固定系统入口,常驻应用位于二者之间。首期应用清单为魔法笔记、 知识库、智能心跳及本轮追加的本机推理监控,应用中心与设置始终可见。侧栏底部不再显示“本地工作区”和 `platform · arch`; 排障信息移至关于或诊断页面。左侧不再提供文件、终端、浏览器、资源监控的重复入口。 ### 会话搜索 新建对话与搜索共用原新建对话位置的一行。默认显示 `MessageSquarePlus` 图标与完整“新建对话”文字,整体左对齐,沿用原有 13px、600 字重和 12px 左内边距,右侧为搜索图标; 点击搜索后,输入框从右向左展开,新建对话只显示居中的同一图标,保留“新建对话”可访问名称与悬停提示。 最窄侧栏中的长标签允许在固定行高内换行,保留字号和图标。搜索右边缘和整行高度保持不变,列表不因展开或关闭而上下移动。宽度动画使用 `--motion-normal`,减少动态效果时立即切换;沿用桌面侧栏调宽和窄窗口抽屉尺寸。 通道项目继续不提供新对话按钮,搜索展开后使用整行宽度。 控件行与新建对话按钮高 `44px`;搜索框本体高 `36px`,上下各留 `4px`,垂直居中。保留 `2px` 焦点外框与 `2px` 外间距,聚焦后外沿与新建对话按钮上下对齐。 展开时聚焦输入框。X 始终可用,X 或控件行内的 Escape 清空关键词并收起输入框, 焦点返回搜索图标。失焦、点击会话列表保持搜索状态和关键词;新建对话图标继续调用原新对话操作。 无结果区域的“清除搜索”只清空关键词,保留展开状态。项目活动跳转仍沿用既有清空搜索规则。 ## 2. 底部应用中心入口 底部使用连续平整表面和顶部分隔线,“应用”在前,“设置”靠右,二者为横向排列的等宽、等高 `nav-item` 独立按钮,内容各自居中,竖分隔线位于底部入口区域的正中间: | 位置 | 图标 | 可见文字 | 点击结果 | | --- | --- | --- | --- | | 1 | `Grid2X2` + `ChevronUp` | 应用 / Apps | 向上展开已启用应用菜单,底部“管理应用”进入管理 Modal | | 末位 | `Settings` | 设置 / Settings | 在当前工作区上打开设置 Modal | 图标使用项目现有 Lucide 库。两个按钮均保留可见文字,沿用主导航的高度、间距和焦点样式; “应用”文字后显示向上箭头,与菜单展开方向一致。竖分隔线宽 1px、高 `--space-6`,使用 `--border-default`,与上方横分隔线颜色一致。不得把整个容器做成设置按钮。 ### 2.1 状态 - 默认:透明背景,图标使用次级文字色。 - 悬停:使用弱表面色,不能强于当前选中状态。 - 展开:应用中心按钮显示展开反馈,不能当作当前应用的选中状态。 - 键盘焦点:显示统一焦点环,不能被侧栏边缘裁切。 - 加载:读取应用配置时保留入口,中心内显示加载状态;失败提供重试,不用默认值冒充已保存配置。 应用中心入口不承载工具运行徽标。全部可选应用关闭时菜单仍显示知识库及“管理应用”,可进入 Modal 重新开启可选应用。 ## 3. 主导航应用区 应用入口沿用现有 `nav-item` 行,不使用应用卡片。图标、名称和徽标保持单行: ```text [图标] 知识库 [图标] 智能心跳 1 [图标] 魔法笔记 3 [图标] 本机推理监控 ``` 取消常驻或关闭可选应用后不留下空白。知识库始终启用并显示;心跳按启用和常驻显示,位置遵守共享应用顺序。运行记录始终位于应用区之后。 五个应用均在管理行上通过拖动及“上移”“下移”按钮排序;首尾无目标时禁用对应按钮。两种方式提交完整应用顺序,保存成功后更新,重启保留。当前对话、运行记录和底部系统入口不参与排序。 取消常驻不关闭当前页面或本机推理监控 Modal。重新常驻按已保存顺序恢复,关闭应用保留常驻与顺序偏好。 主侧栏始终读取最后确认配置,不展示尚未保存成功的排序或开关目标值。 ## 4. 应用中心与共同设置 设备共享追加到默认顺序末尾,测试阶段默认关闭。管理行显示“可选”及启用状态,提供打开、 设置与排序按钮;设置内提供启用 Switch,不提供常驻开关。关闭时禁用“打开”,应用菜单只在 启用时显示该项,点击后在主内容区打开[设备共享页面](../device-sharing/ui-design.md#当前首期页面)。 底部点击打开轻量菜单,锚定按钮向上展开,无模态遮罩、背景隔离或焦点循环。菜单按共享保存顺序列出已启用应用,不按打开历史或常驻状态过滤。点击应用行关闭菜单,本机推理监控打开独立 Modal,知识库、智能心跳和魔法笔记在主内容区打开页面。分隔线下的“管理应用”关闭菜单并打开既有管理 Modal。 菜单通过共享 `AnchoredMenu` 挂载到 body,宽度最多 `280px`,距窗口边缘至少 `16px`,与按钮上缘间隔 `8px`;短窗口限制高度并内部滚动,滚动、窗口和内容尺寸变化时重算位置。原生浏览器相交遮挡复用共享机制。 “管理应用”菜单项使用 `LayoutGrid` 图标。管理 Modal 标题仍为“应用中心”(英文 `Application Center`),沿用设置 Modal 的表面、遮罩和焦点规则,提供全部内置应用的名称及用途搜索、打开,以及可选应用的常驻和设置: 应用管理始终采用紧凑单列横向列表,从上到下对应保存顺序;行间使用 `--border-subtle` 弱分隔线,不加卡片外框。概览与设置详情共用 `640px` 最大宽度,窄窗口保留两侧各 `16px` 外边距,高度随内容增长并受窗口限制。 每行左侧显示图标、名称、状态和简短用途,右侧对齐打开、可用的设置及上下移动操作;空间不足时操作组换到下一行并保持右对齐,组内也可换行,上下箭头保持成组。名称旁区分 “始终显示”(英文 `Always shown`)和“可选 · 已启用/已关闭”。名称与用途可自然换行,不截断用途说明;正文与控件均不可横向溢出。 ```text 应用中心 [搜索内置应用] 知识库 始终显示 [打开] [上移] [下移] 智能心跳 可选 · 已关闭 [打开(禁用)] [设置] [上移] [下移] 魔法笔记 可选 · 已启用 [打开] [设置] [上移] [下移] 本机推理监控 可选 · 已启用 [打开] [设置] [上移] [下移] ``` 已启用但未常驻的应用可以直接打开,打开不自动常驻。关闭的应用仍能被搜索和配置, 保留禁用的“打开”按钮,可通过“设置”重新开启。启用、常驻放在设置详情中;每行右侧提供成组的上下箭头,与打开、设置操作按空间换行。箭头使用共享图标按钮,名称和提示包含方向及应用名;目标取完整保存顺序中的相邻应用,仅首尾无目标或修改锁定时禁用对应箭头。无搜索词且未锁定修改时,所有行均支持拖动排序,包括关闭或未常驻的应用;搜索时禁用拖动,箭头仍按完整保存顺序操作,未命中的应用保留在顺序中。无搜索结果显示清除搜索入口。 首期不展示商店页签、推荐、安装按钮、市场 URL 或 YAML 操作,系统工具也不在此列出。 ### 4.1 共同应用设置页 智能心跳、魔法笔记、本机推理监控的通用应用设置统一从应用中心对应行的“设置”进入;应用页面不再提供重复快捷入口。本机推理监控保留“模型与连接设置”。知识库在管理 Modal 中提供“打开”和排序,不提供启用、常驻开关或通用空设置;原工作区实际配置入口保留。 共同页遵守[设置中心 UI 规范](../../../UI-DESIGN.md#138-设置中心),不为每个入口建立一套设置。 全局设置移除魔法笔记页签及跳转入口。旧“显示魔法笔记入口”绑定业务启用值,迁为“启用应用”并保留原值; “常驻左侧菜单”使用独立配置,只有已发布的独立显隐偏好才映射到常驻。 | 控件 | 表达含义 | | --- | --- | | 启用应用 | 控制业务可用性及主导航、会话等业务入口 | | 常驻左侧菜单 | 仅控制主导航捷径,关闭应用时保留该偏好,并说明开启后才显示 | | 显示未完成待办数量 | 仅控制魔法笔记导航徽标 | | AI 评论方式 | 即时/保存后自动/保存后手动,单选 | | AI 评论形式 | 长评 + 要点/长评/要点,单选 | 二元配置使用共享 Switch 和 `role="switch"`;评论选项使用共享单选控件。本机推理监控 默认启用但不常驻;心跳应用默认关闭,常驻偏好默认开启,其余未配置布尔项默认开启。评论默认值沿用既有值,已有保存的选择保留。启用与常驻不可合并。 设置详情最大宽度 `640px`,紧凑标题栏包含返回图标、应用名称、用途及关闭按钮。进入详情和 返回列表时正文滚动位置重置到顶部;进入详情聚焦关闭按钮,返回后聚焦搜索框。 共同设置表单使用共享 Switch,相关字段分组,组间使用弱分隔线;说明沿用正文字号。 评论分段控件按内容占宽,窄窗口中标签与选项上下排列;详情不提供排序控件。 智能心跳单条计划 CRUD 及 enabled 仍由其业务页面负责,应用级开关及执行条件见[应用启停与执行](../conversation-supervision/logic-design.md#应用启停与执行)。 所有入口共享保存中状态。串行保存期间禁用相关启用、常驻、排序及笔记配置控件,保留 最后确认值;持久化成功后的设置事件同步中心、侧栏、会话、应用页及其他设置入口,包括工具配置写入。重开中心刷新期间锁定修改,迟到的旧读取不能覆盖更新快照。失败在发起操作 附近显示可重试错误并保留焦点;结果未知时显示“正在确认保存结果”,重读成功后再开放修改。 ### 4.2 关闭后的页面与会话 关闭当前可选应用成功后,原页面或本机推理监控 Modal 显示“应用已关闭”,重新启用通过应用中心对应行的设置完成;本机推理监控需先关闭 Modal。保留草稿和内容状态, 暂停该页面的新业务操作。重新开启后恢复可用性,不自动跳到已离开的应用页或重放任务。 知识库不显示应用关闭状态;会话知识控件、历史引用和工作区配置遵守原功能规则。心跳关闭时的侧栏行为见[监督者 UI 设计](../conversation-supervision/ui-design.md#会话侧栏)。可选应用的已有请求和后台任务继续按功能生命周期展示,详细边界见[关闭应用与恢复](./logic-design.md#32-关闭应用与恢复)。 ## 5. 助手工作栏反馈 系统工具仅从右侧工作栏已有 Tab 或“+”目录进入,工作栏按现有布局回流,主内容页面保持不变。 - 文件:激活默认存在且不可关闭的“工作区”Tab,焦点进入目录区域或错误修复入口。 - 终端:选择已有 Tab 激活该确切终端并保留目标与历史状态;“+”每次创建额外终端,按当前 项目选择本机或托管 SSH,无项目时使用本机 Home。新建期间显示进度,失败保留诊断。 - 浏览器:选择已有 Tab 保留其 Conversation、页面及导航状态;“+”每次创建额外浏览器, 无活动 Conversation 时新建待绑定空实例。不会按当前会话改选其他 Tab 或重绑已有实例。 - 资源监控:激活“资源监控”Tab,焦点进入指标摘要;首个样本加载后开始绘制历史。 文件和资源监控在“+”中按单实例规则聚焦或创建,终端和浏览器不按目标去重。 后台事件可以更新 Tab 徽标,不能自动展开工作栏或切换当前 Tab。 ### 5.1 资源监控面板 资源监控使用紧凑单列,不使用指标卡片墙: ```text 资源监控 本机 CPU 18% [最近 5 分钟折线图] 内存 9.6 / 32 GB [使用量进度条] 磁盘 IO 读 12 MB/s · 写 3 MB/s GoodBuddy CPU 4% · 内存 620 MB · 桌面进程 7 更新于 14:32:08 ``` - CPU 折线纵轴固定为 `0%` 至 `100%`,不能根据当前低负载动态放大波动。 - 内存同时显示使用量、总量和百分比;进度条不代替文字数值。 - 磁盘 IO 使用每秒读写字节并按统一单位格式化,不显示累计设备字节数。 - GoodBuddy 摘要只显示聚合值,不列 PID、命令行或环境变量。 - 首次加载或停止后恢复时,CPU 和磁盘 IO 显示“正在建立采样基线”,不先渲染 `0%`;内存 等瞬时指标可以立即显示。 - 部分可用时只在对应指标行显示“不可用”和简短原因;全部失败时显示重试入口。 - 图表不使用动效平移;`prefers-reduced-motion` 下行为不变。 - 面板失去活动状态、工作栏收起或窗口隐藏、最小化时停止更新;返回后重新建立区间指标基线, 不填补离开期间的历史。 ## 6. 文案 固定使用以下名称: | 对象 | 文案 | | --- | --- | | 底部入口 | 应用 / Apps | | 管理 Modal 标题 | 应用中心 / Application Center | | 菜单底部管理入口 | 管理应用 | | 应用设置开关 | 启用应用 | | 文件系统工具 | 文件 | | 终端系统工具 | 终端 | | 浏览器系统工具 | 浏览器 | | 浏览器说明 | GoodBuddy 受控浏览器 | | 资源系统工具 | 资源监控 | | 资源范围 | 本机 | | 指标缺失 | 不可用 | | 应用常驻开关 | 常驻左侧菜单 | | 关闭的应用页 | 应用已关闭 | | 内置来源 | 内置 | 不再使用“本地工作区”作为侧栏底部身份名称。项目和默认工作区的路径继续由项目选择器、页面 范围或工作区面板显示。 ## 7. 键盘和无障碍 - 底部应用中心和设置均为独立 `button`,Tab 顺序与视觉顺序一致,不嵌套按钮。 - 图标按钮通过 `aria-label` 提供名称,工具提示不能作为唯一可访问名称。 - 工作栏打开后按现有焦点策略聚焦目标面板;用户通过固定工作栏开关关闭时,焦点返回该开关。 - 应用中心按钮提供 `aria-haspopup="menu"`、`aria-expanded` 和控制关系;菜单使用 `menu`/`menuitem`,打开后聚焦首个可用项,上下方向键循环选择,Home、End 到首尾,Enter、Space 激活。 - Escape 关闭菜单并恢复入口焦点;Tab 关闭后继续正常焦点顺序,点击外部、焦点离开或再次点击入口也关闭。菜单不隔离背景,不增加遮罩。 - “管理应用”打开的 Modal 使用共享 Portal、整窗遮罩、原生浏览器遮挡、背景隔离和焦点循环,初始焦点进入搜索。行操作与详情控件按正常 Tab 顺序访问,保留共享可见焦点环,不伪装成单个菜单项;详情切换焦点见共同应用设置页。 - 工作栏使用 `tablist`、`tab`、`tabpanel`、`aria-selected`、游标焦点和方向键、Home、End。 “+”使用普通按钮语义,同类型 Tab 仍按实例独立标记。 - 徽标数量或状态合并进可访问名称;Switch 支持 Space,失败保留焦点。排序按钮名称包含 应用名,操作结果通过 polite 状态区播报;拖动不是唯一排序方式。 ## 8. 响应式 - 侧栏宽度 `220px` 至 `420px` 时,应用中心与设置均可操作,不随宽度缩小点击区域。 - 窄窗口继续使用现有侧栏抽屉,底部入口不重叠;应用菜单向上展开并限制窗口边界、内部滚动。管理 Modal 的长名称可换行,搜索、设置与重新开启入口始终可达。 - 右侧 Tab 单行横向滚动,“+”持续可见;工作栏保持停靠回流,不遮罩主页面。 - 工具提示不得超出窗口;靠近底边时显示在按钮上方。 - 粗指针设备不依赖悬停,按钮的可访问名称和选中反馈保持有效。 ### 会话置顶与操作菜单 会话行的“更多会话操作”提供“置顶会话/取消置顶”,本地与消息通道会话均可使用。 置顶会话显示带“已置顶”可访问名称的图标;当前项目和搜索过滤仍生效,过滤后的列表先显示 置顶会话,两组内各按最新消息的创建时间倒序;时间相同按会话 ID 固定顺序,无消息时使用 会话更新时间。新增消息在每 5 秒的排序检查时可以前移会话,仅顺序变化时调整位置;同一消息的文字、推理、工具进度和完成状态更新不 改变排序。有消息的会话重命名或修改设置也不前移。摘要刷新、打开详情和重新启动沿用同一 规则,行右侧仍显示实际更新时间。取消置顶恢复消息时间排序,不改变会话更新时间。 置顶状态重启后保留;保存成功后更新图标和顺序,失败保留原状态并显示应用错误通知。 存储尚未就绪或置顶请求进行中时禁用置顶操作。 消息内容、标题与运行状态实时更新。鼠标停留在列表内、焦点在列表内、滚动尚未停止 200ms 或会话操作菜单打开时,跳过自动排序;操作结束后在下一次 5 秒检查时调整。 新建、删除、置顶和取消置顶立即反映到列表中,不提前应用其他会话待处理的位置变化。 切换项目或搜索范围立即显示对应列表;排序计时器不因消息增量而重新计时。 操作菜单通过 body Portal 浮在会话列表上方,不撑开会话行。菜单锚定更多按钮,默认位于 按钮下方,随滚动、窗口及菜单尺寸变化重新定位,距窗口边缘至少 `8px`;空间不足时限制 宽高并允许菜单内部滚动。使用共享表面色、边框、圆角与浮层阴影。 入口提供 `aria-haspopup="menu"`、展开状态和控制关系;菜单使用 `menu`/`menuitem`。 打开后聚焦首个可用按钮,上下方向键循环移动,Home/End 到首尾;Escape 关闭并返回 触发按钮,点击外部或焦点离开时关闭。本地会话继续提供分支、重命名和删除确认,复制与 导出也适用于消息通道会话。持久化与刷新规则见 [会话置顶存储](../assistant-workbar/execution-history-storage.md#会话置顶)。 ## 9. 未来插件入口 FR-15、US-F1/US-F2 的市场 URL、YAML 导入导出及 ShareServer 分发在后续设计中定义。 首期中心只浏览本地内置清单,不显示未来市场的空壳界面。 ### 9.1 本机推理管理 FR-16 的 `local-inference` 入口已纳入本轮应用清单,可常驻主导航。从常驻入口、应用菜单和管理 Modal 的“打开”均进入同一本机推理监控 Modal,关闭来源菜单或管理 Modal,保留底层工作区、项目、会话和草稿。其他内置应用仍打开主内容区页面。 Modal 与真实执行模块已接入;支持清单及验证范围分别见技术设计和实施进度。 复用 `custom-task-dialog` 的整窗 body Portal、遮罩、背景隔离及浏览器遮挡机制。主 Modal 最大宽度 `960px`,高度随内容增长,最大高度为 `min(720px, 100dvh - 2 × --space-6)`;紧凑标题栏和关闭按钮固定在顶部,正文独立滚动。直接显示服务列表,没有页签或任务历史。工具栏显示“每 5 秒刷新 · CPU 100% = 一个逻辑核心”、模型与连接设置、刷新状态,窄屏可换行。服务行显示“服务进程 PID … · CPU …% · 工作集 … MiB”,预热时显示“正在建立采样基线”;共享进程的 worker 在该行显示无法独立统计的原因。 初始焦点进入“关闭本机推理监控”,Tab/Shift+Tab 在当前 Modal 内循环。没有影响确认且没有操作提交时,关闭按钮或 Escape 关闭 Modal;点击遮罩不关闭。关闭后优先恢复仍可用的原触发元素,入口已移除时回到应用中心,窄侧栏已隐藏时回到侧栏开关。 服务采用弱分隔列表;名称使用区块标题字号,状态及引擎元数据使用 辅助字号,状态与名称同组并与操作区分开,原因与操作说明使用正文字号。桌面操作独立位于右侧; 窗口宽度不超过 `720px` 时移到正文下方并左对齐,保留完整状态和原因。 - US-F3 每行显示服务名、简短状态、引擎、模型及错误。ASR 可用时显示“按需运行(状态未知)”;OCR 和向量使用执行模块的状态。TTS 显示不可用,外部连接不列入本机服务。 - US-F4 不再提供单任务取消入口;活动任务仅在服务操作的影响确认中出现。 - US-F5 服务行右侧保留实际支持的启动、停止、重启或模型加载、释放。 - 停止、重启、释放前打开最大宽度 `480px` 的紧凑嵌套确认,列出正在使用的任务与影响;无已登记任务时说明执行前再次核对。初始焦点进入“保留运行状态”,最终危险按钮写明“确认停止服务/重启服务/释放模型”;取消保留运行状态。 确认使用独立 body Portal,隔离底层管理 Modal,Tab/Shift+Tab 只在确认中循环;Escape 只关闭确认,关闭后恢复原服务操作按钮,按钮不可用时回到管理 Modal。确认存在时禁用主 Modal 关闭按钮;提交期间禁用确认和取消按钮,两层 Escape 均不能关闭,也不能重复执行。失败关闭旧确认,在服务列表显示错误并刷新;再次操作须重新确认当前影响。成功只关闭确认。 操作失败呈现实际状态和可重试错误,无法确认则显示未知。服务恢复不自动重放任务。 关闭 Modal、关闭管理应用或取消常驻不停止服务,模型文件卸载另行操作。 服务列表提供首次加载、无服务、加载失败重试及保留旧快照的刷新失败状态;刷新期间或失败时禁用服务操作。 OCR 忙碌或模型不可用时禁用加载与释放,并在执行模块再次检查。 文档解析与 HTTP OCR 的配置归属见[文档处理入口设计](../document-processing/ui-design.md#11-入口与职责), 不因接入 HTTP 而扩展本机服务列表。“模型与连接设置”现直达 `model`,OCR 服务行的 “文档解析设置”直达 `document-parsing`,关闭设置返回原工作区;实施与验证见 [文档处理进度](../document-processing/progress.md#2026-09-19-实现与验证)。 页面不显示无来源的进度条或资源数值。US-B6 至 US-B9 的应用中心、顺序、启用联动、笔记共同设置映射见 [需求对应](./logic-design.md#6-与需求的对应关系)。 ## 10. 项目活动汇总 对应 [FR-14](./prd.md#fr-14-项目活动汇总),状态与计数遵守 [活动逻辑](./logic-design.md#9-项目活动汇总)。 左上角是固定高 `60px` 的单个按钮,第一行显示项目名称,第二行显示全局待处理、运行中、已完成数量,无活动时显示“暂无活动”。点击任一行都打开锚定整个按钮的工作空间菜单,默认预览当前项目;菜单内点击“全部项目”切换至全局范围。按钮只有一个键盘焦点、焦点环及展开状态,`aria-controls` 关联菜单,`aria-describedby` 关联活动描述和控件下方的远程恢复反馈。活动变化不改变按钮高度,也不关闭已打开的菜单;长内容单行截断。 左栏固定搜索、分类及底部“新建项目”,项目列表独立滚动。分类使用共享 `PageTabs` 的 `segmented` 变体,依次为“全部项目、本地、远程、消息通道”,保留 `tablist`/`tab`/`tabpanel`、游标焦点及方向键语义;远程能力关闭时隐藏远程分类。搜索跨分类匹配,SSH Host 分组可折叠,连接状态独立于会话数量。 左栏使用 `--surface-subtle`,与右栏之间以 `1px` 的 `--border-control` 竖线分隔。搜索框使用 `border-box`,宽度包含边框和内边距,并扣除左右外边距,避免越过分隔线。全部项目及搜索结果按实际存在的本地、远程、消息通道显示分组标题,组间用横线和留白区分;远程组内保留 Host 标题。 项目行显示名称、活动数量、目录三行,无活动时省略数量行,高度随内容增长;恢复状态继续显示在目录下方。当前项目以勾选和 `aria-checked` 标识,预览使用单独背景。设置按钮独立,桌面悬停或聚焦显示,窄窗口及粗指针设备可直接访问;打开既有真实项目设置,保留目录选择、Runtime、模式、删除及远程恢复等适用操作,不触发项目切换。悬停或聚焦项目只预览右栏,点击项目直接进入;通道无会话时保留空态。 右栏顶部用共享 `SegmentedControl` 显示“全部、待处理、运行中、已完成”,采用辅助字号和紧凑内边距,与靠右的“新建会话”同排。新建使用预览项目,全部项目范围使用当前项目;消息通道禁用并显示自动创建说明。默认会话列表按待处理、运行中、最近会话分组,最近最多 10 条,完成未查看在行内标注;“已完成”筛选不受此上限限制。会话标题单行截断,全部项目范围补充项目名,不展开 Task、Job 或 Run。无活动仍显示最近会话,无匹配会话时显示空态。 点击会话关闭菜单并请求确切 ID 导航;通过既有未保存离开检查后,选择所属项目、清除侧栏搜索、未读标记、任务选择和会话菜单,窄窗口关闭侧栏。取消离开保留原页面和完成通知。完成通知仅在目标聊天实际可见后清除,预览、设置覆盖或隐藏文档不触发清除。 菜单使用共享 `FloatingPortal`,外层为非模态 `dialog`,入口提供 `aria-haspopup="dialog"`、展开状态及控制关系,不增加遮罩或背景隔离。项目列表使用 `menu`/`menuitemradio`,独立操作使用 `menuitem`;会话列表使用 `list`/`listitem` 和按钮。原生浏览器相交遮挡沿用共享机制。 打开后聚焦选中分类。列表内上下方向键循环移动,Home、End 到首尾;右方向键进入会话列表,左方向键返回预览项目,项目不可见时回到选中分类。Enter、Space 激活按钮;Tab 在控件间正常移动,焦点离开后关闭。Escape 关闭整个菜单并恢复仍可用的触发入口焦点,触发入口已卸载时回到项目入口,不继续关闭窄侧栏。点击外部、再次点击入口或隐藏侧栏也关闭。 菜单最大宽度 `920px`,高度 `640px` 且受视口限制,距窗口边缘至少 `16px`,锚点下方间隔 `8px`。桌面左栏为 `240px` 至 `360px`,窄窗口仍保留双栏并各自滚动,不使用旧级联返回页。状态筛选可横向滚动,新建按钮保持可见。项目和会话列表均采用共享窗口化渲染,键盘可到达完整列表首尾。