Files
Genarrative/plugins/README.md
T
kdletters 54d0fb75ea 接入 Godot 编辑器插件与受控执行链路
新增 GDExtension 自动引导、GDScript 执行和实例隔离缓存
接入 AGC 插件开关、Runner、Agent 工具与权限审计
完善执行回执确认、不确定状态阻断及卸载恢复
补齐 Windows 分发资源、定向测试与实机验收文档
2026-09-20 16:35:04 +08:00

90 lines
4.2 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-godot-editor/ Godot GDExtension 编辑器桥接(Windows x64
│ ├─ src/ AGC 插件协议入口
│ └─ native/ GDExtension 载荷、实例缓存与 EditorAdapter
├─ agc-unity-editor/ Unity Mono 编辑器桥接(Windows x64
│ ├─ src/ AGC 插件协议入口
│ ├─ native/ 通用 EditorAdapter 与 helper 生命周期
│ └─ dotnet/ 固定版本 DotCraft Attach、helper、许可与构建脚本
└─ 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/` 里的插件或编辑器方案文档。
Unity 插件沿用相同开关与项目门禁。Windows 开发/发行的 `unity-editor-execute`
feature 会构建自包含 Attach helper,并只将运行文件与许可放入 staging;构建机需要
.NET 10 SDK 与 Visual Studio C++ x64 工具链,最终用户不需另装这两项。
源码来源、执行归属和验收边界见
[Unity 插件接入](../docs/technical/【技术方案】AGC Unity编辑器插件接入-2026-09-18.md)。
Godot 插件通过 `godot-editor-execute` feature 构建并校验 GDExtension 载荷,只分发
运行入口、DLL、元数据及许可。构建机需要 Windows x64 C 工具链;DLL 原件留在安装资源,
每个编辑器的临时加载副本放在 AGC 私有缓存。连接时维护工程内受管 `.gdextension`
引用及其 UID,通过 Godot 聚焦扫描首次加载。文件归属、真实执行和卸载规则见
[Godot 插件接入](<../docs/technical/【技术方案】AGC Godot编辑器插件接入-2026-09-20.md>)。