alexylem / jarvis

Jarvis.sh is a simple configurable multi-lang assistant.
http://openjarvis.com
MIT License
810 stars 197 forks source link

quelque amélioration possibles #526

Open RobyBioloid opened 7 years ago

RobyBioloid commented 7 years ago

Bonjour,

J'ai plusieurs idées d'amélioration concernant le core de Jarvis

1) Est il possible de mettre en place des options de redémarrage ?

Il m'arrive assez souvent de modifier tel ou tel fichier de Jarvis et il faut forcément redémarrer Jarvis pour qu'il en tienne compte

Il serait sympa de gérer cela en vocal On pourrait:

You: Redemarre le système Jarvis: Je redemarre le système You: Redemarre le système en mode analyse Jarvis: Je redemarre le système en mode analyse etc ...

2) Avoir un historique de conversation

Ça permettrait de pouvoir revenir sur ce qu'on s'est dit et éventuellement corriger les interactions qu'on à eu avec Jarvis (Réponses inappropriées, phrase non reconnue, etc ...). On pourrait également profiter de cet historique pour donner un peu de mémoire à Jarvis (A voir ...)

3) Il serait sympa aussi que quand une réponse ne donne pas entière satisfaction, pouvoir modifier la réponse de Jarvis. Exemple:

You: Bonjour Jarvis Jarvis: Au revoir You: Mauvaise réponse, modifie cela s'il te plait Jarvis: Oui bien sûr. Que faut il répondre? You: Bonjour Jarvis: J'ai bien pris en compte la modification. Dois-je redémarrer le système? You: Oui, redémarre le système Jarvis: Je redémarre le système

NYGHOST commented 7 years ago

salut, pour le redemarage dans jarvis.sh tu as la commande "jv_update_config ;) ca met a jour tes commandes. donc pas besoin de redemarrer jarvis, pour le troubleshouting pareil tu as les commandes dans jarvis.sh si besoin aide hesite pas ou attend des rep de @alexylem

alexylem commented 7 years ago

Si l'objectif est de prendre en compte les modifications de fichiers, je préfère comme suggéré par @NYGHOST te donner le moyen de faire ca exactement. Quels fichiers modifies-tu? Juste le fichier des commandes?

Lorsque Jarvis est lancé en mode service, tout l'historique est stocké dans jarvis.log

Pourquoi pas. Ca me fait penser à un autre ticket sur l'apprentissage automatique. Mais cela ne s'applique qu'aux discussions bêtes et méchantes. Je ne vois pas comment on pourrait directer des commandes complexes. Mais d'un point de vue probabilité, ton exemple a très peu de chance d'arriver, qui aurait l'idée de faire dire "Au revoir" à la commande "Bonjour"...

Oliv4945 commented 7 years ago

Bonsoir, autre sujet d'amélioration : Le nom Jarvis est très bien choisi, mais du coup c'est assez difficile à retrouver dans un moteur de recherche :/ Peut-être ajouter un préfixe/suffixe qui le rendrait unique ?

alexylem commented 7 years ago

http://domotiquefacile.fr/jarvis/content/nouveau-nom-pour-jarvis

RobyBioloid commented 7 years ago

Oui, il s'agit essentiellement des fichier commands mais également function quand je test de nouveau plugins

Sinon pour l'exemple Bonjour, Au revoir. C'était un exemple 'humoristique' ;)

alexylem commented 7 years ago

Pas besoin de redémarrer Jarvis si tu changes les commandes, testé à l'instant:

Alex: bonjour
Jarvis: Bonjour Alex
# nano jarvis-commands in another terminal
Alex: bonjour
Jarvis: Salut Alex
RobyBioloid commented 7 years ago

Pourquoi pas. Ca me fait penser à un autre ticket sur l'apprentissage automatique. Mais cela ne s'applique qu'aux discussions bêtes et méchantes. Je ne vois pas comment on pourrait directer des commandes complexes!

un redémarrage en mode keyboard réglerait le problème en partie ''' You : Bonjour Jarvis: Salut You: Mauvaise réponse Jarvis: Cette réponse ne vous convient pas? You: Non, passe en mode saisie et montre moi la ligne concernée "passage en mode keyboard"

Jarvis: Passage en mode saisie OK. Voici la ligne qui m'a poussé à vous répondre cela Jarvis:BONJOUR== say "Salut" You:BONJOUR==say "Bonjour $username" "passage en mode background avec mise à jour des commandes" Jarvis: Mise à jour éffectuée. You: Bonjour Jarvis Jarvis: Bonjour You ''' Voila un peu comment je vois les choses. Pense tu que c'est faisable? On peut imaginer plusieurs scénario comme par exemple pour chaque ligne modifié ainsi, ajouter dans un fichier daté du jour les lignes modifié

Du coup on pourrait lui demander: You: donne moi la liste des modifications apportées aujourd'hui? Jarvis: Je n'ai modifié qu'une ligne aujourdh'ui Jarvis: BONJOUR==say "Salut" par BONJOUR==say "Bonjour $username" Jarvis: Est-ce correct? You: oui "On peut imaginer que si ont dit non on repart sur une mise à jour de la ligne"

You: donne moi la liste des modifications apportées aujourd'hui? Jarvis: J'ai modifié 3 ligne aujourd'hui Jarvis: ligne 1: BONJOUR==say "Salut" par BONJOUR==say "Bonjour $username" Jarvis: ligne 2: AUREVOIR==say "A la prochaine" par AUVOIR==say "Au revoir" Jarvis: ligne 3: TERMINE==bypass=false; say "Ok" par TERMINE==bypas=false; say "Ok, à bientôt" Jarvis: Est-ce correct? You: Non, passe ne mode saisie et montre moi la ligne numero 3 "passage en mode keyboard" Jarvis: TERMINE==bypas=false; say "Ok, à bientôt" You: TERMINE*==bypass=false; say "Ok, à bientôt" "passage en mode background" Jarvis: "Mise à jour éffectuée."

2017-04-06 23:54 GMT+02:00 Alexandre Mély notifications@github.com:

Pas besoin de redémarrer Jarvis si tu changes les commandes, testé à l'instant:

Alex: bonjourJarvis: Bonjour Alex# nano jarvis-commands in another terminalAlex: bonjourJarvis: Salut Alex

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/alexylem/jarvis/issues/526#issuecomment-292335530, or mute the thread https://github.com/notifications/unsubscribe-auth/AYhEcqpa_ooO5hy9GdpoOL5ZrlOMryM8ks5rtV8wgaJpZM4M1aDG .

NYGHOST commented 7 years ago

Ça reste faisable, avec un awkou grep, ça me semble a porté mais il faut rendre le truc stable sous peine de toujours voir "i dont understand".

Je teste ça tout à l'heure, je te mettrais ici le code.

RobyBioloid commented 7 years ago

La commande jv_update_config fonctionne parfaitement par contre ça ne met pas à jour les changements apportés dans function.sh. Y a t'il un solution pour cela ou faut il forcément redémarrer Jarvis ?

Petit up pour @NYGHOST . Tu as trouvé une piste ou ça te semble compliqué?

RobyBioloid commented 7 years ago

Que pensez-vous d'un script python qui tourne en boucle avec une lecture "toutes les 5 secondes" pour éviter de trop consommer en ressource par exemple d'un fichier temp "rebbot.txt".

Quand on veux redemarrer Jarvis en mode clavier, on écrit "reboot_keyboard" dans le fichier temp et le script se charge donc de fermer Jarvis et de le relancer en mode keyboard

wikijm commented 7 years ago

@NYGHOST Des avancées sur ton script ?

wikijm commented 7 years ago

@RobyBioloid Pourquoi ne pas te créer un ou plusieurs alias ? Tu pourrais ainsi lancer des commandes longues et complexes avec des termes simples.

RobyBioloid commented 7 years ago

Je ne comprends pas où tu veux en venir avec la création d'alias :(

wikijm commented 7 years ago

Plutôt que d’exécuter les commandes ./jarvis/jarvis.sh -k ou ./jarvis/jarvis.sh -kv, j'utilise les alias jarvis-kb ou jarvis-tbm quand je souhaite respectivement lancer Jarvis en mode Keyboard ou Keyboard+Troubleshooting.

RobyBioloid commented 7 years ago

J'ai un plantage dans le script python le voici `

Redemarrage de Jarvis

if int(time.time()) - chrono > 5 : chrono = time.time() file = open("/dev/shm/data/reboot.txt") line = file.readline() if len(line) != 0 : if line[0:8] == "keyboard" : os.system(\'"\~/jarvis/jarvis.sh -s "Redémarrage de Jarvis en cours ..." \') time.sleep(2) os.system("\~/jarvis/jarvis.sh -q") time.sleep(2) os.system("\~/jarvis/jarvis.sh -b") `

La commande *REDEMARRE*SYSTEME==echo "keyboard" > /dev/shm/data/reboot.txt' fonctionne bien.

J'ai bien l'annonce du redémarrage Jarvis s’arrête, Se relance avec l'annonce de départ et plante

Oliv4945 commented 7 years ago

As-tu un message d'erreur ou un simple crash avec le processus qui disparaît ? Peut-être ouvrir un ticket dédié ?

NYGHOST commented 7 years ago

dsl

pas mal de taff, dans les grandes lignes il y aurait : moi:"salut" popole:"yo" *salut*== say "yo" ' moi:"mauvaise reponse" popole:"quelle commande ne vous a pas plus?" *mauvaise reponse*== say "quelle commande ne vous a pas plus?" moi:"salut" grep du mot sous forme: (*)== ecoute la reponsedésirée` que tu stock dans un fichier txt puis grep de "salut" et tu remplaces dans le say"" et rebbot jarvis je vois ca jeudi hesite pas a me le rappeler

NYGHOST commented 7 years ago

pour lancer un fichier que tu veux: *lance (*)==python (1).py

RobyBioloid commented 7 years ago

@Oliv4945 je n'ai pas de message d'erreur. Juste un crash

GevaudanBeast commented 7 years ago

Bonjour à tous, Bravo Alex, Jarvis fonctionne très bien !

J'ai moi aussi quelques idées d'améliorations et remarques, je me permet de t'en faire part ci-après :

Voilà mes quelques idées, je n'ai vu cela écris nulle part, mais je n'ai pas tout lu non plus, j'espère l'avoir mis au bon endroit.

Crali commented 7 years ago

Pour le mode apprentissage, tu peux utiliser une base de données où tu stockes les infos; par exemple j'ai créé une base en sqlite où j'enregistre diverses infos que je donne à Jarvis.

Par ex, si je lui dis "J'habite à Paris", il enregistre en base "ville |Paris ", et lorsque je lui demande "Où j'habite ? " il me répond "Paris".

Cela permet de lui donner une "mémoire", avec plusieurs tables pour différentes utilisations. J'ai personnelement créé une table de paramètres et une table liée aux jeux afin de par exemple pouvoir jouer avec Jarvis et qu'il puisse avoir accès à différentes valeurs lors d'un jeu quelconque.

C'est un début de piste, à voir comment l'adapter dans tes exemples ^^

GevaudanBeast commented 7 years ago

@Crali ça semble pas mal et un bon début de piste, avez vous un "tutoriel" pour la mise en place ?

Crali commented 7 years ago

Non je n'ai pas de tuto mais il faut juste créer une base sqlite et l'appeler dans les ordres. Il faut que je retrouve mon raspberry et j'essaierai d'expliquer (encore dans les cartons du déménagement) si personne ne l'a fait avant.

alexylem commented 7 years ago

Pour le multi-utilisateurs c'est déjà discuté ici: #190