1 points par GN⁺ 2 시간 전 | 1 commentaires | Partager sur WhatsApp
  • qm est un harness d’agents multijoueur qui permet aux membres d’une startup de collaborer avec des agents dans des canaux Slack, des messages de groupe et des projets, chacun dans son propre espace de travail isolé
  • Il isole, pour chaque personne et chaque salon, la mémoire, les fichiers, le trousseau de clés, les autorisations, les tâches planifiées, les applications web et les sandboxes persistantes, tout en conservant la même identité et configuration sur Slack et sur le web
  • Il peut connecter Pi, OpenCode, Codex et Claude Code au même cœur, et place aussi le stockage de session, les sandboxes et la mémoire derrière des interfaces afin d’éviter une dépendance à un modèle ou à un fournisseur spécifique
  • Il propose des modes de sécurité Strict, Auto et Dangerous, et applique dans tous les modes des politiques de commande et des refus forcés pour des opérations comme la suppression récursive ou du SQL destructeur
  • Les paramètres et l’infrastructure propres à chaque organisation sont conservés dans un dépôt de déploiement séparé ou dans un dépôt privé créé par clonage classique, et les administrateurs doivent déployer directement sur leur propre compte Fly.io ou AWS

Espaces de travail d’agents à l’échelle de l’organisation

  • Pour réduire la complexité liée au déploiement d’agents de type assistant personnel à l’échelle d’une entreprise, les portées personnelles et partagées sont conçues comme unité de base
    • Chaque employé peut travailler dans un espace de travail indépendant sans affecter les autres
    • Dans les canaux Slack, les messages de groupe et les projets, plusieurs personnes peuvent collaborer avec le même agent
  • Chaque personne et chaque salon disposent de mémoire, fichiers, vue du trousseau de clés, autorisations, tâches planifiées, application web et sandbox persistante distincts
  • La même identité et la même configuration sont utilisées entre Slack et l’application web
  • Les administrateurs peuvent contrôler les paramètres au niveau de l’organisation, la posture de sécurité, ainsi que les harness et modèles disponibles
  • Les compétences techniques appartiennent à une portée et peuvent être partagées par autorisation
    • Une promotion à l’échelle de l’organisation nécessite l’approbation d’un administrateur
    • Des packs de compétences peuvent être importés depuis des dépôts Git
  • Les tâches planifiées (cron) et les tâches de surveillance (watch) s’exécutent en arrière-plan, même sans supervision de l’utilisateur

Cas d’usage pris en charge

  • Recherche conjointe dans des mémos internes, e-mails, documents, bases de données et sur le web, avec consultation de la connaissance d’entreprise
  • Création d’applications web internes, publication aux personnes concernées et maintien des données à jour
  • Apprentissage du style rédactionnel de l’utilisateur à partir de l’historique des envois, puis classement de la boîte de réception selon un planning, avec création de libellés et de brouillons de réponse
  • Exécution de tests dans des dépôts existants, création de PR, surveillance de la CI et consultation des logs système
  • Suivi de projets dans des canaux partagés et publication de l’avancement ainsi que des actions de suivi

Cœur et architecture d’exécution

  • Toutes les requêtes passent par un cœur headless, qui génère des réponses via divers modèles et harness
  • Postgres stocke les états persistants comme les données utilisateur, l’historique des sessions, les files d’attente et la mémoire
  • La surface d’outils utilisée par les agents est réduite et fixe, et l’outil execute lance des commandes dans la sandbox isolée de la portée concernée
    • Les sandboxes fonctionnent comme des ordinateurs persistants détenus par chaque portée
    • Les outils installés restent disponibles pour les tâches suivantes
  • L’interface web, le panneau d’administration et le portail public sont des plugins optionnels installés au-dessus de l’API HTTP du cœur
  • Slack est un plugin optionnel en processus, démarré et supervisé directement par le cœur en tant que client de service
  • Le cœur exécute TypeScript directement sur Node et utilise Fastify pour HTTP
    • Le plugin Slack utilise Bolt
    • L’interface web est buildée avec Vite et rendue avec Lit
  • Les harness, le stockage de session, les sandboxes et la mémoire sont chacun placés derrière des interfaces, et leur implémentation de production peut être remplacée dans un seul fichier de câblage

Modèle de déploiement par organisation

  • La configuration propre à chaque entreprise, les outils et compétences personnalisés, les images de sandbox et l’infrastructure sont placés dans un répertoire de déploiement séparé du cœur
  • La qm CLI valide et déploie le répertoire de déploiement
  • Dans un dépôt appartenant à l’organisation, il est possible de dépendre de @yc-software/qm puis d’initialiser comme suit
npm exec --yes --package=@yc-software/qm@latest -- \
  qm init . --org <slug> --target <fly-or-aws>
npm install
  • Le processus d’initialisation guide l’infrastructure, la connexion web, les identifiants des connecteurs, l’accès Slack optionnel, le déploiement et la validation réelle, sans nécessiter de checkout du code source
  • Le déploiement s’exécute dans le propre compte cloud de l’opérateur
  • L’initialisation ne crée ni n’active de CI de déploiement, et le dépôt qm ne contient pas non plus de workflow de déploiement en production
  • La procédure détaillée est décrite dans deployment.md

Sécurité et secrets

  • Les agents agissent avec les identifiants et autorisations de la personne avec laquelle ils collaborent, et toutes les actions effectuées sont consignées dans une piste d’audit
  • L’organisation choisit une posture de sécurité unique, qui peut seulement être renforcée dans des portées plus étroites, jamais assouplie
    • Strict : suspend tous les appels d’outils du harness jusqu’à approbation humaine, à l’exception de deux actions de fin de tour sans effet
    • Auto : mode par défaut, dans lequel un classifieur inspecte les données externes étiquetées par provenance et les résultats d’outils avant leur transmission au modèle
      • Un proxy d’inspection dédié peut être défini dans l’environnement de déploiement
    • Dangerous : aucune inspection de contenu ni pause entre les appels d’outils
  • Les politiques de commande pré-déclarées s’appliquent à tous les modes de sécurité
    • Avec les règles d’approbation, elles forcent le refus de commandes comme la suppression récursive ou du SQL destructeur
    • Le mode Dangerous ne fait pas exception
  • Le modèle de menace, les prérequis opérateur et les limites connues sont disponibles dans SECURITY.md

Dépôts privés de personnalisation

  • Les organisations pour lesquelles un simple dépôt de déploiement ne suffit pas peuvent exploiter un dépôt miroir privé afin que le cœur et le code privé de personnalisation soient lisibles au même endroit
  • Il doit être créé par clonage classique, et non via la fonction Fork de GitHub
    • Un fork GitHub d’un dépôt public ne peut pas être rendu privé
    • Les forks GitHub partagent un réseau d’objets avec l’original, donc des commits poussés sur le fork peuvent être consultés côté public via leur SHA
    • Un dépôt miroir classique n’a pas ce problème, mais les workflows CI amont s’exécutent réellement dans le compte de l’organisation
    • Il faut donc fournir les secrets nécessaires ou désactiver les workflows non souhaités
  • La configuration propre à l’organisation, les outils et compétences de sandbox, les images de plugin et l’infrastructure sont stockés dans deploy/layers/<org>/
  • Le cœur est conservé strictement identique octet pour octet à l’amont afin de réduire l’ampleur des fusions
  • Deux compétences gèrent la frontière entre le cœur public et la zone privée de personnalisation
    • update-qm fusionne qm amont dans le dépôt privé et crée une PR de synchronisation
    • upstream-pr crée une branche depuis upstream/main et envoie à qm les modifications indépendantes de l’organisation
    • Avant le push, il vérifie la présence d’identifiants d’organisation dans le diff, les messages de commit et les captures d’écran
    • Les fichiers sous deploy/layers/ ne sont pas envoyés en amont

Contribution et licence

  • Les contributions sont acceptées sous forme de documents .txt ou .md rédigés par des humains, et non sous forme de code
    • Il suffit de décrire informellement le changement souhaité dans adrs/, puis le projet l’implémente après accord
    • Les règles détaillées figurent dans CONTRIBUTING.md
  • Les vulnérabilités doivent être signalées en privé selon la procédure de SECURITY.md, et non via des issues publiques
  • Sauf indication contraire, le projet est distribué sous MIT License

1 commentaires

 
GN⁺ 2 시간 전
Avis sur Hacker News
  • Il est intéressant de voir apparaître de nouveaux éléments et concepts d’UI à l’ère des LLM, mais il y a tellement d’apps créatives, souvent mal expliquées, qu’il est difficile de comprendre ce que chacune fait.
    Sur la page web de l’agent Hermes, je n’ai absolument pas compris les fonctionnalités, et ce n’est qu’après avoir longuement fouillé la page de qm que j’ai trouvé une explication correcte. Ces derniers temps, j’utilise beaucoup Orca, soutenu par YC, pour gérer mes sessions de coding, mais comme il lui manque une base de données de sessions basée sur PostgreSQL, qm vaut peut-être la peine d’être essayé.

    • Au final, il suffit de créer soi-même son logiciel personnalisé. Aujourd’hui, on peut s’inspirer de ce genre d’outils puis, après quelques bonnes sessions avec Claude, implémenter soi-même ce que l’on veut.
    • Mettre en avant les différenciateurs d’un outil peut le faire paraître étrange et inutile. C’est pourquoi, en pratique, même des outils innovants et différents les uns des autres ont tendance à avoir des pages marketing qui se ressemblent.
    • L’IA a besoin de nouveaux éléments fondamentaux dans de nombreux domaines.
  • Je suis content de voir cette direction émerger avec Buzz. Dans les agents multi-utilisateurs, le plus difficile n’est pas la boucle de l’agent, mais le cadrage du périmètre ; les périmètres individuels et les salons partagés de QM sont une solution raisonnable pour un assistant à l’échelle de l’entreprise.
    Notre équipe construit AQ (aq.dev), un outil de coding multi-utilisateur qui exécute Claude Code et Codex ensemble ; voir YC lancer un outil d’agent multi-utilisateur pour le travail confirme cette direction, tout en semblant un peu irréel.

  • Il existe déjà beaucoup de produits similaires, et je ne vois pas pourquoi utiliser celui-ci plutôt que Claude Cowork. Cowork semble plus simple, plus abouti et plus riche en fonctionnalités ; il faudrait donc une comparaison QM vs Cowork.

    • Il y a une demande pour utiliser des LLM auto-hébergés et des clients pi ou opencode, plutôt que de rester lié pour toujours à l’écosystème de modèles à poids fermés d’Anthropic et de continuer à payer au token.
    • On dirait une tentative de surfer sur le buzzword multi-utilisateur, que personne n’aurait encore vraiment résolu, mais l’UI est médiocre et cela ne semble pas être la réponse.
    • On peut aussi vouloir utiliser d’autres modèles.
  • Il faudrait regarder comment ils ont implémenté le contexte à l’échelle de l’organisation et la sécurité. Cela semble très complémentaire de mon outil de coding, qui fournit actuellement aux individus l’interface IA optimale ; ce serait bien de pouvoir disposer à la fois d’une architecture d’entreprise et d’une interface de coding individuelle productive avec seulement quelques gros tickets.

  • Je me demande si Hermes est le meilleur choix parmi les agents de la famille OpenClaw qu’ils disent avoir utilisés auparavant, et à quoi les utilisateurs avancés emploient réellement ce type de système.

    • Un agent toujours actif capable d’accéder aux systèmes internes et de s’exécuter via des webhooks est très pratique.
      Je l’utilise pour corriger automatiquement des échecs simples de CI, recevoir des alertes de production puis analyser la cause racine et créer une PR de correction, examiner et optimiser périodiquement des requêtes de base de données lentes, ou générer des graphiques pour répondre à des questions ponctuelles sur les données. Je l’ai aussi essayé pour coder en déplacement, mais je préfère les agents conversationnels avec lesquels je peux vérifier le code directement.
    • J’ai utilisé Hermes, mais j’étais souvent frustré de vouloir contrôler les choses un ou deux niveaux plus bas. Depuis hier, je construis ma propre version fortement personnalisée uniquement pour moi ; même en tenant compte du fait que nous n’en sommes qu’au premier jour de lune de miel, je prends beaucoup de plaisir à travailler dessus.
      J’aime la fabrication logicielle elle-même et le contrôle total ; la boucle d’agent de base n’a en réalité rien de spécial. Il y a énormément de leviers à ajuster en dehors de la boucle principale, et c’est amusant de tester différentes manières de l’étendre. Sans se soucier de la monétisation ou de la généralisation, on peut simplement ajouter les fonctions dont on a besoin, sans devoir rendre le tout infiniment extensible par plugins. Je remercie nanoclaw et Hermes de m’avoir donné les idées centrales, mais maintenant j’ai envie de les adapter à ma façon.
    • Hermes est énorme et contient beaucoup de fonctionnalités inutiles ; je préfère de petits agents que l’on peut étendre selon les besoins. J’ai essayé plusieurs projets sur GitHub, et dirge (https://github.com/dirge-code/dirge) m’a impressionné ; je n’y suis pas affilié.
      Je l’utilise pour lire des flux RSS et newsletters secondaires, filtrer uniquement les informations importantes pour moi, et me transmettre l’actualité et les tendances de marché.
    • Je l’utilise comme assistant d’astreinte, en première ligne sur les alertes de production. Dans sa configuration par défaut, il n’est pas aussi efficace qu’un agent de coding, mais il aide beaucoup.
    • La plupart semblent l’utiliser pour que des LLM vérifient périodiquement leurs e-mails et messages instantanés.
  • Cela ressemble à un outil interne que YC a publié à la hâte pour minimiser le terrain pris par Buzz. J’aimerais voir une évaluation comparant directement les deux outils.

  • Je me demande ce que signifie yc software.

  • Il est intéressant qu’ils aient aussi publié une compétence de design anti-slop pour créer des interfaces qui n’ont pas l’air de templates.
    Elle interdit les palettes de couleurs souvent utilisées par l’IA pour les biens de consommation haut de gamme, et considère les landing pages et portfolios comme des produits visuels ; une page de texte avec seulement une fausse zone de capture d’écran y est donc définie comme un résultat de mauvaise qualité. https://github.com/yc-software/qm/blob/7f2c916360f1797a8ff2a...

    • Au final, cela aura simplement un aspect différent du design IA de mauvaise qualité actuel ; avec le temps, j’ai l’impression que cela deviendra à son tour un autre point de convergence vers un design sans personnalité.
  • Le titre serait plus utile s’il indiquait l’usage de l’outil, par exemple qm - a multiplayer agent harness for work.

    • Permettre au lecteur de faire un petit effort pour comprendre le titre est une coutume propre à HN.