docs: 深度优化 Token 消耗,精简查找与层级获取载荷,补充相关文档与安全守则

This commit is contained in:
火焰库拉
2026-02-24 16:22:45 +08:00
parent 127fc684ca
commit 655335483c
5 changed files with 1202 additions and 1098 deletions

View File

@@ -128,3 +128,20 @@
- **背景**`Editor.Scene.callSceneScript` 的回调依赖 Scene 面板响应 IPC 消息。如果主线程阻塞Scene 面板无法处理消息,导致 callback 永远不返回HTTP 连接堆积。
- **解决方案**:所有 `callSceneScript` 调用均通过 `callSceneScriptWithTimeout` 包装,默认 15 秒超时。超时后自动返回错误,释放 HTTP 连接和队列位置。
- **日志标识**:超时会记录 `[超时] callSceneScript "方法名" 超过 15000ms 未响应`
---
## 10. Token 消耗与长数据保护防爆机制
### 10.1 `get_scene_hierarchy` 深度与层级限制
- **背景**:在一两千个节点的大型 UI 场景中,无限制地获取全场景树会瞬间消耗十万以上的 Token导致 AI 丢失上下文甚至触发截断报错。
- **最佳实践**
- **默认使用 `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]`
- **应对策略**:如果 AI 看到截断提示,这意味着此处为海量无语义数据,**请勿**尝试盲目通过 `update` 覆盖或还原被截断的字段,极易导致源数据被破坏。请仅修改自己能够完全看清的轻量级属性(如 `name`, `x`, `scale` 等)。