路由圖
應用程式外殼
標題為「應用程式外殼」的章節應用程式外殼(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 |