Pular para o conteúdo principal

Documentação oficial desta página · v0.20.6

Referências de contexto

Digite @ seguido de uma referência para injetar conteúdo direto na sua mensagem. O Hermes expande a referência na hora e anexa o conteúdo numa seção --- Attached Context ---.

Referências suportadas​

SintaxeDescrição
@file:caminho/do/arquivo.pyInjeta o conteúdo do arquivo
@file:caminho/do/arquivo.py:10-25Injeta um intervalo de linhas (começando em 1, inclusive)
@folder:caminho/do/diretorioInjeta a árvore do diretório, com metadados dos arquivos
@diffInjeta o git diff (mudanças não preparadas)
@stagedInjeta o git diff --staged (mudanças preparadas)
@git:5Injeta os últimos N commits com os patches (máximo 10)
@url:https://exemplo.comBusca e injeta o conteúdo de uma página web

Exemplos​

Revise @file:src/main.py e sugira melhorias

O que mudou? @diff

Compare @file:config_antigo.yaml e @file:config_novo.yaml

O que tem em @folder:src/components?

Resuma este artigo @url:https://arxiv.org/abs/2301.00001

Várias referências funcionam numa mensagem só:

Veja @file:main.py, e também @file:test.py.

Pontuação no fim (,, ., ;, !, ?) é removida do valor da referência automaticamente.

Autocompletar na CLI​

Na CLI interativa, digitar @ abre o autocompletar:

  • @ mostra todos os tipos (@diff, @staged, @file:, @folder:, @git:, @url:)
  • @file: e @folder: completam caminhos do sistema de arquivos, com o tamanho de cada arquivo
  • @ seguido de texto parcial mostra arquivos e pastas do diretório atual que combinam

Intervalos de linha​

A referência @file: aceita intervalos, para injetar exatamente o trecho que importa:

@file:src/main.py:42 # só a linha 42
@file:src/main.py:10-25 # da linha 10 à 25 (inclusive)

As linhas começam em 1. Intervalos inválidos são ignorados em silêncio (o arquivo inteiro é devolvido).

Limites de tamanho​

As referências têm limite, para não afogar a janela de contexto do modelo:

LimiteValorComportamento
Brando25% do contextoUm aviso é anexado, e a expansão segue
Rígido50% do contextoA expansão é recusada, e a mensagem original volta sem alteração
Itens de pasta200 arquivosO excedente vira - ...
Commits do git10O @git:N é limitado ao intervalo de 1 a 10

Segurança​

Bloqueio de caminhos sensíveis​

Estes caminhos são sempre bloqueados no @file:, para não expor credencial:

  • Chaves e configuração de SSH: ~/.ssh/id_rsa, ~/.ssh/id_ed25519, ~/.ssh/authorized_keys, ~/.ssh/config
  • Perfis de shell: ~/.bashrc, ~/.zshrc, ~/.profile, ~/.bash_profile, ~/.zprofile
  • Arquivos de credencial: ~/.netrc, ~/.pgpass, ~/.npmrc, ~/.pypirc
  • Ambiente do Hermes: $HERMES_HOME/.env

Estes diretórios são bloqueados por completo (qualquer arquivo dentro): ~/.ssh/, ~/.aws/, ~/.gnupg/, ~/.kube/, $HERMES_HOME/skills/.hub/.

Proteção contra travessia de diretório​

Todos os caminhos são resolvidos em relação ao diretório de trabalho. Referências que caem fora da raiz permitida são recusadas.

Detecção de arquivo binário​

Arquivos binários são detectados por tipo MIME e varredura de bytes nulos. Extensões de texto conhecidas (.py, .md, .json, .yaml, .toml, .js, .ts etc.) pulam a detecção por MIME. Binários são recusados com um aviso.

Onde funciona​

Referências de contexto são principalmente um recurso da CLI. Elas funcionam na CLI interativa, onde o @ abre o autocompletar e a expansão acontece antes da mensagem ir para o agente.

Nas plataformas de mensagem (Telegram, Discord etc.), a sintaxe @ não é expandida pelo gateway — as mensagens passam como estão. O próprio agente ainda consegue acessar arquivos pelas ferramentas read_file, search_files e web_extract.

Relação com a compressão de contexto​

Quando o contexto da conversa é comprimido, o conteúdo expandido entra no resumo. Ou seja:

  • Arquivos grandes injetados por @file: contam para o uso de contexto
  • Se a conversa for comprimida depois, o conteúdo do arquivo é resumido, não preservado literal
  • Para arquivos muito grandes, use intervalos de linha (@file:main.py:100-200) e injete só o trecho relevante

Padrões comuns​

# Revisão de código
Revise @diff e procure problemas de segurança

# Depurar com contexto
Este teste está falhando. Aqui está o teste @file:tests/test_auth.py
e a implementação @file:src/auth.py:50-80

# Explorar um projeto
O que este projeto faz? @folder:src @file:README.md

# Pesquisa
Compare as abordagens de @url:https://arxiv.org/abs/2301.00001
e @url:https://arxiv.org/abs/2301.00002

Tratamento de erro​

Referências inválidas geram avisos em linha, e não falhas:

SituaçãoComportamento
Arquivo não encontradoAviso: "file not found"
Arquivo binárioAviso: "binary files are not supported"
Pasta não encontradaAviso: "folder not found"
Comando do git falhouAviso, com a saída de erro do git
A URL não devolveu conteúdoAviso: "no content extracted"
Caminho sensívelAviso: "path is a sensitive credential file"
Caminho fora do espaço de trabalhoAviso: "path is outside the allowed workspace"