01. UI信息架构
翻译说明: 本页是与 英文源规格 一一对应的机器辅助翻译。代码、协议字段和标识符保持原文;如翻译与英文源事实有歧义,以英文版本为准。
语言:英语(根据 ADR 0009)。这描述了已发货的符合 Codex 的 外壳 (D034+)。组件详细信息:08-组件规格; 视觉标记:07-ui-design-system;行为: 09-交互模式。
1. Goal
清晰、克制、开发人员优先的工作台:一个窗口,一个活动 目的地、聊天作为主页表面、工具和权限内联。
2. Shell 区域
+----------------------------------------------------------------------+
| 平台标题栏:macOS 交通灯/Windows/Linux 操作 |
+------------------+--------------------------------+------------------+
| 侧边栏(~275px) | 主窗格(活动目的地) | 工作面板 |
| | 聊天主页/文字记录 | (可选, |
| | 或扩展页面 | 可调整大小 |
| | | 244–720 像素) |
| 会话 +↕ | | 表面 |
| 最近行 ↕ | | |
| 项目+ | | ◫ | 应用.tsx ⌄ × |
| 项目A | | > | |
| 项目B | | ◎ | 活跃 |
| 页脚[⚙][@][☾][响铃] | 浮动输入框(聊天) | | 资源 |
+------------------+--------------------------------+------------------+- 侧边栏:主要导航 - 紧凑的无路径对话 会话 包含新会话和排序操作的部分,保留开放项目 具有持久性新项目的以下 Projects 部分下的组 动作,以及受 WorkBuddy 启发的页脚。页脚保持紧凑的设置, 扩展和通知图标操作;拉取请求和计划 故意从主侧边栏中省略。每个保留的项目都是一个 路径键控 tab/group 可以是 独立倒塌。项目和对话行公开 非破坏性 pin/archive 操作,独立的对话分支 命令和可排序视图。未保留在侧边栏中的项目仍然存在 可通过设置 → 项目存档发现。 可折叠到图标导轨 (Cmd/Ctrl+B)。
- 产品标识:运行时 shell 复制使用
PI-Desktop;主场英雄和 侧边栏重复使用规范的build/icon_1024.png徽标,而输入框提示 行没有领先的品牌图标,会话创建控件使用专用的 消息加号图标。开 Windows/Linux,扩展侧边栏以键盘可访问的主页开始 右侧的品牌和搜索加折叠侧边栏控件;激活 品牌返回主窗格进行聊天。 macOS 扩展侧边栏省略了 logo/title 品牌,仅将“搜索”和“折叠”侧栏放在右侧 红绿灯行Codex仅保留外部导入源或 设计参考术语。 - 主窗格:一次仅一个目的地;目的地取代 窗格(它们是页面,而不是模式)。
- 标题栏:平台本机桌面 Chrome (D118)。 macOS 用途
hiddenInset交通灯和系统应用程序菜单。扩展后的 侧边栏将“搜索”和“折叠”侧边栏保持在同一 46 像素行中,并与 交通灯安全区域外的右侧;没有呈现 logo/title 那里,包括全屏。当工作面板打开时,会话 窗格标题栏在右上角托管其折叠控件,因此面板选项卡 标题仍然集中在活动资源上。 Windows/Linux 使用无菜单的无框架 46px 行,并在 左侧和可访问的最小化/最大化或恢复/关闭控件 右(D129)。目的地历史记录仅是快捷方式(Cmd/Ctrl+[和Cmd/Ctrl+]);不呈现 back/forward 按钮。主标题栏没有 通知行动;耐用的本地收件箱从侧边栏页脚打开 改为响铃 (D130/D117)。 - 工作面板:由工件打开的停靠右列(不是覆盖层) 或
Cmd/Ctrl + J。文件、URL、浏览器预览、成功命令和 成功的工作区编辑工件自动创建其资源。一个 组合创建触发器保留审阅、终端、浏览器和 当面板可见时,一键即可文件;打开但不活动的工具显示安静 点,并且活动工具具有受限制的边缘标记。 46px 内容标题 命名 当前资源,直接关闭,为所有打开一个紧凑的切换器 当前会话资源。文件路径在该切换器中保持不同,同时 查看、终端和浏览器按类型进行重复数据删除。Cmd/Ctrl + J揭示了 活动会话的保留面板上下文,无需创建资源选项卡;的 当面板关闭时,创建触发器仍然不可用。一个 成功的活动会话工作区 Write/Edit 工件打开审核; 临时写入、失败写入和后台会话写入永远不会抢走焦点。宽度为 拖动调整大小从 244px 到 720px 并保持在 打开时其固定的承诺宽度。唯一的面板级控制崩溃 面板; 每个会话保留其自己的运行时打开状态、选项卡集、活动选项卡和 渲染器内存中的浏览器资源。选择另一个会话会交换 可见面板上下文而不删除任一会话的状态;选择一个 没有活动对话的工作区隐藏面板而不是 重新解释相关资源。背景工件仅更新它们的 原始会话保留的面板上下文,并且永远不会打开、激活或 调整可见面板的大小。启动关闭,没有保留会话 上下文,并且只有首选面板宽度在启动时保持不变。 工作面板是固定客户区的固定宽度流入列 (ADR 0033)。打开它会将 MainChat 回流到左侧并且不会扩展操作系统 窗户;折叠和最终资源关闭释放空间和分隔线 提交更新首选宽度。在下面受限的 Windows 聊天回流中 它的 360px 目标。本机窗口边缘通过回流调整聊天大小,而不是 面板。 Maximized/fullscreen 不受影响;在显示器之间移动或更改 显示工作区通常协调窗口边界。持久基地 边界是用户的窗口大小。背景工件永远不会改变 可见面板(D163,ADR 0033)。 取代了以前的上下文面板覆盖; workspace/model/status 信息生活 相反,在输入框芯片和设置中。 - 输入框:与工作空间无关的浮动药丸锚定于对话 目的地 - 在底部保留的输入框上方居中居中的空家庭内容 (D111/D204/D206),位于转录本底部,没有项目/本地/分支 铁路(D095)。 其左侧输入操作模式芯片是唯一的活动会话控制 Agent、Plan 和 Goal。 Plan 显示相同 Agent 的规划状态; Goal 显示结果合同的相同批准边界。两者都保留 权限模式芯片并公开其主机写入的不可变
.pi/plan/*.md或提交后的.pi/goal/*.md工件开启器。对话顶部栏 保留模型选择器和窗口操作,但没有重复模式控制。 - 后端状态胶囊:后端出现时出现在标题栏下方 通过打开日志操作重新启动或严重降级 (D080)。
3. 目的地
3. 1 聊天主页(默认)
- 空状态:克制的英雄称号(“我可以帮你建造什么?”——项目名称 当工作区打开时变为点下划线按钮),短静音 支持线、可选的首次运行检查表和底部保留 输入框。任务输入直接在composer中启动;没有开发人员入门 渲染卡片或上下文快速操作行 (D204/D206)。
- 带文字记录:消息流 + 工具披露行 (D071),上下文 每个成功的工作区后立即显示消息范围的审核卡 Write/Edit 行、停靠的 Composer 和内嵌的会话范围权限卡。 该卡读取消息的持久审阅快照而不是当前的 Git diff,因此在提交后保持可见。它显示文件状态和 addition/deletion 进行计数,扩展确切的消息块,并且 提供受保护的回滚;它不是全局成绩单条目。背景 会话的消息、工具和权限事件永远不会取代或覆盖 可见的对话。
3. 2 侧边栏项目组
- 部分:紧凑的
Sessions标题位于Projects之前并拥有 无路径对话创建加上现有的 sort/archive-view 菜单。其 工具栏在创建新会话之前进行排序。两个标题都保持沉默 字形操作,还接受标题或空白上的右键单击创建菜单 列出 chrome,以便部分创建保持可发现性 无需额外镀铬。它的列表之前最多显示五个紧凑行(140px) 内部滚动,因此独立作品保持可见而不会移位 项目导航。以下Projects标题公开了 文件夹选择器操作;保留的项目组使用剩余的高度和 独立滚动。 - 身份:每个组都由规范化的完整项目路径作为密钥,从不 通过可能不明确的文件夹基名。
- 标题:项目名称、活动状态、披露、新任务操作和 溢出菜单。目录标题是一个整行的披露目标; collapse/expand 仅影响子级可见性,相邻组形成一个 密集的树而不是分离的卡片。悬停或聚焦项目标题 揭示完整的项目路径。
- 项目操作:打开文件夹显示项目目录; pin/unpin 更改演示优先级; archive/restore 隐藏或恢复组 默认视图; close 删除保留的选项卡而不删除或 归档 project/session 数据。
- 对话操作:pin/unpin、archive/restore 和删除保留 单独的行动。存档永远不会删除文字记录。打开的文件夹是 项目行动,而不是对话行动。
- 排序:面向用户的模式为最近更新、创建日期、最旧 首先是姓名。固定的行先于未固定的行。遗产依然存在
manual值仍然可读,但并不意味着拖动重新排序手势。 - 对话列表:每组显示最近的十个会话 默认情况下活动排序顺序;剩下的折叠在 再加载 N 个… 后面 单击时展开完整时间分组列表的行。固定行位于前面 未固定的行,并且永远不会被推到折叠后面;展开状态为 没有坚持。
- 独立会话:无路径会话保留在单独的会话中 节并且永远不会继承最后一个活动项目的工作区。
- 并发:shell 一次选择一个可见项目,同时 代理运行状态仍然由会话控制。切换项目选项卡不会 取消背景回合。后台事件仅更新其原始事件 会话并且永远不会更改活动会话、页面、项目或键盘 焦点。
3. 3 拉取请求
带计数的分段 Open/Draft/All 过滤器;行带有图标板、数字、 标题、状态徽章、分支元、外部链接和“与代理一起审核” (创建聊天回合)。需要活动工作区和 gh。
3. 4 预定
创建卡片 + 任务行(cadence/enabled 徽章、提示预览、上次运行、 立即运行/切换/删除)。现在运行会打开一个带有提示的会话。 新任务默认为 Agent。允许保留已迁移的 Plan 或 Goal 任务 已存储,但在提供商、工件之前明确拒绝无人值守的运行, 或使用 PLAN_REQUIRES_INTERACTIVE_SESSION 排队工作;它无法显示或 自动批准合同。 用户必须在启用无人值守之前显式将其切换到 Agent 执行。
3. 5 扩展
扩展目标使用紧凑的标头和由五部分组成的分段 控制 — 已安装 / MCP / 技能 / 子代理 / 市场 — 带有相关选项卡 计数;它不会呈现单独的数字概览带(D202 修正了 D196, 修订了 D169)。 已安装的按状态分组行 — 需要注意/可用更新/活动/ 关闭——在一个细细分隔的面板内。每行保持两行 摘要:插件字形、名称、可选本地标记、id 和版本。团体 标题携带状态,而错误则保持内联。能力,居民 服务状态和带有风险色彩的权限芯片背后是本机详细信息 披露,因此默认列表保持安静而不隐藏它们。激活 范围是一个当前状态触发器;其紧凑的菜单显示“关闭/此项目” / 无处不在和所选项目选择器,无需添加第二个分段 工具栏。图标操作在静止时保持可见(打开面板、溢出菜单 自动更新和卸载),带有可见的 hover/focus 标签。 MCP, 技能和子代理提供自己的范围配置和创作 表面。子代理列出了用户拥有的注册表定义 - 每个都有一个 激活范围、编辑器表、显示和删除 - 位于只读列表之上 有效的委托目录(内置和项目 .pi/agents 文档), 他们唯一的行为就是揭露和“复制我的定义”(D202)。 Marketplace 是一个带有类别芯片和骨架占位符的卡片网格。 ID 以 demo. 开头的仅供开发的市场固定装置是 从客户卡和搜索结果中过滤;保留已安装的副本 可在已安装中进行管理。 详细信息在右侧表中打开(关于、链接、安全说明、风险标签 权限、版本选择器、自述文件)。安装会打开一个权限对话框 按风险层对请求进行分组,并标记升级的新权限。
3. 6 设置(全页接管)
设置替换整个外壳(D063):返回应用程序+搜索+紧凑 按确切顺序排列八个目的地的铁路 基础知识 / 全局 AI / 快捷方式 / 说明/模型配置/导入/项目存档/信息,以及 提升内容卡。 外观取决于基础;全局人工智能行为(权限和上下文 管理)存在于全局人工智能内部;键盘快捷键和 global/project 指令有其自己的目的地;供应商管理位于内部 模型配置。导入扫描支持本地代理存储和呈现 可折叠组中的候选人。项目路径是备用分组 与默认源分组一起,每次扫描或分组更改都会开始 所有团体都崩溃了。项目档案拥有持久的 D086 项目索引 (搜索、添加、展开、固定、archive/restore、关闭和重新打开)并且始终包括 存档记录。打开或切换项目会保留侧边栏选项卡,选择 该项目作为活动工作区,然后返回聊天。其他保留的选项卡 保持开放。扩展管理仍然完全独立于应用程序外壳 扩展目标在 §3.5 中描述。
4. 叠加
| 叠加 | 触发 | 注释 |
|---|---|---|
| 命令面板 | Cmd/Ctrl+K(也根据 D014 的 Cmd/Ctrl+Shift+P) | 内置+插件命令 |
| 模型菜单 | 顶栏模型选择器 | 配置的 provider/model 选择 + 设置条目 (D091) |
| 个人资料菜单 | 侧边栏页脚 | 设置/日志/主题循环 (D041) |
| 通知收件箱 | 侧边栏页脚响铃 | All/Unread 视图、任务 completion/failure 行、标记为全部读取和清除操作 (D130/D117) |
| Toast | 事件(插件 toast、后端恢复、复制) | 顶部中心;默认 4 秒,错误 8 秒 |
5. 导航模型
page状态:chat | pulls | scheduled | plugins | settings;chat是 对话表面路线,而不是操作模式。项目 archive 是projects设置选项卡而不是独立页面。- 目的地历史是线性的;
Cmd/Ctrl+[和Cmd/Ctrl+]遍历它 没有持久的 back/forward 镀铬。 - 当项目选项卡的路径与路径不同时,选择项目选项卡会重用
project.set选择主机工作区并保留其他选项卡。 - 选择项目范围的线程会在切换到之前激活其项目
chat。选择临时线程会清除可见的活动工作区 在加载之前。 - 新任务重用同一项目或临时项目中现有的空草稿 范围而不是堆叠草稿(D088/D093;US-UI-11)。
6. 键盘图(IA级)
| 按键 | 行动 |
|---|---|
| Cmd/Ctrl+K、Cmd/Ctrl+Shift+P | 命令面板 |
| Cmd/Ctrl+B | 切换侧边栏 |
| Cmd/Ctrl+[ | 之前的目的地 |
| Cmd/Ctrl+] | 下一个目的地 |
| Cmd/Ctrl+N | 新任务 |
| Cmd/Ctrl+O | 开放项目 |
| Cmd/Ctrl+, | 设置 |
| Cmd/Ctrl+。 | 中止当前运行 |
| 输入/Shift+Enter | 发送/换行符(可配置回车发送) |
| ESC | 关闭 overlay/menu |
7. 依赖于状态的 chrome
- 未配置提供商 → 首次运行前阻止设置指导 (
MODEL_NOT_CONFIGURED)。 - 无工作区 → 无项目下划线的主页英雄;拉取请求显示 工作区所需的空状态。输入框从不渲染工作区轨道。
- 后台项目会话 → 原始项目行保留其 running/error 指标。选定的壳状态可以独立移动,同时 会话工具根仍然与其持久项目绑定;它的文物是 保留在该会话的工作面板上下文中,无需打开或激活 当前所选项目上的选项卡。消息、工具事件、权限 请求和小组资源仍限于该会议。明确地 打开对话会恢复其保留的面板上下文并显示任何内容 待批准的许可卡及其原始截止日期。
- Completed/failed 转不可见→ host-core 附加一个持久的 收件箱行。结果显示在可见的、集中的当前聊天和每个
aborted转不追加。后台会话和任何回合结束时 窗口未聚焦仍在追加。侧边栏页脚钟形徽章显示 未读计数;选择一行标记其已读取并激活其绑定 project/session。 仅当 应用程序窗口未获得焦点,单击它会在激活之前使窗口获得焦点 同一次会议(D117)。接收持久通知或本机通知 事件永远不会自行导航;只有显式激活才可以。 - 后端降级→状态胶囊(重新启动)或带有打开的致命横幅 日志(D080);输入框提交的内容在关闭时被拒绝并出现可读错误。
- Plan/Goal 检查点 → 原始会话仅显示结构化标题 以及其不可变的
.pi/plan/*.md工件的开场白。渲染器保留最新的 每个会话的 proposal/execution 快照仅适用于当前渲染器 生命周期,由现场主持人活动更新;只有一个活动的pending行构成 审批门。通过plans.pending重新加载,同时保留相同的主机 alive 恢复了一个仍然悬而未决的行及其原始截止日期。被拒绝, 过期、approved/completed 和中断的终端卡不属于 再水化;终端卡可能保持可见且不可操作,直到 渲染器重新加载。拒绝、过期或中断清除了批准之门, 使会话保持合同状态且可编辑,并且需要稍后转向 创建一个新的工件。在等待期间,草案仍然可见,但 只读且仅启用“批准”或“拒绝”操作。 Host/app 重启 在 RPC 之前中断之前的工作,没有重播或过时的操作;待定 未批准的工作仍保留 Plan,而已批准的工作则中断执行 仍然是 Agent。 UI 不需要显示中断的终端 重启后的快照。
- Plan/Goal 检查点 → 原始会话仅显示结构化标题 以及其不可变的
8. 国际化
英语是源语言环境; zh-CN 与壳牌镀铬并行发货 (由 US-UI e2e 场景断言的标签)。复制规则位于 02-i18n-english-first。