Un seul interrupteur, deux bureaux : le mode d'interface Simple / Advanced de Hermes

Vous recommandez l’app de bureau Hermes à un collègue qui n’écrit pas de code. Il l’ouvre et se fige trois secondes : une colonne de profiles à gauche, une barre d’état en bas, un volet terminal à droite, chaque tool call du fil déplié en un mur de JSON, des diffs colorés par-dessus, et « Subagents » et « Background processes » postés dans la barre latérale. Il demande : « Où est-ce que je tape ? » Puis il ferme la fenêtre.
La même chose arrive aux utilisateurs de longue date, mais dans l’autre sens : quand vous voulez simplement réfléchir à une seule chose, toute cette instrumentation est du bruit. Le nouveau mode d’interface de l’app de bureau (#118587) existe pour ces deux publics — Simple et Advanced.
Ce que sont les deux modes
En une ligne : Advanced est l’app telle qu’elle est aujourd’hui, et Simple est chat-first. Et il y a une règle ferme sur la frontière — un mode change ce qui est affiché, jamais ce que Hermes sait faire.
Ce que Simple range :
| Masqué dans Simple | Remarques |
|---|---|
| Barre d’état | La bande d’instrumentation en direct |
| Colonne de profiles | Exception : elle reste si un second profile en fait le seul moyen de basculer |
| Volets terminal / explorateur de fichiers / revue | Les volets eux-mêmes |
| Vue technique des tool calls et diffs de code en ligne | Les murs de JSON et les diffs colorés dans le fil |
| Lignes Artifacts et Scheduled jobs de la barre latérale | Plus toute ligne contribuée marquée du tier Advanced |
| Boutons HUD, flip et barre latérale droite de la barre de titre | Y compris les outils de barre de titre contribués |
| Groupes d’état Subagents et Background process | Deux des groupes d’état |
| Ligne git du composeur, lignes de filtre PR et profile | Les petits contrôles autour du champ de saisie |
| Le raisonnement démarre replié | Replié, pas supprimé |
Ce que Simple conserve délibérément : la conversation elle-même, Sessions et Bots, New session, Capabilities et Messaging (c’est ainsi que quiconque met Hermes en place, donc ça reste), Settings et l’éditeur de disposition dans la barre de titre, tous les raccourcis clavier, ⌘K, Todos, Goal, Queue, les chips d’aperçu, les notifications de facturation et de palier gratuit, et le focus_pane de l’agent. Par ailleurs, la combinaison Ctrl-plus-backtick ouvre toujours le terminal pour la session courante — une porte de sortie est conservée.
L’éditeur de disposition de Simple est réduit au sélecteur de mode plus deux cartes, « Sidebar left » et « Sidebar right ». Les Templates, les dispositions enregistrées et Save current layout relèvent d’Advanced.
Comment basculer
Trois points d’entrée, un seul état derrière :
- le sélecteur de mode dans l’éditeur de disposition ;
- Settings → Appearance → Window & layout ;
- la ligne dans ⌘K.
En dessous, c’est une action rébindable, view.toggleSimpleMode, et le choix persiste sous la clé hermes.desktop.interfaceMode.v1.
Pourquoi cette implémentation bat un preset
C’est la partie la plus instructive du changement. Dans beaucoup d’apps, un « mode simple » est un preset : y basculer réécrit vos préférences une à une, et revenir en arrière doit reconstruire ce qui existait avant — donc soit il en fait un snapshot complet, soit il devine, et quand il devine mal votre disposition a disparu.
Hermes a pris l’autre route : un mode est une entrée de résolveur, pas un preset qui écrit des préférences. Il y a exactement une règle de priorité, à exactement un endroit :
effective(surface) = sessionReveal ?? policy[mode] ?? userPreference
Lisez-la comme trois couches, de la plus haute à la plus basse :
sessionReveal— ce que vous révélez pour cette session. Si vous faites remonter le terminal en Simple avec Ctrl-plus-backtick, cela atterrit dans une couche de session et s’efface au redémarrage ou au changement de mode. Un mode est donc un défaut, pas un verrou — et une révélation de session ne peut pas fuiter dans la préférence que vous avez définie dans l’autre mode.policy[mode]— etpolicy.advancedest un objet vide. C’est le détail porteur : Advanced montre tout non pas parce qu’il est configuré pour, mais parce qu’il ne surcharge rien, si bien que vous retombez par construction sur vos propres préférences. Dans les mots du code, Advanced est l’absence d’un mode, encodée en stockage comme « aucune clé du tout ».userPreference— le repli.
Trois conséquences qui méritent d’être explicitées :
- Les installations existantes ne voient aucun changement à la mise à niveau. Comme la politique Advanced est vide, rien n’est écrit du tout dans votre stockage.
- Simple masque une préférence au lieu de l’écraser. Il ne réécrit jamais votre sélection de disposition, donc quitter Simple restaure exactement la configuration antérieure — rien à snapshoter, rien à réparer.
- Un mode ne peut pas déplacer les préférences de l’autre mode. Et quand une action est vraiment une intention de disposition (disons, choisir une disposition qui ouvre des volets), une écriture masquée est abandonnée au lieu d’être appliquée — parce que « montre-moi ça maintenant » et « change ma disposition par défaut » sont deux demandes différentes.
Il y a un joli détail d’ingénierie dans la façon dont cela reste contenu : les composants n’apprennent jamais le mot « mode ». Chaque store de préférence emballe son propre atome dans modeBound puis exporte l’atome effectif sous le nom que chaque consommateur importe déjà, si bien qu’aucun consommateur n’a changé une ligne. Les surfaces de liste taguent leurs éléments avec un tier et exécutent un unique filtre shownInMode au filtre qu’elles avaient déjà. Le concept de mode n’a donc qu’un seul propriétaire au lieu de fuiter dans des dizaines de composants en conditionnels épars.
Lequel utiliser
- Confier l’app à quelqu’un qui ne code pas → Simple. Son travail, c’est la conversation ; une barre d’état et des diffs ne sont que de la pression.
- Déboguer Hermes, surveiller les sous-agents, lire les arguments des tools → Advanced. C’est exactement l’information que vous voulez.
- Se concentrer sur l’écriture → basculer temporairement en Simple. Il ne touchera pas à votre disposition, et revenir est un no-op.
Si vous voulez mettre en place le workflow de bureau avant de basculer de mode, dispositions et espaces de travail couvre l’éditeur de disposition lui-même, le hub de skills du bureau couvre d’où viennent les capacités, et lire, prévisualiser, navigateur porte précisément sur les volets que Simple masque. Le socle sous les raccourcis clavier est dans le guide de la palette de commandes.
Pour conclure
La façon dont un « mode simple » tourne mal, d’habitude, c’est d’être un preset qui réécrit les préférences utilisateur — basculez d’avant en arrière quelques fois et plus personne ne se souvient de la disposition d’origine. Ici, un mode n’est qu’une entrée de résolveur sur la couche d’affichage, Advanced est défini comme la politique vide et Simple comme un masquage. Résultat : les mises à niveau sont invisibles, la bascule est sans perte et une révélation temporaire est récupérable. Aucune capacité n’a disparu — une partie est simplement rangée.