Token导航 LogoToken导航TokenDH.com
研究检索需要联网clawhub未标认证来源可访问clear审计通过

has-anonymizer有匿名器

Agent Skill

has-anonymizer 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

32,754

周安装

1,325

GitHub Stars

11

下载量

10,282
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:has-anonymizer(有匿名器)
来源仓库:https://github.com/xuanwuskill/has-anonymizer
安装命令:
openclaw skills install has-anonymizer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install has-anonymizer

简介

has-anonymizer 提供文本与图像的多语言匿名化能力,保护隐私信息。

  • 支持 8 种语言的实体识别与 21 类图像隐私类别处理,适用敏感内容脱敏。
  • 通过 clawhub 安装后,可结合 README 了解具体调用参数与输入格式。
  • 使用前需确认是否涉及联网、文件读写或命令执行,评估安全风险。
  • 建议保留原始数据完整性,避免对未经验证的结果进行二次加工。

SKILL.md

name
has-anonymizer
description
HaS (Hide and Seek) on-device text and image anonymization. Text: 8 languages (zh/en/fr/de/es/pt/ja/ko), open-set entity types. Image: 21 privacy categories (face, fingerprint, ID card, passport, license plate, etc.). Use when: (1) anonymizing text before sending to cloud LLMs then restoring the response, (2) anonymizing documents, code, emails, or messages before sharing, (3) scanning text or images for sensitive content, (4) anonymizing logs before handing to ops/support, (5) masking faces/IDs/plates in photos before publishing or sharing.
metadata

HaS Privacy

HaS exposes a single umbrella CLI:

  • has text ... for text anonymization, restoration, and scanning
  • has image ... for image scanning, masking, and category discovery

Use it when you need to remove private data locally before sending content elsewhere, inspect a directory for privacy risks, or mask visual privacy targets in photos and screenshots.

Agent Decision Guidelines

  • Prefer has text for plaintext and has image for raster images. For mixed directories, run both and combine the results into one report.
  • For PDFs, Word documents, or scanned pages, extract text first and then use has text. For screenshots/photos where the goal is simply to hide visible carriers such as faces, screens, paper, labels, or QR codes, use has image. If the goal is to reason about the text content inside an image, run OCR first and then use has text.
  • Do not overwrite or delete the original files. Text commands can restore later, image masking is irreversible.
  • Proactively mention configurable knobs when the user intent is clear: has text uses repeated --type; has image uses repeated --type, plus --method and --strength.
  • If the user intent is ambiguous, start with scan before hide.
  • After batch scans, summarize text file count, image file count, findings by type/category, high-risk items, and the suggested next step.
  • If timing matters to the user, add --timing and report the elapsed result in plain language afterward.
  • For qr_code and barcode, the default mosaic strength is automatically raised based on the detection size to ensure the encoding is destroyed. The agent does not need to manually increase --strength for these categories. If a detection output includes effective_strength, report it to the user.

Shared CLI Contract

The current CLI contract is designed for agents first:

  • Success returns compact JSON.
  • Failure also returns compact JSON with error.code and error.message.
  • Returned path fields are absolute.

- This includes file, output, mapping_output, and skipped[].file.

  • Invalid combinations fail fast instead of silently falling back.
  • Directory mode is non-recursive. Only immediate children are processed.
  • Batch results can include skipped and skipped_count.

- Treat skipped entries as unprocessed files, not as clean files.

Shared command layout:

{baseDir}/scripts/has.sh <text|image> <command> [options]

Shared options can be placed before or after the subcommand.


Part 1: has text

has text is the plaintext namespace. It supports:

  • scan
  • hide
  • restore

It runs entirely on-device and uses a local llama-server plus the HaS text model when model inference is required.

Core Text Concepts

Semantic tags

Anonymized text uses semantic tags such as:

<EntityType[ID].Category.Attribute>

This preserves structure better than a flat [REDACTED] token and is the reason restored downstream LLM output can remain usable.

Open-set types

Repeated --type flags are open-set. They are not limited to a fixed catalog. Natural language type names such as "person name", "address", "phone number", or "numeric values (transaction amounts)" are valid.

Public/private distinction

Type wording matters. For example, "personal location" is usually safer than "location" if you want to preserve public places but hide private addresses. Public/private person-name distinctions remain less stable and should not be trusted without verification.

Multilingual support

The text model supports Chinese, English, French, German, Spanish, Portuguese, Japanese, and Korean, including mixed-language text.

Type name language

Match the --type language to the source text language:

  • Chinese text → use Chinese type names: --type "人名" --type "电话号码" --type "地址"
  • Non-Chinese text (English, French, German, etc.) → use English type names: --type "person name" --type "phone number" --type "address"

Text Runtime Prerequisites

has text auto-starts a local llama-server when needed.

  • Default model path: ~/.openclaw/tools/has-anonymizer/models/has_text_model.gguf
  • Override model path: HAS_TEXT_MODEL_PATH=/abs/path/to/has_text_model.gguf
  • Override parallel cap: HAS_TEXT_MAX_PARALLEL_REQUESTS
  • If HuggingFace downloads fail, see Model Download Mirrors below.

Text Usage

{baseDir}/scripts/has.sh text [--timing] [--verbose] <scan|hide|restore> [options]

Namespace options:

OptionDescription
--timingInclude elapsed_ms in the JSON output
--verboseEmit runtime status and progress messages to stderr

Input methods:

MethodDescription
--text '<text>'Pass text directly
--file <path>Read text from a file
--dir <path>Process immediate plaintext files in a directory
stdinFor single-text mode when no --text, --file, or --dir is provided

Rules:

  • --text, --file, and --dir are mutually exclusive.
  • Empty --type values are rejected.
  • Directory mode only accepts batch output flags.
  • Single-file hide requires --mapping-output.
  • Single-file restore requires --mapping.
  • In text directory mode, skipped can include unprocessed files (binary, encoding, or read errors).

has text scan

Finds sensitive entities without replacing them.

{baseDir}/scripts/has.sh text scan --type "person name" --type "phone number" --file report.txt
{baseDir}/scripts/has.sh text scan --type "person name" --type "phone number" --dir ./reports/

Parameters:

ParameterRequiredDescription
--typeyesEntity type to scan for; repeat to add more
--text / --file / --dirone inputInput source
--max-chunk-tokensMax tokens per chunk, default 5000
--max-parallel-requestsMax scan chunks in parallel, default 4

Output:

  • Single-text mode returns {"entities": ...}
  • Directory mode returns {"results":[...],"count":N,"summary":{...}}
  • Batch output may include skipped and skipped_count

has text hide

Replaces sensitive entities with semantic tags.

{baseDir}/scripts/has.sh text hide --type "person name" --type "address" --text "John lives in Brooklyn" --mapping-output ./mapping.json
{baseDir}/scripts/has.sh text hide --type "person name" --file note.txt --output ./note.anonymized.txt --mapping-output ./note.mapping.json
{baseDir}/scripts/has.sh text hide --type "person name" --dir ./docs/

Parameters:

ParameterRequiredDescription
--typeyesEntity type to anonymize; repeat to add more
--text / --file / --dirone inputInput source
--mapping-outputsingle-file: yesOutput path for generated mapping JSON
--outputsingle-fileOutput path for anonymized text
--mappingsingle-fileExisting mapping JSON file for incremental anonymization
--output-dirbatchOutput directory for anonymized files (default: <dir>/.has/anonymized/)
--mapping-dirbatchOutput directory for per-file mapping JSON files (default: <output-dir>/mappings/)
--max-chunk-tokensMax tokens per chunk, default 3000
--max-parallel-requestsMax files in parallel for --dir, default 4
--no-tool-pairDisable diff-based pair extraction; always use Model-Pair (slower but more robust)

Behavior:

  • Single-file mode never emits the mapping table inline.
  • Single-file mode returns either:

- {"text":"...","mapping_output":"/abs/path/to/map.json"} - {"output":"/abs/path/to/out.txt","mapping_output":"/abs/path/to/map.json"}

  • Batch mode does not accept shared --mapping.
  • Mapping files are sensitive assets. Protect them.

has text restore

Restores anonymized text using mapping JSON.

{baseDir}/scripts/has.sh text restore --mapping mapping.json --text "<person name[1].personal.name> lives in ..."
{baseDir}/scripts/has.sh text restore --mapping mapping.json --file anonymized.txt --output restored.txt
{baseDir}/scripts/has.sh text restore --dir ./.has/anonymized/ --output-dir ./.has/restored/

Parameters:

ParameterRequiredDescription
--mappingsingle-file: yesMapping JSON file path
--text / --file / --dirone inputInput source
--outputsingle-fileOutput path for restored text
--mapping-dirbatchPer-file mapping directory (default: <dir>/mappings/)
--output-dirbatchOutput directory for restored files (default: sibling restored/ under .has/, or <dir>/.has/restored/)
--max-chunk-tokensMax tokens per chunk when model restore is needed, default 3000
--max-parallel-requestsMax model-backed restore chunks in parallel

Behavior:

  • Single-file mode returns inline text unless --output is provided.
  • restore --dir uses per-file mapping JSON files. It does not accept a shared --mapping.
  • restore --dir expects mapping files at <mapping-dir>/<filename>.mapping.json (matching the naming convention produced by hide --dir).

Typical Text Workflow

Anonymize text before sending it to a cloud LLM, then restore the answer:

  1. hide to produce anonymized text plus mapping
  2. send anonymized text to the cloud model with a tag-format explanation (see below)
  3. restore the model response with the mapping

For multi-line text, prefer file-based intermediates over shell variables.

Prompting the cloud LLM with anonymized text

When forwarding anonymized text to a cloud LLM, the agent must prepend a brief explanation of the tag format so the model understands and preserves the tags. Include wording equivalent to the following (adjust language to match the conversation):

The text below has been anonymized. Sensitive entities are replaced by tags in the format <EntityType[ID].Category.Attribute>: - EntityType — the kind of entity (matches the --type value, e.g. person name, address, phone number). - [ID] — a numeric identifier. The same type + same ID always refers to the same real-world entity (e.g. every <person name[1]> is the same person; <person name[2]> is a different person). - .Category.Attribute — additional semantic classification of the entity. Rules: 1. Preserve every tag exactly as-is in your response — do not modify, translate, paraphrase, omit, or expand any tag. 2. When referring to an anonymized entity, reuse the original tag with the correct ID. 3. Do not attempt to guess the real values behind the tags.

Omitting this explanation may cause the cloud model to strip, rewrite, or misinterpret the tags, which will break the restore step.

Model Download Mirrors

If HuggingFace downloads fail, use these ModelScope mirrors:

  • text model: https://modelscope.cn/models/TencentXuanwu/HaS_Text_0209_0.6B_Q8
  • image model: https://modelscope.cn/models/TencentXuanwu/HaS_Image_0209_FP32

Part 2: has image

has image is the image namespace. It supports:

  • scan
  • hide
  • categories

It loads the YOLO segmentation model directly and does not require llama-server.

Image Usage

{baseDir}/scripts/has.sh image [--timing] [--model MODEL] <scan|hide|categories> [options]

Namespace options:

OptionApplies toDescription
--timingall image commandsInclude elapsed_ms in the JSON output
--model PATHscan, hideOverride the image model path

Image Privacy Categories

Common categories include biometric_face, id_card, passport, license_plate, qr_code, mobile_screen, and paper.

Use has image categories when you need the full catalog of 21 supported classes.

--type accepts:

  • English names
  • Chinese names
  • numeric IDs
  • unique partial matches such as face

Rules:

  • Empty --type values are rejected.
  • Ambiguous partial matches fail fast.
  • Omit --type to scan or mask all supported categories.
  • In image directory mode, skipped can include unprocessed files.

has image scan

Finds privacy regions without modifying the image.

{baseDir}/scripts/has.sh image scan --image photo.jpg --type face --type id_card
{baseDir}/scripts/has.sh image scan --dir ./photos/ --type face

Parameters:

ParameterRequiredDescription
--image / --dirone inputSingle image or batch directory
--typeCategory filter; repeat to add more
--confConfidence threshold, default 0.25
--modelOverride image model path

Output:

  • Single-image mode returns detections and summary
  • Directory mode returns results, count, summary, and optional skipped

has image hide

Detects and masks privacy regions in images.

{baseDir}/scripts/has.sh image hide --image photo.jpg --type face --method blur --strength 25
{baseDir}/scripts/has.sh image hide --dir ./photos/

Parameters:

ParameterRequiredDescription
--image / --dirone inputSingle image or batch directory
--outputsingle-imageOutput image path
--output-dirbatchOutput directory
--typeCategory filter; repeat to add more
--methodmosaic, blur, or fill; default mosaic
--strengthMosaic block size or blur radius; default 15
--fill-colorFill color for fill; default #000000
--confConfidence threshold; default 0.25
--modelOverride image model path

Behavior:

  • Refuses to overwrite the source image.
  • Directory mode accepts --output-dir, not --output.
  • For qr_code and barcode detections with --method mosaic, the block size is automatically raised to max(strength, bbox_short_side // 10, 20) to prevent the encoding from surviving pixelation. After masking, a lightweight verification confirms the code is no longer machine-readable; if it is, the strength is escalated further (up to a fill fallback). Each affected detection includes an effective_strength field in the output.
  • A cv2-based fallback supplements YOLO detection for QR codes and barcodes. When YOLO misses a code (e.g. large codes on plain backgrounds), cv2.QRCodeDetector and cv2.barcode.BarcodeDetector provide additional coverage. When YOLO misclassifies a code region as a different category (e.g. monitor_screen), cv2 corrects the category before --type filtering, so --type qr_code catches all QR codes regardless of YOLO's label. Corrected detections include a "corrected_from" field; new detections include "cv2_fallback": true.

has image categories

Lists all supported image privacy categories.

{baseDir}/scripts/has.sh image categories
{baseDir}/scripts/has.sh image categories --timing

Behavior:

  • Returns {"categories":[...]}
  • Supports --timing

Suggested Combined Scan

For a mixed workspace:

  1. run has text scan ... --dir <dir> for plaintext
  2. run has image scan --dir <dir> for images
  3. merge the two JSON results into one privacy report

If the user wants masking after that, use hide on the specific files or directories you already identified.

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

91.01%
按下载量换算9,358

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills