Skip to content

Conversation

@foxxorcat
Copy link
Member

一个基于 WASI (WebAssembly) 的存储驱动插件化方案。


主仓库

核心技术栈

参考插件实现

代码分支


🗺️ 下一步开发计划

1. 近期目标

  • 修复 wazero-wasip2 中的生命周期管理和可能的时序错误,避免资源泄漏。
  • 优化 Guest<->Host 读写边界,增加缓存以提升性能。
  • 完善 wasi-http 的超时设置
  • 适配上传下载限速功能
  • 增加对存储的直接操控能力,如加密和分块。

2. 长期目标

  • 以代码生成代替反射,优化 wazero-wasip2 性能。
  • 完善对 Rust 的支持,利用其构建体积更小(目标 < 600KB)的插件。

@github-actions
Copy link

⚠️ PR 标题需以 feat(): , docs(): , fix(): , style(): , refactor(): , chore(): 其中之一开头,例如:feat(component): 新增功能
⚠️ The PR title must start with feat(): , docs(): , fix(): , style(): , or refactor(): , chore(): . For example: feat(component): add new feature.

如果跨多个组件,请使用主要组件作为前缀,并在标题中枚举、描述中说明。
If it spans multiple components, use the main component as the prefix and enumerate in the title, describe in the body.

@ILoveScratch2 ILoveScratch2 requested a review from Copilot October 16, 2025 04:55
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements a comprehensive plugin system based on WebAssembly (WASI) for OpenList, enabling dynamic loading of storage driver plugins. The implementation includes a plugin manager with installation/uninstallation capabilities, WASI host bindings, and API endpoints for plugin management.

  • Adds complete plugin management infrastructure with database persistence
  • Implements WebAssembly runtime integration for driver plugins
  • Provides REST API endpoints for plugin lifecycle operations

Reviewed Changes

Copilot reviewed 19 out of 20 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
server/router.go Adds new API route group for plugin management endpoints
server/handles/plugin.go Implements HTTP handlers for plugin CRUD operations
internal/plugin/manager.go Core plugin manager with install/uninstall/update functionality
internal/plugin/driver.go WebAssembly driver implementation and WASI bindings
internal/plugin/host.go Host-side WASI interface implementations
internal/plugin/warp/*.go Type definitions and converters for plugin communication
internal/db/plugin.go Database operations for plugin persistence
internal/model/plugin.go Plugin data model definition
go.mod Adds WebAssembly runtime dependencies
cmd/common.go Integrates plugin initialization into startup sequence

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

case hash_extend.GCID:
return HashAlg{GCID: &struct{}{}}
}
panic("plase add hash convert")
Copy link

Copilot AI Oct 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected spelling of 'plase' to 'please'.

Copilot uses AI. Check for mistakes.
} else if hash.GCID != nil {
return hash_extend.GCID
}
panic("plase add hash convert")
Copy link

Copilot AI Oct 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected spelling of 'plase' to 'please'.

Copilot uses AI. Check for mistakes.
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.

3 participants