插件中心对接与接口清单

April 8, 2026 · View on GitHub

本文档描述 CodexManager 当前插件中心的对接方式,并列出当前系统里与插件相关的全部对外接口。当前实现是“市场层 + Rhai 运行时”结构:市场负责分发清单,Rhai 负责执行脚本。

1. 接入前提

  • 默认市场模式为 builtin,使用内置精选插件。
  • 若要接入私有仓库或自定义仓库,需要把市场模式切到 private 或 custom。
  • 远程市场源支持返回:
    • 顶层数组
    • { "items": [...] }
  • 插件脚本目前以 Rhai 执行为主,运行时按权限开放少量内建函数。

2. 市场模式

值含义行为
builtin内置精选忽略外部 URL,只返回内置市场
private企业私有使用保存的远程仓库地址
custom自定义源使用保存的远程仓库地址

相关设置键:

  • plugin.market_mode
  • plugin.market_source_url

3. 前端入口

项值
路由/plugins/
页面名称插件中心
侧边栏入口插件中心

4. Tauri 命令接口

命令名参数说明
service_plugin_catalog_listaddr?, source_url?拉取插件市场清单
service_plugin_catalog_refreshaddr?刷新插件市场
service_plugin_installaddr?, entry安装插件
service_plugin_updateaddr?, entry更新插件
service_plugin_uninstalladdr?, plugin_id卸载插件
service_plugin_listaddr?获取已安装插件
service_plugin_enableaddr?, plugin_id启用插件
service_plugin_disableaddr?, plugin_id停用插件
service_plugin_tasks_updateaddr?, task_id, interval_seconds更新任务间隔
service_plugin_tasks_listaddr?, plugin_id?获取任务列表
service_plugin_tasks_runaddr?, task_id, input?手动运行任务
service_plugin_logs_listaddr?, plugin_id?, task_id?, limit?获取运行日志

5. Service JSON-RPC 接口

RPC 方法说明
plugin/catalog/list获取市场清单
plugin/catalog/refresh刷新市场清单
plugin/install安装插件
plugin/update更新插件
plugin/uninstall卸载插件
plugin/list已安装插件列表
plugin/enable启用插件
plugin/disable停用插件
plugin/tasks/update更新任务
plugin/tasks/list任务列表
plugin/tasks/run运行任务
plugin/logs/list运行日志

6. 市场清单 JSON 结构

6.1 插件字段

字段类型必填说明
idstring是插件唯一 ID
namestring否插件名称,缺省回退到 id
versionstring否版本号,缺省 0.0.0
descriptionstring否描述
authorstring否作者
homepageUrlstring否首页地址
scriptUrlstring否脚本远程地址
scriptBodystring否脚本文本
permissionsstring[]否权限列表
taskstask[]否任务定义
manifestVersionstring否清单版本,缺省 1
categorystring否分类
runtimeKindstring否运行时,当前默认 rhai
tagsstring[]否标签
sourceUrlstring否来源地址

6.2 任务字段

字段类型必填说明
idstring是任务 ID
namestring否任务名称
descriptionstring否任务描述
entrypointstring否脚本入口函数名,缺省 run
scheduleKindstring否manual / interval
intervalSecondsnumber否间隔秒数
enabledbool否默认启用

7. 已安装插件返回结构

字段说明
pluginId插件 ID
sourceUrl来源 URL
name名称
version版本
description描述
author作者
homepageUrl首页
scriptUrl脚本 URL
permissions权限列表
statusenabled / disabled / broken
installedAt安装时间
updatedAt更新时间
lastRunAt最近执行时间
lastError最近错误
taskCount任务总数
enabledTaskCount已启用任务数
manifestVersion清单版本
category分类
runtimeKind运行时
tags标签

8. 任务与日志返回结构

8.1 任务

字段说明
id任务 ID
pluginId插件 ID
pluginName插件名称
name任务名称
description描述
entrypoint入口函数名
scheduleKind调度类型
intervalSeconds间隔秒数
enabled是否启用
nextRunAt下次执行时间
lastRunAt上次执行时间
lastStatus上次状态
lastError上次错误

8.2 日志

字段说明
id日志 ID
pluginId插件 ID
pluginName插件名称
taskId任务 ID
taskName任务名称
runTypemanual / scheduled
statusok / error
startedAt开始时间
finishedAt结束时间
durationMs耗时
output输出 JSON
error错误信息

9. 插件运行上下文

运行时调用入口函数时会传入一个 context 对象,结构如下:

{
  "plugin": {
    "id": "cleanup-banned-accounts",
    "name": "清理封禁账号",
    "version": "1.0.0",
    "sourceUrl": "builtin://codexmanager",
    "permissions": ["accounts:cleanup"]
  },
  "task": {
    "id": "cleanup-banned-accounts::run",
    "name": "定时自动清理",
    "description": "每 60 秒自动清理一次所有封禁账号",
    "entrypoint": "run",
    "scheduleKind": "interval",
    "intervalSeconds": 60,
    "enabled": true
  },
  "input": null,
  "runStartedAt": 1710000000
}

10. Rhai 内建函数

当前仅在满足对应权限时开放:

权限函数说明
settings:readget_setting(key)读取单个设置
settings:readlist_settings()获取全部设置
networkhttp_get(url)发送 GET 请求
networkhttp_post(url, body)发送 POST 请求
accounts:cleanupcleanup_banned_accounts()清理封禁账号
accounts:cleanupcleanup_unavailable_free_accounts()清理不可用免费账号

公共函数:

  • log(message):写入运行日志

11. 对接建议

  • 如果你要做官方精选市场,优先给插件补 category、tags、manifestVersion。
  • 如果你要做企业私有市场,推荐直接返回顶层 items 数组,方便后端容错。
  • 如果你要做自定义仓库,保持 scriptBody 或 scriptUrl 二选一即可。
  • 当前运行时是 Rhai,适合轻量自动化,不建议把重型插件逻辑直接堆到脚本里。
  • 系统当前内置了两个账号治理脚本:封禁账号定时清理、不可用免费账号定时清理。
  • Capabilities such as user lists, usage lists, and request logs are already listed in System Internal Interface Inventory under their common names. They are host-side internal interfaces, not default built-in Rhai functions.