Configuração
O ZenCopy funciona de fábrica sem configurar nada. Esta página é para quando você quiser que ele se ajuste melhor a você. A primeira metade, sobre a janela de configurações, é para todo mundo; a segunda, sobre arquivos de configuração, é para usuários avançados.
A janela de configurações
Seção intitulada “A janela de configurações”Abra-a pelo menu do ícone da bandeja ou pelo ícone de engrenagem do popup. Ela tem três abas: Geral, IA e Prompts.
- Posição do popup — em qual canto da tela os resultados aparecem.
- Tema — claro / escuro / seguir o sistema.
- Tamanho do texto — Pequeno / Padrão / Grande.
- Idioma da interface — segue o do sistema por padrão.
- Iniciar ao fazer login — deixar o ZenCopy sempre a postos quando o computador estiver ligado.
- Confirmar antes de enviar imagens e arquivos — perguntar ou não uma vez antes de eles irem para a IA.
É aqui que você troca o serviço de IA (provedor, modelo, chave de API). O botão Testar diz na hora se a conexão funciona.
A aba também tem o campo Sobre você. É um lugar para descrever seu papel e suas preferências em poucas frases simples, em qualquer idioma.
Exemplo: “Vendas. Escrevo principalmente e-mails para clientes — educados mas não engessados, conclusão primeiro.”
Com isso preenchido, todo prompt adapta os resultados a você. As explicações chegam no seu nível de conhecimento, e os rascunhos voltam no tom que você prefere. Isso nunca afeta tarefas sem relação, e o texto em si nunca aparece nos resultados.
Prompts
Seção intitulada “Prompts”A lista do “que acontece depois de um copiar duplo”.
- Os prompts pré-instalados podem ser abertos e lidos — eles servem também de exemplos prontos.
- Um novo prompt só precisa de um nome e do que você quer que seja feito. Por exemplo: nome “Resumo em 3 linhas”, instrução “Resuma isto em 3 linhas”.
- Sem confiança para escrever instruções? Anote mais ou menos o que você quer e pressione Rascunhar com IA — a IA que você configurou transforma isso em uma instrução bem formulada.
- Regras permite escolher um prompt diferente para cada tipo de conteúdo (texto / imagem / arquivos).
Os prompts que você cria podem ser compartilhados: Exportar (.md) grava um deles como arquivo, e quem recebe só cola em Importar ou escolhe o arquivo.
Prefere entregar todo o trabalho para uma IA? Qualquer chat de IA pode escrever um prompt pronto para importar para você — cole isto e preencha o espaço em branco:
Leia https://zencopy.app/llms-full.txt — a documentação completa do ZenCopy, incluindo o formato do arquivo de prompt, as variáveis de modelo e como funcionam as regras. Em seguida, escreva um prompt do ZenCopy que faça o seguinte: [o que você deseja]. Gere um arquivo de prompt completo (Markdown com frontmatter) em um único bloco de código, pronto para colar em Configurações → Prompts → Importar do ZenCopy. Se o prompt só fizer sentido em um aplicativo específico ou em um site específico, adicione uma frase me dizendo qual regra configurar.O bloco de código na resposta vai direto para Configurações → Prompts → Importar. Para perguntas que a documentação não pode responder (“o ZenCopy conseguiria fazer…?”), um clique empacota o código-fonte relevante — entregue o resultado para a mesma IA.
Arquivos de configuração (para usuários avançados)
Seção intitulada “Arquivos de configuração (para usuários avançados)”Daqui em diante, esta página trata de editar arquivos de texto diretamente. Tudo o que é essencial está disponível na janela de configurações, então fique à vontade para parar de ler aqui.
Os arquivos são lidos do diretório de configuração do aplicativo, individual por usuário. O caminho exato também é gravado no log na inicialização:
%APPDATA%\app.zencopy~/Library/Application Support/app.zencopy~/.config/app.zencopyOs padrões das regras vêm embutidos no aplicativo; o rules.json só faz sobrepô-los.
Os arquivos de prompt são aditivos:
eles definem prompts novos, e os integrados são intocáveis (um arquivo local que reivindique o id de um integrado é ignorado).
As edições valem a partir do próximo acionamento — sem precisar reiniciar.
ai-sdk-catalog.json
Seção intitulada “ai-sdk-catalog.json”Provedores mais um mapeamento role → modelo.
A casa do formato do arquivo é o ai-sdk-catalog — todos os campos estão documentados lá (incluindo um $schema para validação e preenchimento automático no editor), e examples/ tem configurações em três tamanhos.
Para pontos de partida no estilo ZenCopy (o que a interface de configurações grava, Ollama local, roles para prompts), veja Receitas.
Um requisito é do próprio ZenCopy, não do formato: roles deve sempre incluir default.
Todo prompt roda com ele, a menos que o frontmatter dele nomeie outro role, e o teste de conexão das configurações faz ping nele.
As chaves de API vão direto neste arquivo local (a interface de configurações grava o mesmo formato); elas nunca saem da sua máquina.
Variáveis de ambiente não são lidas — aplicativos gráficos são iniciados pelo sistema operacional, não pelo seu shell, então variáveis exportadas no .zshrc e afins nunca chegam até eles.
O arquivo é validado contra o esquema a cada leitura.
Uma edição quebrada aparece como uma mensagem clara no popup e no editor de configurações — nada falha em silêncio.
rules.json
Seção intitulada “rules.json”Qual prompt cuida de cada tipo de captura:
um mapa simples kind → prompt mais uma lista overrides opcional e de prioridade maior (vence a primeira regra que corresponder).
Os três tipos são text, image e files (uma cópia formatada conta como text); de fábrica, texto vai para Resumir, e imagens e arquivos vão para Explicar.
O mapa simples pode ser editado no próprio aplicativo (Configurações → Prompts → Regras), então você só precisa mexer neste arquivo para os overrides.
{ "text": "zencopy-summarize", "image": "zencopy-explain", "files": "zencopy-explain", "overrides": [{ "when": { "app_name": "Slack", "min_chars": 200 }, "prompt": "summarize" }]}Condições de when: kind (um dos três tipos, correspondência exata), app_name, exec_name, window_title, url (todas aceitam o curinga *), file_name (um curinga que todo nome de arquivo copiado deve corresponder, sem diferenciar maiúsculas de minúsculas — ex: *.pdf), mais min_chars / max_chars.
Para capturas de image e files, o próprio conteúdo é enviado ao modelo (até 10 MB no total por captura).
Os tipos de arquivo são detectados pelo conteúdo, não pelo nome:
imagens, PDFs e áudio são anexados como estão, enquanto arquivos de texto (Markdown, código-fonte, CSV, …) viram o texto da captura ({{ text }}) e se comportam exatamente como se você tivesse copiado o conteúdo deles.
Documentos do Office (Word, Excel, PowerPoint) também se tornam texto: seu conteúdo é extraído e enviado, mas seu layout e imagens não.
As codificações de caracteres são detectadas automaticamente, com conversão de formatos antigos como Shift_JIS e UTF-16.
Qualquer outra coisa é recusada com uma mensagem clara.
Os caminhos completos acompanham o conteúdo, para que o modelo distinga os arquivos e saiba onde eles estão.
Como anexos binários podem custar mais que texto, o popup pergunta antes de enviá-los (arquivos de texto executam sem perguntar) — a confirmação pode ser desligada ali mesmo ou nas Configurações.
prompts/*.md
Seção intitulada “prompts/*.md”Um arquivo = um prompt: frontmatter YAML + um corpo de prompt em Liquid. Esse mesmo arquivo único é o formato de compartilhamento — Configurações → Prompts → Importar o aceita como texto colado ou como arquivo escolhido.
---id: summarizelabel: Resumirrole: defaultinstructions: Você é um assistente conciso.---
Resuma em 3 linhas, em {{ locale }}:
{{ text }}| Frontmatter | Significado |
|---|---|
id | Nome referenciado a partir do rules.json (padrão: nome do arquivo) — o prefixo zencopy- é reservado aos prompts pré-instalados |
label | Exibido no popup |
role | Role do catálogo com o qual executar (padrão: default) |
instructions | Prompt de sistema (template Liquid) |
Variáveis de template, com valores de exemplo para um parágrafo copiado em um navegador:
| Variável | Exemplo |
|---|---|
{{ text }} | O texto copiado (cópias em HTML rico viram Markdown) |
{{ markup }} | O código HTML/RTF de uma cópia formatada |
{{ format }} | html (ou rtf; vazio para cópias simples) |
{{ file_name }} | report.pdf (o nome do primeiro arquivo copiado) |
{{ file_names }} | O nome de cada arquivo copiado, um por linha |
{{ file_paths }} | O caminho completo de cada arquivo copiado, um por linha |
{{ app_name }} | Safari |
{{ exec_name }} | Safari / chrome.exe |
{{ exec_path }} | /Applications/Safari.app/Contents/MacOS/Safari |
{{ window_title }} | Preços – Example |
{{ url }} | https://example.com/pricing (somente em navegadores) |
{{ process_id }} | 8123 |
{{ now }} | 2026-07-08 20:15:00 |
{{ locale }} | pt-br |
Há também um filtro language_name específico do ZenCopy: {{ locale | language_name }} se expande para “Brazilian Portuguese” em vez de “pt-br”, o que soa mais natural em um prompt.
Para ver os valores reais, ative Mostrar variáveis de template nas Configurações — as variáveis de cada captura aparecem no popup como JSON.
Prompts simples (um nome e uma instrução) também podem ser criados pela janela de configurações; o que ela grava é exatamente este formato de arquivo.
Templates avançados
Seção intitulada “Templates avançados”Tanto o frontmatter instructions quanto o corpo são templates LiquidJS completos: condicionais, loops e filtros funcionam.
Um único prompt pode se adaptar ao lugar de onde veio a cópia:
---id: context-awarelabel: Sensível ao contexto---
{% if url contains "github.com" %}Revise este código e aponte o maior risco, um só:{% elsif app_name == "Slack" %}Resuma esta conversa em 2 linhas:{% else %}Explique isto em {{ locale }}:{% endif %}
{{ text | truncate: 8000 }}Logs estruturados (com segredos e conteúdo copiado ocultados) vão para o terminal em desenvolvimento e para um arquivo rotativo na versão final:
%LOCALAPPDATA%\app.zencopy\logs~/Library/Logs/app.zencopy/~/.local/share/app.zencopy/logs