--- name: damage-grounding description: 汽车旧伤视觉定位标注。用于 damage_grounding 能力:读取 damage-detector 生成的 workspace/damages.json,对每处损伤在时间窗口内调用豆包 grounding 获取 0-1000 bbox,并在图片上绘制红色标注框,输出 workspace/grounding.json 和 marked_frames;前置条件是已有 taskId 和 damages.json。 license: MIT metadata: version: "1.0.0" category: vehicle-inspection skillType: compute-entry aliases: ["damage_grounding"] tags: ["vehicle", "grounding", "bbox", "doubao", "旧伤定位", "标注"] --- # 旧伤视觉定位标注 前置条件:已完成 `video-frame-extractor` 和 `damage-detector`,workspace 中存在 `damages.json`。 ```json { "name": "damage-grounding", "input": { "taskId": "order_10001", "groundingWindow": 2 } } ``` ## 工作流程 1. 读取 `damages.json` 的损伤列表和 `video_info.json` 的帧列表。 2. 对每处损伤选择 `timeSecond ± groundingWindow` 秒内的帧。 3. 固定使用豆包/火山方舟模型进行 grounding,解析 `x1 y1 x2 y2`。 4. 将 0-1000 归一化 bbox 转成像素坐标,在图片上绘制红色标注框。 5. 写入 `workspace/grounding.json` 和 `marked_frames/`。 ## 输入 - `taskId`: 必填。 - `groundingWindow`: 可选,默认 `2` 秒。 - `groundingResults`: 可选,外部豆包 grounding 结果;传入后本技能只解析 bbox 并画框。 ## 输出 返回 `totalDamages` 和 `totalMarked`。 ## 重要约束 - 需要 Node.js 18+。 - 共享 workspace 根目录优先读取 `VEHICLE_SCRATCH_WORKSPACE_ROOT`,其次兼容 `RZYX_AI_WORKSPACE_ROOT`,否则使用 `RZYX_AI_DATA_DIR/workspace/vehicle-scratch-inspection`。 - 本技能固定用于豆包 grounding;其他模型可用于检测,但 grounding 阶段按豆包输出格式解析。 - bbox 坐标是 0-1000 归一化坐标,最终同时保存 normalized 和 pixel 两种坐标。 - 标注优先使用 `sharp`,未安装时回退 `ffmpeg drawbox`;两者都不可用时生成 SVG 标注占位,保证 `grounding.json` 仍可被后续报告读取。 - 不使用百度 OCR API。 - 用中文回答所有内容。