All plugins

language-lock

Your agent answers in your language, and stays there (hermes-agent#130117). Learns your language from your recent messages or a setting, detects each reply's language without a model (20 languages, by script and common words, ignoring code and links), and after a reply drifts tells the agent to switch back on the next turn. Asking for a translation on purpose is respected. /lang shows drifts caught and corrected. No model calls, nothing stored.

salch-credToolsv0.1.1Updated 5 hours ago

About

Your agent answers in your language, and stays there (hermes-agent#130117). Learns your language from your recent messages or a setting, detects each reply's language without a model (20 languages, by script and common words, ignoring code and links), and after a reply drifts tells the agent to switch back on the next turn. Asking for a translation on purpose is respected. /lang shows drifts caught and corrected. No model calls, nothing stored.

language-lock

Your agent answers in your language, and stays there.

Models drift between languages:

  • A long English conversation suddenly continues in Chinese after a tool returned Chinese text (hermes-agent#130117).
  • A Spanish chat on Telegram gets English replies after a few code turns.
  • The drift then sticks for the rest of the conversation.

Language Lock notices and pulls the agent back:

you:    Please look at the logs and tell me why the upload is failing.
agent:  上传失败是因为令牌已过期。我已经刷新了令牌……          <- drifted into Chinese
you:    why did that happen?

[Language Lock] Your last reply was in Chinese, but the user writes in English. Reply in English
from now on. Keep code, commands, file names and quoted text exactly as they are.

agent:  The upload failed because the token had expired...

How it works

  1. It learns your language from your last five messages, or uses one you set. If you switch languages, it follows you.
  2. It checks every reply's language without a model.
    • Writing systems identify Chinese, Japanese, Korean, Russian, Ukrainian, Arabic, Persian, Hindi, Thai, Greek and Hebrew.
    • Common words tell apart English, Spanish, French, German, Portuguese, Italian, Dutch, Indonesian and Turkish.
    • Code blocks, inline code, links, emails and file names are ignored, so a Spanish reply full of English code still reads as Spanish.
  3. When a reply drifted, the agent is told at the start of the next turn to switch back, and the drift is counted.
  4. Asking for another language on purpose is respected. "Translate this into French", "answer in English", "en español" and "auf Deutsch" are never counted as drift.

Use it

/lang               your language, the last reply's language, drifts caught and corrected
/lang set es        always expect Spanish in this session (a code or a name)
/lang auto          learn it from your messages again
plugins:
  entries:
    language-lock:
      settings:
        language: ""      # e.g. "hi" or "Hindi"; empty learns it from your messages
        remind: drift     # drift: only after a drift; always: remind every turn

What it touches

  • Reads your messages and the agent's replies to detect their language, in memory, per session. Nothing is written to disk.
  • Adds one sentence of context (through pre_llm_call) after a drift, or every turn with remind: always.
  • No model calls, no network, no dependencies.

Limits

  • The fix comes on the next turn. A reply that already drifted is not rewritten. Rewriting would need a model call and would hold back streaming.
  • 20 languages. Others are ignored, never mistaken for drift.
  • Long text: only the first 4,000 characters of a message or reply are read, which is plenty to tell the language and keeps pasted logs from slowing anything down.
  • Very short messages ("ok", "👍") don't count toward your language.
  • Compaction summaries (#135470) are written by Hermes's auxiliary model, which plugins can watch but not steer. That one needs a core fix.

Development

pytest tests

26 tests cover long and hostile input staying fast, detecting 11 languages, ignoring code and links, drift and correction, intentional translation, a user switching languages, the settings and the commands.

License

MIT

README from the reviewed commit 6984ae8; it updates when the author re-pins.

More by salch-cred

14 plugins by salch-cred in the catalog.

salch-credaftercareYour agent checks its own work after the fact. When a reply says something is deployed or live at a public address, Aftercare remembers it and, every few hours at session start, checks it again with one GET request in the background. If it has stopped working, the agent is told once and tells you first; you hear when it is back. /aftercare lists and checks, and hermes aftercare check runs from cron. Never checks private networks or runs commands. Disclosure — on by default, sends background GET requests (user agent hermes-aftercare/0.1) to any public http(s) address an agent reply says is deployed or live, at session start every 6 hours by default, and adds a one-time note to the next turn when one changes state; private, loopback and local-name addresses are refused.Communitytoolssalch-credbluffDoes your model make things up? Bluff asks about things that sound real but don't exist (Python functions, built-in exceptions, chemical elements), mixed with real ones and phrased as if they all exist, and checks whether the model admits the made-up ones aren't real. The result is a bluff rate, with real items as a control. Every item is checkable by machine, so no model judges another. Runs on your active model through ctx.llm, no setup.Communitytoolssalch-credcalm-modeWhen you get frustrated, your agent slows down. Calm Mode scores the tone of each message ("still broken", "I already told you", capitals, "!!", the same message twice); frustration builds and fades. Past a threshold the agent works in small checked steps, at most two file edits per turn, and risky commands (rm -rf, git push, deploys, DROP TABLE) wait until the user says yes. /calm shows the level and forces it on or off. No model calls, nothing stored.Communitytoolssalch-credcrash-testA safety rating for AI agents. For one armed turn it breaks tools the way real systems break (timeouts, outages, empty or cut-off results), then rates what the agent did: retried, worked around it, told the truth, or claimed success anyway. 1-5 stars and an HTML report, comparable across models by seed. Blocked calls never run, silent faults only touch reads, and the agent gets no tools from it, so it cannot tell it is being tested. Disclosure — when the user arms a test (/crashtest start or the CRASH_TEST environment variable), the next turn's tool calls are deliberately blocked with fake errors and some read results (read_file, search_files, web_search/web_extract, read-only terminal commands) are silently emptied, cut off or replaced with an older result without telling the agent, so the agent may act on incomplete data during that turn; the rating is appended to the reply and the task text and reply are saved in a local report under the plugin's data folder.Communitytools

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section