Passer les reponses d'agents Mastra dans jq pour coloriser le raisonnement et les appels d'outils dans le terminal

L’API HTTP d’agents de Mastra retourne une structure JSON avec des steps, chacune contenant des elements content types comme reasoning, tool-call, tool-result et text. La sortie brute est dense. Commencez par l’explorer: # Appeler l'API et voir la structure brute http localhost:4111/api/agents/weather-agent/generate \ messages[0]="what's the weather in montreal?" | jq . # Obtenir uniquement la reponse finale http localhost:4111/api/agents/weather-agent/generate \ messages[0]="what's the weather in montreal?" | jq -r '.text' # Explorer ce qui se trouve dans les steps http localhost:4111/api/agents/weather-agent/generate \ messages[0]="what's the weather in montreal?" | jq '.steps[].content[] | .type' # "reasoning" # "tool-call" # "tool-result" # "text" # "reasoning" # "text" # Voir quels champs chaque type possede http localhost:4111/api/agents/weather-agent/generate \ messages[0]="what's the weather in montreal?" | jq '.steps[].content[] | select(.type == "tool-call")' Une fois la structure comprise, passez dans jq -r avec des sequences d’echappement ANSI en ligne pour coloriser chaque element: ...

Les skills OpenClaw disparaissent silencieusement sans descriptions YAML entre guillemets et sans metadonnees openclaw

Si un skill OpenClaw personnalise n’apparait pas dans openclaw skills list et que l’agent ne peut pas le voir non plus, le frontmatter de SKILL.md est probablement en cause. OpenClaw echoue silencieusement, donc le retour de debogage est minimal. Deux choses doivent etre correctes. Premierement, tout name ou description contenant un deux-points doit etre entoure de guillemets doubles, sinon YAML interprete le deux-points comme un separateur cle-valeur et l’analyse echoue. Deuxiemement, le frontmatter doit inclure un bloc de metadonnees openclaw declarant l’icone emoji et les binaires ou variables d’environnement requis. Sans cela, OpenClaw n’enregistrera pas le skill du tout. ...

Un site peut servir une vraie interface terminal ANSI quand on le curle plutôt que du HTML

Faire curl ysap.sh ne retourne pas du HTML. Ça retourne une interface terminal complètement rendue: en-tête en pixel art, panneaux avec bordures, disposition en deux colonnes, liens en couleur. Exactement ce qu’on attendrait d’une app TUI, livré via HTTP ordinaire. L’astuce: inspecter l’en-tête User-Agent. Quand il commence par curl/, répondre avec des codes d’échappement ANSI et des caractères de dessin. Quand c’est un navigateur, répondre avec du HTML. Même URL, deux expériences complètement différentes. ...

HTTPie a besoin de --ignore-stdin dans les environnements non-TTY comme Claude Code

HTTPie détecte s’il tourne dans un TTY. Quand il n’y en a pas, comme lorsque Claude Code l’appelle comme subprocess, HTTPie suppose que stdin pourrait avoir des données à venir et interprète la requête comme un POST, même si tu voulais faire un GET. La correction, c’est --ignore-stdin : http --ignore-stdin GET localhost:3000/things Le piège : une fois que tu dis à Claude Code de toujours utiliser --ignore-stdin, il va aussi l’utiliser quand tu pipes des données, ce qui brise complètement ce cas d’utilisation : ...

HTTPie interprète les clés numériques comme des index de tableau, brise les mises à jour de champs personnalisés Asana

Les GID de champs personnalisés Asana sont de longues chaînes numériques. Quand tu les passes comme clés imbriquées avec la syntaxe bracket d’HTTPie, HTTPie voit une clé numérique et suppose que tu construis un tableau, puis essaie d’allouer de la mémoire jusqu’à cet index. Avec un GID à 16 chiffres, c’est suffisant pour faire planter le processus en OOM. Ça brise : https --session pat PUT https://app.asana.com/api/1.0/tasks/1208765432100001 \ data[custom_fields][1205432109876543]="1205432109876544" HTTPie lit 1205432109876543 comme un index de tableau et tente de construire un tableau sparse de cette taille. Il n’arrive même jamais à faire la requête. ...

glow enlève les couleurs quand appelé depuis un subprocess: forcer avec des variables d'environnement

glow détecte s’il écrit vers un vrai terminal. Quand il est appelé depuis un script ou un subprocess (comme subprocess.run en Python), il ne voit pas de TTY et enlève tous les codes de couleur ANSI, tu te retrouves avec du texte plain. La correction se fait avec deux variables d’environnement : CLICOLOR_FORCE=1 COLORTERM=truecolor glow --style dark file.md CLICOLOR_FORCE=1 indique aux outils CLI qui gèrent les couleurs d’en émettre peu importe la détection de TTY. COLORTERM=truecolor dit à glow d’utiliser les couleurs 24 bits au lieu de se rabattre sur le mode 8 couleurs. ...

Zvec est une base de donnees vectorielle embarquee qui vise a etre le SQLite de la recherche vectorielle

Zvec est une base de donnees vectorielle embarquee open source d’Alibaba, construite sur leur moteur Proxima. Le positionnement est simple: une recherche vectorielle qui s’execute en cours de processus, sans serveur, avec la meme facilite d’installation que SQLite. Le vide qu’il comble est reel. Faiss donne des index mais pas de CRUD ni de recuperation apres crash. DuckDB-VSS a des fonctionnalites vectorielles limitees. Milvus necessite son propre processus et un saut reseau. Zvec vise a etre l’option qui fonctionne simplement quand on construit un pipeline RAG local, un outil en ligne de commande, ou n’importe quoi en local ou on a besoin de recherche semantique sans infrastructure. ...