# Extension OS **Repository Path**: legend0/extension-os ## Basic Information - **Project Name**: Extension OS - **Description**: 扩展OS是一个创新的浏览器扩展项目,通过提供桌面环境、应用管理、脚本兼容、标签管理等功能,将浏览器扩展的使用体验提升到操作系统级别。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-08 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 扩展OS(Extension OS) --- ## 📄 文档版本信息 | 版本 | 日期 | 作者 | 变更说明 | |:---|:---|:---|:---| | v2.0 | 2026-8-8 | Legend | 最终版本,移除UI设计,聚焦系统架构 | --- ## 一、项目概述 ### 1.1 项目背景 浏览器扩展生态日益丰富,但用户面临以下问题: - 多个扩展之间缺乏统一的入口和管理界面 - 用户脚本(UserScript)需要额外的扩展(如暴力猴)来运行 - CRX文件无法在不安装的情况下预览和试用 - 浏览器标签页管理功能分散 **扩展OS**旨在创建一个运行在浏览器扩展中的"操作系统",统一管理用户脚本、CRX应用和浏览器标签页,提供类似桌面操作系统的使用体验。 ### 1.2 项目目标 | 目标 | 描述 | |:---|:---| | **统一入口** | 提供桌面环境,集中管理所有应用 | | **脚本兼容** | 完整支持暴力猴脚本生态(UserScript) | | **扩展兼容** | 有限支持CRX文件的解析和运行 | | **标签管理** | 增强的标签页导航和管理功能 | | **文件系统** | 基于WebDAV的远程文件管理 | | **安全加密** | 完整的加密体系和权限管理 | | **应用中心** | 内置应用商店,一键安装应用 | ### 1.3 技术定位 - **运行环境**:Chrome/Edge等Chromium内核浏览器 - **Manifest版本**:V3 - **架构模式**:分层架构(内核层→核心层→抽象层→服务层→UI层) - **开发语言**:TypeScript --- ## 二、总体架构设计 ### 2.1 架构分层图 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ UI层(Presentation Layer) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 桌面环境 │ │ 窗口管理 │ │ 任务栏 │ │ 设置中心 │ │ 通知中心 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ 服务层(Service Layer) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 应用管理 │ │ 脚本引擎 │ │ CRX引擎 │ │ 标签管理 │ │ 文件服务 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 应用商店 │ │ 权限管理 │ │ 更新服务 │ │ 通知服务 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ 抽象层(Abstraction Layer) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 文件系统 │ │ 进程管理 │ │ 消息总线 │ │ 存储抽象 │ │ 缓存管理 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ 核心层(Core Layer) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 内核调度 │ │ 资源管理 │ │ 安全沙箱 │ │ 生命周期 │ │ 事件引擎 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ 浏览器API层(Host Layer) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │chrome.* │ │ storage │ │scripting │ │ runtime │ │ tabs │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` ### 2.2 数据流转设计 ``` 用户操作 → UI层 → 服务层 → 抽象层 → 核心层 → 浏览器API ↑ ↓ └── 事件回调 ──────┘ ``` --- ## 三、核心模块详细设计 ### 3.1 内核层(Kernel Layer) #### 3.1.1 职责定义 内核层是扩展OS的根基,负责最基础的管理和调度。 #### 3.1.2 核心组件 | 组件 | 职责 | 关键功能 | |:---|:---|:---| | **进程调度器** | 管理所有应用的进程 | 创建、销毁、调度、状态监控 | | **资源管理器** | 管理系统资源分配 | 内存、CPU、存储配额管理 | | **安全沙箱** | 提供隔离执行环境 | 权限验证、资源隔离、安全审计 | | **生命周期管理** | 管理应用状态流转 | 安装→启动→运行→停止→卸载 | | **事件引擎** | 系统事件分发 | 事件注册、路由、广播 | #### 3.1.3 进程管理 ``` 进程状态流转: 创建(Created) → 就绪(Ready) → 运行(Running) → 停止(Stopped) ↓ 错误(Error) ↓ 终止(Terminated) ``` **进程资源限制:** - 内存上限:50MB/进程 - CPU使用率:不超过30% - 并发进程数:最大20个 - 启动超时:10秒 #### 3.1.4 安全沙箱设计 | 隔离维度 | 实现方式 | |:---|:---| | **内存隔离** | 每个应用独立的内存空间 | | **存储隔离** | 按应用ID命名空间隔离chrome.storage | | **网络隔离** | 限制应用的网络访问范围 | | **DOM隔离** | 使用iframe沙箱隔离界面 | --- ### 3.2 核心层(Core Layer) #### 3.2.1 职责定义 在Kernel之上,提供更高级的核心服务。 #### 3.2.2 核心组件 | 组件 | 职责 | 依赖 | |:---|:---|:---| | **应用管理器** | 应用的安装、卸载、启动、停止 | 内核层 | | **脚本引擎** | 用户脚本的解析、注入、执行 | 内核层 | | **CRX引擎** | CRX文件的解析、加载、运行 | 内核层 | | **标签管理器** | 浏览器标签的同步、分组、管理 | 浏览器API | | **文件服务** | WebDAV文件系统的统一抽象 | 抽象层 | #### 3.2.3 应用管理器 **应用数据模型:** ```javascript { id: 'app_xxxxx', // 唯一标识 name: '百度网盘助手', // 应用名称 version: '1.2.0', // 版本号 type: 'userscript|crx|internal|bookmark', icon: 'data:image/...', // 图标 description: '...', // 描述 author: '...', // 作者 permissions: ['storage'], // 权限列表 config: { // 类型特定配置 // userscript: { scriptCode, matchUrls, runAt } // crx: { manifest, files } // bookmark: { url } }, status: 'installed|running|stopped|error', installedAt: 1234567890, enabled: true } ``` **应用类型识别规则:** | 输入 | 识别方式 | 处理模块 | |:---|:---|:---| | `.user.js` | 文件名后缀或`// ==UserScript==` | 脚本管理器 | | `.crx` | 文件头`Cr24`魔术数字 | CRX管理器 | | `.zip` | ZIP头`PK\x03\x04`+manifest.json | CRX管理器 | | URL | 以http/https开头 | 书签管理器 | | JSON | 内容为JSON格式 | 配置导入器 | #### 3.2.4 脚本引擎 **UserScript元数据支持:** | 标签 | 用途 | 示例 | |:---|:---|:---| | @name | 脚本名称 | @name 百度网盘助手 | | @namespace | 命名空间 | @namespace https://example.com/ | | @version | 版本号 | @version 1.2.0 | | @match | 匹配URL(白名单) | @match *://pan.baidu.com/* | | @include | 包含URL | @include *://*/* | | @exclude | 排除URL | @exclude *://example.com/* | | @require | 依赖外部脚本 | @require https://code.jquery.com/jquery-3.6.0.min.js | | @grant | 申请GM API | @grant GM_xmlhttpRequest | | @run-at | 执行时机 | @run-at document-end | **GM_* API实现映射:** | GM API | 实现方式 | 限制 | |:---|:---|:---| | GM_setValue | chrome.storage.local.set | 命名空间隔离 | | GM_getValue | chrome.storage.local.get | 命名空间隔离 | | GM_deleteValue | chrome.storage.local.remove | 命名空间隔离 | | GM_listValues | chrome.storage.local.get(null) | 命名空间隔离 | | GM_xmlhttpRequest | fetch API代理 | 需跨域处理 | | GM_notification | chrome.notifications.create | 需通知权限 | | GM_openInTab | chrome.tabs.create | - | | GM_download | 创建a标签下载 | - | | GM_addStyle | 动态插入style标签 | - | | GM_setClipboard | navigator.clipboard.writeText | 需剪贴板权限 | **CSP绕过策略:** 1. 首选:`world: 'MAIN'`(Manifest V3) 2. 备选:`blob:` URL执行 3. 降级:`data:` URI执行 4. 最后:动态script标签插入 --- ### 3.3 抽象层(Abstraction Layer) #### 3.3.1 职责定义 提供统一的抽象接口,屏蔽底层实现细节。 #### 3.3.2 核心组件 | 组件 | 职责 | 实现细节 | |:---|:---|:---| | **文件系统抽象** | 统一文件操作接口 | WebDAV + 本地缓存 | | **进程管理抽象** | 统一进程管理接口 | 内核层进程管理封装 | | **消息总线** | 跨组件通信 | 发布-订阅模式 | | **存储抽象** | 统一存储接口 | chrome.storage + IndexedDB | | **缓存管理** | 多级缓存管理 | 内存 + IndexedDB + LRU | #### 3.3.3 消息总线设计 ``` 消息总线(Event Bus) ├── 系统消息频道 │ ├── app:installed │ ├── app:uninstalled │ ├── app:started │ ├── app:stopped │ └── system:lock ├── 应用消息频道 │ ├── app:{id}:ready │ ├── app:{id}:error │ └── app:{id}:message └── 标签消息频道 ├── tab:created ├── tab:updated ├── tab:closed └── tab:activated ``` **消息中间件:** - 日志中间件:记录所有消息 - 权限中间件:验证消息发送权限 - 过滤中间件:按规则过滤消息 --- ### 3.4 服务层(Service Layer) #### 3.4.1 职责定义 提供具体业务服务。 #### 3.4.2 核心服务 | 服务 | 职责 | 关键功能 | |:---|:---|:---| | **应用商店服务** | 应用下载、安装、更新 | 远程应用列表、版本管理 | | **权限管理服务** | 权限申请、授予、撤销 | 权限分级、审计日志 | | **更新服务** | 系统和应用更新 | 版本检测、增量更新 | | **通知服务** | 系统通知管理 | 消息聚合、免打扰模式 | #### 3.4.3 权限管理体系 **权限级别:** | 级别 | 权限 | 授予方式 | |:---|:---|:---| | **基础** | storage, file.read | 自动授予 | | **网络** | network, fetch | 安装时确认 | | **UI** | notification, tabs | 安装时确认 | | **高级** | scripting, webRequest | 运行时确认 | | **系统** | management, system | 仅系统应用 | **权限申请流程:** 1. 应用声明需要的权限 2. 系统检查是否已授权 3. 未授权则弹出权限确认对话框 4. 用户确认后授予权限 5. 权限记录存储到chrome.storage --- ## 四、安全与加密模块设计 ### 4.1 安全架构 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ 安全与加密架构 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ 加密服务层 │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ 密钥管理 │ │ 数据加密 │ │ 数据解密 │ │ 密钥派生 │ │ │ │ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ 加密算法层 │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ AES-GCM │ │ PBKDF2 │ │ SHA-256 │ │ HKDF │ │ │ │ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` ### 4.2 密钥层次结构 ``` 锁屏密码(用户输入) ↓ PBKDF2(100,000次迭代) 主密钥(Master Key)256-bit AES ↓ HKDF扩展 ┌───────┼───────┬───────┐ ↓ ↓ ↓ ↓ 系统密钥 应用密钥1 应用密钥2 应用密钥N (系统数据) (应用数据) (应用数据) (应用数据) ``` ### 4.3 加密算法选择 | 使用场景 | 算法 | 参数 | |:---|:---|:---| | 数据加密 | AES-GCM | 256-bit密钥,12字节IV | | 密钥派生 | PBKDF2-HMAC-SHA256 | 100,000次迭代 | | 密钥扩展 | HKDF-SHA256 | 32字节输出 | | 完整性校验 | SHA-256 | - | | 随机数生成 | window.crypto.getRandomValues | - | ### 4.4 数据加密格式 ```javascript { version: '1.0', // 加密格式版本 algorithm: 'AES-GCM', // 加密算法 iv: 'Base64编码的IV', // 初始化向量(12字节) salt: 'Base64编码的盐', // 应用特定盐(可选) ciphertext: 'Base64编码的密文', // 加密后的数据 authTag: 'Base64编码的认证标签' // GCM认证标签(16字节) } ``` ### 4.5 加密数据分类 | 数据分类 | 是否加密 | 加密方式 | 加密密钥 | |:---|:---|:---|:---| | 锁屏密码盐 | ❌ | - | - | | 系统配置 | ✅ | AES-GCM | 系统密钥 | | 应用列表 | ✅ | AES-GCM | 系统密钥 | | 应用数据(脚本代码) | ✅ | AES-GCM | 对应应用密钥 | | 应用存储(GM_*存储) | ✅ | AES-GCM | 对应应用密钥 | | 标签页会话 | ✅ | AES-GCM | 系统密钥 | | 文件缓存 | ✅ | AES-GCM | 系统密钥 | | WebDAV认证信息 | ✅ | AES-GCM | 系统密钥 | | 用户偏好设置 | ✅ | AES-GCM | 系统密钥 | | 安全日志 | ✅ | AES-GCM | 系统密钥 | ### 4.6 锁屏机制 #### 4.6.1 锁屏状态机 ``` 未加密 → 设置密码 → 已加密状态 ↓ ┌──────────────┼──────────────┐ ↓ ↓ ↓ 锁定 ←── 解锁 ──→ 解锁 ←── 锁定 ──┘ (输入密码) (超时/手动) ``` #### 4.6.2 错误尝试限制 | 尝试次数 | 响应 | |:---|:---| | 1-3次 | 正常提示"密码错误" | | 第4次 | 提示"剩余尝试次数:1" | | 第5次 | 锁定30秒 | | 第6次 | 锁定60秒 | | 第7次 | 锁定5分钟 | | 第8次 | 锁定30分钟 | | 第9次 | 锁定1小时 | | 第10次 | 锁定24小时 | ### 4.7 安全启动流程 ``` 1. 扩展加载 ↓ 2. 检查是否已设置锁屏密码 ├── 否 → 进入首次启动设置向导 └── 是 → 进入锁屏界面 ↓ 3. 用户输入锁屏密码 ├── 错误 → 记录尝试次数 → 超过限制则锁定 └── 正确 → 继续 ↓ 4. 从chrome.storage读取密码盐 ↓ 5. PBKDF2派生主密钥(100,000次迭代) ↓ 6. 使用主密钥尝试解密系统配置 ├── 失败 → 返回锁屏界面 └── 成功 → 验证通过 ↓ 7. 主密钥保存在内存中 ↓ 8. 派生各应用密钥 ↓ 9. 加载并解密应用列表 ↓ 10. 进入桌面环境 ``` ### 4.8 密码修改与重加密 ``` 1. 用户发起"修改密码" ↓ 2. 验证旧密码 ├── 失败 → 拒绝修改 └── 成功 → 继续 ↓ 3. 用户输入新密码(两次确认) ↓ 4. 使用旧主密钥解密所有数据 ↓ 5. 生成新的随机盐 ↓ 6. 使用新密码+新盐派生新主密钥 ↓ 7. 使用新主密钥重新加密所有数据 ↓ 8. 存储新盐,删除旧盐 ↓ 9. 清空内存中的旧密钥 ↓ 10. 提示修改成功 ``` ### 4.9 安全日志 | 日志类型 | 记录内容 | 保留期限 | 存储方式 | |:---|:---|:---|:---| | 登录日志 | 时间、设备、成功/失败 | 30天 | 加密存储 | | 密码变更日志 | 时间、方式 | 90天 | 加密存储 | | 锁屏日志 | 时间、方式 | 30天 | 加密存储 | | 权限变更日志 | 应用、权限内容 | 30天 | 加密存储 | | 安全事件日志 | 异常尝试、攻击检测 | 90天 | 加密存储 | **安全告警条件:** - 连续5次登录失败 - 密码修改成功 - 检测到暴力破解尝试 - 新设备登录 --- ## 五、功能模块详细设计 ### 5.1 暴力猴脚本兼容模块 #### 5.1.1 核心功能 | 功能 | 描述 | |:---|:---| | **元数据解析** | 解析UserScript头部元数据块 | | **脚本存储** | 存储脚本代码和元数据到chrome.storage | | **匹配检测** | 页面加载时检测匹配的脚本 | | **脚本注入** | 使用chrome.scripting.executeScript注入 | | **GM API** | 完整的GM_* API实现 | | **依赖管理** | 支持@require和@resource | #### 5.1.2 注入流程 ``` 1. 用户访问网页 2. 系统检测URL匹配的脚本 3. 加载脚本代码和依赖 4. 构建GM API环境 5. 封装为IIFE(立即执行函数) 6. 使用chrome.scripting.executeScript注入 7. 主世界执行(world: 'MAIN')绕过CSP 8. 记录注入状态 ``` #### 5.1.3 脚本管理 | 操作 | 功能 | |:---|:---| | 安装 | 从文件或URL安装脚本 | | 启用/禁用 | 切换脚本激活状态 | | 编辑 | 在线编辑脚本代码 | | 删除 | 卸载脚本并清理数据 | | 更新 | 检查并更新脚本版本 | --- ### 5.2 CRX兼容运行模块 #### 5.2.1 CRX文件结构 ``` CRX文件结构: ┌────────────────────────────────────┐ │ 文件头 (Header) │ │ ┌──────────────────────────────────┐│ │ │ Magic: "Cr24" (4 bytes) ││ │ │ Version: 2 或 3 (4 bytes) ││ │ │ Header Length (CRX3) (4 bytes) ││ │ └──────────────────────────────────┘│ ├────────────────────────────────────┤ │ ZIP压缩包 │ │ ┌──────────────────────────────────┐│ │ │ manifest.json ││ │ │ background.js / worker.js ││ │ │ content_scripts/*.js ││ │ │ popup.html / options.html ││ │ │ icons/*.png ││ │ │ 其他资源文件 ││ │ └──────────────────────────────────┘│ └────────────────────────────────────┘ ``` #### 5.2.2 Manifest映射 | Manifest字段 | 处理方式 | 说明 | |:---|:---|:---| | manifest_version | 识别V2/V3 | 决定运行模式 | | background.scripts (V2) | Worker执行 | 模拟background page | | background.service_worker (V3) | Service Worker | 直接运行 | | content_scripts | 注册到脚本引擎 | 匹配URL自动注入 | | browser_action | 创建桌面图标 | 点击打开popup | | options_page | OS窗口打开 | 内嵌选项页 | | permissions | 权限映射 | 映射到OS权限系统 | | web_accessible_resources | 资源映射 | 通过虚拟路径访问 | #### 5.2.3 Chrome API代理 **Storage API:** - 每个CRX应用独立存储命名空间 - 存储键名加上应用ID前缀 - 保证不同应用间的数据隔离 **Runtime API:** - onMessage:通过OS消息总线路由 - sendMessage:转发到目标应用 - connect:使用MessageChannel模拟长连接 - getURL:生成chrome-extension://协议的虚拟URL #### 5.2.4 兼容性限制 | 不支持的功能 | 原因 | 替代方案 | |:---|:---|:---| | webRequest拦截 | 安全限制 | 建议使用独立工具 | | proxy代理设置 | 安全限制 | 系统设置中提供 | | devtools_page | 浏览器限制 | OS内置开发者工具 | | NPAPI插件 | 已弃用 | 使用Web技术替代 | | 自动更新 | 非官方商店 | 应用中心手动更新 | --- ### 5.3 标签页导航管理模块 #### 5.3.1 功能列表 | 功能 | 描述 | |:---|:---| | **标签同步** | 实时同步浏览器标签页状态 | | **标签分组** | 手动/自动分组,支持折叠展开 | | **会话管理** | 保存、恢复、导出会话 | | **快速切换** | 快捷键和搜索框快速切换 | | **批量操作** | 批量关闭、刷新、静音 | | **状态持久化** | 标签状态保存和恢复 | #### 5.3.2 分组策略 **手动分组:** - 用户拖拽标签到分组中 - 可创建、重命名、删除分组 - 分组颜色标记 **自动分组规则:** - 按域名分组 - 按窗口分组 - 按项目分组(URL路径前缀匹配) - 自定义规则 #### 5.3.3 会话管理 **自动保存:** - 每5分钟自动保存 - 最大保留最近10个自动保存点 - 浏览器关闭时自动保存 **手动保存:** - 用户命名保存 - 支持添加备注 - 可设置收藏 **会话恢复:** - 从列表中选择恢复 - 崩溃后自动提示恢复 - 支持选择性恢复 #### 5.3.4 标签同步机制 ``` 浏览器标签事件 → OS标签管理器 → 本地状态更新 → 状态持久化 ↓ tabs.onCreated tabs.onUpdated tabs.onRemoved tabs.onActivated tabs.onMoved tabs.onReplaced windows.onFocusChanged ``` --- ### 5.4 WebDAV文件系统模块 #### 5.4.1 WebDAV协议支持 | 方法 | 用途 | WebDAV扩展 | |:---|:---|:---| | GET | 下载文件 | - | | HEAD | 获取文件头信息 | - | | PUT | 上传文件 | - | | DELETE | 删除文件 | - | | PROPFIND | 列出目录/获取属性 | ✅ | | MKCOL | 创建目录 | ✅ | | MOVE | 重命名/移动 | ✅ | | COPY | 复制 | ✅ | #### 5.4.2 缓存策略 **多级缓存:** ``` 请求 → 内存缓存(L1)→ IndexedDB缓存(L2)→ WebDAV服务器 ``` **缓存参数:** | 缓存级别 | TTL | 最大容量 | |:---|:---|:---| | L1内存缓存 | 5分钟 | 50个文件 | | L2 IndexedDB | 24小时 | 100MB(可配置) | **缓存验证:** - 使用ETag判断文件是否变更 - 使用Last-Modified时间戳验证 #### 5.4.3 大文件处理 **分片上传:** - 每片大小:2MB - 并行上传:最多3个分片 - 断点续传:记录已上传分片 **分片下载:** - 并行下载:最多5个分片 - 合并存储:下载完成后合并 - 进度显示:实时进度 #### 5.4.4 多挂载点管理 ``` 系统支持同时挂载多个WebDAV服务器: webdav:/work/ → https://webdav.company.com/ webdav:/personal/ → https://personal.drive.com/ webdav:/backup/ → https://backup.server.com/ ``` **挂载配置:** ```javascript { name: 'work', url: 'https://webdav.company.com/', auth: { type: 'basic', // basic | bearer | oauth2 username: 'user', password: 'pass' }, options: { cacheSize: 100, // MB autoSync: true, syncInterval: 300 // 秒 } } ``` #### 5.4.5 离线支持 - 已访问文件自动缓存 - 离线状态标记 - 离线写入队列 - 网络恢复后自动同步 - 手动标记"离线可用" --- ### 5.5 应用中心模块 #### 5.5.1 应用分类 | 分类 | 说明 | 示例 | |:---|:---|:---| | 效率工具 | 提升工作效率 | 翻译工具、截图工具 | | 娱乐 | 娱乐内容 | 视频下载、音乐播放 | | 开发工具 | 开发者工具 | JSON格式化、代码美化 | | 用户脚本 | 用户脚本类应用 | 网盘助手、自动签到 | | 系统工具 | 系统管理类 | 进程管理、文件管理 | #### 5.5.2 应用来源 - **内置应用**:随扩展OS一起打包 - **应用商店**:从远程服务器获取 - **本地安装**:用户上传.user.js或.crx文件 - **第三方源**:用户添加自定义应用源 #### 5.5.3 安装流程 ``` 1. 用户浏览应用列表 2. 点击"安装"按钮 3. 系统检查是否已安装 4. 显示权限确认对话框 5. 用户确认权限 6. 下载应用包 7. 验证应用包完整性 8. 解析并安装到系统 9. 桌面显示应用图标 10. 显示安装成功通知 ``` --- ### 5.6 主题与个性化系统 #### 5.6.1 内置主题 | 主题名称 | 主色 | 风格 | |:---|:---|:---| | 极光蓝 | #4A90D9 | 科技感、深邃 | | 暗夜黑 | #6C6C6C | 极致暗色 | | 纯净白 | #2C3E50 | 简洁明亮 | | 翡翠绿 | #2ECC71 | 护眼舒适 | | 珊瑚粉 | #FF6B6B | 温暖柔和 | | 星空紫 | #9B59B6 | 神秘优雅 | #### 5.6.2 自定义主题 用户可自定义: - 主色、辅色、背景色、文字色 - 卡片背景色、边框颜色 - 阴影强度、圆角大小 - 壁纸:纯色、渐变、图片、每日必应 #### 5.6.3 动态主题切换 - 实时切换,无需刷新 - 切换动画:淡入淡出 - 跟随系统主题 - 定时切换(日出/日落模式) --- ### 5.7 多语言国际化系统 #### 5.7.1 语言支持计划 | 语言 | 代码 | 支持状态 | |:---|:---|:---| | 简体中文 | zh-CN | ✅ 完全支持 | | 繁体中文 | zh-TW | ✅ 完全支持 | | 英语 | en-US | ✅ 完全支持 | | 日语 | ja-JP | ⚠️ 计划支持 | | 韩语 | ko-KR | ⚠️ 计划支持 | | 西班牙语 | es-ES | ⚠️ 计划支持 | #### 5.7.2 翻译文件格式 ```json { "desktop": { "title": "桌面", "empty": "桌面是空的", "refresh": "刷新" }, "taskbar": { "start": "开始", "settings": "设置", "lock": "锁定" }, "lock": { "title": "扩展OS 已锁定", "placeholder": "请输入密码", "unlock": "解锁", "attempts": "剩余尝试次数: {count}" } } ``` #### 5.7.3 RTL语言支持 - 支持阿拉伯语、希伯来语等RTL语言 - UI布局自动镜像 - 文本方向自动调整 --- ### 5.8 通知中心系统 #### 5.8.1 通知类型 | 类型 | 优先级 | 示例 | |:---|:---|:---| | 系统通知 | 高 | 系统更新、安全警报 | | 应用通知 | 中 | 应用安装完成 | | 提醒通知 | 中 | 任务提醒 | | 消息通知 | 中 | 应用间消息 | | 错误通知 | 高 | 错误报告、崩溃提示 | #### 5.8.2 免打扰模式 | 模式 | 行为 | 触发方式 | |:---|:---|:---| | 正常模式 | 所有通知正常显示 | 默认 | | 安静模式 | 仅高优先级通知 | 手动切换 | | 专注模式 | 仅系统和错误通知 | 手动切换 | | 勿扰模式 | 所有通知静默保存 | 定时或手动 | #### 5.8.3 通知管理 - 通知历史记录 - 通知分类查看 - 一键清空 - 单个删除 --- ### 5.9 快捷键系统 #### 5.9.1 系统级快捷键 | 快捷键 | 功能 | 可自定义 | |:---|:---|:---| | Ctrl+Shift+E | 打开/关闭扩展OS | ✅ | | Ctrl+Shift+L | 锁定OS | ✅ | | Ctrl+Shift+S | 打开设置 | ✅ | | Ctrl+Shift+N | 打开通知中心 | ✅ | | Ctrl+Shift+W | 关闭当前应用窗口 | ✅ | #### 5.9.2 桌面导航快捷键 | 快捷键 | 功能 | 可自定义 | |:---|:---|:---| | Win/Cmd | 打开开始菜单 | ✅ | | Alt+Tab | 切换应用窗口 | ✅ | | Win+D | 显示桌面 | ✅ | | Win+1-9 | 启动任务栏对应应用 | ✅ | #### 5.9.3 快捷键冲突检测 - 启动时检测快捷键冲突 - 提示用户冲突的快捷键 - 提供快捷键修改界面 - 支持恢复默认快捷键 --- ### 5.10 系统状态与性能监控 #### 5.10.1 监控指标 | 指标类别 | 具体指标 | |:---|:---| | 内存使用 | 总内存、已用内存、可用内存 | | 存储使用 | 总存储、已用存储、可用存储 | | 应用状态 | 运行中应用数、后台应用数 | | 网络状态 | 在线/离线、网络延迟 | | 系统健康 | 系统评分、警告数、错误数 | | 启动时间 | 上次启动耗时 | #### 5.10.2 性能优化建议 | 检测项 | 建议 | |:---|:---| | 内存使用 > 80% | 关闭不用的应用,清理缓存 | | 缓存大小 > 50MB | 执行缓存清理 | | 启动时间 > 2s | 减少开机启动应用 | | 应用崩溃 > 3次/天 | 检查应用版本,报告问题 | --- ### 5.11 桌面小部件系统 #### 5.11.1 内置小部件 | 小部件 | 功能 | 尺寸 | |:---|:---|:---| | 时钟 | 显示时间、日期 | 1×1 | | 天气 | 显示天气、温度 | 2×1 | | 快捷应用 | 常用应用快速启动 | 2×2 | | 系统监控 | CPU、内存、存储使用 | 2×1 | | 笔记 | 快速记事 | 2×2 | | 日历 | 显示日程、日历 | 3×2 | | 待办清单 | 显示待办事项 | 2×2 | #### 5.11.2 小部件操作 - 拖拽移动位置 - 拖拽边缘调整大小 - 悬停显示设置图标 - 点击进入详细视图 - 支持删除和重新添加 --- ### 5.12 搜索与快速启动 #### 5.12.1 搜索范围 | 搜索类型 | 来源 | |:---|:---| | 应用搜索 | 已安装应用列表 | | 脚本搜索 | 已安装用户脚本 | | 标签搜索 | 当前浏览器标签页 | | 书签搜索 | 浏览器书签 | | 历史搜索 | 浏览器历史 | | Web搜索 | 搜索引擎(如Google) | #### 5.12.2 搜索功能 - 支持拼音首字母搜索 - 支持模糊匹配 - 搜索历史自动保存 - 常用应用自动排序优先显示 --- ### 5.13 应用数据备份与恢复 #### 5.13.1 备份类型 | 备份类型 | 内容 | 频率 | |:---|:---|:---| | 自动备份 | 系统配置、应用列表 | 每天 | | 手动备份 | 所有数据(含加密数据) | 按需 | | 云备份 | 所有数据(加密) | 每周 | | 增量备份 | 变更的数据 | 每小时 | #### 5.13.2 备份文件格式 ``` 扩展OS备份文件 (.eosbackup) ├── meta.json # 备份元数据 ├── encrypted/ │ ├── config.enc # 加密的系统配置 │ ├── apps.enc # 加密的应用列表 │ └── data.enc # 加密的应用数据 └── manifest.json # 备份清单 ``` --- ### 5.14 开发者模式与调试工具 #### 5.14.1 开发者工具 | 工具 | 功能 | |:---|:---| | 控制台 | 查看系统日志、执行JavaScript | | 应用调试器 | 调试运行中的应用 | | 性能分析器 | 分析系统性能瓶颈 | | 网络监控 | 监控应用网络请求 | | 存储查看器 | 查看存储数据 | #### 5.14.2 开发功能 - 热重载:修改代码后自动刷新 - 快速安装:从本地文件快速安装 - 模拟测试:模拟不同环境和权限 - 错误追踪:详细的错误堆栈和日志 --- ### 5.15 多用户支持(高级功能) #### 5.15.1 功能列表 | 功能 | 描述 | |:---|:---| | 用户切换 | 在用户间快速切换 | | 数据隔离 | 每个用户独立的数据空间 | | 权限分级 | 管理员/普通用户权限 | | 用户配置 | 每个用户独立的主题和设置 | #### 5.15.2 多用户数据架构 ``` chrome.storage.local/ ├── user_zhangsan/ │ ├── config (加密) │ ├── apps (加密) │ └── data (加密) ├── user_lisi/ │ ├── config (加密) │ ├── apps (加密) │ └── data (加密) └── user_wangwu/ ├── config (加密) ├── apps (加密) └── data (加密) ``` --- ### 5.16 扩展OS应用开发SDK #### 5.16.1 API分类 | API类别 | 功能 | |:---|:---| | OS API | 系统信息、窗口操作 | | Storage API | 数据存储 | | UI API | 创建窗口、通知 | | File API | 文件读写 | | Network API | 网络请求 | | Event API | 事件订阅 | | Tab API | 标签操作 | | Script API | 脚本注入 | #### 5.16.2 应用模板结构 ``` my-app/ ├── manifest.json # 应用清单 ├── index.html # 主界面 ├── main.js # 主逻辑 ├── style.css # 样式文件 └── icons/ # 图标目录 ├── icon-16.png ├── icon-48.png └── icon-128.png ``` --- ## 六、数据存储设计 ### 6.1 存储方案 | 存储方式 | 用途 | 容量限制 | |:---|:---|:---| | chrome.storage.local | 应用配置、用户设置、脚本代码 | 5-10MB | | chrome.storage.sync | 用户偏好设置(跨设备同步) | 100KB | | IndexedDB | 文件缓存、会话历史 | 无限制 | | 内存 | 运行中的应用状态 | 取决于可用内存 | ### 6.2 数据模型 **系统配置:** ```javascript { theme: { ... }, wallpaper: 'url', taskbarPosition: 'bottom', autoSaveInterval: 300, cacheSize: 100, webdavMounts: [ ... ] } ``` **已安装应用列表:** ```javascript { apps: [ { id: 'app_xxx', name: '...', type: 'userscript|crx|internal', // ... 完整应用数据 } ] } ``` **标签页会话:** ```javascript { sessions: [ { id: 'session_xxx', name: '工作会话', timestamp: 1234567890, tabs: [ { title: '...', url: '...', pinned: false } ] } ] } ``` --- ## 七、开发路线图 ### 建档 ### 第四阶段:优化和完善(第7-8个月) - CRX V3兼容 - 性能优化 - 测试和Bug修复 - 发布和文档 --- ## 八、技术选型 | 类别 | 技术 | 说明 | |:---|:---|:---| | 前端框架 | Vue 3 / React | 组件化开发,响应式 | | 状态管理 | Pinia | 轻量级状态管理 | | CSS框架 | Tailwind CSS | 快速UI构建 | | 代码编辑器 | Monaco Editor | VS Code同款编辑器 | | 打包工具 | Vite | 快速开发和构建 | | 存储 | chrome.storage + IndexedDB | 扩展原生存储 | | 构建语言 | TypeScript | 类型安全 | | 测试 | Jest + Playwright | 单元测试和E2E测试 | --- ## 九、风险与应对 | 风险 | 影响 | 应对措施 | |:---|:---|:---| | Chrome API变更 | 功能失效 | 关注API变更通知,及时适配 | | 性能瓶颈 | 用户体验下降 | 优化核心逻辑,实现懒加载 | | 安全漏洞 | 用户数据泄露 | 严格的权限控制和输入验证 | | 兼容性问题 | 部分功能无法使用 | 提供降级方案和替代方案 | | 用户学习成本 | 使用率低 | 提供引导和新手教程 | --- ## 十、总结 扩展OS是一个创新的浏览器扩展项目,通过提供桌面环境、应用管理、脚本兼容、标签管理等功能,将浏览器扩展的使用体验提升到操作系统级别。 **核心优势:** 1. 统一的入口管理所有浏览器扩展和脚本 2. 兼容UserScript和CRX两大生态 3. 完整的加密体系和权限管理 4. 丰富的个性化选项 **适用场景:** - 重度浏览器扩展用户 - 经常使用用户脚本的开发者 - 需要统一管理多个扩展的企业用户 - 喜欢尝试新工具的科技爱好者