Skip to content

Conversation

@Gaubee
Copy link
Collaborator

@Gaubee Gaubee commented Jan 7, 2026

概述

破坏性更新:将插件系统从 import 模式重构为进程启动 + HTTP 代理链模式。

动机

之前为了支持流传输,使用了强制 import 的方式加载插件,但这破坏了最初通过 __CALLBACK_URL__ 启动子进程的设计。本次重构回归进程模式,同时使用标准 HTTP 代理协议实现流式传输。

架构

Main Proxy (20001)
    │ spawn: HTTP_PROXY=http://localhost:54322
    ▼
Plugin A (54321)
    │ spawn: HTTP_PROXY=http://localhost:54323
    ▼
Plugin B (54322)
    │ spawn: HTTP_PROXY=${主进程的 HTTP_PROXY}
    ▼
Upstream

主要变更

新增

  • @jixo/proxy-plugin-server 包:提供 createProxyServer() 启动插件 HTTP 代理

重写

  • hooks-executor.ts
    • HooksPool 进程池(配置 hash 去重 + 引用计数)
    • __CALLBACK_URL__ 协议回报端口
    • HTTP_PROXY 环境变量构建 hop 链
  • proxy-server.ts:通过 HTTP 代理转发到插件链

更新

  • 6 个内置插件入口改用 createProxyServer()

测试

  • hooks-executor: 初始化、生命周期、precheck、disabled hooks
  • proxy-plugin-server: callback 回调、ProxyPlugin 接口兼容性

破坏性变更

  • 移除 startPluginServerdefinePlugin 导出
  • 插件入口需改用 createProxyServer()

Gaubee added 2 commits January 7, 2026 15:30
破坏性更新:
- 新增 @jixo/proxy-plugin-server 包,提供插件进程运行环境
- 重写 hooks-executor.ts:使用 HooksPool 进程池 + __CALLBACK_URL__ 协议
- 改造 proxy-server.ts:通过 HTTP 代理转发给插件链
- 重构所有内置插件入口使用 createProxyServer()

核心变更:
- 插件作为独立 HTTP 代理进程运行
- 使用 HTTP_PROXY 环境变量构建 hop 链
- 支持插件独立运行或被主 proxy 编排
- hooks-executor: 初始化、生命周期、precheck、disabled hooks
- proxy-plugin-server: callback 回调、ProxyPlugin 接口兼容性
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant