--- name: device-file-search description: Locate and verify files on Android storage before upload/share, especially latest edited photos or videos. metadata: {"openclaw":{"triggers":{"any":["find file","search file","locate file","latest photo","edited photo","saved photo","send photo","send image","upload photo","upload image","share photo","latest video","dcim","camera","download","capcut","发给我","找文件","找图片","找照片","最新照片","编辑后照片","美化后照片","上传图片","发送照片"]}}} --- # Device File Search Use this skill when you need to find a saved file on the Agent Phone, then upload/share it in an app. ## Goal - Return a real, existing absolute file path. - Prefer the newest matching file. - Avoid repeated blind searches. ## Default Search Order 1. Check likely output folders first: - `/storage/emulated/0/DCIM/Camera` - `/storage/emulated/0/Pictures` - `/storage/emulated/0/Download` - `/storage/emulated/0/Movies` 2. For editor-specific outputs, try app-named subfolders: - `/storage/emulated/0/Pictures/CapCut` - `/storage/emulated/0/Movies/CapCut` - `/storage/emulated/0/DCIM/Camera` 3. Only if still missing, run a wider `find` under `/storage/emulated/0`. ## Command Patterns Use `shell` (device-side), not workspace `exec`. - Quick latest list: `shell("sh -lc 'ls -1t /storage/emulated/0/DCIM/Camera | head -n 20'")` - Wider image search: `shell("sh -lc 'find /storage/emulated/0 -type f \\( -iname \"*.jpg\" -o -iname \"*.jpeg\" -o -iname \"*.png\" -o -iname \"*.webp\" \\) | head -n 400'")` - Wider video search: `shell("sh -lc 'find /storage/emulated/0 -type f \\( -iname \"*.mp4\" -o -iname \"*.mov\" -o -iname \"*.mkv\" \\) | head -n 400'")` - Verify one candidate path: `shell("ls -l /storage/emulated/0/DCIM/Camera/")` ## Reliability Rules - Prefer `/storage/emulated/0/...` over `/sdcard/...` (symlink issues can hide `find` results). - If `/sdcard` must be used, use `find -L /sdcard ...`. - After editing/saving, prioritize files modified in the last few minutes. - Before telling the user "not found", verify at least 2 directories + 1 wide search. ## After Found - Keep the exact absolute path in memory for the rest of the task. - Reuse the same path for upload/share actions. - If upload fails, retry with the same verified path before starting a new search.