
ShunyaNet Sentinel é um programa leve que monitora feeds RSS, envia-os a um LLM para análise e entrega resumos ou alertas diretamente à GUI e ao Slack.
O ShunyaNet Sentinel é um programa leve, com tema cyberpunk, que ingere feeds RSS (ex.: notícias de última hora, redes sociais), os envia para um LLM para análise e entrega alertas e relatórios resumidos diretamente na GUI e no Slack em intervalos regulares.
O projeto foi construído para utilizar um LLM hospedado localmente na mesma máquina ou rede (ex.: com Tailscale) usando LMStudio ou Ollama (atualização 23/02). Também funcionará com uma chave de API da OpenAI (atualização 23/02).
Para alertas, o programa utiliza Webhooks do Slack, permitindo o envio de notificações push para um dispositivo móvel.
O ShunyaNet Sentinel é compatível com as versões mais recentes do Linux, MacOS e Windows*
A qualidade dos relatórios e análises é influenciada pelo prompt, tamanho do contexto, feeds RSS e LLM escolhidos. Recomenda-se desligar os recursos de pensamento. Modelos que parecem ter um bom desempenho e geralmente seguem instruções incluem:
*Recomenda-se fortemente macOS ou Linux. Veja Problemas Conhecidos abaixo.
Veja Dicas, Truques e Problemas Conhecidos no final para informações importantes!
/v1/chat/completions compatível com OpenAI, projetado para LMStudiorequirements.txt:
LLM hospedado via:
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_testInsira tópicos de interesse ou carregue uma das listas padrão fornecidas. Até 10 tópicos podem ser adicionados a cada lista.
Clique em "Carregar Arquivo de Prompt" para carregar um arquivo de prompt. Um prompt padrão é fornecido (default_prompt.txt).
Clique em "Carregar Arquivo de Fonte de Dados" para carregar uma lista RSS. Duas listas padrão são fornecidas. Uma lista curta "Default_test" e uma lista mais longa "Default_long", que foca em notícias mundiais e de última hora.
Em "Configurações Adicionais", defina os seguintes campos. Eles serão salvos e persistirão se você encerrar e reiniciar o programa. As configurações padrão funcionarão com a maioria das configurações - mas você ainda deve inserir o campo #1 manualmente:
LLM_PROVIDER = lmstudioLLM_BASE_URL = <URL do seu servidor LMStudio, ex.: http://localhost:1234/v1>LLM_MODEL = <OPCIONAL. Recomendo deixar em branco e carregar seu modelo diretamente no LMStudio. Se necessário, o formato é como: lmstudio-community/mistral-7b-instruct>LLM_API_KEY = <Deixe em branco, a menos que você use uma chave de autenticação>LLM_PROVIDER = ollamaLLM_BASE_URL = <URL do seu servidor LMStudio, ex.: http://localhost:11434/v1>LLM_MODEL = llama3LLM_API_KEY = = <deixe vazio/em branco>LLM_PROVIDER = openaiLLM_BASE_URL = (não importa: este campo é ignorado)LLM_MODEL = gpt-4o-miniLLM_API_KEY = sk-xxxxNOTA: Recomendo manter a simplicidade na primeira execução. Use as configurações padrão e verifique se funciona. Depois, ajuste o contexto e os feeds RSS. Em seguida, ajuste o prompt. Ficaria curioso para ver prompts melhorados das pessoas….
Problemas/Alertas:
Sugestões:
Alpha
Este projeto está licenciado sob a Apache 2.0.
Atribuição: ShunyaNet / EverythingsComputer
Sem Garantia: O software é fornecido "como está", sem garantia de qualquer tipo, expressa ou implícita.
Este projeto utiliza as seguintes bibliotecas de terceiros. Revise suas licenças ao usar, distribuir e/ou alterar este projeto:
Meu gato.
| Configuração | Descrição | Padrão | Exemplo / Notas |
|---|
| LLM_PROVIDER | VEJA O PRÓXIMO PASSO | — | — |
| LLM_BASE_URL | VEJA O PRÓXIMO PASSO | — | — |
| LLM_MODEL | VEJA O PRÓXIMO PASSO | — | — |
| LLM_API_KEY | VEJA O PRÓXIMO PASSO | — | — |
| SLACK_WEBHOOK_URL | URL opcional do webhook do Slack para envio de alertas. | Opcional | https://hooks.slack.com/services/... |
| MAX_INPUT_TOKENS | Tokens máximos enviados ao LLM por coleta RSS. Regra geral: 1 token ≈ 4 caracteres. Se exceder o tamanho do contexto do modelo, ative o modo fragmentado. | 4000 | Aumente com cuidado dependendo da janela de contexto do seu LLM. |
| MAX_OUTPUT_TOKENS | Tokens máximos que o LLM enviará de volta em sua resposta. (nota: este é o máximo/teto, não o alvo!) | 4000 | Recomendo não alterar. 4000 é provavelmente espaço demais, para ser honesto. |
| MAX_INPUT_TOKENS_BULK | Comprimento máximo em tokens dos feeds RSS enviados ao LLM para relatórios de processamento em massa. Quando o processamento em massa está ativado, os feeds RSS são salvos e enviados juntamente com um prompt especial de análise de tendências (prompt codificado, por enquanto). Fragmentos nunca são usados para isso, então não exceda seu limite de contexto. | 4000 | Provavelmente precisa ser aumentado para relatórios em massa significativos. Pode sobrecarregar VRAM e limites de contexto. Recomenda-se desabilitar o modo em massa inicialmente. |
| MAX_OUTPUT_TOKENS_BULK | Comprimento máximo em tokens do próprio relatório de processamento em massa. | 4000 | Pode precisar ser aumentado para relatórios em massa significativos. Pode sobrecarregar VRAM e limites de contexto. Recomenda-se desabilitar o modo em massa inicialmente. |
| FETCH_INTERVAL | Tempo em segundos entre coletas RSS e análise do LLM. | 600 (segundos, ou seja, 10 min) | Não defina menor que o tempo total de processamento ou pode ocorrer acúmulo. |
| ITEMS_PER_FEED | Número máximo de itens RSS obtidos por feed por ciclo. Itens obtidos anteriormente são ignorados. | 50 | Valores maiores criam uma primeira coleta maior. A maioria dos feeds RSS não produz muito mais que 20 novos itens a cada 10 minutos, alguns muito menos. |
| USE_CHUNKED_MODE | Ativa a divisão automática do conteúdo RSS se exceder a margem de tokens. 1 = Ligado, 0 = Desligado. | 1 | Previne transbordamento de contexto, mas pode duplicar o relato de eventos entre fragmentos. |
| CHUNK_SIZE | Tamanho de cada fragmento em caracteres (não em tokens). | 8000 | Conversão aproximada: 4 caracteres ≈ 1 token. REPITO: ISSO ESTÁ EM CARACTERES. Deveria ser em tokens? Provavelmente! Mas não é. |
| WRITE_TO_FILE | Opcional. Escreve todo o conteúdo RSS obtido em um arquivo contínuo para benchmarking externo, teste de prompts ou comparação de modelos. Não afeta a funcionalidade principal do Sentinel. 1 = Ligado, 0 = Desligado. | 0 | Útil para teste e avaliação offline do LLM. |
| ANALYSIS_WINDOW | Intervalo de tempo usado para cada relatório de processamento em massa. | 3600 (segundos, ou seja, 1h) | Usado apenas quando o Processamento em Massa está ativado. |
| BULK_ANALYSIS | Ativa relatórios periódicos de tendências RSS em massa. 1 = Ligado, 0 = Desligado. Muito experimental em relação aos relatórios rotineiros. O prompt especial é codificado, por enquanto. | 0 | Envia feeds RSS acumulados para o LLM para um único relatório de análise de tendências. Pode aumentar significativamente a carga de processamento. |