Files
Genarrative/plugins/agc-cocos-editor
kdletters 02ff914bd3 修复内置插件跨进程开关与不确定执行阻断
让 Runner 和 CLI 查询持久化开关并即时感知 GUI 状态更新
让隔离 MCP 经现有工具桥获取可用工具,并将开关纳入会话缓存标识
在执行入口复查禁用状态,固定原生函数缓存构建使用的工具快照
修复损坏开关文件保存成功后仍保持关闭的状态
保留插件执行结果不确定的结构化回执和宿主适配器阻断,拒绝并发积压与自动重发
新增跨进程工具目录、热切换、坏文件恢复及不确定执行回归测试并同步文档
2026-09-10 21:37:51 +08:00
..

agc-cocos-editor

Cocos Creator 编辑器桥接插件。用户侧看到的是一个普通 AGC 插件:插件生命周期、UI、 RPC、权限和能力注册全部由通用宿主负责,只有“如何连接 Cocos Creator”属于本插件。

它同时是 AGC 的内置插件:随客户端分发、不能卸载。用户在运行时设置里只能切换 “是否可用”,禁用后插件不能启动,cocos.editor.execute / agc_cocos_execute 也会 从 Agent 工具列表、工具策略快照和上下文里消失;重新启用后立即恢复。

plugin.json                      Agent Plugins 清单 + AGC Runtime 扩展
src/entry.mjs                    运行时入口(注册命令 / 能力 / 面板,转发 host.rpc)
src/cocos-editor-adapter.mjs     通用请求 → Cocos 适配器请求的翻译与入参校验
panels/cocos-editor.html         自包含面板
native/cocos-editor-bridge/      插件自带 native 模块(进程发现、pipe 协议、注入)

Runtime 契约

项 值
协议 agc.plugin.v1(stdio 行分隔 JSON-RPC 2.0)
适配器 id cocos-editor
命令 cocos.editor.execute({ code })
能力 cocos.editor.connection({ operation, processId?, projectPath?, timeoutMs? })
面板 cocos-editor(panels/cocos-editor.html,sidebar)

operation 取值为 detect、connect、disconnect、prepare、ping、status、 execute、inject,与 native 适配器的 COCOS_EDITOR_RPC_METHODS 一一对应; src/entry.test.mjs 会校验两边不会漂移。

execute 不接受并发积压。结果不确定时返回 needs-reconciliation 与 retryAllowed: false 并阻止后续发送;native 适配器的阻断不会被 disconnect 或插件进程重载清除。请先核对编辑器状态,再重启客户端恢复。

项目上下文

插件从宿主获得当前受控项目路径:

  • 注册 host.events.subscribe { type: 'project.changed' } 时,宿主在响应里返回当前 projectPath。
  • 之后宿主设置项目时推送 project.changed 事件,payload 带 projectPath。

插件不缓存凭据、不扫描文件系统;所有编辑器操作都经 host.rpc 交给 native 适配器, 由适配器做 PID / 项目 / 版本校验。

Native 模块

native/cocos-editor-bridge 是从 AGC 服务端源码树移入本插件包的独立 crate,实现 editor-adapter-api::EditorAdapter:

  • process-discovery:只把 CocosCreator.exe 主进程的 PID、--project 和 Creator 版本绑定起来,排除 Electron 子进程。
  • windows-transport:注入后通过 named pipe 提供 ping/status/execute,执行结果 不确定时返回 ExecutionUncertain 并禁止自动重放。
  • windows-injection:随包 DLL 的 Windows 注入实现,默认关闭。

AGC 客户端当前在编译期链接本 crate(Cargo path 依赖),由通用宿主按 manifest 的 adapter 字段注册;宿主源码里没有 Cocos 进程名、注入或 Editor.Message 逻辑。

本地验证

cargo test --manifest-path plugins/agc-cocos-editor/native/cocos-editor-bridge/Cargo.toml
node --test plugins/agc-cocos-editor/src/entry.test.mjs

真实 Creator 验收(注入、Inspector 引导、非空场景读写)仍按 docs/technical/【技术方案】AGC Cocos Creator 编辑器桥接模块-2026-09-09.md 单独执行。