03 图像识别
PassAudited by VirusTotal on May 11, 2026.
Overview
Type: OpenClaw Skill Name: 03 Version: 1.0.0 The skill bundle is a legitimate image recognition tool supporting both local (BLIP model) and API-based (OpenAI, Anthropic, Zhipu) processing. It includes robust file validation logic in `vision_ai.py` to check MIME types and file sizes, and the `install.sh` script performs standard dependency management without suspicious side effects. No indicators of data exfiltration, malicious execution, or prompt injection were found.
Findings (0)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
A user cannot verify from the supplied artifacts which code will configure the API provider, and a different parent-directory module could change where images or keys are sent.
The skill imports llm_config.py from the parent directory, but that file is not in the provided manifest. That missing, out-of-package module appears to control provider configuration, API keys, models, and base URLs.
sys.path.insert(0, str(Path(__file__).parent.parent)) from llm_config import LLMConfig
Bundle and review llm_config.py with the skill, avoid parent-directory imports, and make provider configuration explicit in the skill package.
The skill may use existing local/API credentials in ways the registry metadata does not clearly describe.
The code says API keys can be read from environment variables or a configuration file, but the registry metadata declares no env vars or primary credential, and the config-reading code is not included.
api_key: API密钥(可选,默认从环境变量或配置文件读取)
Declare all supported credential names and config paths, require explicit provider selection, and avoid silently reading credential files.
Private images could be uploaded to an unexpected model provider or endpoint if the configuration differs from what the user expects.
API mode encodes the image and sends it to an endpoint returned by the missing LLMConfig module, so the exact external destination is not fully reviewable from the supplied artifacts.
client = OpenAI(api_key=self.llm_config.api_key, base_url=self.llm_config.get_base_url()) ... "url": f"data:{file_info['mime_type']};base64,{base64_image}"Show the selected provider and endpoint before upload, document all supported providers, and use local mode for sensitive images.
A user may approve API analysis believing images go to one of the documented providers, while the code defaults to another provider.
The code defaults API analysis to zhipu, while SKILL.md frames API mode as OpenAI or Claude. That mismatch can make users trust the privacy/provider description without realizing the default destination differs.
def __init__(self, provider: str = "zhipu", api_key: str = None):
Update the user-facing documentation and metadata to list the actual default provider and all supported providers, or require the user to choose one explicitly.
