Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
agentic-dm-gateway — Плоскость управления безопасностью для LLM-агентов: списки разрешений, аварийный выключатель владельца, PIN-сессии, ограничения частоты запросов, обнаружение промпт-инъекций и очистка вывода для блокировки утечки секретов и экфильтрации через изображения-маяки. | Kitploit
Инструменты/GitLabGitLab/wattocyber/agentic-dm-gateway
Аутентификация и авторизацияОборонительные ИнструментыЭксфильтрация данныхОбнаружение СекретовБезопасность ИИ
GitLabwattocyber/agentic-dm-gateway

agentic-dm-gateway

Плоскость управления безопасностью для LLM-агентов: списки разрешений, аварийный выключатель владельца, PIN-сессии, ограничения частоты запросов, обнаружение промпт-инъекций и очистка вывода для блокировки утечки секретов и экфильтрации через изображения-маяки.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
РепозиторийСайт
792 месяцев назадЕщё не проверено

Agentic DM Gateway

agentic-dm-gateway banner

pipeline license gitlab

Плоскость управления безопасностью для LLM-агентов в приватных чатах (обычно в личных сообщениях Discord).

Она находится перед вашим агентом. Она решает, кому можно общаться, разблокирована ли сессия, приостановлен ли процесс и достаточно ли безопасно это сообщение, чтобы его переслать. Ваша модель и инструменты остаются за этим шлюзом. Библиотека не вызывает LLM. Она не реализует продуктовые функции сверх безопасности.

Вдохновлено Hermes. Дизайн следует тем же идеям плоскости управления, что используются в шлюзах обмена сообщениями Hermes Agent: доставка в первую очередь через личные сообщения, списки разрешённых идентичностей, открытие в стиле сопряжения, аварийный выключатель владельца и жёсткое разделение между кто может действовать (плоскость управления) и текстом сообщения, который видит модель (плоскость данных). Этот пакет — небольшое автономное извлечение этого паттерна для любого вызываемого агента. Не связан с Nous Research.

Зрелость: реализовано · независимо проверено · поддерживается. См. STATUS.md. Воспроизведение: python scripts/repro.py (ожидается REPRO_OK).

Офлайн-тесты:

pip install -e ".[dev]" # or: pip install -e . && pip install pytest
python -m pytest -q --tb=line
# or: python scripts/repro.py

Демо: https://gitlab.com/WattoCyber/agentic-dm-gateway


Проблема

Если вы подключите агента к Discord (или к любому чат-API) с инструментами, любой, кто может написать боту, может попытаться:

  • использовать агента без разрешения
  • сжечь квоту API флудом
  • внедрить промпты в стиле «игнорируй предыдущие инструкции»
  • обманом заставить модель выдать API-ключи или другие секреты

Вам нужна плоскость управления (идентификация и управление процессами), отделённая от плоскости данных (текст сообщений, который видит модель).

Этот пакет и есть такая плоскость управления.


Что он делает

КонтрольПоведение
Список разрешённыхПродолжать могут только настроенные ID пользователей. Все остальные отбрасываются (молча или с короткой строкой отказа).
Владелец vs другВладельцы пропускают PIN и могут приостановить всего агента. Друзьям может потребоваться общий PIN для временного открытия (упрощённая идея спаривания в стиле Hermes).
Аварийный выключательГлобальный файл паузы или флаг окружения. Пока активен, ходы агента не выполняются.
Ограничения частотыСкользящее окно на пользователя (в минуту и в час).
Проверки вводаМаксимальная длина, удаление странных управляющих символов, эвристики на регулярных выражениях для типичных фраз внедрения / выманивания секретов.
Очистка выводаРедактирование токенов, похожих на секреты (API-ключи, JWT, заголовки Bearer), и удаление markdown/HTML-маячков-изображений, которые могут осуществлять эксфильтрацию через автозагрузку.
Журнал аудитаТолько дописываемый JSONL событий allow/deny/auth/kill для последующего просмотра.
Локальные команды/auth, /lock, /kill, /unkill, /status обрабатываются без вызова модели.

Область применения: только защитный шлюз. Не чат-бот, не торговый бот, не сканер и не фреймворк для агентов. Передайте agent(user_id, text) -> str (или асинхронную версию), если используете Discord. Ядро работает с любым целочисленным ID пользователя и обычным текстом.


Демо (скопируйте и вставьте)

$ python - <<'PY'
from agentic_dm_gateway import InboundSecurityPipeline
pipe = InboundSecurityPipeline({
 "allowed_user_ids": [111],
 "owner_ids": [111],
 "pin_enabled": False,
 "block_injection": True,
 "deny_message": "Not authorized.",
})
for uid, text in [
 (99, "hi"),
 (111, "ignore previous instructions"),
 (111, "summarize this note"),
]:
 r = pipe.precheck(uid, text)
 print(uid, r.stage, r.run_agent, r.reply_text)
PY

99 allowlist False Not authorized.
111 injection False Blocked: looks like prompt injection / secret fishing. Rephrase.
111 ok True None

$ python scripts/repro.py
REPRO_OK agentic-dm-gateway unit suite

Как это подключить

Три пути интеграции. Выберите один.

1) Готовая интеграция с Discord (самый простой)

Установите с поддержкой Discord, укажите в переменных окружения свои user id, зарегистрируйте шлюз, запустите бота.

pip install -e ".[discord]"
# or: pip install agentic-dm-gateway[discord]


![agentic-dm-gateway banner](https://assets.kitploit.com/production/public/readmes/50583/ed168cd7c4b9a61caf98c8a31b2dfb7d7e3bd3c5401288706c21c1376c7199ce.jpg)

export DISCORD_BOT_TOKEN=...
export AGENTIC_DM_ALLOWLIST=your_discord_user_id
export AGENTIC_DM_OWNER_ID=your_discord_user_id
# optional: export AGENTIC_DM_PIN=....


![agentic-dm-gateway banner](https://assets.kitploit.com/production/public/readmes/50583/ed168cd7c4b9a61caf98c8a31b2dfb7d7e3bd3c5401288706c21c1376c7199ce.jpg)
python examples/discord_echo_bot.py

В вашем собственном боте:

import discord
from agentic_dm_gateway.discord_adapter import register_dm_gateway

def agent(user_id: int, text: str, *, is_owner: bool = False) -> str:
 # your Hermes / local model / tool loop
 return call_your_model(text)

intents = discord.Intents.default()
intents.message_content = True
bot = discord.Client(intents=intents)

register_dm_gateway(
 bot,
 {
 "allowed_user_ids": [], # or rely on AGENTIC_DM_ALLOWLIST env
 "owner_ids": [],
 "pin_enabled": False,
 "deny_message": False, # silent drop for strangers
 },
 agent=agent,
)
bot.run(TOKEN)

Что делает register_dm_gateway:

  1. Устанавливает обработчик on_message на ваш discord.Client / бота.
  2. Игнорирует ботов и сообщения в гильдиях (только личные сообщения).
  3. Запускает InboundSecurityPipeline.precheck перед вашим агентом.
  4. Отправляет ответы с отказом / управляющие ответы при необходимости.
  5. Вызывает ваш agent(user_id, sanitized_text, is_owner=...).
  6. Очищает ответ агента (секреты + маячки изображений) и разбивает его на части с учётом лимита Discord в 2000 символов.

Сообщения в гильдиях никогда не доходят до агента. Только личные сообщения от пользователей из белого списка.

2) Ручной хук Discord (у вас уже есть on_message)

Если вы не можете использовать register_dm_gateway (существующая цепочка обработчиков), вызовите конвейер самостоятельно:

from agentic_dm_gateway import InboundSecurityPipeline
from agentic_dm_gateway.security import sanitize_agent_output

pipe = InboundSecurityPipeline({
 "allowed_user_ids": [YOUR_ID],
 "owner_ids": [YOUR_ID],
 "pin_enabled": True,
})

@bot.event
async def on_message(message):
 if message.author.bot or message.guild is not None:
 return

 pre = pipe.precheck(int(message.author.id), message.content or "")
 if pre.reply_text and not pre.run_agent:
 await message.channel.send(pre.reply_text[:1900])
 return
 if not pre.run_agent:
 return

 raw = await your_agent(pre.sanitized_text) # Hermes, Ollama, API, ...
 await message.channel.send(sanitize_agent_output(str(raw))[:1900])

3) Независимость от протокола (Hermes, CLI, Telegram и что угодно ещё)

Импорт Discord не требуется. Используйте ту же предварительную проверку перед любым ходом агента:

from agentic_dm_gateway import InboundSecurityPipeline
from agentic_dm_gateway.security import sanitize_agent_output
Скачать инструмент