Compromissos

Se alguém diz "lembra-me na sexta", ou o teu agente diz "vou verificar e digo-te", o Pepe apanha isso sozinho e trata de cumprir.

Compromissos

Um compromisso não é como as outras automações do Pepe: não há nada para configurares. Ele é detetado sozinho, mesmo depois de um turno de conversa já ter terminado, a partir do que foi dito de facto, seja o utilizador a pedir para ser lembrado de algo, seja o próprio agente a prometer verificar algo e voltar com a resposta. Ativa-se por agente (commitments, desligado por omissão) e exige um utility_model nesse agente; falta um dos dois e nada é extraído, ficando a promessa apenas em palavras.

Dois tipos de seguimento, tratados de formas diferentes

Vale a pena perceber isto antes de ligar a funcionalidade, porque os dois casos não seguem o mesmo caminho:

Confiança, e o que acontece quando fica por confirmar

Uma chamada barata a um modelo lê a última troca de mensagens e decide se ali existe mesmo um compromisso, atribuindo-lhe uma pontuação de confiança. Quando essa pontuação é suficientemente alta e o prazo dá para resolver, o compromisso é agendado logo, sem nenhum passo extra, o que é a própria ideia de “detetar sem precisar de perguntar duas vezes”. Abaixo desse nível, ou quando não dá para extrair um prazo do que foi dito (um vago “qualquer dia destes” não é uma data), o compromisso fica a aguardar confirmação: perguntam-te diretamente, uma única vez, em vez de o sistema andar a seguir sozinho algo que ninguém pediu de facto.

Gerir pelo chat

A tool commitment do agente tem três ações: list (o que está a ser acompanhado neste momento), confirm id: <id> (promove um compromisso que estava à espera; passa também due_when se a data nunca chegou a resolver-se) e cancel id: <id>.

Gerir pelo dashboard

A página Compromissos, dentro de pepe serve, mostra tudo o que está a ser acompanhado, dividido entre à espera de confirmação, agendados e já entregues. Confirmar ou cancelar faz-se ali mesmo.

Nenhum servidor a correr, só um ficheiro local. Os compromissos ficam guardados num pequeno ficheiro SQLite embutido, ao lado do config.json, e não numa base de dados à parte que seja preciso instalar ou manter. Disparam através do mesmo temporizador interno que já move os watches e as tarefas agendadas, e esse temporizador só corre enquanto alguma superfície de longa duração estiver ativa, seja pepe serve, um gateway ou uma sessão interativa.