Pular para o conteúdo

Agente de IA

O Agente de IA põe o agente que você já roda dentro da página do navegador: uma visão ao lado do que estiver aberto, onde você conversa com o Claude Code, o Codex ou qualquer comando que fale o Agent Client Protocol, e a página entrega o que está na tela como contexto. O agente roda na raiz, lê as mesmas instruções e o mesmo me.md que todo agente, e trabalha sob o mesmo contrato de papéis. Ligado por padrão (eidos plugin disable agent o desliga); a página do plugin nomeia o agente com quem esta máquina conversa.

Nada próprio do eidosmd está no circuito: nenhum modelo, nenhuma chave, nenhum endpoint. Nada sai da máquina a não ser através do agente que você configurou, sob as suas próprias permissões, exceto o que o ditado faz: ele baixa o seu modelo de voz uma vez e envia uma gravação para fora só quando você escolhe a transcrição hospedada com a sua própria chave.

  • Uma visão Chat na barra lateral auxiliar: uma conversa com o agente, iniciada na raiz na primeira mensagem com EIDOS_ROOT definido.
  • Contexto sem pedir. O que a página tem aberto vai junto com cada mensagem: um Blueprint (plano) por título, id e arquivo; uma página de canvas; a tabela de uma coleção e o seu filtro; uma aba de configurações; um documento de nível superior. Aparece na linha do compositor como um pequeno indicador com o id (o nome completo ao passar o ponteiro), que um clique deixa de fora das suas mensagens ou traz de volta, e o plugin o redige para o agente. A primeira mensagem de uma sessão carrega uma nota fixa: onde o agente está, o que ler primeiro, que o trabalho dele é a pasta raiz e nada fora dela, que a documentação é eidos standard e eidos instructions, e a persona.
  • A sua mensagem aparece assim que você a envia, com o lugar da resposta reservado embaixo enquanto o agente inicia, também a primeira mensagem de uma conversa nova.
  • A resposta chega em streaming enquanto o agente responde, como markdown completo: tabelas, listas e código colorido pela linguagem, com um botão para copiar cada bloco. Os arquivos que ele mudou são listados sob a resposta, e o leitor e as tabelas se atualizam como para qualquer mudança em disco. A rolagem fica onde você a deixou, com Ir para o mais recente enquanto o fim não está à vista.
  • Os ids são links. Um id que a raiz tem, numa resposta ou na sua própria mensagem (o de um plano, uma tarefa, uma decisão, uma visão salva, ou um id anterior que uma tarefa ou uma decisão guarda), abre a página dele na área principal, e com ⌘ ou Ctrl, ou o botão do meio, numa aba nova; ao passar o mouse mostra o título, e o status de uma tarefa ou uma decisão. Um id num bloco de código, ou um que não nomeia nada, fica como foi escrito.
  • O chat tem o seu próprio zoom. Com o foco no chat, Ctrl ou ⌘ com + e - o aumentam ou diminuem e 0 o devolve ao normal; com o foco em qualquer outro lugar, as mesmas teclas dão zoom no app como sempre.
  • As chamadas de ferramenta ficam discretas. Cada chamada do agente é uma linha: um ícone para o tipo, poucas palavras (Executou pnpm test, Leu specs/a.md, Editou 2 arquivos) e um indicador girando, um visto ou um x. Um clique abre o que entrou e o que saiu, com a saída longa cortada e Mostrar mais. Chamadas seguidas são uma só linha que as conta (“Executou 6 comandos, leu 4 arquivos”) e se abre na lista. Uma chamada que falhou é marcada em vermelho, na própria linha e na do grupo.
  • Toda mensagem tem suas ações ao passar o mouse: copiá-la; editar uma sua e enviá-la de novo, o que tira tudo o que veio depois, para que o agente responda outra vez em uma sessão nova à qual se contam os turnos que ficaram; e tentar a última resposta de novo.
  • A caixa de mensagem cresce com o que você digita e guarda um rascunho por conversa. Embaixo dela fica uma só linha: +, os comandos de barra, a página aberta, o modo, o modelo e o esforço do agente como um chip cada, e Enviar. Cole, solte ou anexe uma imagem ou um arquivo de texto (+ e depois Enviar do computador): uma imagem vai como imagem quando o agente aceita (o Claude Code aceita), um arquivo de texto como um arquivo que o agente lê, e qualquer outra coisa é recusada. @ (ou + e depois Adicionar contexto) oferece Blueprints, tarefas e decisões por id, título ou arquivo (as setas para mover, Enter ou Tab para escolher), e o escolhido vira uma ficha com o id, @B-8R9V, que o Backspace apaga inteira; um id digitado por completo também vira. Uma aba ou uma entrada da barra lateral arrastada para a caixa chega como essa mesma ficha. Uma mensagem enviada enquanto o agente trabalha espera em uma fila sob a resposta e vai quando ele termina. Enter envia, Shift+Enter quebra a linha, Esc para a resposta, e as setas para cima e para baixo percorrem as mensagens que você enviou na conversa como o histórico de um terminal, e para baixo depois da mais recente devolve o que você estava escrevendo.
  • As permissões são do agente. Um pedido de permissão que o agente levanta é mostrado como o agente o redigiu e respondido na visão; nada é aprovado em seu nome, e você está na visão em toda mensagem. As leituras e escritas de arquivo do agente são respondidas só dentro da raiz.
  • Comandos de barra. / no início de uma mensagem, ou o botão da barra, lista os comandos: /new, /clear (a conversa volta ao início), /rename (para o que vem depois), /done (exclui a conversa e abre a próxima), /settings, /check (a verificação da raiz, com o que ela encontra escrito na conversa), /explain (o agente resume o que a mensagem leva) e /grill; com o Backlog ligado, /task pede ao agente que crie uma tarefa, e com o Decisions ligado, /decide que registre uma decisão. Com o Git ligado, /git-commit pede ao agente que faça commit das suas alterações na hora, e /git-publish e /git-fetch rodam o Publish e o Fetch e contam na conversa como foi. /migrate aparece só enquanto a raiz está atrás do padrão que este app traz: o agente mostra o plano do eidos migrate --dry-run, migra quando você diz que sim e depois roda a verificação e corrige o que sobrar. Comandos de barra na página do plugin lista cada um com a origem e adiciona os seus: um nome, uma descrição e o prompt que ele envia ($ARGUMENTS recebe o que vem depois do comando), guardados compartilhados com a raiz ou locais.
  • Ditado. O microfone ao lado de Enviar, ou Começar a ditar (⇧⌘D, Ctrl+Shift+D fora de um Mac, alterável em Hot keys; pressionado de novo, para), abre um painel sobre a caixa de mensagem: escolha o microfone, veja o nível, fale tão solto quanto quiser e pressione Parar ou Enter. O que você disse entra onde está o cursor, como texto para editar; só é enviado quando você envia. Esc ou Cancelar descarta. Enquanto escuta, a caixa de mensagem não aceita digitação, então com o foco no chat Enter e Esc são do ditado, nunca Enviar nem parar a resposta; em qualquer outro lugar do app eles mantêm o seu sentido, então você pode se mover pelo app e continuar falando. O Whisper escreve na página, sem conexão depois do primeiro ditado, que baixa o modelo de voz uma vez para o computador todo (cerca de 175 MB com o ONNX Runtime em uma GPU, cerca de 105 MB sem). Passar a limpo com IA, desligado até você ligar, faz o seu agente tirar palavras de preenchimento e começos em falso e corrigir a pontuação antes de entrar, em um agente próprio com o modelo mais rápido que ele oferece (um Haiku no Claude Code), nunca o da conversa; Usar literal, ou ⌘Z (Ctrl+Z), devolve o que você disse palavra por palavra. Como é escrito guarda as suas próprias instruções: tom, grafias, nomes. A seção Ditado da página do plugin tem os mesmos interruptores, o modelo para passar a limpo e Transcrição hospedada com a sua própria chave da OpenAI no lugar do Whisper na página.
  • Interrogatório. /grill na caixa de mensagem (oferecido quando você digita a barra, com o que vier depois dela como a sua abertura) começa uma conversa em que o Agente de IA questiona o que está aberto: ele lê o Blueprint, ou o Framework (a estrutura), e faz uma pergunta de cada vez sobre o que o texto deixa por dizer, sem nunca responder por você. Ele só pergunta o que o seu papel pode responder, nas palavras e na profundidade dele: o papel do usuário escolhido como você em Users, senão o de .eidos/me.md, com o seu contrato, e a sua calibração de me.md quando o papel é o mesmo. Escolher um usuário de outro papel é se colocar no lugar dele: o Agente de IA interroga você como esse usuário, só pelo papel dele. What did we find? a encerra com cada lacuna, o que você disse e a que parte do Blueprint ela pertence, com as lacunas de outro papel à parte e o papel que decide cada uma, e oferece escrevê-las através da permissão habitual do agente.
  • Uma mensagem de commit para o Git. Com o plugin Git ligado, o Summarize no Source control e cada auto save pedem ao Agente de IA uma mensagem de commit de uma linha. Ele responde por um agente próprio, que não fica em nenhuma conversa, sem nenhuma edição e nenhuma ferramenta permitida, então nenhuma conversa em andamento espera nem é tocada; quando nenhuma resposta vem, o auto save usa uma mensagem simples no lugar. Commit messages, na página do plugin, redige o que é pedido, com as mudanças em seguida; vazio, uma linha de assunto no imperativo com menos de 100 caracteres.
  • Verificar duplicatas com IA. Numa tarefa ainda não iniciada (no status padrão do Backlog ou num status da primeira coluna do quadro), Verificar duplicatas com IA fica acima das suas propriedades, na sua página e no seu modal, enquanto houver um agente configurado. Ao clicar, e só então, a tarefa e o resto do backlog vão para um agente próprio, sem edições nem ferramentas, e voltam as duplicatas prováveis, cada uma com o motivo: Vincular como duplicata ou Vincular como relacionada escreve o vínculo na tarefa como faz eidos backlog link, e Não é duplicata deixa o par fora de toda verificação seguinte a partir de qualquer das duas tarefas, dizendo quem o descartou e quando, com Desfazer. A última verificação fica guardada, então continua lá quando você volta; Verificar de novo a substitui e mantém cada Não é duplicata.
  • Agente de IA: Focar o chat (⌃⌘I, Ctrl+Alt+I fora de um Mac, que você pode mudar em Hot keys) mostra a visão e põe o cursor na sua caixa de mensagem; é o único comando Focar da visão Chat. Agente de IA: Focar a resposta do chat põe o cursor na última resposta, e as setas para cima e para baixo passam de uma mensagem para a seguinte. Agente de IA: Nova conversa (⌥⌘N, Ctrl+Alt+N fora de um Mac) começa uma ali.
  • Várias conversas ao mesmo tempo. Cada uma tem seu próprio processo do agente, então começar, parar ou deixar uma nunca espera por outra. Uma conversa continua quando você passa para outra ou fecha a página, e mostra a resposta até ali quando você volta. Cada uma mostra como está na lista e ao lado do título: trabalhando, esperando você (uma permissão que pede), concluída ou falhou. A que precisa de você enquanto você olha outra coisa é avisada uma vez, num aviso na página e na notificação do sistema quando a página não está na frente (o navegador pergunta uma vez se pode); a aba Chat as conta. Rodam até quatro agentes ao mesmo tempo: além disso, um ocioso dá lugar, e com os quatro trabalhando uma mensagem nova é recusada e diz por quê. Um agente ocioso por dez minutos é encerrado, e a próxima mensagem da conversa retoma a sessão.
  • O título troca de conversa. Com uma só, o título é apenas o título dela, com Nova conversa ao lado. Com outras, o título abre a lista delas, as fixadas primeiro, cada uma com onde está e quando se mexeu pela última vez, e Todas as conversas embaixo abre a lista inteira. A lista mostra todas as conversas, a última a se mexer primeiro, cada uma com o título da primeira mensagem até você renomeá-la, e quando se mexeu pela última vez. A busca encontra uma pelo título ou pelo que foi dito nela. O menu de uma linha abre, renomeia, fixa, torna local ou compartilhada e exclui (perguntando uma vez); excluir a que está aberta abre a próxima da lista, e uma conversa nova só quando não sobra nenhuma. As fixadas vêm primeiro, na ordem em que você as arrasta; as fixadas e a ordem são suas, guardadas no local.yaml da raiz. Uma conversa local leva o laptop.
  • As conversas são compartilhadas com a raiz, para que qualquer pessoa nela possa abrir e continuar uma, ou locais; o Salvar de uma não salva pergunta qual. Uma conversa continuada depois que o agente reinicia segue na sessão do próprio agente, recarregada pelo session/load do ACP onde o agente o oferece; senão, a uma sessão nova se contam os turnos até ali, e nada a mais aparece na conversa.

O Agente de IA não traz um agente: ele inicia o do seu computador pelo adaptador ACP desse agente, que o npx baixa na primeira vez. Então um computador precisa de três coisas: o Node.js (que fornece o npx), o login feito no próprio agente e um modelo que a conta possa usar.

  • Codex faz login com npx -y @openai/codex login (uma conta do ChatGPT) ou com uma chave da OpenAI em OPENAI_API_KEY, que o Agente de IA passa ao adaptador quando não há outro login feito. Ele lê o modelo de ~/.codex/config.toml; uma linha model = com um modelo que a conta não pode usar transforma cada resposta em um erro.
  • Claude Code faz login com /login no claude (ou npx -y @anthropic-ai/claude-code).

A barra abaixo do agente, na página do plugin, testa o agente escolhido, e escolher um o testa: Node.js encontrado, o agente iniciado, com login feito e respondendo a uma mensagem curta, cada passo marcado, com o que fazer no passo que falhou e Copiar detalhes para enviar a quem ajudar você. O teste inicia um agente próprio, então nenhuma conversa em andamento é tocada.

Por padrão, o Agente de IA responde com uma voz: curioso, direto, um pouco seco, apreciador de uma boa pergunta e de uma resposta curta. Isso é uma voz e nada mais; o contrato de papéis do me.md e as instruções decidem o que ele traz à tona e quem tem uma decisão. A página do plugin oferece essa voz padrão, o seu próprio texto ou nenhuma.

  • .eidos/plugins/agent/local.yaml, local: o agent (claude-code, codex ou custom), command (o comando ACP a rodar; sem definir, o adaptador do agente nomeado através do npx, baixado no primeiro uso), persona_mode (default, own, off), persona (o seu próprio texto) chat_zoom (o zoom próprio do chat, em porcentagem) e, do ditado, transcription (local ou hosted), dictation_tidy, dictation_instructions e dictation_model. Nunca commitado: o agente com quem você conversa não viaja com a raiz.
  • Na pasta onde o Eidos guarda o que não é de nenhuma raiz (~/Library/Application Support/eidosmd em um Mac, %APPDATA%\eidosmd no Windows, ~/.config/eidosmd no Linux): models/, o modelo de voz que o ditado baixou uma vez, compartilhado por todas as raízes, e transcription.yaml, a sua chave de transcrição hospedada, legível só por você e nunca devolvida à página.
  • .eidos/plugins/agent/settings.yaml: commit_prompt, o que se pede para a mensagem de commit do Git, compartilhado com todos na raiz; e Agente de IA como usuário (as_user, ligado por padrão) com Agente de IA age como (acts_as): o usuário com que os comentários do Agente de IA são assinados, por padrão o usuário próprio do plugin, Agente de IA (@agent, com o papel agent da raiz quando ela o tem), que aparece como do plugin na página Users enquanto o plugin está ligado e é escrito nos usuários da raiz na primeira vez que é necessário. Escolha outro usuário (por exemplo, Sammy) e o Agente de IA assina como ele; desligue-o e o Agente de IA não comenta como ninguém, seus comentários recusados. A partir de um shell, eidos plugin set agent as_user off ou eidos plugin set agent acts_as sammy. Deixar o agente mudar o framework (may_change_framework, desligado por padrão) decide se @agent pode usar um comando configure: que escreve; desligado, o comando se recusa e diz onde ligá-lo. Uma raiz que não marca nenhuma pessoa como editor deixa todos, o agente também, seja qual for a configuração. Só um editor do Framework o liga.
  • .eidos/plugins/agent/conversations/<id>.yaml: uma conversa compartilhada, commitada. .eidos/plugins/agent/local/conversations/<id>.yaml: uma local, que nunca sai da máquina. Cada uma guarda as mensagens, o contexto que cada uma levou como foi redigido, os arquivos que uma resposta mudou e o id de sessão do agente.
  • .eidos/plugins/agent/duplicates.yaml: a última verificação de duplicatas de cada tarefa (os candidatos, os motivos do agente, quando rodou) e cada par marcado como Não é duplicata, compartilhado com a raiz.

Nada no shell conversa com o agente: pedir à CLI para perguntar ao seu agente, a partir do seu agente, é um laço sem nada dentro. A página é a única superfície para uma conversa. As suas configurações são escritas a partir do shell como as de qualquer plugin:

Janela do terminal
eidos plugin set agent agent codex # the agent, local, in local.yaml
eidos plugin set agent command "my-agent --acp" # a command of your own that speaks ACP
eidos plugin set agent agent --unset # back to Claude Code, the default

Os comandos de barra próprios do compositor são editados com eidos agent, como a lista Comandos de barra da página do plugin os edita:

Janela do terminal
eidos agent commands # every command and where it comes from; --json for a script
eidos agent configure:command add review --prompt 'Review $ARGUMENTS for gaps' --description 'review what is open'
eidos agent configure:command set review --rename critique # --prompt, --description; --local for a local one
eidos agent configure:command remove critique # --dry-run shows the change and writes nothing

Um comando é compartilhado com a raiz, a menos que --local o guarde nesta máquina. Um nome que a visão Chat ou um plugin já usa é recusado, e também um que outro comando próprio já tem. Só um editor do Framework escreve os compartilhados; os locais são sempre seus para mudar.

Nada. Desligado ou sem configurar, não há processo, nada é enviado a lugar nenhum, e a página do plugin diz qual dos dois casos é.