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:
- o seletor de modo no editor de layout;
- Settings → Appearance → Window & layout;
- 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]— epolicy.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.