Files
Genarrative/plugins/README.md
T
kdletters 4a46f89c9b
Project CI / Repository checks (push) Successful in 2m45s
Project CI / Frontend tests (push) Successful in 3m27s
Project CI / Backend tests (push) Successful in 6m18s
Project CI / Native shell tests (push) Failing after 13m52s
接入 AGC 内置插件宿主并补齐 Cocos 编辑器能力 (#338)
客户端新增随包提供的插件宿主和 Cocos Creator 集成:识别并导入 Cocos 项目,通过内置桥接操作已打开的编辑器,无需安装项目 MCP 扩展。DirectProject 现在公开 36 个独立 cocos_* 工具,保留通用 JavaScript 执行入口。

- 通用插件 SDK、命令/能力/面板注册、编辑器适配器和跨进程内置插件开关。
- Cocos 场景、节点、组件、Prefab、UI、Layout/Widget、资源、保存、撤销、日志与预览调试;目录和实现由 JS/native 共用。
- 编辑事务回读、失败回滚、后续手动修改保护及不确定结果禁止重放;预览截图通过 MCP image 返回。
- DirectProject 跳过无关专业 Agent 历史,将项目打开和历史读取中的同步 I/O 移出窗口线程,消除 Cocos 执行与项目文件锁的错误耦合。

验证:
- 合并 master 后:类型/配置检查、编码检查、Rust 格式检查和提交钩子通过。
- 合并 master 后:Cocos 项目打开、插件面板和开发启动定向测试 10 通过、2 跳过;DirectProject MCP 测试 17 通过、1 项真实 Creator opt-in 忽略;插件宿主测试 9/9。
- 插件行为测试 17/17;native 测试 20/20,4 项 opt-in 测试默认忽略。
- 真实 Creator 3.8.8 的 36/36 操作 smoke,以及客户端 MCP tools/list、tools/call、UI/撤销和预览截图,在功能实现阶段已验证通过;本次 master 合并后未重复真实 GUI smoke。

验证边界:发行安装包和远端 CI 尚未验收。

Reviewed-on: #338
Co-authored-by: kdletters <kdletters@qq.com>
Co-committed-by: kdletters <kdletters@qq.com>
2026-09-13 14:48:55 +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/` 里的插件或编辑器方案文档。