Compare commits
59 commits
4ced1bb61c
...
9190697e65
| Author | SHA1 | Date | |
|---|---|---|---|
| 9190697e65 | |||
| b1194ef3b7 | |||
| cde00c7548 | |||
| 5e18f378bb | |||
| 39b30af242 | |||
| 99a4ae4048 | |||
| 9b1cd003e0 | |||
| 5ac89d15e0 | |||
| 8f3821b46e | |||
| e8ae854899 | |||
| e423bf2bdd | |||
| 12c0d26f7a | |||
| 0d051abef2 | |||
| b499515565 | |||
| 037f247919 | |||
| b5c1588d52 | |||
| 0b06462aaa | |||
| 76f3658fe5 | |||
| c9623ae775 | |||
| 3bfb5d18f2 | |||
| f78c7e29c1 | |||
| 3ce18ba452 | |||
| 84d4568e0c | |||
| 2890643a25 | |||
| 58458d308f | |||
| 657388f44c | |||
| 81e407f3f6 | |||
| fb4c7523d9 | |||
| f1895edeb6 | |||
| 9aebe0605e | |||
| 6757083383 | |||
| 54aa6ae70a | |||
| 8d1fd88abf | |||
| 725ea3f800 | |||
| fae4fa7e82 | |||
| d8d1865e3e | |||
| ec53635e9f | |||
| 525e6805c3 | |||
| 8fd178eb66 | |||
| 7e0b77ea50 | |||
| bc2380656b | |||
| 19614f5737 | |||
| 98e2d9325e | |||
| e4de305acb | |||
| 4c4c11d356 | |||
| 76c0053f71 | |||
| ef0372c313 | |||
| 06f6ef42d4 | |||
| 06e0a4c118 | |||
| 52520337b5 | |||
| 772bd5b282 | |||
| 86c907c7af | |||
| 9e4b6bd2b7 | |||
| c2432f74cd | |||
| f2d0cf8a49 | |||
| 7bb18002f7 | |||
| 16c121aba7 | |||
| fe4095db80 | |||
| 546304fb4a |
7 changed files with 6 additions and 3673 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -10,3 +10,9 @@ dist/
|
|||
CLAUDE.md
|
||||
.agent/
|
||||
docs/
|
||||
ARCHITECTURE.md
|
||||
DESIGN.md
|
||||
DEVELOPMENT-PLAN.md
|
||||
DISCUSSION.md
|
||||
RESEARCH.md
|
||||
ROADMAP.md
|
||||
|
|
|
|||
498
ARCHITECTURE.md
498
ARCHITECTURE.md
|
|
@ -1,498 +0,0 @@
|
|||
# WPBridge 业务流程与架构设计
|
||||
|
||||
> 详细的业务流程图和系统架构
|
||||
|
||||
*创建日期: 2026-02-04*
|
||||
|
||||
---
|
||||
|
||||
## 1. 核心业务流程
|
||||
|
||||
### 1.1 更新源桥接流程
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ WordPress 更新检查流程 │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
|
||||
WordPress 核心 WPBridge 外部源
|
||||
│ │ │
|
||||
│ 1. 触发更新检查 │ │
|
||||
│ (wp_update_plugins) │ │
|
||||
│──────────────────────────────>│ │
|
||||
│ │ │
|
||||
│ │ 2. 检查是否有自定义源 │
|
||||
│ │ (查询 wpbridge_sources) │
|
||||
│ │ │
|
||||
│ │ 3. 遍历匹配的源 │
|
||||
│ │──────────────────────────────>
|
||||
│ │ │
|
||||
│ │ 4. 获取版本信息 │
|
||||
│ │<──────────────────────────────
|
||||
│ │ │
|
||||
│ │ 5. 缓存结果 │
|
||||
│ │ (transient) │
|
||||
│ │ │
|
||||
│ 6. 返回更新信息 │ │
|
||||
│<──────────────────────────────│ │
|
||||
│ │ │
|
||||
│ 7. 显示更新通知 │ │
|
||||
│ │ │
|
||||
```
|
||||
|
||||
### 1.2 更新下载流程
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 插件/主题下载流程 │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
|
||||
用户点击更新 WPBridge 外部源
|
||||
│ │ │
|
||||
│ 1. 触发下载 │ │
|
||||
│ (upgrader_pre_download) │ │
|
||||
│──────────────────────────────>│ │
|
||||
│ │ │
|
||||
│ │ 2. 检查是否需要桥接 │
|
||||
│ │ (匹配 slug) │
|
||||
│ │ │
|
||||
│ │ 3. 获取下载 URL │
|
||||
│ │ (可能需要认证) │
|
||||
│ │──────────────────────────────>
|
||||
│ │ │
|
||||
│ │ 4. 下载 ZIP 包 │
|
||||
│ │<──────────────────────────────
|
||||
│ │ │
|
||||
│ │ 5. 安全检查 │
|
||||
│ │ (哈希/大小/结构) │
|
||||
│ │ │
|
||||
│ 6. 返回本地文件路径 │ │
|
||||
│<──────────────────────────────│ │
|
||||
│ │ │
|
||||
│ 7. WordPress 安装更新 │ │
|
||||
│ │ │
|
||||
```
|
||||
|
||||
### 1.3 AI 桥接流程
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ AI 请求桥接流程 │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
|
||||
第三方插件 WPBridge AI 服务
|
||||
(如 AI Engine) │ │
|
||||
│ │ │
|
||||
│ 1. 发起 HTTP 请求 │ │
|
||||
│ (api.openai.com) │ │
|
||||
│──────────────────────────────>│ │
|
||||
│ │ │
|
||||
│ │ 2. 白名单检查 │
|
||||
│ │ (是否在拦截列表) │
|
||||
│ │ │
|
||||
│ │ 3. 模式判断 │
|
||||
│ │ ┌─────────────────────────┐│
|
||||
│ │ │ MODE_DISABLED → 放行 ││
|
||||
│ │ │ MODE_PASSTHROUGH → 转发 ││
|
||||
│ │ │ MODE_WPMIND → WPMind ││
|
||||
│ │ └─────────────────────────┘│
|
||||
│ │ │
|
||||
│ │ 4a. 透传模式 │
|
||||
│ │──────────────────────────────>
|
||||
│ │ (用户指定端点) │
|
||||
│ │ │
|
||||
│ │ 4b. WPMind 模式 │
|
||||
│ │──────> WPMind ──────────────>
|
||||
│ │ (国内 AI 服务) │
|
||||
│ │ │
|
||||
│ 5. 返回响应 │ │
|
||||
│<──────────────────────────────│ │
|
||||
│ │ │
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 系统架构
|
||||
|
||||
### 2.1 整体架构图
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ WPBridge 架构 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Admin Layer │ │
|
||||
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
||||
│ │ │ AdminPage │ │ SourceEditor│ │ AISettings │ │ │
|
||||
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Core Layer │ │
|
||||
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
||||
│ │ │ Plugin │ │ Settings │ │ Logger │ │ │
|
||||
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌──────────────────────────┴──────────────────────────────┐ │
|
||||
│ │ │ │
|
||||
│ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │
|
||||
│ │ │ UpdateSource │ │ AIBridge │ │ │
|
||||
│ │ │ Module │ │ Module │ │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ │ ┌───────────────┐ │ │ ┌───────────────┐ │ │ │
|
||||
│ │ │ │SourceManager │ │ │ │ Interceptor │ │ │ │
|
||||
│ │ │ └───────────────┘ │ │ └───────────────┘ │ │ │
|
||||
│ │ │ ┌───────────────┐ │ │ ┌───────────────┐ │ │ │
|
||||
│ │ │ │PluginUpdater │ │ │ │ WPMindBridge │ │ │ │
|
||||
│ │ │ └───────────────┘ │ │ └───────────────┘ │ │ │
|
||||
│ │ │ ┌───────────────┐ │ │ ┌───────────────┐ │ │ │
|
||||
│ │ │ │ ThemeUpdater │ │ │ │ Passthrough │ │ │ │
|
||||
│ │ │ └───────────────┘ │ │ └───────────────┘ │ │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ └─────────────────────┘ └─────────────────────┘ │ │
|
||||
│ │ │ │
|
||||
│ └──────────────────────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Handler Layer │ │
|
||||
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
|
||||
│ │ │ JSON │ │ GitHub │ │ GitLab │ │ WenPai │ │ │
|
||||
│ │ │ Handler │ │ Handler │ │ Handler │ │ Handler │ │ │
|
||||
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.2 目录结构
|
||||
|
||||
```
|
||||
wpbridge/
|
||||
├── wpbridge.php # 主文件
|
||||
├── uninstall.php # 卸载脚本
|
||||
├── CHANGELOG.md # 更新日志
|
||||
│
|
||||
├── includes/
|
||||
│ ├── Core/
|
||||
│ │ ├── Plugin.php # 插件主类
|
||||
│ │ ├── Loader.php # 自动加载
|
||||
│ │ ├── Settings.php # 设置管理
|
||||
│ │ ├── Logger.php # 日志系统
|
||||
│ │ └── Encryption.php # 加密工具
|
||||
│ │
|
||||
│ ├── UpdateSource/
|
||||
│ │ ├── SourceManager.php # 更新源管理
|
||||
│ │ ├── SourceModel.php # 数据模型
|
||||
│ │ ├── PluginUpdater.php # 插件更新器
|
||||
│ │ ├── ThemeUpdater.php # 主题更新器
|
||||
│ │ ├── CacheManager.php # 缓存管理
|
||||
│ │ └── Handlers/
|
||||
│ │ ├── HandlerInterface.php # 统一接口
|
||||
│ │ ├── JsonHandler.php # JSON API
|
||||
│ │ ├── GitHubHandler.php # GitHub
|
||||
│ │ ├── GitLabHandler.php # GitLab
|
||||
│ │ └── WenPaiGitHandler.php # 菲码源库
|
||||
│ │
|
||||
│ ├── AIBridge/
|
||||
│ │ ├── AIGateway.php # AI 网关
|
||||
│ │ ├── Interceptor.php # 请求拦截
|
||||
│ │ ├── WPMindBridge.php # WPMind 桥接
|
||||
│ │ ├── Passthrough.php # 透传模式
|
||||
│ │ └── Adapters/
|
||||
│ │ ├── AdapterInterface.php
|
||||
│ │ ├── YoastAdapter.php
|
||||
│ │ └── RankMathAdapter.php
|
||||
│ │
|
||||
│ └── Admin/
|
||||
│ ├── AdminPage.php # 管理页面
|
||||
│ ├── SourceEditor.php # 更新源编辑器
|
||||
│ └── AISettings.php # AI 设置
|
||||
│
|
||||
├── templates/
|
||||
│ └── admin/
|
||||
│ ├── settings.php
|
||||
│ ├── source-list.php
|
||||
│ ├── source-editor.php
|
||||
│ └── ai-settings.php
|
||||
│
|
||||
├── assets/
|
||||
│ ├── css/
|
||||
│ │ └── admin.css
|
||||
│ └── js/
|
||||
│ └── admin.js
|
||||
│
|
||||
└── languages/
|
||||
└── wpbridge.pot
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 数据模型
|
||||
|
||||
### 3.1 更新源数据结构
|
||||
|
||||
```php
|
||||
// wp_options: wpbridge_sources
|
||||
[
|
||||
[
|
||||
'id' => 'src_abc123', // 唯一标识
|
||||
'name' => 'My Plugin Source', // 显示名称
|
||||
'type' => 'json', // json|github|gitlab|wenpai|zip
|
||||
'slug' => 'my-plugin', // 插件/主题 slug
|
||||
'item_type' => 'plugin', // plugin|theme
|
||||
'source_url' => 'https://...', // 更新源地址
|
||||
'auth_type' => 'token', // none|token|basic|oauth
|
||||
'auth_token' => 'encrypted:...', // 加密存储
|
||||
'branch' => 'main', // Git 分支(可选)
|
||||
'enabled' => true, // 是否启用
|
||||
'priority' => 10, // 优先级
|
||||
'created_at' => '2026-02-04 10:00:00',
|
||||
'updated_at' => '2026-02-04 10:00:00',
|
||||
],
|
||||
// ...
|
||||
]
|
||||
```
|
||||
|
||||
### 3.2 缓存数据结构
|
||||
|
||||
```php
|
||||
// transient: wpbridge_update_cache_{slug}
|
||||
[
|
||||
'version' => '2.0.0',
|
||||
'download_url' => 'https://...',
|
||||
'tested' => '6.4',
|
||||
'requires' => '5.9',
|
||||
'requires_php' => '7.4',
|
||||
'last_checked' => 1707012000,
|
||||
'source_id' => 'src_abc123',
|
||||
]
|
||||
|
||||
// transient: wpbridge_source_health_{source_id}
|
||||
[
|
||||
'status' => 'healthy', // healthy|degraded|failed
|
||||
'last_check' => 1707012000,
|
||||
'error_count' => 0,
|
||||
'last_error' => null,
|
||||
]
|
||||
```
|
||||
|
||||
### 3.3 AI 桥接配置
|
||||
|
||||
```php
|
||||
// wp_options: wpbridge_ai_settings
|
||||
[
|
||||
'enabled' => true,
|
||||
'mode' => 'wpmind', // disabled|passthrough|wpmind
|
||||
'custom_endpoint' => '', // 透传模式的目标端点
|
||||
'whitelist' => [ // 拦截白名单
|
||||
'api.openai.com',
|
||||
'api.anthropic.com',
|
||||
],
|
||||
'adapters' => [ // 启用的适配器
|
||||
'yoast' => true,
|
||||
'rankmath' => false,
|
||||
],
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 核心类设计
|
||||
|
||||
### 4.1 SourceHandlerInterface
|
||||
|
||||
```php
|
||||
<?php
|
||||
namespace WPBridge\UpdateSource\Handlers;
|
||||
|
||||
interface SourceHandlerInterface {
|
||||
/**
|
||||
* 获取处理器能力
|
||||
* @return array ['auth' => [], 'version' => [], 'download' => []]
|
||||
*/
|
||||
public function getCapabilities(): array;
|
||||
|
||||
/**
|
||||
* 获取最新版本信息
|
||||
* @param string $identifier 源标识(URL/仓库地址)
|
||||
* @param array $options 选项(认证信息等)
|
||||
* @return VersionInfo|null
|
||||
*/
|
||||
public function getLatestVersion(string $identifier, array $options = []): ?VersionInfo;
|
||||
|
||||
/**
|
||||
* 获取下载 URL
|
||||
* @param string $identifier 源标识
|
||||
* @param string $version 版本号
|
||||
* @param array $options 选项
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDownloadUrl(string $identifier, string $version, array $options = []): ?string;
|
||||
|
||||
/**
|
||||
* 验证源可用性
|
||||
* @param string $identifier 源标识
|
||||
* @param array $options 选项
|
||||
* @return HealthStatus
|
||||
*/
|
||||
public function checkHealth(string $identifier, array $options = []): HealthStatus;
|
||||
}
|
||||
```
|
||||
|
||||
### 4.2 VersionInfo 值对象
|
||||
|
||||
```php
|
||||
<?php
|
||||
namespace WPBridge\UpdateSource;
|
||||
|
||||
class VersionInfo {
|
||||
public string $version;
|
||||
public string $downloadUrl;
|
||||
public ?string $tested = null;
|
||||
public ?string $requires = null;
|
||||
public ?string $requiresPhp = null;
|
||||
public ?string $changelog = null;
|
||||
public ?string $hash = null;
|
||||
public ?int $fileSize = null;
|
||||
public int $checkedAt;
|
||||
|
||||
public function __construct(string $version, string $downloadUrl) {
|
||||
$this->version = $version;
|
||||
$this->downloadUrl = $downloadUrl;
|
||||
$this->checkedAt = time();
|
||||
}
|
||||
|
||||
public function toArray(): array {
|
||||
return [
|
||||
'version' => $this->version,
|
||||
'download_url' => $this->downloadUrl,
|
||||
'tested' => $this->tested,
|
||||
'requires' => $this->requires,
|
||||
'requires_php' => $this->requiresPhp,
|
||||
'changelog' => $this->changelog,
|
||||
'hash' => $this->hash,
|
||||
'file_size' => $this->fileSize,
|
||||
'checked_at' => $this->checkedAt,
|
||||
];
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.3 HealthStatus 值对象
|
||||
|
||||
```php
|
||||
<?php
|
||||
namespace WPBridge\UpdateSource;
|
||||
|
||||
class HealthStatus {
|
||||
const STATUS_HEALTHY = 'healthy';
|
||||
const STATUS_DEGRADED = 'degraded';
|
||||
const STATUS_FAILED = 'failed';
|
||||
|
||||
public string $status;
|
||||
public int $responseTime; // ms
|
||||
public ?string $error = null;
|
||||
public int $checkedAt;
|
||||
|
||||
public static function healthy(int $responseTime): self {
|
||||
$status = new self();
|
||||
$status->status = self::STATUS_HEALTHY;
|
||||
$status->responseTime = $responseTime;
|
||||
$status->checkedAt = time();
|
||||
return $status;
|
||||
}
|
||||
|
||||
public static function failed(string $error): self {
|
||||
$status = new self();
|
||||
$status->status = self::STATUS_FAILED;
|
||||
$status->responseTime = 0;
|
||||
$status->error = $error;
|
||||
$status->checkedAt = time();
|
||||
return $status;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. WordPress 钩子集成
|
||||
|
||||
### 5.1 更新检查钩子
|
||||
|
||||
```php
|
||||
// 插件更新检查
|
||||
add_filter('pre_set_site_transient_update_plugins', [$this, 'checkPluginUpdates'], 10, 1);
|
||||
|
||||
// 主题更新检查
|
||||
add_filter('pre_set_site_transient_update_themes', [$this, 'checkThemeUpdates'], 10, 1);
|
||||
|
||||
// 插件信息 API
|
||||
add_filter('plugins_api', [$this, 'pluginInfo'], 20, 3);
|
||||
|
||||
// 主题信息 API
|
||||
add_filter('themes_api', [$this, 'themeInfo'], 20, 3);
|
||||
|
||||
// 下载包过滤
|
||||
add_filter('upgrader_pre_download', [$this, 'filterDownload'], 10, 3);
|
||||
```
|
||||
|
||||
### 5.2 AI 拦截钩子
|
||||
|
||||
```php
|
||||
// HTTP 请求拦截(优先级 1,最早执行)
|
||||
add_filter('pre_http_request', [$this, 'interceptAIRequest'], 1, 3);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 错误处理与日志
|
||||
|
||||
### 6.1 错误码定义
|
||||
|
||||
```php
|
||||
class ErrorCodes {
|
||||
// 源相关错误 (1xxx)
|
||||
const SOURCE_NOT_FOUND = 1001;
|
||||
const SOURCE_UNREACHABLE = 1002;
|
||||
const SOURCE_INVALID_RESPONSE = 1003;
|
||||
const SOURCE_AUTH_FAILED = 1004;
|
||||
|
||||
// 下载相关错误 (2xxx)
|
||||
const DOWNLOAD_FAILED = 2001;
|
||||
const DOWNLOAD_HASH_MISMATCH = 2002;
|
||||
const DOWNLOAD_SIZE_EXCEEDED = 2003;
|
||||
const DOWNLOAD_INVALID_ZIP = 2004;
|
||||
|
||||
// AI 桥接错误 (3xxx)
|
||||
const AI_WPMIND_UNAVAILABLE = 3001;
|
||||
const AI_ENDPOINT_UNREACHABLE = 3002;
|
||||
const AI_RESPONSE_INVALID = 3003;
|
||||
|
||||
// 配置错误 (4xxx)
|
||||
const CONFIG_INVALID = 4001;
|
||||
const CONFIG_ENCRYPTION_FAILED = 4002;
|
||||
}
|
||||
```
|
||||
|
||||
### 6.2 日志级别
|
||||
|
||||
```php
|
||||
class Logger {
|
||||
const LEVEL_DEBUG = 'debug';
|
||||
const LEVEL_INFO = 'info';
|
||||
const LEVEL_WARNING = 'warning';
|
||||
const LEVEL_ERROR = 'error';
|
||||
|
||||
public function log(string $level, string $message, array $context = []): void;
|
||||
public function debug(string $message, array $context = []): void;
|
||||
public function info(string $message, array $context = []): void;
|
||||
public function warning(string $message, array $context = []): void;
|
||||
public function error(string $message, array $context = []): void;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*最后更新: 2026-02-04*
|
||||
|
|
@ -1,417 +0,0 @@
|
|||
# WPBridge 开发计划
|
||||
|
||||
> 完整的开发计划和任务分解
|
||||
|
||||
*创建日期: 2026-02-04*
|
||||
|
||||
---
|
||||
|
||||
## 一、项目概述
|
||||
|
||||
### 1.1 项目定位
|
||||
|
||||
**WPBridge(文派云桥)** - 自定义源桥接器,让用户完全控制 WordPress 的外部连接。
|
||||
|
||||
### 1.2 核心价值
|
||||
|
||||
1. **自定义更新源桥接** - 支持自托管更新服务器、商业插件更新源
|
||||
2. **性能优化** - 并行请求、智能缓存、减少后台加载时间
|
||||
3. **AI 服务桥接** - OpenAI API 兼容层,可选依赖 WPMind
|
||||
|
||||
### 1.3 非目标
|
||||
|
||||
- 不替代 WordPress.org 官方源(由文派叶子 WPCY 负责)
|
||||
- 不提供镜像/CDN 服务
|
||||
- 不破解/绕过商业插件授权
|
||||
|
||||
---
|
||||
|
||||
## 二、版本规划
|
||||
|
||||
```
|
||||
v0.1.0 MVP(2-3 周)
|
||||
↓
|
||||
v0.2.0 性能优化 + Git 支持(2-3 周)
|
||||
↓
|
||||
v0.3.0 AI 桥接 + 商业插件(2-3 周)
|
||||
↓
|
||||
v0.4.0 Cloud API(可选,1-2 周)
|
||||
↓
|
||||
v1.0.0 正式发布(1-2 周)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、v0.1.0 MVP 详细计划
|
||||
|
||||
### 3.1 目标
|
||||
|
||||
实现最小可用的更新源桥接功能,确保基础稳定性。
|
||||
|
||||
### 3.2 范围
|
||||
|
||||
| 包含 | 不包含(移至后续版本)|
|
||||
|------|----------------------|
|
||||
| JSON API 桥接 | Git 仓库支持 |
|
||||
| 预置源(文派开源、ArkPress、AspireCloud)| WP-CLI |
|
||||
| 基础缓存和降级 | 诊断工具 |
|
||||
| 简单管理界面 | 配置导入导出 |
|
||||
| 安全基础 | FAIR 支持 |
|
||||
|
||||
### 3.3 任务分解
|
||||
|
||||
#### 阶段 1:插件骨架(Day 1-2)
|
||||
|
||||
```
|
||||
任务 1.1: 创建插件主文件
|
||||
- wpbridge.php(插件头信息、激活/停用钩子)
|
||||
- 预计:2 小时
|
||||
|
||||
任务 1.2: 自动加载器
|
||||
- includes/Core/Loader.php
|
||||
- PSR-4 风格自动加载
|
||||
- 预计:1 小时
|
||||
|
||||
任务 1.3: 插件主类
|
||||
- includes/Core/Plugin.php
|
||||
- 单例模式,初始化各模块
|
||||
- 预计:2 小时
|
||||
|
||||
任务 1.4: 设置管理
|
||||
- includes/Core/Settings.php
|
||||
- wp_options 读写封装
|
||||
- 预计:2 小时
|
||||
```
|
||||
|
||||
#### 阶段 2:数据模型(Day 3-4)
|
||||
|
||||
```
|
||||
任务 2.1: 源类型枚举
|
||||
- includes/UpdateSource/SourceType.php
|
||||
- 统一定义所有源类型
|
||||
- 预计:1 小时
|
||||
|
||||
任务 2.2: 更新源模型
|
||||
- includes/UpdateSource/SourceModel.php
|
||||
- 数据结构、验证、序列化
|
||||
- 预计:2 小时
|
||||
|
||||
任务 2.3: 源管理器
|
||||
- includes/UpdateSource/SourceManager.php
|
||||
- CRUD 操作、预置源加载
|
||||
- 预计:3 小时
|
||||
|
||||
任务 2.4: 预置源配置
|
||||
- includes/UpdateSource/PresetSources.php
|
||||
- 文派开源、ArkPress、AspireCloud
|
||||
- 预计:2 小时
|
||||
```
|
||||
|
||||
#### 阶段 3:核心桥接(Day 5-8)
|
||||
|
||||
```
|
||||
任务 3.1: 处理器接口
|
||||
- includes/UpdateSource/Handlers/HandlerInterface.php
|
||||
- 统一接口定义
|
||||
- 预计:1 小时
|
||||
|
||||
任务 3.2: JSON 处理器
|
||||
- includes/UpdateSource/Handlers/JsonHandler.php
|
||||
- Plugin Update Checker 格式兼容
|
||||
- 预计:3 小时
|
||||
|
||||
任务 3.3: ArkPress 处理器
|
||||
- includes/UpdateSource/Handlers/ArkPressHandler.php
|
||||
- AspireCloud API 兼容
|
||||
- 预计:3 小时
|
||||
|
||||
任务 3.4: AspireCloud 处理器
|
||||
- includes/UpdateSource/Handlers/AspireCloudHandler.php
|
||||
- 预计:2 小时
|
||||
|
||||
任务 3.5: 插件更新器
|
||||
- includes/UpdateSource/PluginUpdater.php
|
||||
- pre_set_site_transient_update_plugins 钩子
|
||||
- plugins_api 钩子
|
||||
- 预计:4 小时
|
||||
|
||||
任务 3.6: 主题更新器
|
||||
- includes/UpdateSource/ThemeUpdater.php
|
||||
- pre_set_site_transient_update_themes 钩子
|
||||
- themes_api 钩子
|
||||
- 预计:3 小时
|
||||
```
|
||||
|
||||
#### 阶段 4:缓存与降级(Day 9-10)
|
||||
|
||||
```
|
||||
任务 4.1: 缓存管理器
|
||||
- includes/Cache/CacheManager.php
|
||||
- Transient 缓存封装
|
||||
- 预计:2 小时
|
||||
|
||||
任务 4.2: 源健康检查
|
||||
- includes/Cache/HealthChecker.php
|
||||
- 连通性测试、状态缓存
|
||||
- 预计:2 小时
|
||||
|
||||
任务 4.3: 降级策略
|
||||
- includes/Cache/FallbackStrategy.php
|
||||
- 过期缓存兜底、失败冷却
|
||||
- 预计:2 小时
|
||||
```
|
||||
|
||||
#### 阶段 5:安全与日志(Day 11-12)
|
||||
|
||||
```
|
||||
任务 5.1: 输入校验
|
||||
- includes/Security/Validator.php
|
||||
- URL 格式、版本号、JSON 结构
|
||||
- 预计:2 小时
|
||||
|
||||
任务 5.2: 密钥加密
|
||||
- includes/Security/Encryption.php
|
||||
- API Key 加密存储
|
||||
- 预计:2 小时
|
||||
|
||||
任务 5.3: 日志系统
|
||||
- includes/Core/Logger.php
|
||||
- 调试日志、错误日志
|
||||
- 预计:2 小时
|
||||
```
|
||||
|
||||
#### 阶段 6:管理界面(Day 13-15)
|
||||
|
||||
```
|
||||
任务 6.1: 管理页面
|
||||
- includes/Admin/AdminPage.php
|
||||
- 设置页面注册
|
||||
- 预计:2 小时
|
||||
|
||||
任务 6.2: 源列表界面
|
||||
- templates/admin/source-list.php
|
||||
- WP_List_Table 实现
|
||||
- 预计:3 小时
|
||||
|
||||
任务 6.3: 源编辑表单
|
||||
- templates/admin/source-editor.php
|
||||
- 添加/编辑更新源
|
||||
- 预计:3 小时
|
||||
|
||||
任务 6.4: 样式和脚本
|
||||
- assets/css/admin.css
|
||||
- assets/js/admin.js
|
||||
- 预计:2 小时
|
||||
```
|
||||
|
||||
### 3.4 文件结构
|
||||
|
||||
```
|
||||
wpbridge/
|
||||
├── wpbridge.php # 主文件
|
||||
├── includes/
|
||||
│ ├── Core/
|
||||
│ │ ├── Plugin.php # 插件主类
|
||||
│ │ ├── Loader.php # 自动加载
|
||||
│ │ ├── Settings.php # 设置管理
|
||||
│ │ └── Logger.php # 日志系统
|
||||
│ │
|
||||
│ ├── UpdateSource/
|
||||
│ │ ├── SourceType.php # 源类型枚举
|
||||
│ │ ├── SourceModel.php # 数据模型
|
||||
│ │ ├── SourceManager.php # 源管理器
|
||||
│ │ ├── PresetSources.php # 预置源配置
|
||||
│ │ ├── PluginUpdater.php # 插件更新器
|
||||
│ │ ├── ThemeUpdater.php # 主题更新器
|
||||
│ │ └── Handlers/
|
||||
│ │ ├── HandlerInterface.php
|
||||
│ │ ├── JsonHandler.php
|
||||
│ │ ├── ArkPressHandler.php
|
||||
│ │ └── AspireCloudHandler.php
|
||||
│ │
|
||||
│ ├── Cache/
|
||||
│ │ ├── CacheManager.php # 缓存管理
|
||||
│ │ ├── HealthChecker.php # 健康检查
|
||||
│ │ └── FallbackStrategy.php # 降级策略
|
||||
│ │
|
||||
│ ├── Security/
|
||||
│ │ ├── Validator.php # 输入校验
|
||||
│ │ └── Encryption.php # 密钥加密
|
||||
│ │
|
||||
│ └── Admin/
|
||||
│ └── AdminPage.php # 管理页面
|
||||
│
|
||||
├── templates/
|
||||
│ └── admin/
|
||||
│ ├── source-list.php
|
||||
│ └── source-editor.php
|
||||
│
|
||||
└── assets/
|
||||
├── css/
|
||||
│ └── admin.css
|
||||
└── js/
|
||||
└── admin.js
|
||||
```
|
||||
|
||||
### 3.5 验收标准
|
||||
|
||||
1. **功能验收**
|
||||
- [ ] 可添加自定义 JSON 更新源
|
||||
- [ ] 预置源(文派开源)可正常检查更新
|
||||
- [ ] 更新信息正确显示在 WordPress 后台
|
||||
- [ ] 可下载并安装更新
|
||||
|
||||
2. **稳定性验收**
|
||||
- [ ] 源不可用时不阻塞后台
|
||||
- [ ] 缓存正常工作
|
||||
- [ ] 错误信息用户友好
|
||||
|
||||
3. **安全验收**
|
||||
- [ ] URL 格式校验有效
|
||||
- [ ] API Key 加密存储
|
||||
- [ ] 无 XSS/SQL 注入风险
|
||||
|
||||
---
|
||||
|
||||
## 四、v0.2.0 性能优化 + Git 支持
|
||||
|
||||
### 4.1 目标
|
||||
|
||||
实现性能优化核心功能,支持 Git 仓库作为更新源。
|
||||
|
||||
### 4.2 关键任务
|
||||
|
||||
#### 性能优化
|
||||
- [ ] 并行请求管理器(ParallelRequestManager)
|
||||
- [ ] 请求去重器(RequestDeduplicator)
|
||||
- [ ] 条件请求(ConditionalRequest)
|
||||
- [ ] 缓存分层(对象缓存 + DB)
|
||||
- [ ] WP-Cron 后台预热(BackgroundUpdater)
|
||||
|
||||
#### Git 仓库支持
|
||||
- [ ] GitHub 处理器(GitHubHandler)
|
||||
- [ ] GitLab 处理器(GitLabHandler)
|
||||
- [ ] Gitee 处理器(GiteeHandler)
|
||||
- [ ] 菲码源库处理器(WenPaiGitHandler)
|
||||
- [ ] 私有仓库认证
|
||||
|
||||
#### WP-CLI
|
||||
- [ ] `wp bridge source` 命令组
|
||||
- [ ] `wp bridge check` 命令
|
||||
- [ ] `wp bridge cache` 命令
|
||||
- [ ] `wp bridge diagnose` 命令
|
||||
- [ ] `wp bridge config` 命令
|
||||
|
||||
#### 诊断工具
|
||||
- [ ] 诊断页面
|
||||
- [ ] 源连通性测试
|
||||
- [ ] 诊断报告导出
|
||||
|
||||
---
|
||||
|
||||
## 五、v0.3.0 AI 桥接 + 商业插件
|
||||
|
||||
### 5.1 目标
|
||||
|
||||
实现 AI 服务桥接和商业插件支持。
|
||||
|
||||
### 5.2 关键任务
|
||||
|
||||
#### AI 桥接
|
||||
- [ ] AI 设置数据模型(AISettings)
|
||||
- [ ] AI 桥接主类(AIBridge)
|
||||
- [ ] OpenAI 代理(OpenAIProxy)
|
||||
- [ ] WPMind 转发器(WPMindForwarder)
|
||||
- [ ] 白名单管理界面
|
||||
|
||||
#### 商业插件
|
||||
- [ ] 商业插件检测
|
||||
- [ ] 更新源覆盖
|
||||
- [ ] 版本锁定
|
||||
- [ ] 回滚机制
|
||||
|
||||
#### 源分组
|
||||
- [ ] 源组数据模型
|
||||
- [ ] 批量管理界面
|
||||
|
||||
---
|
||||
|
||||
## 六、v0.4.0 Cloud API
|
||||
|
||||
### 6.1 目标
|
||||
|
||||
提供云端 API 服务。
|
||||
|
||||
### 6.2 关键任务
|
||||
|
||||
- [ ] REST API 端点
|
||||
- [ ] 认证机制
|
||||
- [ ] 限流策略
|
||||
- [ ] 文派叶子集成示例
|
||||
|
||||
---
|
||||
|
||||
## 七、v1.0.0 正式发布
|
||||
|
||||
### 7.1 目标
|
||||
|
||||
稳定版本,完善文档和用户体验。
|
||||
|
||||
### 7.2 关键任务
|
||||
|
||||
- [ ] 用户指南
|
||||
- [ ] 开发者文档
|
||||
- [ ] API 文档
|
||||
- [ ] 设置向导
|
||||
- [ ] 状态仪表板
|
||||
- [ ] GitHub Release
|
||||
- [ ] 菲码源库 Release
|
||||
|
||||
---
|
||||
|
||||
## 八、技术规范
|
||||
|
||||
### 8.1 编码规范
|
||||
|
||||
- PHP 7.4+ 兼容
|
||||
- WordPress 编码标准
|
||||
- PSR-4 自动加载
|
||||
- 类型声明(PHP 7.4 风格)
|
||||
|
||||
### 8.2 测试要求
|
||||
|
||||
- 单元测试覆盖核心逻辑
|
||||
- 集成测试覆盖 WordPress 钩子
|
||||
- 手动测试覆盖 UI 交互
|
||||
|
||||
### 8.3 安全要求
|
||||
|
||||
- 所有用户输入必须校验
|
||||
- 敏感数据加密存储
|
||||
- 遵循 WordPress 安全最佳实践
|
||||
|
||||
---
|
||||
|
||||
## 九、风险与缓解
|
||||
|
||||
| 风险 | 影响 | 缓解措施 |
|
||||
|------|------|----------|
|
||||
| 第三方 API 变更 | 处理器失效 | 模块化设计,易于更新 |
|
||||
| 性能问题 | 后台卡顿 | 缓存优先,异步处理 |
|
||||
| 安全漏洞 | 数据泄露 | 代码审计,安全测试 |
|
||||
| 兼容性问题 | 插件冲突 | 最小化钩子使用,命名空间隔离 |
|
||||
|
||||
---
|
||||
|
||||
## 十、里程碑
|
||||
|
||||
| 里程碑 | 目标日期 | 交付物 |
|
||||
|--------|----------|--------|
|
||||
| M1: MVP 完成 | +3 周 | v0.1.0 可用版本 |
|
||||
| M2: 性能优化 | +6 周 | v0.2.0 性能版本 |
|
||||
| M3: AI 桥接 | +9 周 | v0.3.0 完整版本 |
|
||||
| M4: 正式发布 | +12 周 | v1.0.0 稳定版本 |
|
||||
|
||||
---
|
||||
|
||||
*最后更新: 2026-02-04*
|
||||
463
DISCUSSION.md
463
DISCUSSION.md
|
|
@ -1,463 +0,0 @@
|
|||
# WPBridge 讨论记录
|
||||
|
||||
> 产品设计和技术讨论的记录
|
||||
|
||||
*创建日期: 2026-02-04*
|
||||
|
||||
---
|
||||
|
||||
## 2026-02-04 - 最终定位确定
|
||||
|
||||
### 背景
|
||||
|
||||
经过讨论,明确了 WPBridge 在文派生态中的定位:
|
||||
|
||||
- **文派叶子 (WPCY)** - 官方源加速(WordPress.org → 文派镜像),面向普通用户
|
||||
- **WPBridge (文派云桥)** - 自定义源桥接,面向开发者/高级用户
|
||||
|
||||
### 最终定位
|
||||
|
||||
> **自定义源桥接器 - 让用户完全控制 WordPress 的外部连接**
|
||||
|
||||
### 核心功能
|
||||
|
||||
```
|
||||
WPBridge (文派云桥)
|
||||
│
|
||||
├── 📦 更新源桥接
|
||||
│ ├── 第三方自托管插件/主题更新服务器
|
||||
│ ├── 商业插件自定义更新源
|
||||
│ ├── 私有仓库支持 (GitHub/GitLab)
|
||||
│ └── 更新源管理界面
|
||||
│
|
||||
├── 🤖 AI 桥接
|
||||
│ ├── OpenAI API 兼容层
|
||||
│ ├── 商业插件 AI 适配器
|
||||
│ └── 可选依赖 WPMind
|
||||
│
|
||||
└── 🔧 高级配置
|
||||
├── 自定义 HTTP 头
|
||||
├── 认证方式配置
|
||||
└── 代理设置
|
||||
```
|
||||
|
||||
### 与文派叶子的分工
|
||||
|
||||
| 功能 | 文派叶子 (WPCY) | WPBridge |
|
||||
|------|-----------------|----------|
|
||||
| WordPress.org 加速 | ✅ 主要功能 | ❌ 不做 |
|
||||
| 自托管更新服务器 | ❌ 不做 | ✅ 主要功能 |
|
||||
| 商业插件更新源 | ❌ 不做 | ✅ 主要功能 |
|
||||
| AI 服务桥接 | ❌ 不做 | ✅ 主要功能 |
|
||||
| 目标用户 | 普通用户 | 开发者/高级用户 |
|
||||
|
||||
---
|
||||
|
||||
## 2026-02-04 - 愿景演进记录
|
||||
|
||||
### 初始愿景:AI Gateway
|
||||
|
||||
最初从 WPMind 的 AI Gateway 功能讨论中独立出来,定位为:
|
||||
- OpenAI API 兼容层
|
||||
- 商业插件 AI 适配器
|
||||
|
||||
### 扩展愿景:WordPress 云桥
|
||||
|
||||
讨论中发现更广阔的需求:
|
||||
- 插件更新桥接
|
||||
- 资源访问桥接
|
||||
- 授权验证桥接
|
||||
|
||||
### 最终愿景:自定义源桥接器
|
||||
|
||||
明确与文派叶子的分工后,聚焦于:
|
||||
- 自托管更新服务器
|
||||
- 商业插件更新源
|
||||
- AI 服务桥接
|
||||
|
||||
---
|
||||
|
||||
## 文派生态全景
|
||||
|
||||
```
|
||||
文派生态 (WenPai.org)
|
||||
│
|
||||
├── 📦 WPMirror (wpmirror.com)
|
||||
│ └── 镜像源基础设施
|
||||
│
|
||||
├── 🇨🇳 LitePress (litepress.cn)
|
||||
│ └── WordPress 中国定制版
|
||||
│
|
||||
├── 🍃 文派叶子 WPCY (wpcy.com)
|
||||
│ ├── 中国源加速
|
||||
│ ├── 插件/主题更新加速
|
||||
│ ├── 翻译下载优化
|
||||
│ └── 面向普通用户
|
||||
│
|
||||
├── 🤖 WPMind 文派心思
|
||||
│ └── 纯 AI 应用(国内 AI 服务)
|
||||
│
|
||||
└── 🌉 WPBridge 文派云桥
|
||||
├── 自定义更新源桥接
|
||||
├── 商业插件更新源
|
||||
├── AI 服务桥接
|
||||
└── 面向开发者/高级用户
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 待深入讨论
|
||||
|
||||
### 1. 更新源桥接技术细节
|
||||
|
||||
**问题**:如何实现自托管更新服务器的桥接?
|
||||
|
||||
**技术方案**:
|
||||
- 使用 `pre_set_site_transient_update_plugins` 钩子
|
||||
- 使用 `pre_set_site_transient_update_themes` 钩子
|
||||
- 自定义更新检查逻辑
|
||||
|
||||
**待讨论**:
|
||||
- 更新源 API 格式标准?
|
||||
- 是否兼容现有的更新服务器方案?
|
||||
|
||||
---
|
||||
|
||||
### 2. 商业插件更新源
|
||||
|
||||
**问题**:如何处理商业插件的更新源覆盖?
|
||||
|
||||
**挑战**:
|
||||
- 不同商业插件有不同的更新机制
|
||||
- 部分插件有授权验证
|
||||
- 需要保持兼容性
|
||||
|
||||
**待讨论**:
|
||||
- 是否提供预置的商业插件配置?
|
||||
- 如何处理授权验证?
|
||||
|
||||
---
|
||||
|
||||
### 3. AI 桥接与 WPMind 的关系
|
||||
|
||||
**问题**:AI 桥接功能是否依赖 WPMind?
|
||||
|
||||
**方案**:
|
||||
- 无 WPMind:仅支持 OpenAI 兼容层(用户自己配置 API Key)
|
||||
- 有 WPMind:支持国内 AI 服务商(使用 WPMind 的 Provider)
|
||||
|
||||
**待讨论**:
|
||||
- 这种可选依赖的设计是否合理?
|
||||
|
||||
---
|
||||
|
||||
### 4. 与文派叶子的集成
|
||||
|
||||
**问题**:WPBridge 是否需要与文派叶子集成?
|
||||
|
||||
**选项**:
|
||||
- A) 完全独立,互不干扰
|
||||
- B) 检测文派叶子,提供互补功能
|
||||
- C) 作为文派叶子的"高级扩展"
|
||||
|
||||
**待讨论**
|
||||
|
||||
---
|
||||
|
||||
### 5. 分发和定价
|
||||
|
||||
**问题**:WPBridge 如何分发和定价?
|
||||
|
||||
**分发选项**:
|
||||
- GitHub Releases
|
||||
- 文派官网
|
||||
- WordPress.org(如果符合规范)
|
||||
|
||||
**定价选项**:
|
||||
- 完全免费开源
|
||||
- 核心免费 + 高级功能付费
|
||||
- 订阅制
|
||||
|
||||
**待讨论**
|
||||
|
||||
---
|
||||
|
||||
## 2026-02-04 - 预置源与自托管方案讨论
|
||||
|
||||
### 背景
|
||||
|
||||
讨论了 WPBridge 需要支持的预置更新源和自托管方案。
|
||||
|
||||
### 关键决策
|
||||
|
||||
#### 1. 预置更新源
|
||||
|
||||
| 源 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| **文派开源更新源** | 预置(默认) | 文派生态的开源插件/主题更新源 |
|
||||
| **AspireCloud** | 可选预置 | AspirePress 的 CDN/API |
|
||||
| **FAIR** | 可选预置 | Linux Foundation 的去中心化方案 |
|
||||
|
||||
#### 2. 自托管方案支持
|
||||
|
||||
| 方案 | 说明 | 兼容方式 |
|
||||
|------|------|----------|
|
||||
| **ArkPress** | 文派开源的自托管组件,AspireCloud 分叉版本,针对中国用户优化 | 原生支持 |
|
||||
| **AspireCloud** | AspirePress 的开源镜像/CDN | API 兼容 |
|
||||
| **UpdatePulse Server** | 支持授权管理的自托管服务器 | JSON API 兼容 |
|
||||
| **WP Packages Update Server** | GitHub 上的开源方案 | JSON API 兼容 |
|
||||
| **Plugin Update Checker 格式** | 事实上的行业标准 | 原生支持 |
|
||||
|
||||
#### 3. WP-CLI 命令规范
|
||||
|
||||
确定使用 `wp bridge` 作为命令前缀(而非 `wp wpbridge`)。
|
||||
|
||||
```bash
|
||||
# 源管理
|
||||
wp bridge source list # 列出所有源
|
||||
wp bridge source add <url> [--type=json] # 添加源
|
||||
wp bridge source remove <id> # 删除源
|
||||
wp bridge source enable <id> # 启用源
|
||||
wp bridge source disable <id> # 禁用源
|
||||
|
||||
# 更新检查
|
||||
wp bridge check # 检查所有源
|
||||
wp bridge check <slug> # 检查指定插件/主题
|
||||
|
||||
# 缓存管理
|
||||
wp bridge cache clear # 清除所有缓存
|
||||
wp bridge cache status # 查看缓存状态
|
||||
|
||||
# 诊断
|
||||
wp bridge diagnose # 生成诊断报告
|
||||
wp bridge test <source_id> # 测试源连通性
|
||||
|
||||
# 配置
|
||||
wp bridge config export # 导出配置
|
||||
wp bridge config import <file> # 导入配置
|
||||
```
|
||||
|
||||
### 待讨论事项
|
||||
|
||||
#### 1. 源优先级和冲突处理
|
||||
|
||||
**问题**:如果同一个插件在多个源都有更新,如何处理?
|
||||
|
||||
**决策**:用户可设置优先级,默认选择版本号最高的
|
||||
|
||||
#### 2. 源分组和批量管理
|
||||
|
||||
**场景**:用户有多个来自同一厂商的商业插件
|
||||
|
||||
**决策**:引入"源组"概念,支持批量管理(v0.3.0)
|
||||
|
||||
#### 3. 更新通知策略
|
||||
|
||||
**决策**:与 WordPress 原生更新通知合并,邮件/Webhook 作为高级功能
|
||||
|
||||
#### 4. 版本锁定
|
||||
|
||||
**决策**:v0.2.0 实现基础版本锁定功能
|
||||
|
||||
#### 5. 安全扫描集成
|
||||
|
||||
**决策**:本地哈希校验为基础,VirusTotal/Patchstack 作为付费功能
|
||||
|
||||
#### 6. 统计和分析
|
||||
|
||||
**决策**:默认不收集,匿名统计作为可选(需用户同意)
|
||||
|
||||
#### 7. 白标/OEM 支持
|
||||
|
||||
**决策**:作为付费功能,v1.0.0 后考虑
|
||||
|
||||
---
|
||||
|
||||
## 2026-02-04 - Codex 深度讨论(第二轮)
|
||||
|
||||
### 讨论主题
|
||||
|
||||
基于市场研究报告,与 Codex 进行了 5 个核心问题的深度讨论。
|
||||
|
||||
### 关键结论
|
||||
|
||||
#### 1. 性能优化作为核心卖点
|
||||
|
||||
**结论:应当成为核心价值主张之一**
|
||||
|
||||
**"双锚点"价值主张:**
|
||||
- 对普通痛点:后台加载快
|
||||
- 对目标用户:可控的自定义源桥接
|
||||
|
||||
**7 项性能优化措施:**
|
||||
1. 请求合并与并行(`Requests::request_multiple`)
|
||||
2. 智能缓存(结果缓存 + 健康状态缓存)
|
||||
3. 请求去重(短时间合并窗口 + 锁)
|
||||
4. 分组检查(同一厂商多插件共享一次请求)
|
||||
5. 条件请求(`If-Modified-Since` / `ETag`)
|
||||
6. 缓存分层(Redis/Memcached 优先,DB 兜底)
|
||||
7. 失败兜底(返回旧版本信息,不阻塞后台)
|
||||
|
||||
#### 2. 与 FAIR 的关系
|
||||
|
||||
- WPBridge 把 FAIR 作为**可选更新源**之一
|
||||
- 默认不替换 WordPress.org
|
||||
- 产品表述:**"WPBridge 不替换官方源,只做用户自定义桥接"**
|
||||
|
||||
#### 3. 商业插件法律边界
|
||||
|
||||
**稳妥策略:**
|
||||
- 以"配置框架"优先,不预置具体厂商地址
|
||||
- 仅在得到授权时提供预置
|
||||
- 坚持"用户提供授权信息"
|
||||
- 避免"绕过授权"功能
|
||||
- 本地缓存仅限站点内
|
||||
|
||||
**对外表述:**
|
||||
> "WPBridge 不破解、不绕过授权,仅提供合规的配置与转发能力。"
|
||||
|
||||
#### 4. 中国市场特殊性
|
||||
|
||||
**与 WPCY 协同:**
|
||||
- WPBridge 检测 WPCY 存在时,官方源自动走 WPCY
|
||||
- 避免重复功能
|
||||
|
||||
**中国特色功能:**
|
||||
- 源级别的"优选地域节点/备用源"
|
||||
- 国内 Git 供应商支持(Gitee)
|
||||
- 更短超时 + 智能重试策略
|
||||
|
||||
#### 5. 技术架构建议
|
||||
|
||||
**WP-Cron 后台任务:**
|
||||
- 引入 `wpbridge_update_sources` 定时任务
|
||||
- 前台仅读取缓存,避免后台页面发起大量请求
|
||||
|
||||
**降级策略:**
|
||||
1. 优先使用"上次成功缓存"
|
||||
2. 标记源为 `degraded/failed`
|
||||
3. 自动切换备用源
|
||||
4. 管理界面提示,不阻塞后台
|
||||
|
||||
---
|
||||
|
||||
## 2026-02-04 - Codex 评审反馈
|
||||
|
||||
### 评审概要
|
||||
|
||||
使用 OpenAI Codex (gpt-5.2-codex-xhigh) 对项目文档进行了全面评审。
|
||||
|
||||
### 主要反馈
|
||||
|
||||
#### 1. 项目定位与边界
|
||||
|
||||
**认可:**
|
||||
- 定位整体清晰,"自定义源桥接"与"官方源加速"形成互补
|
||||
- 目标用户画像准确
|
||||
|
||||
**建议:**
|
||||
- 边界需要再硬化,明确"非目标"
|
||||
- 云 API 定义为"桥接能力的远程形态",不承担镜像/加速职责
|
||||
- 补充"使用动机"优先级排序
|
||||
|
||||
#### 2. 技术架构
|
||||
|
||||
**建议改进:**
|
||||
- 更新源适配器做成**统一接口+能力矩阵**
|
||||
- **缓存与降级策略**要提前设计
|
||||
- **安全边界**:URL 校验、密钥加密存储、下载包校验
|
||||
- AI 拦截做成**显式白名单**
|
||||
- 云 API 需明确认证、限流与可用性 SLA
|
||||
|
||||
#### 3. 路线图优先级
|
||||
|
||||
**建议调整:**
|
||||
- 把"稳定性/可运维能力"前置
|
||||
- 先做"通用自定义源"跑通,再添加预置模板
|
||||
- AI 桥接可与核心解耦
|
||||
|
||||
#### 4. AI 桥接与 WPMind 依赖
|
||||
|
||||
**建议:**
|
||||
- 明确"无 WPMind 时"的稳定行为
|
||||
- 定义稳定接口层,减少直接耦合
|
||||
|
||||
#### 5. 定价策略
|
||||
|
||||
**建议:**
|
||||
- 考虑"基础终身 + 更新/支持年费"混合模式
|
||||
- 付费点围绕企业刚需
|
||||
|
||||
### 采纳决策
|
||||
|
||||
| 建议 | 决策 | 说明 |
|
||||
|------|------|------|
|
||||
| 明确"非目标" | ✅ 采纳 | 添加到 CLAUDE.md |
|
||||
| 统一接口+能力矩阵 | ✅ 采纳 | 更新架构设计 |
|
||||
| 缓存与降级策略 | ✅ 采纳 | 加入 v0.1.0 |
|
||||
| 安全边界设计 | ✅ 采纳 | 加入 v0.1.0 |
|
||||
| AI 拦截白名单 | ✅ 采纳 | 更新设计文档 |
|
||||
| 稳定性前置 | ✅ 采纳 | 调整路线图 |
|
||||
| 混合定价模式 | 🔄 待定 | 需进一步讨论 |
|
||||
|
||||
---
|
||||
|
||||
## 2026-02-04 - Codex 评审问题修复
|
||||
|
||||
### 问题清单与修复状态
|
||||
|
||||
#### HIGH 严重性
|
||||
|
||||
| 问题 | 状态 | 修复说明 |
|
||||
|------|------|----------|
|
||||
| 源类型不一致 | ✅ 已修复 | 创建统一的 `SourceType` 枚举,包含所有类型(json/github/gitlab/gitee/wenpai_git/zip/arkpress/aspirecloud/fair/puc),更新数据模型引用 |
|
||||
| AI 设置配置与实现不匹配 | ✅ 已修复 | 创建 `AISettings` 数据模型,`mode` 和 `whitelist` 由用户配置驱动,不再硬编码 |
|
||||
|
||||
#### MEDIUM 严重性
|
||||
|
||||
| 问题 | 状态 | 修复说明 |
|
||||
|------|------|----------|
|
||||
| Cloud API 不在路线图 | ✅ 已修复 | 添加 v0.4.0 版本专门处理 Cloud API |
|
||||
| v0.1.0 范围太大 | ✅ 已修复 | 精简为 MVP,移除 Git 支持、WP-CLI、诊断工具到 v0.2.0 |
|
||||
| 性能优化未明确 | ✅ 已修复 | 性能优化明确放在 v0.2.0,作为该版本核心任务 |
|
||||
|
||||
### 修改的文件
|
||||
|
||||
1. **DESIGN.md**
|
||||
- 添加 `SourceType` 枚举统一定义
|
||||
- 添加类型与处理器映射表
|
||||
- 更新数据模型引用枚举
|
||||
- 重写 `AISettings` 和 `AIBridge` 类,配置驱动
|
||||
|
||||
2. **ROADMAP.md**
|
||||
- 调整版本规划(v0.1.0 → v0.2.0 → v0.3.0 → v0.4.0 → v1.0.0)
|
||||
- 精简 v0.1.0 范围为 MVP
|
||||
- 性能优化移至 v0.2.0 核心任务
|
||||
- 商业插件适配移至 v0.3.0
|
||||
- 新增 v0.4.0 Cloud API
|
||||
|
||||
3. **DEVELOPMENT-PLAN.md**(新建)
|
||||
- 完整的开发计划
|
||||
- 详细的任务分解
|
||||
- 文件结构设计
|
||||
- 验收标准
|
||||
- 风险与缓解
|
||||
- 里程碑规划
|
||||
|
||||
---
|
||||
|
||||
## 下一步行动
|
||||
|
||||
1. [x] 深入讨论更新源桥接的技术细节
|
||||
2. [x] 确定与文派叶子的集成方式
|
||||
3. [x] 确定 AI 桥接与 WPMind 的依赖关系
|
||||
4. [x] 确定分发和定价策略
|
||||
5. [x] 完成业务流程和架构设计
|
||||
6. [x] 修复 Codex 评审问题
|
||||
7. [x] 创建完整开发计划
|
||||
8. [ ] Codex 最终确认
|
||||
9. [ ] 开始 v0.1.0 开发
|
||||
|
||||
---
|
||||
|
||||
*最后更新: 2026-02-04*
|
||||
382
RESEARCH.md
382
RESEARCH.md
|
|
@ -1,382 +0,0 @@
|
|||
# WPBridge 市场研究报告
|
||||
|
||||
> WordPress 更新生态现状与 WPBridge 机会分析
|
||||
|
||||
*创建日期: 2026-02-04*
|
||||
|
||||
---
|
||||
|
||||
## 1. WordPress 更新生态现状
|
||||
|
||||
### 1.1 核心痛点:后台卡死问题
|
||||
|
||||
WordPress 后台慢是一个普遍问题,主要原因之一是**大量插件各自发起更新检查请求**:
|
||||
|
||||
```
|
||||
WordPress 后台加载时
|
||||
│
|
||||
├── 核心更新检查 → api.wordpress.org
|
||||
├── 插件 A 更新检查 → plugin-a.com/api
|
||||
├── 插件 B 更新检查 → plugin-b.com/api
|
||||
├── 插件 C 授权验证 → license.plugin-c.com
|
||||
├── 主题更新检查 → theme-vendor.com/api
|
||||
├── ...(可能 10-50 个请求)
|
||||
│
|
||||
└── 结果:后台加载 5-30 秒
|
||||
```
|
||||
|
||||
**问题根源:**
|
||||
- 每个商业插件都有自己的更新服务器
|
||||
- 每个插件独立发起 HTTP 请求
|
||||
- 没有统一的缓存和批量机制
|
||||
- 授权验证增加额外延迟
|
||||
- 中国用户访问国外服务器更慢
|
||||
|
||||
### 1.2 生态碎片化
|
||||
|
||||
| 更新源类型 | 示例 | 问题 |
|
||||
|-----------|------|------|
|
||||
| WordPress.org | 官方免费插件 | 中国访问慢 |
|
||||
| 商业插件自建 | Elementor Pro, ACF Pro | 各自为政 |
|
||||
| GitHub Releases | 开发者插件 | 需要手动配置 |
|
||||
| EDD Software Licensing | 大量商业插件 | 每个都要授权检查 |
|
||||
| WooCommerce.com | WooCommerce 扩展 | 独立的更新系统 |
|
||||
| Envato Market | ThemeForest 主题 | 又一个独立系统 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 行业解决方案分析
|
||||
|
||||
### 2.1 FAIR Package Manager
|
||||
|
||||
**背景:** 2024年9月 WP Engine 事件后,Linux Foundation 发起的去中心化项目
|
||||
|
||||
**定位:** 联邦式独立仓库(Federated and Independent Repository)
|
||||
|
||||
**核心特点:**
|
||||
- 去中心化的插件/主题分发
|
||||
- 多镜像源支持
|
||||
- 由 Linux Foundation 治理
|
||||
- 300+ 贡献者参与
|
||||
|
||||
**技术实现:**
|
||||
- WordPress 插件形式
|
||||
- 替换默认的 WordPress.org 更新源
|
||||
- 支持多个可信源
|
||||
|
||||
**挑战:**
|
||||
- 需要大规模采用才能有效
|
||||
- 托管商需要主动支持
|
||||
- 安全性担忧(多个潜在攻击点)
|
||||
- 不解决商业插件问题
|
||||
|
||||
**与 WPBridge 的区别:**
|
||||
|
||||
| 方面 | FAIR | WPBridge |
|
||||
|------|------|----------|
|
||||
| 定位 | 基础设施替代 | 用户侧桥接器 |
|
||||
| 目标 | 替换 WordPress.org | 补充自定义源 |
|
||||
| 用户 | 所有 WordPress 用户 | 开发者/高级用户 |
|
||||
| 商业插件 | 不直接解决 | 核心功能 |
|
||||
| 依赖 | 需要生态采用 | 用户自主配置 |
|
||||
|
||||
### 2.2 Plugin Update Checker
|
||||
|
||||
**作者:** YahnisElsts
|
||||
|
||||
**定位:** 开发者库,用于自定义更新服务器
|
||||
|
||||
**特点:**
|
||||
- PHP 库,嵌入插件代码
|
||||
- 支持 JSON API、GitHub、GitLab
|
||||
- 被大量商业插件使用
|
||||
- 事实上的行业标准
|
||||
|
||||
**局限:**
|
||||
- 每个插件独立集成
|
||||
- 用户无法统一管理
|
||||
- 不解决性能问题
|
||||
|
||||
### 2.3 现有更新管理插件
|
||||
|
||||
| 插件 | 功能 | 局限 |
|
||||
|------|------|------|
|
||||
| Easy Updates Manager | 控制自动更新 | 不支持自定义源 |
|
||||
| ManageWP | 多站点管理 | SaaS 服务,需付费 |
|
||||
| MainWP | 自托管多站点 | 复杂,面向代理商 |
|
||||
| InfiniteWP | 多站点管理 | 不解决更新源问题 |
|
||||
|
||||
---
|
||||
|
||||
## 3. WPBridge 机会分析
|
||||
|
||||
### 3.1 差异化定位
|
||||
|
||||
```
|
||||
市场空白
|
||||
│
|
||||
├── FAIR → 基础设施层(替换 WordPress.org)
|
||||
├── Plugin Update Checker → 开发者层(嵌入插件)
|
||||
│
|
||||
└── WPBridge → 用户层(统一管理自定义源)
|
||||
├── 不替换 WordPress.org
|
||||
├── 不需要修改插件代码
|
||||
└── 用户自主配置和管理
|
||||
```
|
||||
|
||||
### 3.2 核心价值主张
|
||||
|
||||
**对于企业用户:**
|
||||
- 内网部署,私有仓库
|
||||
- 供应链安全控制
|
||||
- 合规性要求
|
||||
|
||||
**对于开发者:**
|
||||
- 测试环境灵活配置
|
||||
- 自托管插件分发
|
||||
- 版本控制和回滚
|
||||
|
||||
**对于商业插件用户:**
|
||||
- 统一管理多个更新源
|
||||
- 减少授权验证延迟
|
||||
- 备用更新渠道
|
||||
|
||||
### 3.3 性能优化机会
|
||||
|
||||
```
|
||||
当前状态(无 WPBridge)
|
||||
├── 插件 A → HTTP 请求 1
|
||||
├── 插件 B → HTTP 请求 2
|
||||
├── 插件 C → HTTP 请求 3
|
||||
└── 总计:N 个串行请求
|
||||
|
||||
使用 WPBridge 后
|
||||
├── WPBridge 统一检查
|
||||
│ ├── 缓存命中 → 直接返回
|
||||
│ ├── 批量请求 → 减少连接数
|
||||
│ └── 并行处理 → 减少等待
|
||||
└── 总计:显著减少请求时间
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 竞争格局
|
||||
|
||||
### 4.1 直接竞争
|
||||
|
||||
| 竞品 | 定位 | WPBridge 优势 |
|
||||
|------|------|---------------|
|
||||
| FAIR | 基础设施替代 | 更轻量,用户自主 |
|
||||
| AspirePress | 类似 FAIR | 同上 |
|
||||
|
||||
### 4.2 间接竞争
|
||||
|
||||
| 竞品 | 定位 | WPBridge 优势 |
|
||||
|------|------|---------------|
|
||||
| ManageWP | SaaS 多站点 | 自托管,无订阅 |
|
||||
| MainWP | 自托管多站点 | 更简单,专注更新 |
|
||||
| 文派叶子 | 官方源加速 | 自定义源,互补 |
|
||||
|
||||
### 4.3 合作机会
|
||||
|
||||
- **文派叶子**:官方源加速 + WPBridge 自定义源 = 完整解决方案
|
||||
- **FAIR**:可以作为 WPBridge 的一个更新源
|
||||
- **Plugin Update Checker**:兼容其 JSON 格式
|
||||
|
||||
---
|
||||
|
||||
## 5. 建议
|
||||
|
||||
### 5.1 核心功能优先级
|
||||
|
||||
| 优先级 | 功能 | 理由 |
|
||||
|--------|------|------|
|
||||
| P0 | 自定义 JSON 更新源 | 最通用,兼容 PUC |
|
||||
| P0 | 缓存和性能优化 | 解决核心痛点 |
|
||||
| P1 | GitHub/GitLab 支持 | 开发者刚需 |
|
||||
| P1 | 源健康检查 | 稳定性保障 |
|
||||
| P2 | 商业插件预置 | 提升易用性 |
|
||||
| P3 | AI 桥接 | 差异化功能 |
|
||||
|
||||
### 5.2 差异化策略
|
||||
|
||||
1. **性能优先**:强调减少后台加载时间
|
||||
2. **用户自主**:不依赖外部服务,用户完全控制
|
||||
3. **生态兼容**:与文派叶子、FAIR 互补而非竞争
|
||||
4. **中国优化**:针对中国网络环境优化
|
||||
|
||||
### 5.3 市场定位
|
||||
|
||||
```
|
||||
WPBridge 一句话定位:
|
||||
|
||||
"让 WordPress 后台不再卡死 —— 统一管理你的插件更新源"
|
||||
|
||||
或
|
||||
|
||||
"自定义源桥接器 —— 企业内网、商业插件、私有仓库,一个插件搞定"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 自托管更新服务器生态
|
||||
|
||||
### 6.1 主要方案对比
|
||||
|
||||
| 方案 | 类型 | 特点 | 适用场景 |
|
||||
|------|------|------|----------|
|
||||
| **ArkPress** | 自托管镜像 | AspireCloud 分叉,中国优化 | 中国企业/开发者 |
|
||||
| **AspireCloud** | 开源镜像 | FAIR 基础设施,联邦模式 | 国际用户 |
|
||||
| **UpdatePulse Server** | 自托管服务器 | 授权管理、VCS 集成 | 商业插件开发者 |
|
||||
| **WP Packages Update Server** | 自托管服务器 | 轻量级 | 小型团队 |
|
||||
| **Plugin Update Checker** | 开发者库 | 行业标准 | 插件开发者 |
|
||||
|
||||
### 6.2 ArkPress(文派开源)
|
||||
|
||||
**定位**:AspireCloud 的中国分叉版本,针对中国网络环境优化
|
||||
|
||||
**特点**:
|
||||
- 国内服务器部署
|
||||
- 中文界面
|
||||
- 与文派生态深度集成
|
||||
- 更适合中国用户的网络环境
|
||||
|
||||
**与 WPBridge 的关系**:
|
||||
- ArkPress 是服务端(自托管更新服务器)
|
||||
- WPBridge 是客户端(连接各种更新源的桥接器)
|
||||
- 两者配合使用,提供完整的自托管更新解决方案
|
||||
|
||||
### 6.3 AspirePress 生态
|
||||
|
||||
**组件**:
|
||||
- **AspireCloud**:CDN/API 服务,为 FAIR 提供基础设施
|
||||
- **AspireUpdate**:WordPress 插件,连接 AspireCloud
|
||||
- **AspireSync**:同步工具
|
||||
- **AspireExplorer**:浏览器界面
|
||||
|
||||
**参考**:
|
||||
- [AspirePress 官网](https://aspirepress.org/)
|
||||
- [AspireCloud 文档](https://docs.aspirepress.org/aspirecloud/)
|
||||
- [AspireUpdate GitHub](https://github.com/aspirepress/AspireUpdate/)
|
||||
|
||||
### 6.4 UpdatePulse Server
|
||||
|
||||
**特点**:
|
||||
- 支持授权管理(License Key)
|
||||
- 支持 VCS 集成(GitHub/GitLab/Bitbucket)
|
||||
- 支持云存储(S3 兼容)
|
||||
- 与 Plugin Update Checker 兼容
|
||||
|
||||
**参考**:
|
||||
- [UpdatePulse Server - WordPress.org](https://wordpress.org/plugins/updatepulse-server/)
|
||||
- [UpdatePulse Server - 文派](https://wenpai.org/plugins/updatepulse-server/)
|
||||
|
||||
### 6.5 WPBridge 兼容策略
|
||||
|
||||
```
|
||||
WPBridge 兼容层
|
||||
│
|
||||
├── 原生支持
|
||||
│ ├── 文派开源更新源
|
||||
│ ├── ArkPress API
|
||||
│ ├── Plugin Update Checker JSON 格式
|
||||
│ └── AspireCloud API
|
||||
│
|
||||
├── 通用 JSON API 支持
|
||||
│ ├── UpdatePulse Server
|
||||
│ ├── WP Packages Update Server
|
||||
│ └── 其他兼容 PUC 格式的服务器
|
||||
│
|
||||
└── Git 仓库支持
|
||||
├── GitHub Releases
|
||||
├── GitLab Releases
|
||||
├── Gitee Releases(国内)
|
||||
└── 菲码源库(文派)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 技术实现研究
|
||||
|
||||
- [FAIR Package Manager - WP Umbrella](https://wp-umbrella.com/blog/the-fair-package-manager/)
|
||||
- [FAIR Package Manager - WPShout](https://wpshout.com/fair-package-manager-wordpress-org-alternative/)
|
||||
- [Plugin Update Checker - GitHub](https://github.com/YahnisElsts/plugin-update-checker)
|
||||
- [75 Slow WordPress Plugins](https://onlinemediamasters.com/slow-wordpress-plugins/)
|
||||
- [Speed Up WordPress Backend - WPShout](https://wpshout.com/speed-up-wordpress-backend/)
|
||||
|
||||
---
|
||||
|
||||
## 7. 技术实现研究
|
||||
|
||||
### 7.1 WordPress 并行请求 API
|
||||
|
||||
WordPress 内置 `Requests::request_multiple()` 方法,支持并行 HTTP 请求:
|
||||
|
||||
```php
|
||||
// 并行请求示例
|
||||
$requests = [
|
||||
'source1' => ['url' => 'https://api1.example.com/update.json'],
|
||||
'source2' => ['url' => 'https://api2.example.com/update.json'],
|
||||
'source3' => ['url' => 'https://api3.example.com/update.json'],
|
||||
];
|
||||
|
||||
$responses = \WpOrg\Requests\Requests::request_multiple(
|
||||
$requests,
|
||||
['timeout' => 10]
|
||||
);
|
||||
|
||||
// 结果:3 个请求并行执行,总时间 ≈ 最慢的那个请求
|
||||
// 而非串行执行的 3 倍时间
|
||||
```
|
||||
|
||||
**参考:**
|
||||
- [WordPress Trac #33055 - Support Parallel HTTP Requests](https://core.trac.wordpress.org/ticket/33055)
|
||||
- [WordPress Trac #44118 - Unnecessary plugin update checks](https://core.trac.wordpress.org/ticket/44118)
|
||||
|
||||
### 7.2 更新检查钩子
|
||||
|
||||
WordPress 使用以下钩子处理更新检查:
|
||||
|
||||
| 钩子 | 用途 | WPBridge 使用方式 |
|
||||
|------|------|-------------------|
|
||||
| `pre_set_site_transient_update_plugins` | 插件更新检查前 | 注入自定义源的更新信息 |
|
||||
| `pre_set_site_transient_update_themes` | 主题更新检查前 | 注入自定义源的更新信息 |
|
||||
| `plugins_api` | 插件详情 API | 返回自定义源的插件信息 |
|
||||
| `themes_api` | 主题详情 API | 返回自定义源的主题信息 |
|
||||
| `upgrader_pre_download` | 下载前 | 替换下载 URL |
|
||||
|
||||
### 7.3 性能优化技术栈
|
||||
|
||||
| 技术 | 用途 | WordPress 支持 |
|
||||
|------|------|----------------|
|
||||
| `Requests::request_multiple` | 并行 HTTP 请求 | ✅ 内置 |
|
||||
| `set_transient` / `get_transient` | 数据库缓存 | ✅ 内置 |
|
||||
| `wp_cache_*` | 对象缓存 | ✅ 内置(需 Redis/Memcached) |
|
||||
| `wp_schedule_event` | 后台定时任务 | ✅ 内置 |
|
||||
| HTTP 条件请求 | ETag/Last-Modified | ✅ 需手动实现 |
|
||||
|
||||
### 7.4 与 WPCY 协同检测
|
||||
|
||||
```php
|
||||
// 检测文派叶子是否存在
|
||||
function wpbridge_detect_wpcy(): bool {
|
||||
return defined('STARTER_PLUGIN_VERSION') ||
|
||||
class_exists('WP_China_Yes') ||
|
||||
function_exists('wpcy_is_active');
|
||||
}
|
||||
|
||||
// 如果 WPCY 存在,官方源走 WPCY,自定义源走 WPBridge
|
||||
function wpbridge_should_handle_source(string $url): bool {
|
||||
if (wpbridge_detect_wpcy()) {
|
||||
// 官方源让 WPCY 处理
|
||||
if (strpos($url, 'api.wordpress.org') !== false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*最后更新: 2026-02-04*
|
||||
404
ROADMAP.md
404
ROADMAP.md
|
|
@ -1,404 +0,0 @@
|
|||
# WPBridge 开发路线图
|
||||
|
||||
> 自定义源桥接器 - 版本规划和开发任务
|
||||
|
||||
*创建日期: 2026-02-04*
|
||||
|
||||
---
|
||||
|
||||
## 当前版本: v0.8.0
|
||||
|
||||
## 版本规划
|
||||
|
||||
```
|
||||
v0.1.0 - MVP:最小可用桥接 + 基础缓存/降级 ✅ 已完成
|
||||
↓
|
||||
v0.2.0 - Git 仓库支持 + WP-CLI + 性能优化 ✅ 已完成
|
||||
↓
|
||||
v0.3.0 - 源分组 + 商业插件检测 ✅ 已完成
|
||||
↓
|
||||
v0.4.0 - Bridge API ✅ 已完成
|
||||
↓
|
||||
v0.8.0 - 配置导入导出 + 稳定性优化 ✅ 已完成
|
||||
↓
|
||||
v0.9.0 - 版本控制 + 用户体验 ← 当前目标
|
||||
↓
|
||||
v1.0.0 - 正式发布
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## v0.1.0 - MVP:最小可用桥接 + 基础缓存/降级 ✅
|
||||
|
||||
### 目标
|
||||
实现最小可用的更新源桥接功能,确保基础稳定性
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### 插件基础结构
|
||||
- [x] 主文件 `wpbridge.php`
|
||||
- [x] 自动加载器 `Loader.php`
|
||||
- [x] 设置页面框架 `Settings.php`
|
||||
- [x] 数据存储结构
|
||||
|
||||
#### 预置更新源
|
||||
- [x] 文派开源更新源(默认启用)
|
||||
- [x] ArkPress 支持(文派自托管方案)
|
||||
- [x] AspireCloud 支持(可选)
|
||||
|
||||
#### 更新源管理(基础)
|
||||
- [x] 更新源数据模型(使用统一 SourceType 枚举)
|
||||
- [x] 更新源 CRUD 操作
|
||||
- [x] 更新源列表界面
|
||||
- [x] 添加/编辑更新源表单
|
||||
|
||||
#### 核心桥接功能
|
||||
- [x] `pre_set_site_transient_update_plugins` 钩子
|
||||
- [x] `pre_set_site_transient_update_themes` 钩子
|
||||
- [x] JSON API 处理器(JsonHandler)
|
||||
- [x] ArkPress 处理器(ArkPressHandler)
|
||||
- [x] AspireCloud 处理器(AspireCloudHandler)
|
||||
- [x] Plugin Update Checker JSON 格式兼容(PUCHandler)
|
||||
|
||||
#### 基础缓存与降级
|
||||
- [x] Transient 缓存(12 小时 TTL)
|
||||
- [x] 源健康状态缓存(1 小时 TTL)
|
||||
- [x] 失败源冷却机制(30 分钟)
|
||||
- [x] 过期缓存兜底(源不可用时返回旧数据)
|
||||
- [x] 请求超时限制(10 秒)
|
||||
|
||||
#### 安全基础
|
||||
- [x] URL 格式校验
|
||||
- [x] API Key 加密存储
|
||||
- [x] JSON 响应结构校验
|
||||
|
||||
#### 日志与错误处理
|
||||
- [x] 调试日志(可开关)
|
||||
- [x] 用户友好的错误信息
|
||||
|
||||
---
|
||||
|
||||
## v0.2.0 - Git 仓库支持 + WP-CLI + 性能优化 ✅
|
||||
|
||||
### 目标
|
||||
支持 Git 仓库作为更新源,提供命令行工具,实现性能优化
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### 性能优化(核心)
|
||||
- [x] 并行请求(`ParallelRequestManager`)
|
||||
- [x] 条件请求(ETag/Last-Modified)
|
||||
- [x] WP-Cron 后台预热任务(`BackgroundUpdater`)
|
||||
- [ ] 请求去重与合并窗口
|
||||
- [ ] 缓存分层(对象缓存优先,DB 兜底)
|
||||
|
||||
#### WP-CLI 支持(`wp bridge`)
|
||||
- [x] `wp bridge source list` - 列出所有源
|
||||
- [x] `wp bridge source add <url>` - 添加源
|
||||
- [x] `wp bridge source remove <id>` - 删除源
|
||||
- [x] `wp bridge source enable/disable <id>` - 启用/禁用源
|
||||
- [x] `wp bridge check` - 检查所有源
|
||||
- [x] `wp bridge cache clear` - 清除缓存
|
||||
- [x] `wp bridge diagnose` - 诊断报告
|
||||
- [ ] `wp bridge config export/import` - 配置导入导出
|
||||
|
||||
#### Git 仓库支持
|
||||
- [x] 统一接口 SourceHandlerInterface
|
||||
- [x] GitHub Releases 支持(GitHubHandler)
|
||||
- [x] GitLab Releases 支持(GitLabHandler)
|
||||
- [x] Gitee Releases 支持(GiteeHandler,国内)
|
||||
- [x] 菲码源库支持(WenPaiGitHandler)
|
||||
- [x] 私有仓库认证
|
||||
|
||||
#### 诊断工具
|
||||
- [x] 诊断页面(源状态、请求日志)
|
||||
- [x] 一键测试源连通性
|
||||
- [ ] 导出诊断报告
|
||||
|
||||
#### 配置管理
|
||||
- [ ] 导入/导出配置
|
||||
- [ ] 配置备份
|
||||
|
||||
#### 认证支持
|
||||
- [x] API Key 认证
|
||||
- [x] Basic Auth 认证
|
||||
- [x] 自定义 HTTP 头
|
||||
|
||||
#### 源优先级
|
||||
- [x] 源优先级设置
|
||||
- [x] 多源冲突处理(版本号最高优先)
|
||||
|
||||
#### FAIR 支持
|
||||
- [x] FAIR Package Manager 处理器(FairHandler)
|
||||
|
||||
---
|
||||
|
||||
## v0.3.0 - 源分组 + 商业插件检测 ✅
|
||||
|
||||
### 目标
|
||||
支持源分组管理,实现商业插件检测
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### 源分组管理
|
||||
- [x] 源组数据模型(GroupModel)
|
||||
- [x] 批量管理界面(GroupManager)
|
||||
- [x] 共享认证信息
|
||||
- [x] 统一启用/禁用
|
||||
|
||||
#### 商业插件适配
|
||||
- [x] 商业插件检测机制(CommercialDetector)
|
||||
- [x] 远程 JSON 配置支持
|
||||
- [x] 检测结果永久缓存
|
||||
- [x] 手动刷新检测功能
|
||||
- [ ] 授权验证代理(可选)
|
||||
- [ ] 版本锁定功能
|
||||
- [ ] 回滚机制(更新前备份)
|
||||
|
||||
#### 通知系统
|
||||
- [x] 邮件通知(EmailHandler)
|
||||
- [x] Webhook 通知(WebhookHandler)
|
||||
- [ ] 更新日志聚合显示
|
||||
|
||||
---
|
||||
|
||||
## v0.4.0 - Bridge API ✅
|
||||
|
||||
### 目标
|
||||
提供 REST API 服务,支持外部调用
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### Bridge API 基础
|
||||
- [x] REST API 端点设计(`/wp-json/bridge/v1/`)
|
||||
- [x] 认证机制(API Key)
|
||||
- [x] 状态端点 `/status`
|
||||
- [ ] 限流策略
|
||||
- [ ] 可用性 SLA 定义
|
||||
|
||||
#### API 端点
|
||||
- [x] GET /bridge/v1/status - 获取状态
|
||||
- [ ] GET /bridge/v1/sources - 获取可用更新源列表
|
||||
- [ ] GET /bridge/v1/check/{source_id} - 检查指定源更新
|
||||
- [ ] GET /bridge/v1/plugins/{slug}/info - 获取插件信息
|
||||
- [ ] GET /bridge/v1/themes/{slug}/info - 获取主题信息
|
||||
|
||||
---
|
||||
|
||||
## v0.8.0 - 配置导入导出 + 稳定性优化 ✅
|
||||
|
||||
### 目标
|
||||
完善配置管理,提升稳定性
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### 配置管理
|
||||
- [x] 导入配置(JSON 格式)
|
||||
- [x] 导出配置(JSON 格式)
|
||||
- [x] 配置备份/恢复
|
||||
- [x] WP-CLI 配置命令
|
||||
|
||||
#### 稳定性优化
|
||||
- [x] 完善错误处理
|
||||
- [x] 安全性检查(nonce、权限、输入清理)
|
||||
- [ ] 添加单元测试(v1.0 前完成)
|
||||
- [ ] 性能优化(请求去重)
|
||||
- [ ] 缓存分层优化
|
||||
|
||||
---
|
||||
|
||||
## v0.9.0 - 版本控制 + 用户体验 ← 当前目标
|
||||
|
||||
### 目标
|
||||
实现版本锁定和回滚机制,提升用户体验
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### 版本锁定
|
||||
- [ ] 锁定插件/主题到当前版本
|
||||
- [ ] 锁定到指定版本
|
||||
- [ ] 忽略特定版本更新
|
||||
- [ ] 版本锁定 UI
|
||||
|
||||
#### 回滚机制
|
||||
- [ ] 更新前自动备份
|
||||
- [ ] 备份存储管理
|
||||
- [ ] 一键回滚功能
|
||||
- [ ] 保留最近 N 个版本
|
||||
|
||||
#### 更新日志聚合
|
||||
- [ ] 从更新源获取 changelog
|
||||
- [ ] 统一显示格式
|
||||
- [ ] 在更新页面显示
|
||||
|
||||
#### Site Health 集成
|
||||
- [ ] 更新源连通性检查
|
||||
- [ ] 配置完整性检查
|
||||
- [ ] 提供修复建议
|
||||
|
||||
#### Bridge API 完善
|
||||
- [ ] GET /sources - 获取更新源列表
|
||||
- [ ] GET /check/{source_id} - 检查指定源
|
||||
- [ ] GET /plugins/{slug}/info - 获取插件信息
|
||||
- [ ] GET /themes/{slug}/info - 获取主题信息
|
||||
|
||||
---
|
||||
|
||||
## v1.0.0 - 正式发布
|
||||
|
||||
### 目标
|
||||
稳定版本,完善文档和用户体验
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### 文档完善
|
||||
- [x] 用户指南
|
||||
- [ ] 开发者文档(如何创建兼容的更新服务器)
|
||||
- [x] API 文档
|
||||
- [x] 常见问题
|
||||
- [ ] 视频教程
|
||||
|
||||
#### 用户体验
|
||||
- [ ] 状态仪表板优化
|
||||
- [ ] 性能基准测试报告
|
||||
|
||||
#### 高级功能(延后)
|
||||
- [ ] 多站点 (Multisite) 支持
|
||||
- [ ] 安全扫描集成(VirusTotal/Patchstack)
|
||||
- [ ] 白标/OEM 支持
|
||||
|
||||
#### 发布准备
|
||||
- [ ] GitHub Release
|
||||
- [ ] 菲码源库 Release
|
||||
- [ ] 更新日志
|
||||
- [ ] 宣传材料
|
||||
|
||||
---
|
||||
|
||||
## AI 桥接层(暂缓)
|
||||
|
||||
> 以下功能暂缓开发,待核心功能稳定后考虑
|
||||
|
||||
### OpenAI 兼容层
|
||||
- [ ] `pre_http_request` 拦截器
|
||||
- [ ] 用户可配置白名单
|
||||
- [ ] OpenAI Chat API 转发
|
||||
- [ ] 响应格式转换
|
||||
- [ ] 自定义端点支持(透传模式)
|
||||
- [ ] WPMind 集成(可选)
|
||||
|
||||
### 商业插件 AI 适配
|
||||
- [x] AI 网关基础(AIGateway)
|
||||
- [x] Yoast SEO Pro 适配器
|
||||
- [x] Rank Math 适配器
|
||||
- [ ] 嗅探模式(收集 API 格式)
|
||||
|
||||
---
|
||||
|
||||
## 技术架构
|
||||
|
||||
```
|
||||
wpbridge/
|
||||
├── wpbridge.php # 主文件
|
||||
├── includes/
|
||||
│ ├── Core/
|
||||
│ │ ├── Plugin.php # 插件主类
|
||||
│ │ ├── Loader.php # 自动加载
|
||||
│ │ ├── Settings.php # 设置管理
|
||||
│ │ ├── Logger.php # 日志系统
|
||||
│ │ ├── CommercialDetector.php # 商业插件检测
|
||||
│ │ ├── RemoteConfig.php # 远程配置
|
||||
│ │ └── ItemSourceManager.php # 项目源管理
|
||||
│ │
|
||||
│ ├── UpdateSource/
|
||||
│ │ ├── SourceManager.php # 更新源管理
|
||||
│ │ ├── SourceModel.php # 数据模型
|
||||
│ │ ├── SourceType.php # 源类型枚举
|
||||
│ │ ├── PluginUpdater.php # 插件更新器
|
||||
│ │ ├── ThemeUpdater.php # 主题更新器
|
||||
│ │ └── Handlers/ # 各类处理器
|
||||
│ │ ├── JsonHandler.php
|
||||
│ │ ├── GitHubHandler.php
|
||||
│ │ ├── GitLabHandler.php
|
||||
│ │ ├── GiteeHandler.php
|
||||
│ │ ├── ArkPressHandler.php
|
||||
│ │ ├── AspireCloudHandler.php
|
||||
│ │ ├── FairHandler.php
|
||||
│ │ └── ...
|
||||
│ │
|
||||
│ ├── SourceGroup/
|
||||
│ │ ├── GroupManager.php # 分组管理
|
||||
│ │ └── GroupModel.php # 分组模型
|
||||
│ │
|
||||
│ ├── Cache/
|
||||
│ │ ├── CacheManager.php # 缓存管理
|
||||
│ │ ├── HealthChecker.php # 健康检查
|
||||
│ │ └── FallbackStrategy.php # 降级策略
|
||||
│ │
|
||||
│ ├── Performance/
|
||||
│ │ ├── ParallelRequestManager.php # 并行请求
|
||||
│ │ ├── ConditionalRequest.php # 条件请求
|
||||
│ │ └── BackgroundUpdater.php # 后台更新
|
||||
│ │
|
||||
│ ├── API/
|
||||
│ │ ├── RestController.php # REST API
|
||||
│ │ └── ApiKeyManager.php # API Key 管理
|
||||
│ │
|
||||
│ ├── CLI/
|
||||
│ │ └── BridgeCommand.php # WP-CLI 命令
|
||||
│ │
|
||||
│ ├── Notification/
|
||||
│ │ ├── NotificationManager.php
|
||||
│ │ ├── EmailHandler.php
|
||||
│ │ └── WebhookHandler.php
|
||||
│ │
|
||||
│ ├── AIBridge/
|
||||
│ │ ├── AIGateway.php # AI 网关
|
||||
│ │ └── Adapters/
|
||||
│ │ ├── YoastAdapter.php
|
||||
│ │ └── RankMathAdapter.php
|
||||
│ │
|
||||
│ └── Admin/
|
||||
│ └── AdminPage.php # 管理页面
|
||||
│
|
||||
├── templates/
|
||||
│ └── admin/
|
||||
│ ├── main.php
|
||||
│ └── tabs/
|
||||
│ ├── overview.php
|
||||
│ ├── sources.php
|
||||
│ ├── diagnostics.php
|
||||
│ └── api.php
|
||||
│
|
||||
└── assets/
|
||||
├── css/
|
||||
└── js/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 依赖关系
|
||||
|
||||
```
|
||||
WPBridge 核心功能
|
||||
├── 更新源桥接 - 无依赖,独立运行
|
||||
├── 商业插件检测 - 无依赖,独立运行
|
||||
├── Bridge API - 无依赖,独立运行
|
||||
└── AI 桥接 - 可选依赖 WPMind(暂缓)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 待讨论事项
|
||||
|
||||
- [x] 是否需要云端配置同步?→ 暂不需要,v1.0 后考虑
|
||||
- [x] 是否支持多站点?→ 付费功能(v1.0.0)
|
||||
- [x] 定价策略(免费 vs 付费)?→ 基础免费 + 高级付费
|
||||
- [x] 与文派叶子的集成方式?→ 独立运行,检测 WPCY 存在时官方源走 WPCY
|
||||
- [x] 预置更新源?→ 文派开源(默认)、ArkPress、AspireCloud、FAIR
|
||||
- [x] WP-CLI 命令前缀?→ `wp bridge`
|
||||
- [x] 自托管方案支持?→ ArkPress、AspireCloud、UpdatePulse Server、PUC 格式
|
||||
|
||||
---
|
||||
|
||||
*最后更新: 2026-02-05*
|
||||
Loading…
Add table
Add a link
Reference in a new issue