Desenvolvimento remoto com Zed: SSH, tarefas e pré-visualizações locais
Mantenha a interface do editor Zed local enquanto trabalha em uma cópia de desenvolvimento remota autorizada. Este guia baseado na documentação distingue configurações, dados salvos usados pelas tarefas e pré-visualizações em localhost, com verificações propostas e limites claros de confiança e privacidade de IA.
Imagine mover um pequeno projeto web para um servidor de desenvolvimento existente. O editor continua com a aparência habitual. Mas qual máquina executa uma tarefa e para onde aponta o localhost do navegador? Essas são as questões a esclarecer antes de alterar as configurações.
O desenvolvimento remoto com Zed conecta seu editor local a uma cópia de trabalho por SSH. A interface permanece no seu computador portátil; servidores de linguagem, tarefas e terminais são executados no servidor remoto. A documentação de acesso remoto do Zed explica essa divisão.
Os exemplos abaixo são propostas baseadas na documentação. Nenhum foi executado para este artigo: nenhuma instalação do Zed ou sessão SSH foi testada, e nenhuma aplicação, porta ou chamada de IA foi validada. Use o guia para planejar uma configuração e diagnosticar seus limites.
O que permanece local e o que é executado no servidor remoto
Mapeie o editor, a cópia de trabalho e os caminhos de execução
Comece identificando onde o trabalho acontece. Uma janela com aparência local revela pouco sobre o processo por trás dela. A arquitetura documentada atribui um local a cada componente:
| Componente | Local | Implicação prática |
|---|---|---|
| Interface do editor e análise sintática com Tree-sitter | Máquina local | O conteúdo exibido é processado localmente |
| Alterações não salvas e estado dos projetos recentes | Máquina local | Uma cópia de trabalho remota não implica ausência de cópias locais |
| Cópia de trabalho do código-fonte | Servidor remoto | Os arquivos salvos do projeto pertencem a essa cópia de trabalho |
| Servidores de linguagem, tarefas e terminais | Servidor remoto | Inspecione as ferramentas remotas e o diretório de trabalho |
| Solicitações de IA | Caminho configurado separadamente | Analise o roteamento do provedor e dos agentes de forma independente |
Um servidor existente com ferramentas ou dados necessários ao projeto oferece um motivo para trabalhar remotamente. A conexão, por si só, não oferece um ambiente reproduzível nem evidências de melhor desempenho.
Trate as solicitações de IA como um caminho separado
A IA precisa de uma análise própria. A visão geral do acesso remoto descreve a comunicação local com os modelos, enquanto a documentação de privacidade de IA do Zed distingue os caminhos das solicitações para chaves de provedores, gateways, agentes externos e Terminal Threads. Não é possível deduzir para onde vai uma instrução enviada à IA com base no local da cópia de trabalho.
Comece com um servidor autorizado e uma cópia de trabalho dedicada ao desenvolvimento
Confirme o acesso SSH sem enfraquecer a verificação
Este guia pressupõe que você já tenha acesso autorizado a um servidor de desenvolvimento. Prepare suas ferramentas separadamente e escolha uma cópia de trabalho dedicada, fora de produção. O nome de máquina devbox.example.com é fictício; substitua-o pelo servidor aprovado ao planejar a conexão.
Na caixa de diálogo Projetos remotos do Zed, escolha Conectar novo servidor e informe a conexão SSH aprovada. O Zed usa o binário e a configuração SSH locais; sua documentação de conexão recomenda autenticação por chave para conexões frequentes. Mantenha a verificação da chave do servidor ativada e siga o processo de acesso da sua organização. Um erro de conexão é motivo para investigar, nunca para colocar chaves privadas nas configurações do projeto ou desativar a verificação.
Selecione a própria pasta do projeto. A mesma documentação alerta contra a abertura de diretórios raiz muito abrangentes, incluindo a raiz do sistema de arquivos ou todo o diretório pessoal.
Verifique os pré-requisitos do servidor remoto e das ferramentas
O servidor precisa de um binário de servidor Zed correspondente. A documentação de desenvolvimento remoto lista servidores macOS, Linux e Windows com ressalvas, incluindo testes não exaustivos das distribuições Linux. Leia os requisitos do seu servidor antes de se comprometer com a configuração.
Use esta lista de preparação:
- Seu acesso SSH aprovado funciona sem enfraquecer a verificação.
- A plataforma remota consegue executar o servidor Zed correspondente.
- A cópia de trabalho dedicada e o ambiente de execução do projeto já existem.
- O binário do servidor dispõe de um meio aprovado de download ou entrega.
A opção documentada upload_binary_over_ssh baixa o binário do servidor localmente e depois o transfere por SSH. As dependências do projeto ainda precisam de preparação separada, e a opção não torna todos os recursos disponíveis sem conexão à internet. A lista acima permanece uma proposta até você verificá-la no seu servidor.
Coloque as configurações e as verificações do ambiente de execução no lugar certo
Separe as configurações locais, do servidor e do projeto
Uma alteração de configuração só ajuda se o processo que precisa dela a ler. Ambos os processos do Zed leem as configurações do projeto, mas nenhum lê o arquivo de configurações principal do outro. A documentação de configurações apresenta os escopos disponíveis:
| Necessidade | Escopo da configuração | Evite |
|---|---|---|
| Tamanho da fonte e aparência do editor | Local | Alterar as configurações do servidor para corrigir a interface |
| Caminhos remotos de servidores de linguagem ou proxy | Servidor | Presumir que o proxy do computador portátil se aplica remotamente |
| Recuo portável ou escolha do formatador | Projeto | Registrar no repositório caminhos específicos de uma máquina ou segredos |
Mantenha os caminhos específicos de cada máquina fora da configuração compartilhada. Caso contrário, a próxima pessoa que abrir a cópia de trabalho herdará uma dependência do seu sistema de arquivos.
Verifique o ambiente de execução remoto sem expor todo o ambiente
Para um projeto Node.js em um servidor de desenvolvimento semelhante a Unix, considere estas verificações somente de leitura no terminal remoto. Pressupõe-se um shell do tipo POSIX, o utilitário hostname disponível e um ambiente de execução Node.js instalado. Executá-las em um shell separado no computador portátil responde à pergunta errada.
hostname
pwd
command -v node
node --versionSem argumentos, hostname exibe o nome da máquina; pwd informa o diretório de trabalho. command -v informa como o shell resolve o comando, podendo identificar um alias ou uma função em vez do caminho de um executável. node --version exibe a versão do Node.js. A referência de hostname documenta o comportamento do comando, não o suporte do Zed ao OpenBSD.
Inspecione os resultados em privado. O servidor corresponde à máquina pretendida? O diretório pertence à cópia de trabalho? Compare o ambiente de execução encontrado com os requisitos do projeto. Se a localização do comando falhar, resolva isso antes de solicitar a versão. Nenhuma saída ou versão esperada é afirmada aqui, e não há necessidade de compartilhar nomes de máquinas sensíveis ou expor todo o ambiente.
O sucesso no terminal responde apenas à questão do terminal. A documentação de ambiente do Zed descreve tratamentos diferentes para inicializações pela linha de comando e pela interface gráfica, tarefas, terminais e localização de servidores de linguagem. Verifique separadamente a localização do binário do servidor de linguagem. Não presuma que variáveis ou segredos do computador portátil sejam encaminhados automaticamente.
Para projetos de empacotamento Python, a lista de verificação de compilação e publicação com uv aborda outro limite: uma cópia de trabalho funcional não comprova que o pacote distribuído funciona.
Faça as tarefas remotas usarem o diretório, o arquivo salvo e o contexto pretendidos
Escolha deliberadamente o escopo da tarefa e a política de salvamento
Coloque as tarefas do projeto em .zed/tasks.json. As tarefas globais ficam disponíveis em todos os projetos. A documentação de tarefas do Zed define ambos os escopos e estabelece a raiz do projeto atual como diretório de trabalho padrão.
Esta definição proposta de tarefa de projeto apenas exibe esse diretório em um servidor semelhante a Unix:
[
{
"label": "inspect-task-directory",
"command": "pwd",
"save": "none"
}
]Gravar esse arquivo altera a configuração, embora pwd seja somente de leitura. O exemplo não foi instalado nem executado. Seu rótulo é um identificador de máquina, e seu comando informa o diretório de trabalho. Se adicionar um cwd explícito para um subprojeto, use o diretório remoto pretendido. Um caminho do computador portátil não o identificará.
O padrão de salvamento merece atenção. Com none, um conteúdo editado em memória pode diferir do arquivo que uma ferramenta lê. Escolha current para salvar o conteúdo ativo ou all para salvar todos os conteúdos editados, conforme documentado na referência de tarefas. Verifique quais arquivos essa escolha alteraria antes de adotá-la.
Para uma tarefa posterior baseada em arquivos, siga a separação entre command e args da documentação de tarefas, incluindo o tratamento de variáveis em caminhos com espaços. Este exemplo com pwd não tem argumento de arquivo. Ele não informa quais dados de entrada um teste leria.
Diferencie o contexto da reexecução da reutilização do terminal
Selecionar um arquivo diferente não altera necessariamente uma reexecução. Por padrão, o Zed reutiliza o contexto resolvido, incluindo variáveis de arquivo capturadas anteriormente. O exemplo de controle da reexecução coloca reevaluate_context na ação task::Rerun em uma associação de teclas. Não se trata de um campo do modelo de tarefa.
A reutilização do terminal controla outra coisa. Os padrões documentados reutilizam um terminal e aguardam a conclusão da tarefa anterior. Uma nova aba não selecionará outro servidor ou arquivo. A execução simultânea também não resolverá uma divergência nos dados de entrada.
Antes de executar o comando real do projeto, inspecione a cópia de trabalho e o diretório de trabalho e depois compare os dados salvos com o contexto resolvido. Exibir o diretório com sucesso deixa os testes da aplicação sem verificação.
Acompanhe uma aplicação web remota até a pré-visualização em localhost no navegador
Separe a porta de escuta da aplicação do encaminhamento SSH
Para uma pré-visualização hipotética, suponha que você inicie separadamente uma aplicação de desenvolvimento na porta de loopback 3000 do servidor remoto. A aplicação fica fora da configuração deste guia. Suas instruções de instalação e inicialização não são fornecidas nem executadas aqui.
Este fragmento proposto mapeia a porta local 8080 para a porta remota usando a configuração ssh_connections.port_forwards documentada pelo Zed. Incorpore-o à conexão do seu servidor autorizado, preservando o restante da lista de conexões.
{
"ssh_connections": [
{
"host": "devbox.example.com",
"port_forwards": [
{ "local_port": 8080, "remote_port": 3000 }
]
}
]
}Acompanhe o caminho pretendido da solicitação até a aplicação que já está em execução:
O encaminhamento não pode iniciar a aplicação. Se a pré-visualização falhar, primeiro verifique se a aplicação está escutando. Depois investigue a rota de encaminhamento, incluindo conflitos de portas locais e o destino remoto. Ter um túnel configurado deixa a prontidão da aplicação sem verificação.
Mantenha a pré-visualização vinculada a localhost
Os padrões de encaminhamento do Zed vinculam ambas as extremidades a localhost. Mantenha-os para esta pré-visualização. Definir local_host como 0.0.0.0 vincula todas as interfaces locais. Configure a conexão e o encaminhamento pretendidos antes de acessar http://localhost:8080; o localhost do navegador continua se referindo ao seu computador portátil.
A vinculação à interface de loopback não fornece autenticação da aplicação nem publicação para acesso público. Assim que conseguir acessar a aplicação pretendida, os testes de estados de acessibilidade com Playwright oferecem uma tarefa separada de verificação da aplicação. Acessar a pré-visualização não comprova a aprovação em um teste.
Use o roteiro Servidor-Tarefa-Pré-visualização para verificar um projeto de desenvolvimento
Servidor-Tarefa-Pré-visualização é a lista de verificação editorial proposta neste guia. Ela reúne os limites documentados em uma matriz de decisão; não é um recurso do Zed nem um padrão do setor e não foi testada como método de implantação.
Servidor: identifique a cópia de trabalho e o escopo da configuração
Use uma cópia de desenvolvimento sem dados sensíveis. Defina qual servidor e qual escopo de configuração está inspecionando antes de diagnosticar a aplicação.
Tarefa: inspecione o ambiente de execução e os dados de entrada salvos
Leia os dados de entrada do comando com o mesmo cuidado dedicado ao seu rótulo. Verifique o comportamento do servidor de linguagem separadamente dos resultados do terminal.
Pré-visualização: verifique a porta de escuta e a rota do navegador
Acompanhe a solicitação até encontrar a primeira divergência. Corrija essa camada antes de alterar outra configuração.
| Etapa | Verificação proposta | Evidências privadas a inspecionar | O que a divergência sugere |
|---|---|---|---|
| Servidor | Identificar o servidor, a cópia de trabalho e o escopo da configuração | Máquina pretendida e diretório dedicado | Conexão, raiz ou escopo de configuração incorretos |
| Tarefa | Inspecionar o ambiente de execução, cwd, política de salvamento e contexto | Binário pretendido e arquivo salvo | Divergência nas ferramentas ou nos dados de entrada |
| Pré-visualização | Separar a porta de escuta, o encaminhamento e o navegador | Aplicação pretendida no destino local pretendido | Problema de prontidão da aplicação ou de roteamento |
Mantenha um pequeno registro durante a avaliação. Essas observações ajudam a decidir sobre a configuração; não medem um ganho de desempenho.
| Registrar em privado | Quando | Decisão apoiada |
|---|---|---|
| Diferenças no ambiente de execução e na configuração | Antes de adotar a cópia de trabalho | Resolver divergências nas ferramentas |
| Divergências nos dados de entrada salvos ou no contexto da reexecução | Durante o desenvolvimento normal | Revisar a definição da tarefa |
| Falhas de pré-visualização causadas pela escuta ou pelo encaminhamento | Quando a pré-visualização falhar | Corrigir a camada responsável |
| Esforço de configuração e manutenção | Durante a avaliação inicial | Manter o trabalho remoto ou voltar ao local |
Para um registro de planejamento legível por máquina, os mesmos limites podem ser representados da seguinte forma. Seu estado continua sendo proposto e não executado.
{
"framework": "host-task-preview",
"checks": ["authorized-checkout", "saved-task-input", "running-app-and-local-forward"],
"status": "proposed-unexecuted"
}Antes de adicionar repositórios ou dados sensíveis, certifique-se de que consegue explicar cada caminho e limite de acesso. Mantenha as anotações privadas e omita credenciais ou listagens completas do ambiente. Este artigo não registra nenhuma lista de verificação concluída.
Erros comuns e limites: SSH não é um ambiente isolado nem uma política de privacidade de IA
Corrija a suposição antes de alterar a configuração
Observe estes erros de diagnóstico:
- Verificar o ambiente de execução do computador portátil quando a tarefa é executada remotamente.
- Abrir todo o diretório pessoal em vez do projeto.
- Presumir que a reexecução acompanha o arquivo recém-selecionado.
- Esperar que as alterações não salvas sejam os dados de entrada testados.
- Encaminhar uma porta antes de a aplicação estar escutando.
Cada um remete a uma linha específica da matriz de decisão. Use-a para isolar o problema.
Analise separadamente a confiança na árvore de trabalho e o roteamento de IA
O Zed mantém registros de confiança na árvore de trabalho separados para cada servidor SSH. O Modo restrito impede a aplicação das configurações do projeto e a instalação ou inicialização dos servidores de linguagem e MCP não confiáveis associados a elas; ferramentas globalmente confiáveis ainda podem ser executadas. Analise a configuração e as instruções do projeto, junto com as ferramentas que ele pode invocar, antes de conceder confiança. Conceder confiança irrestrita é uma solução inadequada para uma questão de permissão. A confiança na árvore de trabalho não oferece um ambiente completamente isolado.
Para a IA, inspecione o caminho escolhido para as solicitações e os termos do provedor. Agentes externos e ferramentas baseadas em terminal podem gerenciar sua própria autenticação, roteamento e permissões, como explicam as orientações de privacidade do Zed. O transporte SSH não oferece nenhuma garantia universal sobre retenção, treinamento ou confidencialidade.
Se o caminho escolhido incluir um gateway, o guia do Vercel AI Gateway apresenta uma lista de verificação separada para roteamento e política do provedor. Esse link não implica que sua sessão do Zed use o gateway. A edição remota básica não exige chamadas de IA; o guia de início rápido de IA do Zed indica o controle Desativar IA no Editor de configurações.
Saiba quando manter o projeto local
O desenvolvimento remoto deve justificar seu custo de manutenção. Pondere a administração e a preparação das ferramentas em relação ao trabalho que elas ajudam a realizar. Verifique também o suporte à plataforma, a confiabilidade da conexão e a manutenção contínua. Se ativar a IA, analise o comportamento do provedor e sua política de dados. Economia ou menor latência exigem evidências da sua própria carga de trabalho.
Mantenha as práticas normais de salvamento e controle de versão; reconectar não é uma estratégia de cópia de segurança. Se ninguém puder manter o limite de acesso do servidor, mantenha o projeto local. Caso contrário, comece com a menor cópia de trabalho cuja localização resolva um problema real de desenvolvimento. Amplie depois de compreender seus caminhos de execução e pré-visualização.
Pontos principais
- 1A interface do Zed permanece local enquanto servidores de linguagem, tarefas e terminais são executados no servidor de desenvolvimento remoto.
- 2As configurações locais, do servidor e do projeto têm finalidades diferentes e não se sincronizam automaticamente.
- 3Inspecione os dados de entrada salvos e o contexto resolvido da reexecução antes de presumir que uma tarefa acompanha o arquivo ativo.
- 4Uma pré-visualização no navegador exige uma aplicação remota em execução independente e o encaminhamento pretendido vinculado a localhost.
- 5A confiança na árvore de trabalho e o SSH não estabelecem um ambiente completamente isolado nem garantias universais de privacidade de IA.
- 6Use Servidor-Tarefa-Pré-visualização em uma cópia de trabalho sem dados sensíveis, com evidências privadas em vez de presumir sucesso.
Conclusão
Comece com uma cópia de trabalho sem dados sensíveis e use Servidor-Tarefa-Pré-visualização para encontrar divergências antes de ampliar. Confirme o escopo da configuração e o ambiente de execução remoto e depois inspecione os dados de entrada salvos da tarefa. Para uma pré-visualização web, acompanhe a solicitação do navegador pelo encaminhamento até a aplicação em execução. Analise o roteamento de IA de acordo com seus próprios termos. Essas verificações ajudam a explicar a configuração; não podem certificar segurança, reprodutibilidade ou desempenho. Mantenha o projeto local se a manutenção do servidor acrescentar trabalho sem resolver uma necessidade concreta de desenvolvimento.
Perguntas frequentes
O que é executado local e remotamente no desenvolvimento remoto com Zed?
A interface do editor, a análise sintática com Tree-sitter e o estado das alterações não salvas permanecem locais. A cópia de trabalho do código-fonte, os servidores de linguagem, as tarefas e os terminais ficam no servidor remoto. Analise separadamente o roteamento das solicitações de IA; ele não herda simplesmente a localização da cópia de trabalho.
Onde devo colocar as configurações do Zed para um projeto remoto?
Use as configurações locais para a interface, as configurações do servidor para caminhos de ferramentas remotas e configuração de proxy e as configurações do projeto para comportamentos portáveis do projeto. Ambos os lados leem as configurações do projeto, mas nenhum lê o arquivo de configurações principal do outro.
Por que uma tarefa do Zed pode usar um arquivo mais antigo ou uma seleção anterior?
Por padrão, o Zed não salva conteúdos em memória antes de uma tarefa, e as reexecuções normalmente reutilizam o contexto resolvido. Inspecione o arquivo salvo e as variáveis capturadas. Escolha deliberadamente uma política de salvamento e use o argumento documentado `reevaluate_context` da ação `task::Rerun` quando quiser um contexto atualizado.
Como posso pré-visualizar uma aplicação de desenvolvimento remota no meu navegador local?
Inicie a aplicação separadamente no servidor remoto, configure um encaminhamento SSH vinculado a localhost para sua porta de escuta e depois acesse a porta local escolhida. Um encaminhamento não inicia nem autentica a aplicação; verifique separadamente sua prontidão.
O Zed por SSH mantém o código e as instruções enviadas à IA inteiramente no servidor remoto?
O SSH não oferece essa garantia. O conteúdo exibido e o estado não salvo podem existir localmente. Provedores, gateways, agentes externos e ferramentas de IA baseadas em terminal têm caminhos de solicitação, permissões e termos separados. A confiança na árvore de trabalho também não proporciona isolamento completo de processos nem um ambiente reproduzível.
Fontes
- https://zed.dev/docs/remote-development
- https://zed.dev/docs/environment
- https://zed.dev/docs/tasks
- https://zed.dev/docs/terminal
- https://zed.dev/docs/worktree-trust
- https://zed.dev/docs/ai/privacy-and-security
- https://zed.dev/docs/ai/quick-start
- https://pubs.opengroup.org/onlinepubs/9799919799/utilities/pwd.html
- https://pubs.opengroup.org/onlinepubs/9799919799/utilities/command.html
- https://nodejs.org/api/cli.html
- https://man.openbsd.org/hostname
Escrito por
Hamza DiazHamza Diaz é o fundador da Optijara, onde cria agentes de IA práticos, sistemas de automação e fluxos de trabalho do Copilot para empresas de serviços. Ele escreve sobre operações de IA, estratégia de agentes e implementação no mundo real para equipes que querem sistemas úteis em vez de exagero.
