特性(MCP): 增强 AI 参数幻觉容错与全览日志
- 在 \scene-script.js\ 中为 manage_components 启用 operation 作为 action 的后备别名防范 AI 传参幻觉导致中断。 - 在 \main.js\ 的 /call-tool 请求日志中透传完整 arguments JSON 数据,并在超长时予以截断。 - 同步补全 README.md, UPDATE_LOG.md 与 注意事项.md 针对传参错写的防避规则和特性的更新记录。
This commit is contained in:
16
注意事项.md
16
注意事项.md
@@ -69,6 +69,12 @@
|
||||
3. **属性校验**:严禁猜测属性名。在 `update` 前,应通过读取脚本定义或 `get` 返回的现有属性列表来确定准确的属性名称。
|
||||
- **禁止行为**:禁止基于假设进行盲目赋值或删除。如果发现对象不存在,应立即报错或尝试重建,而非继续尝试修改。
|
||||
|
||||
### 5.2 传参精准与别名容错
|
||||
|
||||
- **传参风险**:大语言模型在生成 JSON 时可能会出现操作类型字段名“幻觉”(例如在调用 `manage_components` 时将本应是 `action` 的参数写为含义相近的 `operation`)。
|
||||
- **优化机制**:底层脚本 (`scene-script.js`) 已经全面引入参数别名回落机制(如 `action = action || operation`)。
|
||||
- **提示开发**:尽管底层具备一定的容错率,在维护 MCP 工具说明书(Schema)时,仍应严格要求 AI 书写标准参数名,避免纵容产生更大的幻觉偏移。
|
||||
|
||||
---
|
||||
|
||||
## 6. 常见资源关键字
|
||||
@@ -134,14 +140,16 @@
|
||||
## 10. Token 消耗与长数据保护防爆机制
|
||||
|
||||
### 10.1 `get_scene_hierarchy` 深度与层级限制
|
||||
|
||||
- **背景**:在一两千个节点的大型 UI 场景中,无限制地获取全场景树会瞬间消耗十万以上的 Token,导致 AI 丢失上下文甚至触发截断报错。
|
||||
- **最佳实践**:
|
||||
- **默认使用 `depth: 2`** (默认限制) 来逐步探查。
|
||||
- **结合 `nodeId` 参数**:找到关键模块(例如 `Canvas/LoginPanel`)的 UUID 后,再单独向该 `nodeId` 请求下一层的结构,而非每次从根部拉取。
|
||||
- **默认使用 `depth: 2`** (默认限制) 来逐步探查。
|
||||
- **结合 `nodeId` 参数**:找到关键模块(例如 `Canvas/LoginPanel`)的 UUID 后,再单独向该 `nodeId` 请求下一层的结构,而非每次从根部拉取。
|
||||
|
||||
### 10.2 大对象与长数组截断
|
||||
|
||||
- **背景**:在读取某些特定组件数据(如多边形顶点坐标、Sprite 曲线数据或序列化的内联 Base64 图片)时,JSON 可能会异常庞大。
|
||||
- **保护机制**:
|
||||
- `scene-script.js` 内部在执行 `manage_components(get)` 序列化时,对于**长度超过 10 的 Array** 会强制截断,返回字面量字符串 `"[Array(X)]"`。
|
||||
- 对于**长度大于 200 的长字符串**,也会强制缩略并追加 `...[Truncated, total length: X]`。
|
||||
- `scene-script.js` 内部在执行 `manage_components(get)` 序列化时,对于**长度超过 10 的 Array** 会强制截断,返回字面量字符串 `"[Array(X)]"`。
|
||||
- 对于**长度大于 200 的长字符串**,也会强制缩略并追加 `...[Truncated, total length: X]`。
|
||||
- **应对策略**:如果 AI 看到截断提示,这意味着此处为海量无语义数据,**请勿**尝试盲目通过 `update` 覆盖或还原被截断的字段,极易导致源数据被破坏。请仅修改自己能够完全看清的轻量级属性(如 `name`, `x`, `scale` 等)。
|
||||
|
||||
Reference in New Issue
Block a user