Files
hermes-agent/plugin-catalog/desensitize.yaml
yubingz 214b0d1c7a chore(catalog): bump desensitize pin to 5e41d29
Addresses review items on
NousResearch/hermes-agent#118727:

- Declares runtime deps in the plugin manifest (jieba, PyYAML) so the
  catalog capability probe passes; the deps previously lived only in the
  repo-root pyproject.toml, which the loader does not read for a subdir
  plugin.
- English defaults for the command description; status/help are bilingual.
- Discloses the semantic layer's egress: pre-redaction text goes to the
  configured LLM, and provider=openai without base_url falls back to
  api.siliconflow.cn (remote). Default provider=ollama stays local.
- Status output now prints the resolved endpoint instead of a hardcoded
  label, plus an Egress line.
2026-09-26 11:42:24 -07:00

40 lines
2.0 KiB
YAML

name: desensitize
repo: https://github.com/yubingz/hermes-desensitize
sha: 9684e1b5e60197524dc15aacf6a3c9b91c74ce0a
subdir: src/hermes_desensitize
description: "Chinese-context desensitization for Hermes chats. Replaces PII and business-sensitive
entities — person names, company names, addresses, file paths, and magnitude figures — with
reversible placeholders before a message reaches the model, then restores them in the reply.
Two layers: an optional local/OpenAI-compatible LLM for semantic entity judgment, plus a
sub-millisecond regex fallback (phone, ID card, email, IP, path) that keeps the conversation
working when the model is unavailable. Disclosure — the semantic layer sends the
pre-redaction text to the configured LLM, because recognising a name requires seeing it:
with the default provider=ollama that is the local Ollama host and nothing leaves the
machine, but provider=openai without an explicit base_url falls back to
https://api.siliconflow.cn/v1 (remote); set base_url, or stay on ollama, to keep it local.
Also rewrites inbound user messages and outbound
assistant replies, so transcript content differs from what you typed; placeholders are
code-generated and may over-match (18-digit ID-card-shaped strings, names that collide with
the public-entity allowlist); company names are matched greedily and a modifier such as
原北京某某有限公司 is absorbed into the placeholder; magnitude masking drops the numeric
value and only fires on the configured trigger words, so a domain term absent from that list
is left unmasked without warning; the placeholder mapping is held in memory only and never
written to disk."
maintainer: yubingz
tier: community
category: tools
requires_hermes: ">=0.19"
docs_url: https://github.com/yubingz/hermes-desensitize#readme
version: "1.0.0"
readme: true
platforms: []
capabilities:
provides_tools: []
provides_hooks:
- pre_llm_call
- pre_api_request
- transform_llm_output
- post_llm_call
provides_middleware: []
requires_env: []