
ShunyaNet Sentinel — это легковесная программа, которая отслеживает RSS-ленты, отправляет их в LLM для анализа и доставляет сводки или оповещения непосредственно в GUI и Slack.
ShunyaNet Sentinel — это легковесная программа в киберпанк-стиле, которая загружает RSS-ленты (например, новости, социальные сети), отправляет их в LLM для анализа и доставляет оповещения и сводные отчёты непосредственно в GUI и Slack через заданные интервалы.
Проект создан для использования LLM, размещённой локально на той же машине или в сети (например, через Tailscale) с помощью LMStudio или Ollama (02/23 Обновление). Он также будет работать с ключом API OpenAI (02/23 Обновление).
Для оповещений программа использует вебхуки Slack, что позволяет отправлять push-уведомления на мобильное устройство.
ShunyaNet Sentinel совместим с последними версиями Linux, macOS и Windows*
Качество отчётов и анализа зависит от промпта, размера контекста, RSS-лент и выбранной LLM. Рекомендуется отключать функции «размышления» (thinking). Модели, которые хорошо себя зарекомендовали и в целом следуют инструкциям, включают:
*Настоятельно рекомендуется macOS или Linux. См. «Известные проблемы» ниже.
Важную информацию см. в разделе «Советы, хитрости и известные проблемы» в конце!
/v1/chat/completions, совместимым с OpenAI; разработан для LMStudiorequirements.txt:
LLM размещается через:
git clone https://github.com/EverythingsComputer/ShunyaNet-Sentinel.git
cd ShunyaNet-Sentinel
macOS / Linux:
python3 -m venv venv
source venv/bin/activate
Windows (PowerShell):
python -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt
macOS / Linux:
python3 ShunyaNet_Sentinel.py
Windows:
python ShunyaNet_Sentinel.py
default_prompt.txtDefault_testВведите интересующие темы или загрузите один из предоставленных списков по умолчанию. В каждый список можно добавить до 10 тем.
Нажмите "Load Prompt File", чтобы загрузить файл промпта. Предоставляется промпт по умолчанию (default_prompt.txt).
Нажмите "Load Data Source File", чтобы загрузить список RSS. Предоставляются два списка по умолчанию: короткий список "Default_test" и более длинный "Default_long", ориентированный на мировые новости и срочные новости.
В "Additional Settings" задайте следующие поля. Они сохранятся и будут действовать после перезапуска программы. Настройки по умолчанию подходят для большинства конфигураций — но вы всё равно должны ввести поле №1 самостоятельно:
LLM_PROVIDER = lmstudioLLM_BASE_URL = <URL вашего сервера LMStudio, например: http://localhost:1234/v1>LLM_MODEL = <ОПЦИОНАЛЬНО. Рекомендую оставить пустым и загружать модель непосредственно в LMStudio. Если необходимо, то формат такой: lmstudio-community/mistral-7b-instruct>LLM_API_KEY = <Оставьте пустым, если не используете ключ аутентификации>LLM_PROVIDER = ollamaLLM_BASE_URL = <URL вашего сервера LMStudio, например: http://localhost:11434/v1>LLM_MODEL = llama3LLM_API_KEY = <оставьте пустым>LLM_PROVIDER = openaiLLM_BASE_URL = (не важно: это поле игнорируется)LLM_MODEL = gpt-4o-miniLLM_API_KEY = sk-xxxxПРИМЕЧАНИЕ: Рекомендую для первого запуска всё упростить. Используйте настройки по умолчанию и убедитесь, что всё работает. Затем настройте контекст и RSS-ленты. После этого скорректируйте промпт. Мне было бы интересно посмотреть на улучшенные промпты от пользователей….
Проблемы/Предупреждения:
Советы:
Альфа
Этот проект лицензирован по Apache 2.0.
Авторство: ShunyaNet / EverythingsComputer
Без гарантий: Программа предоставляется «как есть», без каких-либо гарантий, явных или подразумеваемых.
Этот проект использует следующие сторонние библиотеки. Пожалуйста, ознакомьтесь с их лицензиями при использовании, распространении и/или изменении этого проекта:
Мой кот.
| Настройка | Описание | По умолчанию | Пример / Примечания |
|---|
| LLM_PROVIDER | СМ. СЛЕДУЮЩИЙ ШАГ | — | — |
| LLM_BASE_URL | СМ. СЛЕДУЮЩИЙ ШАГ | — | — |
| LLM_MODEL | СМ. СЛЕДУЮЩИЙ ШАГ | — | — |
| LLM_API_KEY | СМ. СЛЕДУЮЩИЙ ШАГ | — | — |
| SLACK_WEBHOOK_URL | Опциональный URL вебхука Slack для отправки оповещений. | Опционально | https://hooks.slack.com/services/... |
| MAX_INPUT_TOKENS | Максимальное количество токенов, отправляемых в LLM за один сбор RSS. Эмпирическое правило: 1 токен ≈ 4 символа. Если превышает размер контекста модели, включите режим разбиения на части. | 4000 | Увеличивайте осторожно, в зависимости от контекстного окна вашей LLM. |
| MAX_OUTPUT_TOKENS | Максимальное количество токенов, которое LLM может вернуть в ответе. (примечание: это максимум/потолок, а не цель!) | 4000 | Рекомендую не менять. 4000, честно говоря, вероятно, избыточный запас. |
| MAX_INPUT_TOKENS_BULK | Максимальная длина токенов RSS-лент, отправляемых в LLM для пакетной обработки. Когда пакетная обработка включена, RSS-ленты сохраняются и отправляются вместе со специальным промптом для анализа трендов (пока что жёстко прописанным). Разбиение на части для этого не используется, поэтому не превышайте лимит контекста. | 4000 | Вероятно, потребуется увеличить для осмысленных пакетных отчётов. Может нагрузить VRAM и лимиты контекста. Рекомендуется сначала отключить пакетный режим. |
| MAX_OUTPUT_TOKENS_BULK | Максимальная длина токенов самого пакетного отчёта. | 4000 | Может потребоваться увеличить для осмысленных пакетных отчётов. Может нагрузить VRAM и лимиты контекста. Рекомендуется сначала отключить пакетный режим. |
| FETCH_INTERVAL | Время в секундах между сбором RSS и анализом LLM. | 600 (сек., т.е. 10 мин) | Не устанавливайте меньше общего времени обработки, иначе может возникнуть отставание. |
| ITEMS_PER_FEED | Максимальное количество записей RSS, получаемых из одного канала за цикл. Ранее полученные элементы игнорируются. | 50 | Большие значения приводят к большему первому сбору. Большинство RSS-каналов выдают не более 20 новых элементов за 10 минут, некоторые — намного меньше. |
| USE_CHUNKED_MODE | Включает автоматическое разбиение RSS-контента, если он превышает лимит токенов. 1 = Вкл, 0 = Выкл. | 1 | Предотвращает переполнение контекста, но может дублировать события между частями. |
| CHUNK_SIZE | Размер каждой части в символах (не токенах). | 8000 | Примерное преобразование: 4 символа ≈ 1 токен. ПОВТОРЯЮ: ЭТО В СИМВОЛАХ. Должно ли быть в токенах? Вероятно! Но пока так. |
| WRITE_TO_FILE | Опционально. Записывает весь полученный RSS-контент в постоянно пополняемый файл для внешнего бенчмаркинга, тестирования промптов или сравнения моделей. Не влияет на основную функциональность Sentinel. 1 = Вкл, 0 = Выкл. | 0 | Полезно для автономного тестирования и оценки LLM. |
| ANALYSIS_WINDOW | Временной интервал для каждого пакетного отчёта. | 3600 (сек., т.е. 1ч) | Используется только при включённой пакетной обработке. |
| BULK_ANALYSIS | Включает периодические пакетные отчёты о трендах RSS. 1 = Вкл, 0 = Выкл. Очень экспериментально по сравнению с рутинными отчётами. Специальный промпт пока жёстко прописан. | 0 | Отправляет накопленные RSS-ленты в LLM для единого отчёта о трендах. Может значительно увеличить нагрузку на обработку. |