Files
aibis-dream/Docs/AgentBridgePlan.md
T

4.3 KiB
Raw Blame History

AgentBridge 计划草案

状态:草案,待讨论后实施。
目的:让 Cursor Agent / Unity MCP 能自动到达可测状态、读取结构化运行时状态、做回归验证,减少手动 Play + 复现。

背景

当前 Agent 已可通过 Unity MCP 做:

  • Play / Stop、加载场景、查 GameObject / 组件
  • 读 Console、截图
  • 触发 Editor MenuItemexecute_menu_item

难以自动完成的部分:

  • 完整叙事流程(Persistence → 维修场景 → Yarn → 进模块)
  • UI 交互(Esc 开设置、点 log 面板等)
  • 缺乏结构化状态输出,debug 依赖临时埋点

本项目已有大量可复用入口:FixSystemCenterEyeSystemDialogControllerUIManager、各 *YarnCommandPeipeiFixCues(如 EyeCue.EnterImmediate)等。AgentBridge 只做薄包装,不重写业务逻辑。

目标

  1. 一键到可测状态 — 场景预设,而非暴露底层细节
  2. 状态可查询 — JSON / Log,便于 Agent 自动验证
  3. Editor / Dev 专用#if UNITY_EDITOR || DEVELOPMENT_BUILD,不进 Release
  4. 菜单路径稳定 — 供 MCP execute_menu_item 与文档引用

阶段 1:最小可用(建议优先)

内容 调用方式
AgentBridge.cs 静态薄包装
场景预设 EnterPeipeiEyeModule()EyeCue.EnterImmediate AIBIS/Enter Peipei Eye Module
UI 操作 ToggleSettingPanel()ToggleMainPanel() AIBIS/Toggle Setting Panel
状态查询 DumpEyeOverlayState() → 输出 layer / sortingOrder / active AIBIS/Dump Eye Overlay State
文档 本文件 + 菜单清单维护 Agent / .cursor/rules 引用

建议 Editor 菜单(第一批)

AIBIS/Enter Peipei Eye Module
AIBIS/Toggle Setting Panel
AIBIS/Toggle Main Panel
AIBIS/Dump Eye Overlay State

代码位置(待拍板)

  • 方案 AAssets/Scripts/Framework/AgentBridge/Runtime + #if 守卫)
  • 方案 BAssets/Editor/Agent/(仅 EditorMenuItem 与 Bridge 同目录)

阶段 2:常用模块覆盖(按需扩展)

按实际 debug 频率扩展场景预设:

模块 预设示例 复用 API
FixSystem TransitionTo(Eye / UF / Memory)ResetCablePanel FixSystemCenter
Eye EyeOverlayOn/OffSetEyeTarget(name) EyeSystem
Dialog StartDialogNode(nodeName) DialogController
Camera SwitchCamera(EyeDeep) CameraKit

每个预设 = 一个 MenuItem + 一个 AgentBridge 方法 +(可选)一个 GetXxxState()

阶段 3:可验证 + 防回归

用途
GetXxxState() 返回 JSON Agent 读 Console / 文件验证,少依赖截图
PlayMode Tests 如 overlay UI 层、sortingOrder、Dialog 不被挡
MCP run_tests UI / 渲染相关改动后自动跑

示例:Eye Overlay 状态结构

{
  "overlayActive": true,
  "canvasLayer": 5,
  "sortingOrder": 0,
  "sortingLayer": "StartUI",
  "worldCamera": "UI Camera",
  "layerVisibleToCamera": true
}

设计原则

  1. 只包装,不重写 — 调用现有 public API
  2. 场景预设 > 原子命令 — 优先「一键到眼动模块」
  3. 状态可查询 — 每个常 debug 模块至少一个 GetState() / Dump*()
  4. 不进入 Release — 编译条件守卫 + 不进 Addressables
  5. 菜单路径稳定 — 变更需同步更新本文档

待讨论问题

  1. 代码放哪Framework/AgentBridge 还是 Editor/Agent
  2. 第一批优先级:眼动 / 插线 / 对话 / 记忆 — 哪个最常需要 Agent 介入?
  3. 是否写入 .cursor/rules:固定 MenuItem 清单,让 Agent 默认走 Bridge 流程?
  4. 与现有 Editor 工具关系:如 EyeSystemEditor 预览 — 合并还是并存?

参考:Persistence UI 层级

Eye 视口遮罩修复后的约定(EyeViewportOverlay):

Canvas sortingOrder 说明
EyeViewportOverlay 0 遮罩,不挡系统 UI
UI Canvas 1 设置、MainPanel、PlayTool 等
Dialog Canvas 3 对话

Overlay 使用 ScreenSpaceCamera + UI CameraCanvas 须在 UI 层 (5) 以匹配 UI Camera culling mask。

变更记录

日期 说明
2026-07-01 初稿:overlay debug 后整理 Agent 自动化计划