Skip to content

feat: 流式 hooks 支持 + v7 分表架构 + 插件信息持久化#12

Merged
Gaubee merged 2 commits intomainfrom
feat/plugin-stream-fix
Jan 6, 2026
Merged

feat: 流式 hooks 支持 + v7 分表架构 + 插件信息持久化#12
Gaubee merged 2 commits intomainfrom
feat/plugin-stream-fix

Conversation

@Gaubee
Copy link
Copy Markdown
Collaborator

@Gaubee Gaubee commented Jan 6, 2026

核心改进

1. 流式 Hooks 支持 (Precheck + Tee)

  • 新增 shouldProcessRequest/shouldProcessResponse precheck 方法
  • 插件可声明是否需要处理请求/响应 body
  • 框架根据 precheck 结果决定是否 tee stream
  • 所有 5 个插件已实现 precheck 方法

2. v7 分表数据库架构 (破坏性更新)

  • requests 主表: 只存元数据,列表查询极快
  • request_headers: 按 stage 存储各阶段 headers
  • request_bodies: 存储 BLOB 格式的 body (不再 base64 编码)
  • hook_layers: 记录每个插件的处理层
  • 新增 plugin_info TEXT 字段存储插件信息 JSON

3. 插件信息持久化

  • 从 headers 中解析 pluginInfo 并存入数据库
  • 列表查询时返回 pluginInfo,刷新后仍可见
  • 支持请求和响应 headers 中的插件信息

4. 兼容层

  • createProxyRequest/updateProxyRequest 保持旧接口
  • 自动从 headers 解析 plugin_info
  • 自动处理 BLOB <-> Buffer 转换

文件变更

新增:

  • src/lib/db-schema-v7.ts - v7 分表 schema
  • src/lib/db-requests-v7.ts - 数据库 API + 兼容层
  • tests/db-init.test.ts - 数据库初始化测试
  • tests/db-requests-v7.test.ts - SSE 流式测试

修改:

  • packages/proxy-plugin/src/types.ts - 新增 PrecheckResult 类型
  • packages/proxy-plugin-*/src/plugin.ts - 实现 precheck 方法
  • src/proxy-server.ts - 流式处理 + tee 逻辑
  • src/lib/hooks-executor.ts - precheck 方法
  • src/lib/db.ts - 使用 v7 schema

测试

✅ 390 tests passing

注意

这是破坏性更新,需要清空旧数据库或等待自动迁移。

Gaubee added 2 commits January 6, 2026 15:29
## 核心改进

### 1. 流式 Hooks 支持 (Precheck + Tee)
- 新增 shouldProcessRequest/shouldProcessResponse precheck 方法
- 插件可声明是否需要处理请求/响应 body
- 框架根据 precheck 结果决定是否 tee stream
- 所有 5 个插件已实现 precheck 方法

### 2. v7 分表数据库架构 (破坏性更新)
- 主表 requests: 只存元数据,列表查询极快
- request_headers: 按 stage 存储各阶段 headers
- request_bodies: 存储 BLOB 格式的 body (不再 base64 编码)
- hook_layers: 记录每个插件的处理层
- 新增 plugin_info TEXT 字段存储插件信息 JSON

### 3. 插件信息持久化
- 从 headers 中解析 pluginInfo 并存入数据库
- 列表查询时返回 pluginInfo,刷新后仍可见
- 支持请求和响应 headers 中的插件信息

### 4. 兼容层
- createProxyRequest/updateProxyRequest 保持旧接口
- 自动从 headers 解析 plugin_info
- 自动处理 BLOB <-> Buffer 转换

## 文件变更

新增:
- src/lib/db-schema-v7.ts - v7 分表 schema
- src/lib/db-requests-v7.ts - 数据库 API + 兼容层
- tests/db-init.test.ts - 数据库初始化测试
- tests/db-requests-v7.test.ts - SSE 流式测试

修改:
- packages/proxy-plugin/src/types.ts - 新增 PrecheckResult 类型
- packages/proxy-plugin-*/src/plugin.ts - 实现 precheck 方法
- src/proxy-server.ts - 流式处理 + tee 逻辑
- src/lib/hooks-executor.ts - precheck 方法
- src/lib/db.ts - 使用 v7 schema

## 测试
390 tests passing
@Gaubee Gaubee merged commit 2bee0ca into main Jan 6, 2026
@Gaubee Gaubee deleted the feat/plugin-stream-fix branch January 6, 2026 10:41
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