跳转到内容

架构 ​

Ogma 是一款本地桌面应用,由 Rust 后端、Vue 前端、Electron 外壳、本地项目存储、插件运行时及可选的 MCP 集成组成。

高层组件 ​

组件位置职责
Rust 代理/API 后端crates/proxyMITM 代理、REST API、存储、扫描器、重放、自动化、插件、MCP、OAST、浏览器控制端点。
Vue 前端frontend/src工作区 UI、状态存储、路由、编辑器、扫描器、插件 iframe、AI 工作区、实用工具。
Electron 桌面外壳desktop打包后的桌面应用、浏览器窗口集成、设置桥接、应用生命周期。
文档docsVitePress 文档网站。
数据目录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 的可扩展性。

专有软件。保留所有权利。