Initial commit: Cyrene Plugins SDK + Plugin Manager

Extracted from Cyrene main repo (backend/pkg/plugins + backend/plugin-manager).
Contains SDK interfaces (Plugin/Tool/HostAPI), 13 built-in plugins,
ToolRegistry with call log ring buffer, and Plugin Manager REST API service.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-06 09:49:12 +08:00
commit 5c807d76a0
27 changed files with 3609 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
# Cyrene Plugins
Cyrene AI 的插件系统:社区可扩展工具 SDK + Plugin Manager 服务。
## 结构
```
├── sdk/ # 插件 SDK (Plugin, Tool, HostAPI 接口 + 类型定义)
├── manager/ # ToolRegistry (调用日志环形缓冲区) + PluginManager (生命周期管理)
├── calculator/ # 内置插件 (13 个)
├── crypto/ # - 加密/哈希
├── datetime/ # - 日期时间
├── file/ # - 文件操作
├── http/ # - HTTP 请求
├── iot_control/ # - IoT 设备控制
├── iot_query/ # - IoT 设备查询
├── json/ # - JSON 处理
├── markdown/ # - Markdown 渲染
├── random/ # - 随机数生成
├── text/ # - 文本处理
├── web_fetch/ # - 网页抓取
├── web_search/ # - 网页搜索
├── cmd/
│ └── plugin-manager/ # Plugin Manager 服务 (REST API, 端口 8094)
└── go.mod
```
## 快速开始
```bash
git clone git@git.yeij.top:AskaEth/Cyrene-Plugins.git
cd Cyrene-Plugins
go build ./...
```
### 运行 Plugin Manager
```bash
go run ./cmd/plugin-manager/
# 监听 :8094,提供 REST API 管理插件
```
### API 端点
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/v1/plugins` | 列出所有插件 |
| GET | `/api/v1/plugins/:id` | 插件详情 |
| POST | `/api/v1/plugins/:id/enable` | 启用插件 |
| POST | `/api/v1/plugins/:id/disable` | 禁用插件 |
| POST | `/api/v1/plugins/:id/reload` | 热重载 |
| DELETE | `/api/v1/plugins/:id` | 卸载 |
| GET | `/api/v1/plugins/:id/tools` | 列出插件工具 |
| GET | `/api/v1/tools` | 列出所有工具 |
| POST | `/api/v1/tools/:id/execute` | 执行工具 |
| GET | `/api/v1/health` | 健康检查 |
## 开发插件
实现 `sdk.Plugin` 接口(`Metadata`, `Init`, `Start`, `Stop`, `Health`, `Tools`),然后在 `cmd/plugin-manager/main.go` 中注册。
```go
import "git.yeij.top/AskaEth/Cyrene-Plugins/sdk"
type MyPlugin struct{}
func (p *MyPlugin) Metadata() sdk.PluginMetadata {
return sdk.PluginMetadata{Name: "my-plugin", Version: "1.0.0"}
}
// ... 实现其余接口
```
## 与 Cyrene 主项目的集成
主项目 `ai-core` 通过 `go.mod` replace 指令引用本仓库进行本地开发:
```
replace git.yeij.top/AskaEth/Cyrene-Plugins => ../../../cyrene-plugins
```
## 许可证
MIT