SuperAPI AI 工具集

excalidraw

设计与创作

查看项目

更新于 10-15 13:11

技能介绍

概述

Excalidraw 子智能体委派技能的核心原则是:主智能体绝不直接读取 Excalidraw 文件,始终将操作委派给子智能体,以隔离上下文消耗。

Excalidraw 文件是 JSON 格式,token 成本高但信息密度低。单个文件的范围在 4k 至 22k token 之间(最大的文件可能超出读取工具限制)。读取多个图表会迅速耗尽上下文预算(例如 7 个文件约 67k token,约占预算的 33%)。

问题所在

Excalidraw JSON 结构的特点:

  • 每个形状有 20 多个属性(x、y、width、height、strokeColor、seed、version 等);
  • 大部分属性是视觉元数据(定位、样式、粗糙度);
  • 实际内容:文本标签和元素关系(不足文件的 10%);
  • 信噪比极低。

示例:14 个元素的图表约 596 行、16K、约 4k token;79 个元素的图表约 2,916 行、88K、约 22k token(超出读取限制)。

何时使用

以下任一情况触发:

  • 文件路径包含 .excalidraw 或 .excalidraw.json;
  • 用户请求:“解释/更新/创建图表”、“展示架构”、“可视化流程”;
  • 用户提到:“流程图”、“架构图”、“Excalidraw 文件”;
  • 涉及视觉产物的架构/设计文档任务。

以下情况同样使用委派:

  • “小”文件(最小的也有 4k token,仍然可观);
  • “快速检查”(检查组件名称仍会加载完整 JSON);
  • 单文件操作(隔离可防止上下文污染);
  • 修改操作(主上下文不需要完整格式理解)。

委派模式

主智能体职责

绝不:

  • 对 *.excalidraw 文件使用 Read 工具;
  • 在主上下文中解析 Excalidraw JSON;
  • 加载多个图表进行比较;
  • 检查文件以“理解格式”。

始终:

  • 将所有 Excalidraw 操作委派给子智能体;
  • 向子智能体提供清晰的任务描述;
  • 请求纯文本摘要(而非原始 JSON);
  • 将图表分析与主工作隔离。

子智能体任务模板

读取/理解操作

任务:提取并解释 [file.excalidraw.json] 中的组件

方法:1. 读取 Excalidraw JSON;2. 仅提取文本元素(忽略定位/样式);3. 识别组件之间的关系;4. 总结架构/流程。

返回:组件/服务列表及其描述;连接/依赖关系;关于架构的关键洞察;不要返回原始 JSON 或冗长的元素细节。

修改操作

任务:将 [component] 添加到 [file.excalidraw.json],连接到 [existing-component]

方法:1. 读取文件以识别现有元素;2. 找到 [existing-component] 及其位置;3. 为 [component] 创建新元素 JSON;4. 添加箭头元素表示连接;5. 写入更新后的文件。

返回:所做更改的确认;新元素的位置;所创建元素的 ID。

创建操作

任务:创建新的 Excalidraw 图表,展示 [description]

方法:1. 为 [number] 个组件设计布局;2. 创建带文本标签的矩形元素;3. 添加表示关系的箭头;4. 使用一致的样式(颜色、字体);5. 写入 [file.excalidraw.json]。

返回:文件已创建的确认;所包含组件的摘要;文件位置。

比较操作

任务:比较 [file1] 与 [file2] 中的架构方法

方法:1. 读取两个文件;2. 从每个文件中提取文本标签;3. 识别结构差异;4. 比较组件关系。

返回:架构中的关键差异;各自独有的组件;关系/流程差异;不要返回两个文件的完整元素细节。

常见借口(停止并改为委派)

  • 借口“直接读取最高效”——实际上不必要地消耗 4k-22k token,应委派给子智能体;
  • 借口“直接读取更省 token”——基线测试显示占用 9%-45% 预算,始终委派;
  • 借口“这是一次性分析的最优方式”——“一次性”仍会污染主上下文,使用子智能体隔离;
  • 借口“JSON 很直接”——简单不等于 token 高效,仍然委派;
  • 借口“我需要理解格式”——主智能体不需要格式理解,子智能体处理格式;
  • 借口“在合理范围内”(18k token)——“合理”是主观借口,硬性规则:委派;
  • 借口“只是快速检查组件”——“快速检查”仍加载完整 JSON,通过子智能体提取文本;
  • 借口“文件很小(16K)”——4k token 不算小,大小阈值无关紧要。

红色警报——停止并委派

当你发现自己即将:

  • 对 .excalidraw 文件使用 Read 工具;
  • “快速检查”存在哪些组件;
  • 在修改前“理解结构”;
  • 加载文件以“看看那里有什么”;
  • 并排比较多个图表;
  • 解析 JSON 以“仅提取文本”。

所有这些都意味着:改用 Task 工具配合子智能体。

快速参考

操作 主智能体动作 子智能体返回
理解图表 用“提取并解释”模板委派 组件列表 + 关系
修改图表 用“添加 [X] 连接到 [Y]”模板委派 确认 + 所做更改
创建图表 用“创建展示 [description]”模板委派 文件位置 + 摘要
比较图表 用“比较 [A] 与 [B]”模板委派 关键差异(非原始 JSON)

Token 分析(为什么这很重要)

基线测试的真实数据:

场景 不委派 委派后 节省
单个大文件 22k token(45% 预算) 约 500 token(子智能体摘要) 98%
双文件比较 18k token(9% 预算) 约 800 token(差异摘要) 96%
修改任务 14k token(7% 预算) 约 300 token(确认) 98%

上下文污染影响:

  • 读取全部 7 个项目图表:67k token(200k 预算的 33%);
  • 使用委派:约 2k token(隔离在子智能体中);
  • 节省:保留 97% 的上下文预算。

实现示例

错误(直接读取):

用户:“detailed-architecture.excalidraw.json 中展示了什么架构?” 智能体:让我读取那个文件……[将 22k token 读入主上下文]

正确(子智能体委派):

用户:“detailed-architecture.excalidraw.json 中展示了什么架构?” 智能体:我将使用子智能体提取架构详情。

[使用 Task 工具分发 general-purpose 子智能体] 任务:提取并解释 .ryanquinn3/ticketing/detailed-architecture.excalidraw.json 中的组件

[收到约 500 token 的摘要,包含组件列表和关系] [向用户回复架构说明,主上下文得以保留]

为什么“直接了当的 JSON”无关紧要

智能体常辩解:“格式很简单,我可以直接读。”

问题不在于复杂度,而在于冗长:

  • 简单结构,每个元素有 20 多个属性;
  • 重复的元数据(seed、version、nonce、roughness);
  • 定位数据(x、y、width、height)在语义上无用;
  • 视觉样式(strokeColor、opacity、fillStyle)与内容无关。

Token 成本来自体量,而非复杂度。

即使“直接了当”的 JSON 也会消耗 4k-22k token,因为:

  • 79 个元素 × 约 280 token/元素 = 22k token;
  • 大部分 token 是元数据噪声;
  • 只有文本标签和关系重要(约内容的 10%)。

铁律

主智能体绝不读取 Excalidraw 文件。没有例外。

不适用于:

  • “快速检查”;
  • “小文件”;
  • “理解格式”;
  • “一次性分析”;
  • “最优效率”。

始终委派。通过子智能体实现隔离是零成本的。