Chuyển tới nội dung chính
Phiên bản: v1

Manifest và quyền

Mỗi plugin mang manifest.json. Host dùng để biết id, capability nào bind, host mạng và bí mật nào được phép, và form settings vẽ thế nào.

acton-plugin validate kiểm tra tệp này. Schema chính thức là spec/MANIFEST_SCHEMA.json trong repo SDK.


Trường bắt buộc​

TrườngQuy tắc
id^[a-z0-9_-]+$ — tên thư mục và /data/plugins/{id}
nameTiêu đề cho người
versionSemVer MAJOR.MINOR.PATCH (hậu tố sau số thứ ba vẫn được)
capabilitiesMảng không rỗng: tool, channel, connector

Tùy chọn: description, author, license (mặc định MIT).


Quyền​

"permissions": {
"net_outbound": ["api.github.com", "*.telegram.org"],
"secrets": ["github_access_token", "discord_bot_tokens.*"],
"storage": true,
"workspace": false,
"bus_events": ["channel.discord.received"]
}
KhóaMặc địnhÝ nghĩa
net_outboundkhôngWhitelist hostname cho ctx.HTTP() và ctx.WS(). * chỉ được validate kèm cảnh báo.
secretskhôngKhóa vault ctx.Vault().GetSecret được đọc. Hậu tố .* là prefix (token nhiều tài khoản).
storagefalseKho SQLite key-value riêng theo id plugin.
workspacefalseAPI tệp Workspace user (ctx.Workspace()).
bus_eventskhôngTopic ctx.EventBus().Emit được publish.

Sandbox fail-closed: host không nằm trong list thì bị từ chối.


Khối capability​

Tools​

"tools": [
{
"name": "convert_currency",
"description": "Convert currency amounts",
"category": "plugin",
"parameters": { "type": "object", "properties": {} }
}
]

parameters / schema tùy chọn nếu NewTypedTool sinh schema runtime.

Channels​

"channels": [
{
"name": "telegram",
"display_name": "Telegram",
"requires_pairing": true
}
]

Connectors​

"connectors": [
{
"name": "github",
"display_name": "GitHub",
"auth_type": "oauth2",
"actions": ["list_repos", "create_issue"]
}
]

auth_type: oauth2, api_key, hoặc bearer.


config_schema (form settings)​

ActonOS vẽ form từ JSON Schema cộng gợi ý UI. Bạn không viết React.

Gợi ýHiệu lực
x-secret: trueLưu vault phần cứng; plugin đọc bằng ctx.Vault()
x-ui-widgetpassword, agent-selector, textarea, code, slider
x-ui-groupTiêu đề nhóm thu gọn
x-ui-placeholderPlaceholder ô nhập
x-orderThứ tự trường

Trong Go: ctx.Config().Bind(&cfg) với struct khớp JSON.

Ví dụ form kênh và Discord đầy đủ nằm ở bản tiếng Anh cùng trang — schema JSON giữ nguyên.


Trang liên quan​