跳转到内容

路由图

应用外壳(ControlCenterLayout)通过 ShellRoute 包裹工作区内的每一条路由。外壳内的每个目的地都带工作区前缀——/workspaces/:workspaceId/…——而 URL 中的工作区 id 是活动工作区的唯一事实来源。 只有上下文建立之前的界面没有前缀:/splash、/onboarding、/signed-out 以及裸的 /workspaces 选择器,它们都是全屏的,位于外壳之外。

当已登录用户至少连接了一个代码托管平台,并且至少存在一个工作区时,这道门槛才算通过。

缺少凭据与缺少设置是两个不同的界面,区分依据是 users.onboarding_finished_at,它读自调用者自己的 identity.me——绝不是“工作区存在”这一条件,因为一旦有人被邀请进一个并非自己创建的工作区,该条件立刻就错了。在未连接任何代码托管平台时,已完成入门的账户会前往 /signed-out 重新认证;尚未完成的则前往 /onboarding。在该标志仍未知期间,守卫会停留在启动画面上,而不是凭空猜测,因为它绝不会把人从入门流程中重定向出去。

路径 界面
/splash 启动画面,用于判定入门门槛
/onboarding 连接代码托管平台、创建或加入工作区、沙盒、默认适配器,然后是语音。当账户已属于某个工作区时,会跳过工作区这一步
/signed-out 重新认证:与设置渲染的代码托管连接卡片相同,但没有步骤条,也没有继续按钮——一旦有代码托管平台上报,路由器会自行离开
/workspaces 工作区列表与选择器
/workspaces/:workspaceId 重定向到 /workspaces/:workspaceId/inbox

下表中的路径省略了 /workspaces/:workspaceId 前缀。

路径 查询参数 界面
/inbox — 统一收件箱:按审查生命周期分类的 PR,以及阻塞操作员的非 PR 工作。通过守卫后的落地路由;裸的 /workspaces/:workspaceId 会重定向到这里
/spaces — 空间界面,未选择任何空间
/spaces/:spaceId ?m=<messageId>, ?tab=<key> 单个空间;m 深度链接到某条消息,并在打开时被消费一次
/tickets — 工单看板
/tickets/:ticketId — 工单主从视图
/projects/:projectId — 项目概览
/pull-requests ?repo=<owner/name> PR 列表;repo 会在左侧栏中选中该仓库
/pull-requests/compose ?space=<spaceId> 撰写新的 pull request;space 指定由哪个空间的隔离工作树提供分支
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> PR 详情,带差异查看器;comment 是某条评论的数字 REST id
/pipelines — 流水线运行列表
/pipelines/run ?templateId=<id> 手动运行启动器
/pipelines/:runId — 流水线运行详情(步骤时间线)
/plans — Plan Studio 中心:活动计划、计划文档、剧本
/plans/:kind/:id — 单个计划的 Plan Studio;kind 为 orchestration 或 document
/meetings — 会议列表
/meetings/record — 实时会议录制界面
/meetings/:meetingId — 会议详情:笔记、转写、待办事项、决策
/calendar — 日历:月、周和议程视图
/calendar/:eventId — 日历事件详情(同级路由;共用日历页面键)
/newsfeed — 新闻流列表
/newsfeed/article/:articleId — 文章阅读器
/observability — 可观测性中心:覆盖工作区运行日志信息流的用量、洞察、实时和质量标签页。默认打开用量标签页
/users/:login — GitHub 用户个人资料
/teams/:organization/:slug — GitHub 组织团队个人资料
/api-keys — API 密钥管理。没有导航入口——只能通过 URL 访问
/settings/… — 设置界面(见下文)

对话和线程没有自己的路由——线程是 /spaces/:spaceId 内部的一个对话,以编辑器标签页的形式打开,而不是通过 URL 寻址。

不存在 /dashboard 路由,也没有仪表盘界面。分析界面是 /observability,从侧边栏页脚进入。

侧边栏中没有“计划”条目。Plan Studio 会在产出该计划的对话中、从该计划所在的行以编辑器标签页打开;/plans 与 /plans/:kind/:id 是深层链接。

/observability 和 /pull-requests/compose 在路由标题注册表和面包屑注册表中都没有条目,因此两者在窗口标题里只显示应用名,也没有面包屑路径。

/settings 会重定向到 /settings/you/appearance。侧边栏的设置按钮和 Cmd/Ctrl + , 都会前往 /settings/you/appearance。

设置路径按作用域划分命名空间——you/、workspace/、server/——因为该段说明了改动会影响谁。有两条路径早于这一命名空间划分,在 URL 中不带作用域:/settings/memory 和 /settings/pipelines。

路径 界面
/settings/you/appearance 主题、语言、字体排印、编辑器主题(设置的落地页)
/settings/you/notifications 按事件开关、免打扰时段
/settings/you/keybindings 键盘快捷键参考(只读)
/settings/you/audio 麦克风、听写、会议检测和声景输出
/settings/you/devices 已配对的手机与远程控制
/settings/you/newsfeed 信息流管理:订阅源、刷新、阅读状态
路径 界面
/settings/workspace/profile 此工作区中的个人资料与身份:姓名、git 作者、代码托管、日历
/settings/workspace/general 名称、徽标、敏感 glob、审阅并发数、分支命名、同步健康状况、聊天桥接、危险区域
/settings/workspace/meetings 会议笔记模板和保存的声纹档案
/settings/workspace/members 名册、邀请、审计追踪。审计追踪用可选的 ?cursor= 分页
/settings/workspace/repositories 此工作区中注册的仓库
/settings/workspace/agents 已注册的智能体身份
/settings/workspace/skills 技能配置
/settings/memory 工作区记忆:事实、策略、知识图谱
/settings/workspace/permissions 智能体权限:护栏矩阵和假设推演
/settings/pipelines 流水线模板
/settings/pipelines/:templateId 流水线模板编辑器(拖放式画布)
路径 界面
/settings/server/connection 连接与状态
/settings/server/sso 单点登录(SAML、OIDC、SCIM 预配)
/settings/server/providers 模型提供商与适配器
/settings/server/mcp 内置与外部 MCP 服务器
/settings/server/voice 语音与会议模型(ASR、说话人分离)
/settings/server/rigs 机台:此主机能启动什么、基础镜像、自定义镜像、运行中的机器
/settings/server/sandbox 沙盒执行授权:智能体可从你仓库的工作副本中运行的程序
/settings/server/diagnostics 诊断与隐私:沙盒、嵌入、日志记录、崩溃报告
/settings/server/backup 备份与恢复:安装快照、按工作区导出、导入与删除
/settings/server/about 关于与更新

lib/features/settings/settings_nav.dart 中的 kSettingsNav 是这份列表的唯一事实来源。settings_nav_test.dart 固定了唯一的 id、唯一的路由、展平后的 J/K 顺序以及这三个作用域。它不会遍历每一个已注册的 GoRoute。

关注点 文件
路由器 lib/router/app_router.dart
路由构建器 lib/router/routes.dart
认证守卫 lib/router/guards.dart
入门门槛 lib/features/auth/providers/onboarding_providers.dart
设置导航 lib/features/settings/settings_nav.dart