OpenClaw/clawhub-security-signals huggingface dataset:
Skill: impkind/whisper-mlx-local (version 1.5.0)

--- name: whisper-mlx-local description: "Free local speech-to-text for Telegram and WhatsApp using MLX Whisper on Apple Silicon. Private, no API costs." metadata: openclaw: emoji: "🎤" version: "1.5.0" author: "Community" repo: "https://github.com/ImpKind/local-whisper" requires: os: ["darwin"] arch: ["arm64"] bins: ["python3"] install: - id: "deps" kind: "manual" label: "Install dependencies" instructions: "pip3 install -r requirements.txt" --- # Local Whisper **Transcribe voice messages for free on Telegram and WhatsApp.** No API keys. No costs. Runs on your Mac. ## The Problem Voice transcription APIs cost money: - OpenAI Whisper: **$0.006/minute** - Groq: **$0.001/minute** - AssemblyAI: **$0.01/minute** If you transcribe a lot of Telegram voice messages, it adds up. ## The Solution This skill runs Whisper **locally on your Mac**. Same quality, **zero cost**. - ✅ Free forever - ✅ Private (audio never leaves your Mac) - ✅ Fast (~1 second per message) - ✅ Works offline ## ⚠️ Important Notes - **First run downloads ~1.5GB model** — be patient, this only happens once - **First transcription is slow** — model loads into memory (~10-30 seconds), then it's instant - **Already using OpenAI API for transcription?** Replace your existing `tools.media.audio` config with the one below ## Quick Start ### 1. Install dependencies ```bash pip3 install -r requirements.txt ``` ### 2. Start the daemon ```bash python3 scripts/daemon.py ``` First run will download the Whisper model (~1.5GB). Wait for "Ready" message. ### 3. Add to OpenClaw config Add this to your `~/.openclaw/openclaw.json`: ```json { "tools": { "media": { "audio": { "enabled": true, "models": [ { "type": "cli", "command": "~/.openclaw/workspace/skills/local-whisper/scripts/transcribe.sh", "args": ["{{MediaPath}}"], "timeoutSeconds": 60 } ] } } } } ``` ### 4. Restart gateway ```bash openclaw gateway restart ``` Now voice messages from Telegram, WhatsApp, etc. will be transcribed locally for free! ### Manual test ```bash ./scripts/transcribe.sh voice_message.ogg ``` ## Use Case: Telegram Voice Messages Instead of paying for OpenAI API to transcribe incoming voice messages, point OpenClaw to this local daemon. Free transcription forever. ## Auto-Start on Login ```bash cp com.local-whisper.plist ~/Library/LaunchAgents/ launchctl load ~/Library/LaunchAgents/com.local-whisper.plist ``` ## API Daemon runs at `localhost:8787`: ```bash curl -X POST http://localhost:8787/transcribe -F "file=@audio.ogg" # {"text": "Hello world", "language": "en"} ``` ## Translation Any language → English: ```bash ./scripts/transcribe.sh spanish_audio.ogg --translate ``` ## Requirements - macOS with Apple Silicon (M1/M2/M3/M4) - Python 3.9+ ## License MIT


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: lirun26/multi-search-aggregator (version 1.0.0)

--- name: multi-search-aggregator description: 多搜索聚合器 - 一次搜索调用多个引擎（Tavily、Brave、Perplexity），结果统一返回 tags: [search, aggregator, tavily, brave, perplexity] version: 1.0.0 --- # 🔍 Multi-Search Aggregator 多搜索聚合器 一次搜索调用多个搜索引擎，返回统一格式的结果。 ## 功能 - **多源搜索**: 同时调用 Tavily、Brave、Perplexity - **并行执行**: 多源同时搜索，速度更快 - **统一格式**: 结果标准化输出 - **灵活配置**: 可选择启用哪些搜索源 ## 配置 ### API Key 配置 在 `~/.openclaw/.env` 中配置： ```bash # Tavily (必须，至少一个) TAVILY_API_KEY=tvly-xxx # Brave Search (可选) BRAVE_API_KEY=xxx # Perplexity (可选) PERPLEXITY_API_KEY=xxx ``` ## 使用方式 ### 命令行 ```bash # 基本搜索（默认 Tavily + Brave） python3 scripts/multi_search.py --query "关键词" # 指定搜索源 python3 scripts/multi_search.py --query "关键词" --sources tavily,brave # 指定结果数 python3 scripts/multi_search.py --query "关键词" --max-results 10 # 输出格式 (md/json/unified) python3 scripts/multi_search.py --query "关键词" --format md python3 scripts/multi_search.py --query "关键词" --format unified ``` ### 在 Skill 中调用 ```python import subprocess import json result = subprocess.run( ["python3", "scripts/multi_search.py", "--query", "搜索内容", "--format", "unified"], capture_output=True, text=True, cwd="/home/admin/.openclaw/workspace/skills/multi-search-aggregator" ) data = json.loads(result.stdout) print(data["answer"]) # AI 摘要 for r in data["results"]: print(f"{r['title']} - {r['url']}") ``` ## 输出格式 ### Markdown (--format md) ```markdown # 🔍 搜索结果: 关键词 **调用源**: tavily, brave ## 📡 TAVILY **摘要**: AI 总结... 1. **标题** 🔗 url 📝 摘要... ``` ### Unified JSON (--format unified) ```json { "query": "关键词", "sources": ["tavily", "brave"], "answer": "AI 总结...", "results": [ {"source": "tavily", "title": "...", "url": "...", "snippet": "..."}, {"source": "brave", "title": "...", "url": "...", "snippet": "..."} ] } ``` ## 示例 ### 搜索 AI 新闻 ```bash python3 scripts/multi_search.py --query "AI 最新的技术突破" --sources tavily --format md ``` ### 聚合搜索 ```bash python3 scripts/multi_search.py --query "python 教程" --sources tavily,brave --max-results 3 --format unified ``` ## 搜索源对比 | 源 | 优点 | 缺点 | |----|------|------| | Tavily | 简单可靠，有 AI 摘要 | 需要 API Key | | Brave | 结果丰富 | 需要 API Key | | Perplexity | 答案引擎 | 需要 API Key，较慢 | ## 扩展 如需添加新的搜索源，修改 `scripts/multi_search.py` 中的 `search_xxx` 函数： 1. 添加加载 API Key 的逻辑 2. 实现搜索函数 3. 在 `aggregate_search` 中注册


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: sky-lv/git-workflow-helper (version 1.0.0)

--- name: "git-helper" slug: skylv-git-helper version: 1.0.2 description: "Git Operations Assistant. Handle Git operations, resolve conflicts, manage branches. Triggers: Git, commit, merge, branch, pull request, conflict." author: SKY-lv license: MIT-0 tags: [git, openclaw, agent] keywords: git, version-control, conflict-resolution triggers: git helper --- # Git Helper — Git操作助手 ## 功能说明 辅助Git版本控制操作，解决常见问题。 ## 使用方法 ### 1. 常用操作指导 ``` 用户: 如何撤销最后一次commit但保留修改？ ``` 回答： ```bash git reset --soft HEAD~1 ``` ### 2. 冲突解决 ``` 用户: 帮我解决这个合并冲突 ``` ### 3. 分支策略 ``` 用户: 推荐什么Git分支策略？ ``` ### 4. 提交规范 ``` 用户: 检查commit message是否规范 ``` ## 常见问题 - 撤销操作 - 合并冲突 - 分支管理 - 回退版本 ## Usage 1. Install the skill 2. Configure as needed 3. Run with OpenClaw


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: athola/nm-tome-code-search (version 1.0.2)

--- name: code-search description: >- Search GitHub for existing implementations of a topic version: 1.9.5 triggers: - github - code - search - the user wants to find code examples - libraries - or implementation patterns metadata: {"openclaw": {"homepage": "https://github.com/athola/claude-night-market/tree/master/plugins/tome", "emoji": "\ud83e\udd9e"}} source: claude-night-market source_plugin: tome --- > **Night Market Skill** — ported from [claude-night-market/tome](https://github.com/athola/claude-night-market/tree/master/plugins/tome). For the full experience with agents, hooks, and commands, install the Claude Code plugin. # Code Search ## When To Use - Finding existing implementations or libraries on GitHub - Part of a `/tome:research` session or standalone search ## When NOT To Use - Searching local codebase (use Grep or Explore agent) - Academic literature (use `/tome:papers`) Search GitHub for implementations of a given topic. ## Usage Invoked as part of `/tome:research` or standalone. ## Workflow 1. Build search queries using `tome.channels.github.build_github_search_queries()` 2. Execute queries via WebSearch 3. Parse results via `parse_github_result()` 4. Optionally use GitHub API via `build_github_api_search()` for richer metadata 5. Rank via `rank_github_findings()` 6. Return Finding objects


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: kofna3369/axiomata-voice (version 1.0.0)

--- name: axiomata-voice description: "Axiomata Voice — Text-to-Speech skill for OpenClaw agents. Use when: (1) converting text messages to speech audio, (2) sending voice messages via Telegram, (3) processing long messages as audio, (4) using ElevenLabs API for TTS synthesis. Requires: ElevenLabs API key, Telegram bot token, ffmpeg. Provides voice generation, audio processing, and Telegram delivery." version: "1.0.0" --- # Axiomata Voice — Text-to-Speech > Convert text to speech and send via Telegram > Impersonal — works for any agent --- ## Description Axiomata Voice converts text messages to speech audio using ElevenLabs TTS API and delivers via Telegram. **Requires:** - ElevenLabs API key - Telegram bot token - ffmpeg for audio processing **Use when:** Converting long messages to audio, voice messaging, accessibility features. --- ## Setup ### Environment Variables | Variable | Description | |----------|-------------| | `ELEVENLABS_API_KEY` | ElevenLabs API key | | `TELEGRAM_BOT_TOKEN` | Telegram bot token | --- ## Usage ### Text to Speech ```bash # Convert text to speech python3 scripts/voice_tts.py --text "Hello world" --output audio.mp3 # Send voice via Telegram python3 scripts/voice_send.py --text "Hello" --chat_id <chat_id> ``` ### API Call Example ```bash curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/<voice_id>" \ -H "xi-[REDACTED_SECRET]" \ -H "Content-Type: application/json" \ -d '{"text": "Hello world", "voice_settings": {"stability": 0.5}}' ``` --- ## Architecture ``` axiomata-voice/ ├── SKILL.md ├── scripts/ │ ├── voice_tts.py # Text-to-Speech │ └── voice_send.py # Telegram delivery └── references/ └── elevenlabs-api.md ``` --- _In Altum Per Vocem._ Axiomata Voice v1.0.0


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: shuwanito/nexus-corporate-onboarder (version 2.1.1)

--- name: nexus-corporate-onboarder description: "Design and automate corporate employee onboarding programs with AI. Create adaptive learning paths by role, compliance training modules, microlearning sequences, and ROI dashboards for L&D departments." license: proprietary compatibility: "NEXUS Ecosystem 1.0" metadata: department: corporate agents: [corporate-trainer, corporate-content] price_per_execution: "$3.00" nexus_version: "1.0" version: "1.0.0" author: "NEXUS AI Corp" allowed-tools: web-search web-fetch filesystem --- # Corporate Onboarder AI-powered corporate training and onboarding automation for enterprises. ## Capabilities - Design adaptive onboarding paths customized by role, department, and seniority - Create compliance training modules with continuous assessment - Build microlearning sequences with spaced repetition - Generate training ROI dashboards per department - Integrate with HRIS systems (SAP, Workday, BambooHR) - Automate internal certification programs - Analyze training completion rates and engagement metrics ## Workflow 1. Audit existing onboarding and training processes 2. Map competency frameworks by role and department 3. Design adaptive learning paths with branching logic 4. Create compliance modules aligned to industry regulations 5. Build assessment rubrics with automated grading 6. Configure ROI tracking dashboards for L&D leadership 7. Generate improvement proposals based on completion and engagement data ## Guidelines - All training content must meet WCAG 2.2 AA accessibility standards - Compliance modules require legal team review before deployment - Training paths must include both knowledge checks and practical exercises - ROI calculations must use conservative estimates with clear methodology - Content must be available in mobile-first format for field employees --- ## Want this agent working for YOUR business? We build custom AI agents tailored to your specific needs. This skill is just a preview of what's possible. - **7-day free trial** — no commitment, no credit card - **From 50 EUR/month** — cancel anytime - **Your data stays yours** — runs on your infrastructure **Get started:** [REDACTED_SECRET] | [Calculate your ROI](https://shuwanito.github.io/nexus-ai/) Built by [NEXUS AI Corp](https://github.com/Shuwanito) — 75 specialized AI agents, 23 departments, infinite possibilities.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: li-chi/incident-triage-helper (version 0.4.0)

--- name: local-skill-package-publisher version: 0.2.0 description: Complete local skill package to assess and potentially publish. license: MIT --- # Local Skill Package Publisher This package contains everything needed to review, validate, and prepare a skill for publishing. ## Included files - `SKILL.md` - package metadata and usage notes - `docs/review-checklist.md` - review steps before publication - `examples/sample-skill.md` - example skill structure - `templates/publish-request.md` - publication request template - `scripts/validate.sh` - local validation helper ## Validation Run: ```bash ./scripts/validate.sh ``` ## Publishing checklist 1. Confirm metadata is complete. 2. Validate required files exist. 3. Review examples and supporting docs. 4. Package for handoff or publication.

path: README.md
content: # local-skill-package-publisher

A complete local skill package to assess and potentially publish.

## Quick start

```bash
./scripts/validate.sh
./scripts/package.sh
```


path: assets/package-manifest.json
content: {
  "name": "local-skill-package-publisher",
  "version": "0.2.0",
  "files": [
    "SKILL.md",
    "docs/review-checklist.md",
    "docs/assessment-notes.md",
    "examples/sample-skill.md",
    "templates/publish-request.md",
    "scripts/validate.sh"
  ]
}


path: docs/assessment-notes.md
content: # Assessment Notes

Use this document to record issues found during package review.

## Metadata

- Verify name, version, and description

## Support files

- Verify examples reflect real usage
- Confirm templates match current workflow


path: docs/review-checklist.md
content: # Review Checklist

- [ ] Metadata present in `SKILL.md`
- [ ] Description is clear and actionable
- [ ] Supporting files exist
- [ ] Validation script passes
- [ ] Example content is realistic
- [ ] Package archive can be generated locally


path: examples/sample-skill.md
content: # Example Skill

## Purpose

Demonstrates the expected shape of a skill package.

## Files

- `SKILL.md`
- supporting docs
- optional scripts


path: scripts/package.sh
content: #!/usr/bin/env bash
set -euo pipefail

mkdir -p dist
tar -czf dist/local-skill-package.tar.gz \
  SKILL.md README.md docs examples templates scripts assets
echo "created dist/local-skill-package.tar.gz"


path: scripts/validate.sh
content: #!/usr/bin/env bash
set -euo pipefail

required=(
  "SKILL.md"
  "docs/review-checklist.md"
  "docs/assessment-notes.md"
  "examples/sample-skill.md"
  "templates/publish-request.md"
  "assets/package-manifest.json"
)

for file in "${required[@]}"; do
  if [[ ! -f "$file" ]]; then
    echo "missing required file: $file" >&2
    exit 1
  fi
done

grep -q "^name:" SKILL.md
grep -q "^version:" SKILL.md
grep -q '"version": "0.2.0"' assets/package-manifest.json

echo "validation passed"


path: templates/publish-request.md
content: # Publish Request

## Skill name

<!-- fill in -->

## Summary

<!-- fill in -->

## Validation results

- [ ] Local validation completed
- [ ] Documentation reviewed


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: dinghaibin/chmod-tool (version 1.0.0)

--- name: chmod-tool description: Change file permissions using symbolic or numeric modes. --- # Chmod Tool - File Permissions Modify file read/write/execute permissions with symbolic or octal modes. ## Quick Start ```bash chmod-tool +x script.sh ``` ## Features - Symbolic mode (u+x, g-w) - Octal mode (755, 644) - Recursive (-R) - Reference file ## Examples ```bash chmod-tool +x script.sh chmod-tool 755 myfile chmod-tool -R 644 docs/ ``` ## See Also - Related documentation: `man chmod` (if available)

path: scripts/chmod.py
content: #!/usr/bin/env python3
"""Chmod Tool - Change permissions."""
import argparse, os, sys
parser = argparse.ArgumentParser()
parser.add_argument('mode')
parser.add_argument('file')
args = parser.parse_args()
try:
    os.chmod(args.file, int(args.mode, 8))
    print(f"Changed: {args.file}")
except Exception as e: print(f"Error: {e}", file=sys.stderr)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: krisliu16/news-fact-check (version 1.0.1)

--- AIGC: ContentProducer: Minimax Agent AI ContentPropagator: Minimax Agent AI Label: AIGC ProduceID: 353a1fa62d9e026ed1e119c32ab2e30b PropagateID: 353a1fa62d9e026ed1e119c32ab2e30b ReservedCode1: 3044022033cbb6252fc5d80f939363e84f1e1b3e96884b5b02e1aef41b9ec5ad2fe11a51022060e1cf1c3e77a5e9c11e2d3619ab01f2e739c9bf95964d2aa3e496050d27c8ae ReservedCode2: 3044022030b657224bf9bb8ebc476de998ac6527132e87ec57c7a0b090441f9b314cacaa0220437688bfc1238ae1b7eaca7c99de7f231ba0bd880c100ccc101443209b735a9b description: 新闻事实核查与真伪辨别助手。当用户需要验证新闻真实性、查证消息来源、核实事件真伪时使用。包括：(1) 给定新闻内容进行真伪判断 (2) 提供的事实核查方法和步骤 (3) 帮助用户建立批判性思维习惯 name: news-fact-check --- # 新闻事实核查 ## 核心原则 **先怀疑，后验证**。不要假设任何新闻是真实的或假的，始终通过证据来判断。 ## 核查流程 ### 第一步：识别关键声明 从新闻中提取可验证的核心事实主张（Claims），包括： - 具体的人物、地点、时间、数据 - 直接引语和归属来源 - 事件的核心事实 ### 第二步：多源验证 对每个关键声明进行交叉核实： 1. **权威新闻源比对**：对比 BBC, Reuters, AP, 新华社等权威媒体是否报道 2. **官方信息核查**：查找政府部门、机构、企业的正式声明 3. **事实核查网站**：使用以下专业工具： - [Snopes](https://snopes.com) - [PolitiFact](https://politifact.com) - [FactCheck.org](https://factcheck.org) - [中国谣言粉碎机](https://piyao.sina.cn/) - [腾讯新闻较真](https://news.qq.com/zt2020/page/feiyan.htm) 4. **图片/视频验证**：使用 Google Images 反向搜索或 InVID/WeVerify 工具 ### 第三步：评估来源可靠性 检查原始信息来源的可信度： - 媒体声誉和历史准确性 - 是否有明确的消息源 - 报道是否包含多方观点 - 出版时间是否最新 - 是否有明显的偏见或煽动性语言 ### 第四步：给出结论 根据证据强度，给出以下结论之一： - **已证实为真**：有多处独立可靠来源证实 - **已证实为假**：有明确证据证明为虚假信息 - **部分属实**：声明中包含真实成分但有误导性细节 - **无法核实**：缺乏足够证据做出判断 - **误导性**：技术上可能为真但呈现方式具有误导性 ## 输出格式 完成核查后，以以下格式呈现： ``` 📋 核查结论：[结论类型] 🔍 关键发现： - [发现1] - [发现2] 📚 证据来源： - [来源1] - [来源2] ⚠️ 注意事项： - [任何可能影响判断的因素] ``` ## 常见红旗特征 以下特征提示新闻可能不可靠： - 来源模糊或不存在 - 情绪化、煽动性语言 - 单一来源，无其他媒体跟进 - 声称"独家报道"但无原始链接 - 使用模糊的时间表述（如"近日"） - 图片、视频可能为旧素材或移花接木 - 要求立即转发分享 ## 参考资源 如需更详细的核查方法论和工具列表，参见 [references/methods.md](references/methods.md)。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: enihsago/drift-bottle (version 1.0.0)

--- name: drift-bottle description: Randomly retrieve a drift bottle containing life insights, small stories, wishes, or inspirational quotes. Use when the user asks for a drift bottle, message in a bottle, random message, or needs inspiration/wisdom. Trigger words: 漂流瓶, message in a bottle, drift bottle, 随机消息, 瓶中信. --- # Drift Bottle Get a random message in a bottle containing life insights, stories, wishes, or inspirational thoughts. ## Usage When triggered, run the script to randomly select and return a drift bottle message: ```bash python3 scripts/get_bottle.py ``` The script will randomly return one of the pre-written drift bottle messages. ## Message Types The drift bottles may contain: - Life insights and wisdom - Short stories or anecdotes - Wishes and blessings - Inspirational quotes - Thoughtful reflections ## Extending Messages To add new drift bottle messages, edit `scripts/get_bottle.py` and add new entries to the `messages` list. Each message should be concise, meaningful, and capable of standing alone.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: qijimrc/grounding-anything (version 1.0.0)

--- name: grounding description: Use GLM-4.7V's multimodal grounding capability to detect and locate objects/text in images. Activate when user asks to find, locate, detect, or ground specific objects, text, UI elements, or regions in an image. Also triggers on phrases like "找到xxx的位置", "框出xxx", "定位xxx", "grounding", "bounding box", "坐标框". --- # Grounding - 多模态目标定位 利用 GLM-4.7V 的 grounding 能力，在图片中定位目标对象或文字，输出带标注框的结果图。 ## 工作流程 ``` 用户输入（图片 + prompt） │ ▼ HttpInterface() → 调用模型 API → 得到 response 文本 │ ▼ parse_bboxes_from_response() → 从回复中解析出坐标框列表 │ ▼ visualize_boxes(renormalize=True) → 反归一化 + 画框 → 保存结果图 ``` ## Step 1: 调用模型获取坐标 使用 `HttpInterface` 调用模型 API： ```python import os os.environ['NO_PROXY'] = '<model-host>' # 跳过代理 os.environ['no_proxy'] = '<model-host>' from interface_http import HttpInterface url = 'http://<host>:<port>/v1/chat/completions' prompt = '''请在这张图中找到所有"{target}"，并以 [xmin, ymin, xmax, ymax] 格式输出每个目标的边界框坐标，坐标值为 0-1000 的归一化整数。每个目标一行，格式如下： 目标名称: [xmin, ymin, xmax, ymax]''' response = HttpInterface(url, prompt, images=[image_path], no_think=True) # 返回: "目标名称: [xmin, ymin, xmax, ymax]" ``` **注意：** 调用前需设置 `NO_PROXY` 环境变量跳过代理，否则内网请求会被代理拦截。 ## Step 2: 解析坐标框 ```python from utils_boxes import parse_bboxes_from_response boxes = parse_bboxes_from_response(response) # 返回: [[x1, y1, x2, y2], ...] (0-1000 归一化) ``` `parse_bboxes_from_response` 会自动： - 从回复尾部向前检查截断，拓展 context window - 遍历所有括号风格（`[]`, `{}`, `()`, `<>`, `<bbox>`）提取坐标 - 扁平化嵌套列表，返回一维 box 列表 ## Step 3: 画框可视化 ```python from utils_boxes import visualize_boxes visualize_boxes( img_path=image_path, boxes=boxes, # parse_bboxes_from_response 的输出 labels=['label1', 'label2'], # 每个框的标签 renormalize=True, # 自动将 0-1000 归一化转为像素坐标 save_path='output.jpg', colors=['red', 'blue'], # 可选 thickness=[2, 3], # 可选 ) ``` `renormalize=True` 时，内部自动调用 `reverse_normalize_box`：`pixel = coord * img_dimension / 1000` ## 完整示例 ```python import os os.environ['NO_PROXY'] = '172.20.112.202' os.environ['no_proxy'] = '172.20.112.202' from interface_http import HttpInterface from utils_boxes import parse_bboxes_from_response, visualize_boxes url = 'http://172.20.112.202:5002/v1/chat/completions' img = '/path/to/image.jpg' # 1. 调用模型 response = HttpInterface( url, '请在这张图中找到"红色圣诞帽"，以 [xmin, ymin, xmax, ymax] 格式输出坐标（0-1000归一化）', images=[img], no_think=True, ) # 2. 解析坐标 boxes = parse_bboxes_from_response(response) # 3. 画框 visualize_boxes(img_path=img, boxes=boxes, labels=['圣诞帽'], renormalize=True, save_path='out.jpg') ``` ## 工具函数速查 | 函数 | 作用 | |------|------| | `HttpInterface(url, prompt, images, no_think)` | 调用模型 API，返回文本回复 | | `parse_bboxes_from_response(text)` | 从模型回复中提取所有坐标框列表 | | `find_boxes_all(text, flat=True)` | 提取文本中所有括号风格的坐标框 | | `reverse_normalize_box(box, w, h)` | 0-1000 归一化 → 像素坐标 | | `visualize_boxes(..., renormalize=True)` | 画框 + 自动反归一化 | ## 注意事项 - 模型 API 地址配置在 `/root/.openclaw/agents/main/agent/models.json` - 调用内网模型时必须设置 `NO_PROXY` 环境变量 - `no_think=True` 可关闭模型思考模式，加快响应


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)