Files
Genarrative/plugins/README.md
T
kdletters dd36de3aa6 新增 AGC 内置插件模式与插件工作区
- 新增 plugins/ 插件工作区及 agc-cocos-editor 插件包,Cocos 直连模块从宿主源码树迁入插件包
- 新增 server-rs/crates/editor-adapter-api 通用编辑器适配器契约,宿主只保留适配器注册与 RPC 路由
- 新增内置插件登记表与可用开关,状态持久化在 AppData extensions/builtin-plugins.json,状态文件损坏时失败关闭
- 禁用内置插件时先停止进程并拒绝启动,同时从 Runtime 工具目录、工具策略快照、原生函数目录与 DirectProject 工具面移除对应工具
- 插件宿主新增 plugins/ 工作区扫描,内置插件优先于同名 AppData 导入插件,前端只提供可用开关而不提供重命名和卸载入口
- 编辑器操作统一经 host.rpc 路由到插件包自带的 native 适配器,并删除 Cocos 专属 Tauri 命令
- 修正 Windows 打包与开发态 payload 路径,随包映射 plugins 工作区资源
- 同步插件、Cocos 桥接、实施计划文档与 decision log
2026-09-10 20:00:02 +08:00

71 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGC 插件工作区
本目录是 AGC 插件的工作区,每个一级子目录是一个 **Agent Plugins 包**,随 AGC 客户端分发。
```text
plugins/
└─ agc-cocos-editor/
├─ plugin.json Agent Plugins 标准清单 + AGC Runtime 扩展
├─ package.json npm workspace 成员,声明 SDK 版本契约
├─ panels/ 自包含面板 HTML
├─ src/ 运行时入口与适配器翻译
└─ native/ 插件自带 native 模块(Cargo 包)
```
## 清单格式
`plugin.json` 使用 OpenAI Agent Plugins 标准 schemaAGC 专属字段放在
`extensions.world.genarrative.agc`
```json
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "agc-cocos-editor",
"version": "0.1.0",
"extensions": {
"com.openai": {
"interface": { "displayName": "Cocos Creator 编辑器桥接" }
},
"world.genarrative.agc": {
"apiVersion": "v1",
"entry": "./src/entry.mjs",
"adapter": "cocos-editor",
"permissions": [
"events.subscribe",
"editor.rpc",
"ui.register",
"capability.register"
],
"panels": []
}
}
}
```
约束与通用宿主一致:插件目录内最多一个 Plugin;`entry` 必须是包内普通文件;
未知权限、非法入口或不支持的 `apiVersion` 会让插件进入 `invalid` 状态,不启动进程。
## 宿主如何加载
宿主按以下顺序解析插件工作区,任一命中即生效:
1. 环境变量 `AGC_PLUGIN_WORKSPACE`(本地联调与测试)。
2. 随包资源目录 `<resource_dir>/plugins`(安装包)。
3. 开发构建的仓库 `plugins/` 目录。
工作区插件是**内置插件**:随客户端分发、不能卸载,只能通过可用开关控制是否生效。
开关状态保存在 AppData `extensions/builtin-plugins.json`,内置插件优先级高于同名
导入插件,不会被 AppData 覆盖或删除。插件运行入口由宿主以插件目录为 cwd 启动
`.mjs` 用系统 `node`,其它入口直接执行),stdio 上使用一行一个 JSON-RPC 2.0 消息。
## 新增插件
1. 新建 `plugins/<kebab-case-name>/`,写 `plugin.json``name` 与目录名保持一致。
2. 运行时插件提供 `src/entry.mjs`,按 `agc.plugin.v1` 协议注册命令、面板和能力;
仅打包 Skill/MCP 的插件可以没有 `entry`,宿主会按 `package` 状态展示。
3. 需要编辑器原生能力时,在 `native/` 下放插件自己的 Cargo 包,并实现
`editor-adapter-api``EditorAdapter``plugin.json``adapter` 字段必须与
`EditorAdapter::id()` 一致。
4. 在根 `package.json``scripts/check-npm-workspaces.mjs` 登记 workspace 成员。
5. 更新 `docs/technical/` 里的插件或编辑器方案文档。