Skip to content

整体架构

四层架构

┌─────────────────────────────────────────────────────────────────────┐
│                        应用层 (Application Layer)                     │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐   │
│  │     xbrowser    │  │   Other Apps    │  │  Custom Apps    │   │
│  │  Browser CLI    │  │  Database CLI   │  │  API Tools      │   │
│  └────────┬────────┘  └────────┬────────┘  └────────┬────────┘   │
└───────────┼───────────────────┼───────────────────┼────────────────┘
            ▼                   ▼                   ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    框架层 (Framework Layer)                          │
│              ┌─────────────────────────────┐                       │
│              │      @dyyz1993/xcli-core    │                       │
│              │  Plugin System / Command     │                       │
│              │  Scope / Session / Daemon    │                       │
│              │  WebSocket / Scaffolding     │                       │
│              └──────────────┬──────────────┘                       │
└───────────────────────────┼───────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│                      引擎层 (Engine Layer)                          │
│  ┌─────────────────────────┐  ┌─────────────────────────────┐    │
│  │  @dyyz1993/xpage (mpage)│  │     Playwright             │    │
│  │  Command Execution      │  │  Browser Launch / CDP      │    │
│  │  Recording/Playback     │  │  Page Management           │    │
│  │  Structure / A11y       │  │  Element Interaction       │    │
│  └─────────────────────────┘  └─────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│                     浏览器层 (Browser Layer)                        │
│  ┌─────────────────────────┐  ┌─────────────────────────────┐    │
│  │      Chromium           │  │      Chrome                 │    │
│  │  CDP / Headless         │  │  Remote Debugging           │    │
│  └─────────────────────────┘  └─────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────┘

关键架构决策

为什么三个独立项目?

项目关注点面向
@dyyz1993/xpage浏览器自动化引擎库开发者
@dyyz1993/xcli-coreCLI 框架CLI 工具开发者
xcli-browser端到端浏览器 CLI终端用户

依赖关系

  • xcli-core 可以完全脱离浏览器独立使用
  • mpage 不依赖 xcli-core
  • xcli-browser 是桥接层,粘合两者

xcli-core 内部分层

┌─────────────────────────────────────────────────────┐
│  Core 入口层                                         │
│  Core 类: 命令路由、参数解析、帮助生成、版本管理         │
├─────────────────────────────────────────────────────┤
│  插件协议层                                          │
│  XCLIAPI / SiteInstance / CommandContext             │
├─────────────────────────────────────────────────────┤
│  功能模块层                                          │
│  PluginLoader / ScaffoldEngine / SessionManager      │
│  ScopeRegistry / OutputFormatter / HelpGenerator     │
├─────────────────────────────────────────────────────┤
│  基础设施层                                          │
│  Daemon / WorkerManager / HTTP Server / WS Server    │
│  PluginStorage / IPC / ArgParser                     │
└─────────────────────────────────────────────────────┘

基于 MIT 许可发布