Um interruptor, dois desktops: os modos de interface Simple / Advanced do Hermes


Você recomenda o app de desktop do Hermes a um colega que não escreve código. Ele abre e congela por três segundos: uma trilha de profiles à esquerda, uma statusbar ao longo da parte de baixo, um painel de terminal à direita, cada tool call no transcript expandido num paredão de JSON, diffs coloridos por cima disso, e “Subagentes” e “Processos em segundo plano” na barra lateral. Ele pergunta: “Onde eu digito?” Então fecha a janela.

A mesma coisa acontece com usuários antigos na direção oposta: quando você só quer pensar em uma coisa, toda essa instrumentação é ruído. O novo modo de interface do app de desktop (#118587) existe para esses dois públicos — Simple e Advanced.

O que são os dois modos

Em uma linha: Advanced é o app como ele é hoje, e Simple é conversa em primeiro lugar. E há uma regra firme na fronteira — um modo muda o que é mostrado, nunca o que o Hermes pode fazer.

O que o Simple guarda:

Oculto no Simple Observações
Statusbar A faixa de instrumentação ao vivo
Trilha de profiles Exceção: ela fica se um segundo profile a torna a única forma de trocar
Painéis de terminal / navegador de arquivos / review Os painéis em si
Visão técnica de tool call e diffs de código inline Os paredões de JSON e os diffs coloridos no transcript
Linhas de Artifacts e Scheduled jobs na barra lateral Mais qualquer linha contribuída marcada como camada Advanced
Botões de HUD, flip e barra lateral direita no titlebar Incluindo ferramentas de titlebar contribuídas
Grupos de status de Subagents e processos em segundo plano Dois dos grupos de status
A linha de git do composer, as linhas de filtro de PR e profile Os pequenos controles ao redor do campo de entrada
O thinking começa recolhido Recolhido, não removido

O que o Simple deliberadamente mantém: a conversa em si, Sessions e Bots, New session, Capabilities e Messaging (é assim que qualquer um configura o Hermes, então ficam), Settings e o editor de layout no titlebar, todos os atalhos de teclado, ⌘K, Todos, Goal, Queue, os chips de preview, os avisos de cobrança e de plano gratuito, e o focus_pane do agente. Além disso, a combinação Ctrl + acento grave ainda abre o terminal para a sessão atual — uma porta de saída é preservada.

O editor de layout do Simple fica reduzido ao seletor de modo mais dois cards, “Sidebar left” e “Sidebar right”. Templates, decks salvos e Save current layout são Advanced.

Como você troca

Três pontos de entrada, um único pedaço de estado por trás deles:

  1. o seletor de modo no editor de layout;
  2. Settings → Appearance → Window & layout;
  3. a linha no ⌘K.

Por baixo, é uma ação que pode receber outro atalho, view.toggleSimpleMode, e a escolha persiste sob a chave hermes.desktop.interfaceMode.v1.

Por que esta implementação supera um preset

Esta é a parte mais instrutiva da mudança. Em muitos apps, um “modo simples” é um preset: entrar nele reescreve suas preferências uma a uma, e voltar precisa reconstruir o que existia antes — então ou ele tira um snapshot de tudo, ou ele adivinha, e quando adivinha errado seu layout se foi.

O Hermes pegou o outro caminho: um modo é uma entrada do resolvedor, não um preset que escreve preferências. Há exatamente uma regra de precedência, em exatamente um lugar:

effective(surface) = sessionReveal ?? policy[mode] ?? userPreference

Leia como três camadas, da mais alta para a mais baixa:

  • sessionReveal — o que você revela para esta sessão. Se você traz o terminal no Simple com Ctrl + acento grave, isso cai numa camada de sessão e se limpa no reinício ou numa troca de modo. Então um modo é um padrão, não um cadeado — e uma revelação de sessão não pode vazar para a preferência que você definiu no outro modo.
  • policy[mode] — e policy.advanced é um objeto vazio. Esse é o detalhe que sustenta tudo: o Advanced mostra tudo não porque está configurado para isso, mas porque não sobrescreve nada, então você cai nas suas próprias preferências por construção. Nas palavras do código, o Advanced é a ausência de modo, codificada no armazenamento como “nenhuma chave”.
  • userPreference — o fallback.

Três consequências que vale detalhar:

  • Instalações existentes não veem mudança no upgrade. Como a política do Advanced é vazia, nada é escrito no seu armazenamento.
  • O Simple faz sombra a uma preferência em vez de sobrescrevê-la. Ele nunca reescreve sua seleção de layout, então sair do Simple restaura exatamente a configuração anterior — nada a fotografar, nada a reparar.
  • Um modo não consegue mover as preferências do outro modo. E quando uma ação é de fato uma intenção de layout (digamos, escolher um layout que abre painéis), uma escrita sob sombra é descartada em vez de aplicada — porque “me mostre isso agora” e “mude meu layout padrão” são pedidos diferentes.

Há um belo detalhe de engenharia em como isso fica contido: os componentes nunca aprendem a palavra “modo”. Cada store de preferência embrulha seu próprio átomo em modeBound e então exporta o átomo efetivo sob o nome que todo consumidor já importava, então nenhum consumidor mudou uma linha. Superfícies de lista marcam seus itens com um tier e rodam um filtro shownInMode no filtro que já tinham. O conceito de modo tem, portanto, exatamente um dono, em vez de vazar para dezenas de componentes como condicionais espalhados.

Qual usar

  • Entregar o app a alguém que não programa → Simple. O trabalho da pessoa é a conversa; statusbar e diffs são só pressão.
  • Depurar o Hermes, acompanhar subagentes, ler argumentos de ferramentas → Advanced. Essas são exatamente as informações que você quer.
  • Foco na escrita → vire para o Simple temporariamente. Ele não vai mexer no seu layout, e voltar é um no-op.

Se você quer montar o workflow de desktop antes de trocar de modo, layouts e workspaces cobre o próprio editor de layout, o hub de skills do desktop cobre de onde vêm as capacidades, e ler, pré-visualizar, navegador trata exatamente dos painéis que o Simple esconde. A base por baixo dos atalhos está no guia da paleta de comandos.

Fechando

O jeito como o “modo simples” costuma dar errado é sendo um preset que reescreve as preferências do usuário — troque para lá e para cá algumas vezes e ninguém mais lembra qual era o layout original. Aqui, um modo é apenas uma entrada do resolvedor na camada de exibição, o Advanced é definido como a política vazia e o Simple é definido como sombra. O resultado: upgrades invisíveis, troca sem perda e uma revelação temporária que pode ser recolhida. Nenhuma capacidade sumiu — parte dela apenas foi guardada.