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:
@@ -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
|
||||
Reference in New Issue
Block a user