模块由三个协作层次组成: - 页面层 pages/Settings.tsx 作为单一聚合组件,通过 api.getLLMSettings/getDataSourceSettings/getChannelStatus 并行拉取三类设置,并以本地表单 state(LLMFormState)驱动提交到 api.updateLLMSettings/updateDataSourceSettings;桌面端额外通过 window.vibeDesktop.setCredential 写入系统凭据并调用 restartBackend。 - 可复用设置子组件 components/settings/ModelPicker.tsx(无障碍 combobox 模型选择器)和 QVerisSettings.tsx(独立于主 Settings 的 QVeris 配置面板,直接通过 fetch + authHeaders() 调用 /qveris/config 与 /qveris/status),被 Settings 以 <Outlet /> 同级卡片形式嵌入。 - 全局布局 components/layout/Layout.tsx 使用 React Router 的 Outlet 渲染页面内容,左侧侧边栏维护导航项、会话列表(CRUD 调用 api.list/delete/renameSession)、暗色模式与语言切换(LanguageSwitcher 通过 position: fixed 计算定位以规避祖先 overflow),并通过 ConnectionBanner 消费 useAgentStore 的 SSE 状态展示重连/断线提示。 依赖方向单向:Layout → ConnectionBanner;Settings → ModelPicker / QVerisSettings;所有组件均通过 @/lib/api 或 @/i18n 访问共享能力,不互相引用。