GPU_GUARD_MONOREPO/docs/code-wiki/entities/vehicle-damage-skill.md

77 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

2026-05-20 21:39:12 +08:00
---
title: 车辆旧伤检测 Skill
created: 2026-05-07
updated: 2026-05-07
type: entity
tags: [skill, agent, backend]
sources: [packages/backend/skills/vehicle-damage-inspection/, packages/backend/test/skill_process_events.test.ts, docs/superpowers/plans/2026-05-06-tool-process-events.md]
---
# 车辆旧伤检测 Skill
`vehicle-damage-inspection` 是 2026-05-07 从 RZYX 迁入的多模态 compute-entry Skill用于汽车环车视频旧伤检测。用户上传车辆环车视频并要求检查划痕、凹陷、掉漆、裂纹、锈蚀时Agent 应通过 [[skill-runtime]] 的 `execute_skill` 调用它,而不是直接用图片识别工具分析整段视频。
## Skill 结构
```text
packages/backend/skills/vehicle-damage-inspection/
├── SKILL.md
├── README.md
├── skill.config.yaml
├── prompts/
│ ├── best_frame.md
│ ├── damage_detect.md
│ ├── damage_review.md
│ └── grounding.md
└── scripts/
├── index.cjs
└── lib/
├── frame_extractor.cjs
├── damage_detector.cjs
├── damage_grounding.cjs
├── damage_reviewer.cjs
├── best_frame_selector.cjs
├── image_marker.cjs
├── json_utils.cjs
├── vision_client.cjs
└── workspace.cjs
```
## 输入与输出
主要输入:
- `videoUrl`:本地路径、`/upload/...` 或本机可访问 URL。
- `fps``quality``batchSize``concurrency`:抽帧和检测吞吐控制。
- `groundingWindow``groundingFrameLimit`:候选旧伤定位窗口。
- `reviewConcurrency``topN`:复核和最佳证据帧数量。
- `mode``full``frames-only``detect-only`
输出包含 `summary``vehicleInfo``damages``bestFrameImages``reviewImages``artifacts`。最终产物写入 dataDir 下的 `workspace/vehicle-damage-inspection/{taskId}`
## 执行流程
```text
execute_skill(vehicle-damage-inspection)
-> 抽帧
-> 旧伤候选检测
-> grounding 定位标注
-> 不确定区域裁剪/放大复核
-> 选择最佳证据帧
-> 输出 damages / bestFrameImages / reviewImages
```
Skill 明确区分 `damages``candidates``damages` 是最终旧伤结论,`candidates` 只是中间候选,不应直接呈现为结论。
## 过程事件
该 Skill 迁入时同步接入了 [[runtime-process-events]]。长耗时阶段会通过 process events 暴露抽帧、检测、定位、复核等阶段进度,前端可用 `tool-process-timeline.vue` 展示,而不需要只等最终 JSON。
## 相关页面
- [[skill-system]]
- [[skill-runtime]]
- [[runtime-process-events]]
- [[frontend-architecture]]
- [[tool-system]]