Skip to content

核心概念

三个包的关系

┌─────────────────────────────────────────────┐
│                  你的 CLI 应用                │
├─────────────┬───────────────┬───────────────┤
│  xcli-core  │  xcli-browser │    xpage      │
│  (通用框架)   │  (桥接层)      │  (浏览器引擎)  │
│             │               │               │
│ - 插件系统   │ - Worker 适配  │ - CDP 连接    │
│ - 命令路由   │ - 浏览器命令   │ - 页面操作    │
│ - Daemon    │ - 录制/回放    │ - 选择器引擎  │
│ - 会话管理   │               │               │
└─────────────┴───────────────┴───────────────┘

mpage = 浏览器引擎(可替换)

@dyyz1993/xpage 是底层浏览器自动化引擎,提供:

  • 统一命令接口 — 所有操作通过 (page, args) => Promise<result>
  • 录制与回放 — 录制用户交互并自动重放
  • 页面结构提取 — 获取语义化布局树
  • 无障碍树 — 提取 ARIA 无障碍信息

它是一个纯库,可以直接在 Node.js 中使用,不绑定任何 CLI 框架。

xcli-core = 通用框架(不关心浏览器)

@dyyz1993/xcli-core 是领域无关的 CLI 框架,提供:

  • 插件系统 — jiti 运行时加载 TypeScript 插件
  • 命令注册 — Zod 驱动的参数校验
  • Daemon 进程 — 常驻后台进程 + Worker 池
  • 会话管理 — 命名会话 + 持久化
  • 脚手架引擎 — 模板化项目生成

xcli-core 可以完全脱离浏览器独立使用。database 和 api 模板就是最好的证明。

xcli-browser = 桥接层(粘合两者)

xcli-browser 将 xpage 的浏览器能力接入 xcli 框架,提供:

  • Worker 适配 — 将浏览器操作封装为 WorkerEntryPoint
  • 浏览器命令 — 通过插件注册 35+ 页面命令
  • 录制/回放 — 将 xpage 的录制能力暴露为 CLI 命令

对不同人的价值

浏览器自动化开发者

直接用 @dyyz1993/xpage,不需要了解 CLI 框架:

typescript
import { executePageCommand } from '@dyyz1993/xpage';

CLI 工具开发者

@dyyz1993/xcli-core 构建任何领域的 CLI 工具:

typescript
import { Core } from '@dyyz1993/xcli-core';

插件开发者

在已有 xcli 项目中编写插件,5 分钟上手:

typescript
export default function (xcli: XCLIAPI): void {
  const site = xcli.createSite({ name: 'my-plugin', url: '' });
  site.command('hello', { handler: async (params) => ({ ok: true }) });
}

基于 MIT 许可发布