跳至內容

路由圖

應用程式外殼(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