架構
Ogma 是本機桌面應用程式,由 Rust 後端、Vue 前端、Electron 外殼、本機專案儲存、外掛執行環境,以及選用的 MCP 整合組成。
高層元件
| 元件 | 位置 | 職責 |
|---|---|---|
| Rust 代理/API 後端 | crates/proxy | MITM 代理、REST API、儲存、掃描器、重送、自動化、外掛、MCP、OAST、瀏覽器控制端點。 |
| Vue 前端 | frontend/src | 工作區 UI、狀態儲存區、路由、編輯器、掃描器、外掛 iframe、AI 工作區、實用工具。 |
| Electron 桌面外殼 | desktop | 封裝後的桌面應用程式、瀏覽器視窗整合、設定橋接、應用程式生命週期。 |
| 文件 | docs | VitePress 文件網站。 |
| 資料目錄 | ogma-data 或平台應用程式資料目錄 | SQLite 資料庫、CA 相關資料、外掛、匯出、備份、檔案。 |
後端
後端提供 REST API 及代理監聽器。主要後端模組包括:
proxy_server.rs:HTTP 攔截與轉送。intercept.rs和intercept_rules.rs:攔截佇列與比對。store.rs和store_actor.rs:專案資料庫存取與非同步儲存控制代碼。api.rs:API 路由與處理函式。replay.rs、automate.rs和workflows.rs:可重複執行的請求。passive_scanner.rs和active_scanner.rs:掃描器引擎。plugins.rs和plugin_runtime.rs:外掛中繼資料、沙箱執行環境、權限與事件。mcp.rs:MCP 資源與工具。ca.rs、tls_cert.rs、client_cert.rs:憑證與 TLS 支援。ws_history.rs、ws_replay.rs和sse.rs:串流流量支援。oast.rs:帶外回呼服務。
前端
前端是 Vue 應用程式,大多數工作區檢視採用路由層級的延遲載入。
主要區域:
router/index.ts:工作區路由與設定路由。components/NavSidebar.vue:產品主要導覽。stores/*:用於歷程記錄、重送、自動化、檢測發現、工作流程、外掛、測試範圍、Shell、AI 及其他狀態的 Pinia 儲存區。api/client.ts和api/types.ts:具型別的 API 用戶端介面。views/*:工作區功能頁面。components/WorkspacePanel.vue:AI 與反向 Shell 工作區面板。views/PluginsView.vue和views/PluginPageView.vue:外掛安裝、管理及前端 iframe 承載。
桌面外殼
Electron 外殼提供封裝後的桌面體驗及原生橋接功能:
- 啟動及控制應用程式視窗。
- 將桌面設定持久儲存於前端本機儲存空間。
- 開啟 Ogma 瀏覽器視窗及嵌入式瀏覽器檢視。
- 封裝資源及二進位檔,以供桌面版本散布。
儲存模型
Ogma 將評估資料保留在本機。後端遷移定義了以下以專案為範圍的資料表:
- HTTP 歷程記錄與本文。
- WebSocket 與 SSE 流量。
- 重送工作階段與嘗試紀錄。
- 自動化工作階段、執行紀錄與結果。
- 檢測發現與證據連結。
- 工作流程與工作流程執行紀錄。
- 測試範圍預設集。
- 外掛與外掛權限。
- 檔案、匯出、備份與設定。
外掛執行環境
外掛可包含後端元件、前端元件,或兩者兼具。
後端外掛在 JavaScript 沙箱內執行,並接收 sdk 物件。前端外掛在沙箱 iframe 中執行,透過 Ogma 控制的橋接通訊。
重要界線:
- 前端外掛無法存取父層 DOM。
- 橋接命令會在伺服器端驗證。
- 受保護的後端操作需要已宣告且已授予的權限。
- 已安裝的套件會複製至 Ogma 管理的外掛目錄,以確保執行環境的行為穩定。
參閱外掛系統。
MCP 整合
MCP 伺服器向外部助手提供 Ogma 專案情境資訊,預設以唯讀模式啟動。寫入、匯出、傳送請求、執行工作流程及控制攔截的能力,都需要明確授權。
參閱 MCP 設定。
設計原則
- 預設採本機優先。
- 檢測發現連結至證據。
- 先確定測試範圍,再進行自動化。
- 對 AI、外掛、請求傳送及匯出設置明確的權限限制。
- 為測試人員反覆使用的工作流程提供快速導覽。
- 相容於既有成熟的代理工作流程,同時保留 Ogma 的擴充能力。