02Agent Addon
02Agent 是内置在 02Engine 编辑器里的 AI 助手 addon。它基于 Gandi IDE AI assistant addon 二次开发,可以读取当前 Scratch 项目结构、理解积木脚本、生成或修改角色和造型,并通过工具调用把 AI 的修改同步回编辑器。
02Agent 的目标不是替代 Scratch 编辑器,而是让 AI 能像一个项目内的编程助手一样工作:先检查项目,再给出或应用小范围修改,最后用诊断工具确认脚本和资源是否有效。
入口和界面
02Agent 默认启用。进入编辑器后,页面上会显示一个可拖动的浮动入口按钮。点击按钮可以打开或恢复 02Agent 聊天窗口。
主要界面包括:
- 聊天区:显示用户消息、AI 回复、工具调用和结果。
- 输入区:输入需求,发送给当前选择的模型。
- 历史区:管理会话、切换会话、查看会话快照。
- 设置区:配置 AI 服务商、模型、API 地址和 API Key。
- Skill 桥接区:连接本机 02Agent Skill bridge,让外部 AI 客户端调用当前编辑器里的 02Agent 工具。
- 附件和选择层:把选中的积木范围、文件内容或其它上下文附加到消息中。
窗口隐藏或最小化后,浮动入口仍会保留。再次点击入口会恢复窗口。02Agent UI 使用很高的层级显示,避免被普通编辑器窗口遮挡。
支持的模型服务商
02Agent 可以配置多个 AI agent,每个 agent 可包含一个或多个模型。当前支持的服务商类型包括:
- OpenAI 兼容接口。
- Anthropic 兼容接口。
- Google Gemini 接口。
- DeepSeek 接口。
- 智谱接口。
- Azure OpenAI。
- 自定义 OpenAI 兼容接口。
- 自定义 Anthropic 兼容接口。
每个 agent 通常需要配置:
- 名称。
- 服务商类型。
- Base URL。
- API Key。
- 模型 ID。
- 可选的最大输出 token 数。
API Key 只用于浏览器内的 02Agent 调用,不会通过 Skill bridge manifest 暴露给外部客户端。
推荐工作流
对复杂项目,推荐按以下方式使用 02Agent:
- 先让 02Agent 查看项目概览。
- 只读取将要编辑的舞台或角色脚本文件。
- 搜索需要使用的积木或扩展。
- 对不熟悉的 opcode 调用积木帮助工具。
- 每次只修改一个较小的脚本或资源范围。
- 修改后运行诊断,确认生成的 Scratch JS DSL 可以同步回积木。
- 如果涉及造型或背景,优先使用 SVG 工具创建或修改资源。
不要要求 02Agent 一次性重写整个大型项目。更稳定的做法是把任务拆成多个小步骤,例如先创建角色,再添加变量,再写主要脚本,再补充视觉效果。
虚拟项目文件
02Agent 会把当前 Scratch 项目映射成一组虚拟文件。AI 修改这些文件后,02Agent 会把变更重新同步回 Scratch VM。
常见虚拟路径包括:
/stage.js:舞台脚本。/sprites/<角色名>.js:角色脚本。/sprites/<角色名>/costumes/<编号>-<造型名>.svg:角色造型。/stage/costumes/<编号>-<背景名>.svg:舞台背景。/docs/scratch-agent.md:内置 Scratch JS DSL 指南。/docs/block-catalog.md:当前可用积木目录,包括已经加载的扩展积木。
脚本文件使用 02Agent 的 Scratch JS DSL 表达 Scratch 积木。例如:
// @script new-hello
event.whenflagclicked({ $xy: { x: 80, y: 80 } }, () => {
looks.say({ MESSAGE: "hello" });
});
// @script <id> 标记用于定位顶层脚本。编辑已有脚本时应保留已有标记和 // blockId 注释,这有助于同步层更准确地更新原有积木。
主要工具能力
02Agent 暴露一组工具给聊天模型和 Skill bridge。工具 schema 由代码动态生成,聊天和桥接使用同一套定义。
项目和文件工具:
getProjectOverview:获取项目、舞台尺寸、目标、造型、变量、列表和已加载扩展概览。listFiles:列出所有虚拟文件。readFile:读取虚拟文件,支持行号范围。searchFiles:搜索虚拟文件和内置文档。getDiagnostics:检查脚本、积木转换和 SVG 资源问题。
积木和 DSL 工具:
getScratchGuide:获取任务导向的 DSL 指南。searchBlocks:按 opcode、中英文关键词或 DSL 名称搜索积木。getBlockHelp:获取单个积木的字段、输入、菜单、子堆栈和示例。
编辑工具:
applyPatch:用 Codex 风格 patch 修改虚拟 JS 或 SVG 文件。createSpriteWithSvg:用一个 SVG 造型创建新角色。updateSpriteProperties:修改角色位置、大小、方向、旋转方式、显示状态和当前造型。addCostumeWithSvg:给已有角色或舞台添加一个 SVG 造型或背景。batchAddCostumesWithSvg:批量添加 SVG 造型或背景。deleteCostume:删除单个造型或背景。batchDeleteCostumes:批量删除造型或背景。reorderCostume:移动单个造型或背景顺序。setCostumeOrder:一次性设置完整造型或背景顺序。deleteSprite:删除角色,不能删除舞台。
扩展工具:
searchExtensions:搜索内置扩展和已知远程扩展库。installExtension:安装一个内置或已知可信扩展,并返回加载后的扩展积木。
会改变项目状态 的工具会被串行排队,避免聊天窗口和 Skill bridge 同时修改同一个工作区造成冲突。
扩展搜索和安装
02Agent 可以在需要扩展积木时先搜索再安装扩展。例如需要画笔积木时,AI 应先搜索 pen,安装内置 Pen 扩展,再调用 searchBlocks 或 getBlockHelp 确认 pen.* 积木语法。
扩展来源包括:
- Official Scratch 内置扩展。
- 02Engine 扩展库。
- TurboWarp 扩展库。
- PenguinMod 扩展库。
- Mist 扩展库。
- SharkPool 扩展库。
- 特殊功能项,例如自定义返回值支持。
当前 02Engine VM 中,远程扩展 URL 会通过 unsandboxed 扩展运行器加载。只安装你信任的扩展。不要让 AI 自动安装无关扩展,也不要安装用户未明确指定的任意外部 URL。
外部直接 URL 默认不会被接受。只有用户明确提供可信 URL,并且工具调用显式设置 allowExternalUrl: true 时,02Agent 才应尝试安装任意外部 URL。
Skill Bridge
02Agent 内置浏览器侧 WebSocket 客户端,用于连接本机 bridge server。该 bridge 允许 OpenCode 或其它本地 AI 客户端通过 HTTP 调用当前浏览器编辑器里的 02Agent 工具。
默认连接地址:
ws://127.0.0.1:40202/agent?token=<token>
配套 Skill bridge 默认 HTTP 地址:
http://127.0.0.1:40202
Bridge manifest 会公开:
- 协议名称和版本。
- 02Agent 基本信息。
- 工具 schema。
- 系统提示词和公开使用指引。
- 当前项目概览。
- 安全声明。
Bridge manifest 不会公开:
- API Key。
- 用户配置的模型密钥。
- 浏览器 localStorage 中的完整 agent 配置。
本地 bridge server 应只监听 127.0.0.1。不要把 bridge 端口暴露到公网或局域网。
Bridge HTTP API
配套 Skill bridge 通常提供这些本地接口:
GET /health:检查 bridge server 是否运行。GET /manifest:读取当前 02Agent manifest。GET /tools:读取当前工具列表。GET /prompts:读取公开提示词。POST /call:调用 02Agent 工具。POST /reloadManifest:请求刷新 manifest。
浏览器侧 02Agent 不主动开放 HTTP 端口。它只通过 WebSocket 向本机 bridge server 建立出站连接。
中文和 Windows 参数
在 Windows 环境中,如果外部 Skill 客户端要调用包含中文或其它非 ASCII 字符的工具参数,推荐使用 UTF-8 stdin 或 base64 编码传参,而不是直接把 JSON 放在命令行 argv 中。
推荐方式:
node src/client.js call searchBlocks --stdin
备用方式:
node src/client.js call searchBlocks --base64 <base64Json>
这样可以避免 Windows 命令行编码导致中文参数损坏。
安全边界
02Agent 可以修改当前打开的 Scratch 项目。使用时要注意:
- AI 工具调用可能新增、删除或重排角色、脚本、造型和变量。
- 远程扩展可能运行非沙盒 JavaScript。
- Skill bridge 允许本机其它进程调用 02Agent 工具。
- Token 用于阻止无关 WebSocket 连接,但不应把 bridge 暴露到非本机网络。
- API Key 不会通过 manifest 暴露,但仍保存在浏览器侧配置中,应避免在共享电脑上保存敏感 key。
在重要项目中,建议先保存副本,再让 02Agent 执行大范围修改。
常见问题
连接 Skill 后一直显示等待
确认本机 bridge server 已启动,并且端口与 02Agent 设置一致。默认端口是 40202。如果 bridge server 稍后启动,02Agent 会自动重试连接。
AI 使用了不存在的积木
要求 AI 先调用 searchBlocks 或 getBlockHelp。如果是扩展积木,先调用 searchExtensions 和 installExtension,再重新搜索积木。
修改脚本后没有同步到积木
运行 getDiagnostics 检查 DSL 语法、字段名、输入类型和菜单值。常见问题包括遗漏 $field_、把 Boolean 输入写成普通变量、或使用了未加载扩展的 opcode。
创建角色失败或角色名冲突
createSpriteWithSvg 只用于创建全新角色。给已有角色添加造型时应使用 addCostumeWithSvg 或 batchAddCostumesWithSvg。
远程扩展安装失败
确认扩展 URL 可访问,扩展代码本身能在 02Engine 的 unsandboxed 扩展运行器中加载。对于外部直接 URL,必须显式允许外部 URL。
开发者备注
02Agent addon 源码位于 scratch-gui/src/addons/addons/02agent。关键模块包括:
manifest.ts:addon 元数据。index.tsx:addon 入口和 UI 挂载。hooks/useChat.ts:聊天状态、系统提示词和模型工具调用流程。tools.ts:项目读取、编辑、诊断、积木查询和扩展安装工具实现。toolSchemas.ts:工具 schema,聊天和 bridge 共用。toolRuntime.ts:工具参数校验、分发和项目变更队列。workspaceRangeTools.ts:积木范围替换、插入和删除。extensionRegistry.ts:内置和远程扩展检索、缓存、解析。bridgeManifest.ts:bridge manifest 生成。hooks/useBridgeClient.ts:浏览器侧 bridge WebSocket 客户端。
修改 02Agent 后,建议至少运行:
bun run build
如果修改了工具 schema、bridge 或 prompt,建议同时手动验证聊天工具调用和 Skill bridge 工具调用。