O Jardim Secreto do Desenvolvedor: Como a Ontologia Espacial Alinha os LLMs Sem Prompt Engineering
Publié le 30 April 2026
- O Constato : Prompt Engineering é um Castelo de Areia
- Os Quatro Círculos de Confiança : uma Ontologia Espacial
- Prós/Contras : Alinhamento Espacial vs Alinhamento por Prompt
- Álgebra Relacional do Workspace e o Observável Delta
- O Vetor Composto do Contexto: RAG + pgvector + Graphify
- Classificação Automática do RGPD : o LLM como Roteador
- Roadmap : do AsciiDoc ao LangGraph4j
- O que Esta Arquitetura Resolve (e o que ela não Resolve)
- Conclusão: a Arquitetura como Discurso
- Referências
A engenharia de prompts é frágil. Com 80.000 tokens, suas regras de alinhamento estão afogadas no ruído, e o LLM esquece o que você pediu no início da conversa. Minha solução? Não alinhar por texto, mas por l'espaço. Estruturei meu workspace de desenvolvimento em quatro círculos de confiança concêntricos — do jardim secreto íntimo até as forjas públicas — e cada círculo é uma área física do sistema de arquivos. O LLM não precisa que se lhe lembre das regras: o caminho do arquivo as contém. Veja como funciona, e por que essa arquitetura de alinhamento por espaço é mais resiliente do que um`system prompt`de 500 linhas
É um artigo longo.
Acomode-se confortavelmente.
- toc
-
[]
O Constato : Prompt Engineering é um Castelo de Areia
Durante três semanas, desenvolvi plugins Gradle com Opencode, usando três LLMs diferentes — Kimi K2.6, GLM-5.1, e DeepSeek-V4-Pro (o único sobrevivente, mas isso é outra históriaJá coberta aqui.) Meu método de governança agentEu a documentei em detalhes em um artigo anterior. baseia-se em arquivos AsciiDoc —AGENT.adoc, INDEX.adoc, PROMPT_REPRISE.adoc— que carregam ~30 000 tokens de regras, de backlog e de histórico no início de cada sessão.
E apesar dessa infraestrutura documental, duas coisas me chamaram a atenção:
-
O LLM esquece. Mesmo com as regras absolutas na cabeça de cada arquivo EAGER, além de 60 000 tokens acumulados (contexto inicial + conversa), Kimi K2.6 começou a proposer`Write`esmagadores em arquivos de configuração. GLM-5.1 confundiu um token Firebase com um placeholder a ser substituído. As regras estavam escritas — o LLM não as via mais.
-
A governança em si se torna um problema. Depois de ter implementado o mecanismo Hot/Warm/ColdArticle sur la rotation de backup. para evitar a explosão do contexto, meus arquivos EAGER ainda pesavam 1414 linhasJ’ai documenté cet audit ici.. A governança — projetada para proteger o LLM da saturação — saturava o LLM.
Eu precisava de um mecanismo de alinhamento que não dependesse do número de tokens no prompt.
A resposta: parar de alinhar pelo texto, e começar a alinhar peloespaço.
Os Quatro Círculos de Confiança : uma Ontologia Espacial
Meu dossiê`workspace/(em~/workspace/`) não é um repositório Git. É a raiz de todo o meu trabalho — código, documentação, formação, infraestrutura. E está estruturado em quatro áreas que não são convenções de arrumação, mas decírculos de confiança concêntricos:
Nível |
Label |
Zona física |
CVS |
Visibilidade |
0 |
Jardim secreto |
`workspace/`raiz |
Nenhum |
Íntimo — pensamento livre, sem commit, sem publicação |
1 |
Cofre forte |
|
Git privado (solo) |
Segredos, tokens, arquivo de visão. Uma única pessoa. |
2 |
Biblioteca |
|
Git privado(ampliado) |
Dados pedagógicos, SPG/SPD, esquemas JSON. Círculo de confiança identificado. |
4 |
Forjas (públicas) |
|
Git público (Apache 2.0) |
Código fonte, plugins, testes, documentação técnica. |
NOTA: Não há nível 3 na tabela. O nível 3 é um nível transitório: é conteúdo de`office/`que foi anonimizado e está pronto para ser publicado em open data. Não tem uma zona física própria — é um estado do dado, não um local.
Cada nível responde a uma pergunta específica :
-
Onde depositar uma ideia que ainda não está pronta para ser compartilhada, mesmo com um círculo restrito? → Jardim secreto. Sem Git. Sem pressão.
-
Onde armazenar um token API sem que ele vaze ? → O cofre (
configuration/). Fisicamente isolado. Nenhum outro depósito pode referenciá-lo por engano. -
Onde co-construir um catálogo de formação com um OF piloto? → A biblioteca`office/`). Versionado, colaborativo, mas privado.
-
Onde industrializar um plugin Gradle open source? → As forjas`foundry/`Público, forkável, testado em CI.
Esta ontologia éconsumível por um LLM. Quando ele lê um arquivo dentro`foundry/plantuml-gradle/src/`, ele sabe implicitamente: "estou no círculo 4 — código público, testes obrigatórios, sem segredos, sem dados pedagógicos". Ele não precisa de um prompt que o lembre.
O Jardim Secreto: o Espaço Fora-CVS
Este é o conceito mais importante — e o mais contra-intuitivo.
A raiz`workspace/não tem.git/. Os documentos que vivem lá (`WORKSPACE_VISION.adoc, WORKSPACE_AS_PRODUCT.adoc, WORKSPACE_ORGANIZATION.adoc— e aquele que você está lendo neste momento, que dele provém, não são destinados a serem versionados, compartilhados ou mesmo relidos por alguém além de mim. Sãopensamentos em germinação.
|
O jardim secreto é out-of-CVS por natureza. A ausência de versionamento é a condição da liberdade de pensar. Não se escreve para ser lido — escreve-se para esclarecer a própria visão. |
Mas esta liberdade tem um custo: um`rm`acidental, e são meses de reflexão estratégica que desaparecem. A solução não é versionar o jardim (isso seria destruí‑lo) — é de leespelharno círculo mais restrito
O .gitignore como Configuração de Governança
Na raiz de`workspace/, um arquivo.gitignore`minimal declara opolítica de historicizaçãoalguns ficheiros do jardim secreto :
.goosehints
.goose
Ce .gitignore`não tem uma função Git clássica (não há.git/`à raiz). ele age como umarquivo de configuração de governançaque responde a uma pergunta específica: quais artefatos do jardim secreto merecem ser historizados, e quais são puramente transitórios?
-
Os arquivos listados em`.gitignore`—
.goosehints,.goose— são artefatos efêmeros gerados pelos agentes. Sem valor estratégico. Sem historicização. -
Os arquivos`.adoc` da raiz —
WORKSPACE_VISION.adoc,WORKSPACE_ORGANIZATION.adoc,WORKSPACE_AS_PRODUCT.adoc,WHAT_THE_GAMES_BEEN_MISSING.adoc,depots_implementes_strategie.adoc,synthese-LLMs-long-contexte.adoc— não sãonãono`.gitignore`. Estes são os artefatos a serem historicizados.
Le `.gitignore`é oesquema de governança: tudo o que não está listado lá é um candidato ao snapshot. E o LLM, ao ler esse arquivo, sabe exatamente o que deve ser arquivado e o que pode ser ignorado — sem que seja necessário lembrá-lo nisso em um prompt.
O Mecanismo de Snapshot
Eu criei`configuration/vision-archive/: instantâneos datados de todos os.adoc`da raiz, commits no repositório privado`configuration/`Cada sessão de brainstorming produz um snapshot:
DATE=$(date +%Y-%m-%d)
mkdir -p /home/cheroliv/workspace/configuration/vision-archive/$DATE
cp /home/cheroliv/workspace/*.adoc /home/cheroliv/workspace/configuration/vision-archive/$DATE/
cd /home/cheroliv/workspace/configuration && git add vision-archive/ && \
git commit -m "vision-archive: snapshot $DATE"
O procedimento é acionado no final da sessão pelo próprio LLM, que executa essa tarefa global de roteamento. Cada snapshot captura o estado completo do pensamento estratégico em um instante T.
O histórico Git de`configuration/`torna-se abiografia de meu pensamento estratégico. Eu posso fazer um`git log — vision-archive/`e ver a evolução da minha visão, sessão por sessão, data por data.
Exemplo real do histórico após um dia de trabalho :
$ git -C configuration log --oneline -- vision-archive/
1089d1b vision-archive: fin de session finale 2026-05-03
6b21eaf vision-archive: fin de session 2026-05-03-1300
1690f82 vision-archive: post-article 2026-05-03
28e6593 vision-archive: post-migration 2026-05-03
3707b78 vision-archive: snapshot 2026-05-03 — jardin secret initial
Cinco snapshots em um dia. Cada um é um ponto de restauração. Cada um é um marco na gênese da estratégia.
O dossier`configuration/vision-archive/latest/`contém continuamente umacópia de trabalhodo último snapshot, servindo como referência rápida sem precisar navegar no histórico do Git.
E para o LLM, é umoráculo de coerência: quando ele observa uma contradição entre a implementação atual e a visão arquivada em uma data anterior, ele pode sinalizá-la.
O Cofre-Fort : configuration/ como Spring Cloud Config
`configuration/`ne contém apenas o arquivo da visão. Sua função primária — e futura — é ser umservidor Spring Cloud Config. Todos os segredos, tokens, credenciais e descritores de infraestrutura vivem aqui, em um repositório Git privado acessível apenas ao proprietário.
Por que um repositório separado em vez de um arquivo`.env`em cada projeto?
-
Push acidental de um segredo: impossível. Os segredos estão em um repositório privado que os projetos públicos não podem referenciar por engano.
-
Audit : o histórico do Git fornece o rastro de cada modificação de configuração. Quem mudou o quê, quando, com qual hash SHA.
-
Reverter :`git revert`Em uma configuração quebrada. Instantâneo, sem backup manual.
A Biblioteca: office/ como Dados Consumíveis
`office/`o contrapartida documental do trabalho de desenvolvimento. Contém os artigos de blog, as especificações técnicas, os materiais de formação (38 diretórios de cursos FPA, SPG/SPD, esquemas JSON, taxonomias Bloom/Harrow/Krathwohl) — tudo o que constitui omaterial didático.
Mas`office/`Não é apenas uma gaveta de documentos. É umafonte de dados estruturadosque os plugins Gradle de`foundry/`consumem. Um artigo de blog em`office/`é uma entrada que um plugin transformará em HTML. Um SPG AsciiDoc dentro`office/metiers/FPA/`é um artefato que um orquestrador analisará para gerar slides, quiz e cápsulas de vídeo.
Et le `build.gradle.kts`na raiz de`office/`não é código de negócio — é umscript de consumo do ecossistema de plugins. Ele diz : "aqui estão os plugins Gradle que eu uso, aqui está o contexto do meu workspace".
As Forjas: foundry/ como implementação
foundry/`contém ocódigo industrializado. 54 repositórios Git, dos quais 7 atualmente governados por.agents/`. É aqui que a visão se torna executável — plugins Gradle, CI/CD, testes JUnit5 + Cucumber.
A relação com`office/`é bidirecional :
-
office/→foundry/: os dados pedagógicos são a matéria-prima que os plugins consomem. -
foundry/(empty)office/: os plugins produzem dados que enriquecem`office/` — le `graph.json`do graphify-gradle, os decks slider compilados, os relatórios de build.
Prós/Contras : Alinhamento Espacial vs Alinhamento por Prompt
Comparemos as duas abordagens.
Abordagem Clássica: Alinhamento por Pré-Prompt
✅ Pro |
Contra |
Simples de implementar. Um bloco de texto no system prompt. |
Frágil ao contexto longo : a regra se perde após 80K tokens. |
Funciona para regras gerais (tom, formato). |
Não verificável : nada impede o LLM de violar a regra. |
Não é necessário repensar a arquitetura do projeto. |
Não transferível: cada repositório redefine as regras. |
Puramente declarativo: o LLM sabe que ele deveria, mas nada o impede. |
Esta Abordagem : Alinhamento por Ontologia Espacial
✅ Pro |
contra |
Resiliente a contextos longos : a regra está no caminho do arquivo, não em um prompt distante. |
Custo de infraestrutura inicial : estruturar o workspace em círculos leva tempo. |
Verificável mecanicamente: um segredo em`foundry/ |
Exige disciplina : um novo contribuidor deve entender os círculos. |
Transferível : um`AGENT.adoc`O padrão expõe os círculos a todo novo projeto. |
Cobre apenas as restrições espaciais — o estilo de código permanece no prompt. |
Segurança por design : um`git push`desde`foundry/ |
|
Consumível por agentes não-LLM : um orquestrador Gradle pode rotar de acordo com o círculo. |
O ganho principal não é defensivo (segurança, visibilidade) — ele écriativo. Quando o LLM trabalha em um espaço estruturado por uma ontologia, ele pode fazer o que nenhum prompt lhe permite: observar o delta
Álgebra Relacional do Workspace e o Observável Delta
Quando o LLM percorre`foundry/, ele dispõe de umtreliça de dados estruturados: nós (plugins, arquivos, testes, dependências), arestas tipadas (`import, depends_on, generates, tests), relações de composição e ordem (`training-gradle`extrai o repositório`slider-gradle`gera os slides →`capsule-gradle`reproduz o vídeo).
Esta álgebra não está escrita em nenhum lugar em texto claro — mas ela é observável. Cada`build.gradle.kts`expõe dependências. Cada`INDEX.adoc`expõe referências cruzadas.
O LLM observa esta álgebra e detecta odelta: a diferença entre o que o sistema já sabe produzir e o que a visão descreve.
A partir desse delta, ele pode definir algunscartografias de especialistas de negócio— CDA (Designer e desenvolvedor de aplicações, Kotlin/Gradle/JHipster) e FPA (Formador Profissional de Adultos, Pedagogie/Qualiopi/Bloom) — e identificar o que falta para cada especialista.
Expert CDA (Kotlin/Gradle/JHipster)
├── Plugins : jhipster-gradle-plugins, plantuml-gradle,
│ codebase-gradle
├── Delta : pas encore de SPG CDA formalisé,
│ pas de fine-tuning expert CDA
Expert FPA (Pédagogie/Qualiopi/Bloom)
├── Plugins : training-gradle, slider-gradle,
│ school-backoffice/forms, capsule-gradle
├── Matériel : 38 modules cours, SPG/SPD, taxonomies
└── Delta : parser AsciiDoc→JSON à créer,
orchestrateur à coder
O LLM não precisa que se lhe diga o que fazer. O delta emerge da estrutura.
O Vetor Composto do Contexto: RAG + pgvector + Graphify
A álgebra relacional não é uma construção teórica. Ela é materializada por três componentes que formam umvetor composto de contextopara o LLM.
Componente 1 — RAG LangChain4j + PostgreSQL pgvector
Já tenho LangChain4j em produção em dois plugins :`slider-gradle`(4 provedores LLM) e`plantuml-gradle`(7 fornecedores). Os embeddings ONNX (AllMiniLmL6V2) indexam os dados de`office/`e o código fonte de`foundry/`no PostgreSQL + pgvector
Este RAG opera em duas dimensões :
-
Dados de dimensão : os documentos`office/`(SPG, artigos, formações, esquemas JSON)
-
Código de dimensão : as codebases`foundry/`(fontes Kotlin, testes Cucumber, AGENT.adoc)
A interseção cobre tanto o o quê (o domínio de negócio) quanto o como (a implementação).
Componente 2 — Knowledge Graph Graphify
Graphify está integrado em`plantuml-gradle`(109 testes, 380/380 PASS) e produz um`graph.json`— um knowledge graph estruturado com nós, arestas e comunidades detectadas automaticamente.
Ao contrário do RAG, que opera por similaridade vetorial (difuso), o knowledge graph opera porrelações exatas(determinista) :`graphify query`para as interrogações semânticas (~50 tokens),`graphify path`para navegar,`graphify explain`para explicar
Componente 3 — Graphify Incremental : Esparso, Agregável, Consumível
Esta é a decisão arquitetônica-chave.
Graphify não deve viver em um único repositório. Ele deve viver de formaesparsaem cada plugin:
-
Cada plugin embarca uma tarefa Gradle`updateKnowledgeGraph`que chama Graphifysobre o seu próprio scopee produz um`graph.json`local.
-
O script de build de`office/
consome`graphify-gradle`com`rootDir = /home/cheroliv/workspace`e produz um`graph.json globalque agrega os grafos locais. -
O RAG de cada plugin injeta o`graph.json`global comofiltro de contextopara as consultas LLM.
TÂCHE GRADLE (dans chaque plugin)
↓
graphify → graph.json (scope local)
↓
office/build.gradle.kts → graph.json (scope global)
↓
RAG pgvector (dans slider, plantuml, codebase...)
↓ ← injection du graph.json comme filtre
LLM (deepseek-v4-pro)
↓ ← observation algèbre relationnelle
↓ ← détection delta vs cartographies experts
PRIORISATION → prochaine tâche
Resultado: o LLM não está procurando no vazio — ele navega em um espaço estruturado pelo knowledge graph. Uma consulta sobre gerar um diagrama consegue alcançar os nós relevantes do grafo.
Classificação Automática do RGPD : o LLM como Roteador
A ontologia espacial não se contente apenas de alinhar o LLM — ela lhe dá umagrade de classificação GDPRpara encaminhar cada dado para sua zona legítima
Critério |
Detecção LLM |
Ação |
Nível máximo |
Dado pessoal (nome, e-mail, IP) |
padrão`@`, IP, nomes próprios |
Anonimizar →`[OF_PILOTE]`ou router nível 2 |
2 |
Token / Segredo / Credencial |
padrão`sk-… |
Roteador → |
1 |
URL interna |
Contém`localhost`, IP privado |
anonimizar → |
2 |
Dado pedagógico (SPG, aula) |
Estrutura Bloom/Qualiopi |
roteador`office/`(nível 2). Versão dupla se exportar. |
3 |
Código fonte / teste |
Extensão`.kt`, |
roteador →`foundry/`Verificar ausência de segredos |
4 |
No final da sessão, o LLM executa umatarefa global:
-
Leitura do`.gitignore`raiz para identificar os artefatos efêmeros (a excluir do instantâneo) vs os artefatos estratégicos (a historizar)
-
Inventário de todos os arquivos`.adoc`da raiz`workspace/`
-
Filtragem : exclusão dos arquivos listados em`.gitignore`, inclusão de todos os outros
-
Copia em`configuration/vision-archive/$DATE/
e atualização do symlink`latest/ -
Commit no repositório`configuration/`com uma mensagem estruturada
-
Classificação automática do RGPD de cada arquivo modificado (todos os círculos)
-
Roteamento: dados`office/
→ commit privado, código`foundry/→./gradlew check, configuração → commit -
Relatório estruturado com alertas RGPD e confirmação de arquivamento
Le `.gitignore`raiz não é um arquivo de configuração Git — é umarquivo de governança da historicização. Define o esquema que o LLM consome para decidir quais arquivos do jardim secreto entram na biografia estratégica e quais são descartáveis.
O LLM não é mais um simples gerador de texto. Ele é ogerente de informaçãodo ecossistema — produtor, classificador, roteador.
Roadmap : do AsciiDoc ao LangGraph4j
Hoje, esta governança é determinista: o LLM aplica um procedimento descrito em arquivos AsciiDoc. É afase 1— o prompt engineering com memória LLM
La fase 2extrairá cada etapa do procedimento em umatarefa Gradle tipada:
./gradlew endSessionWorkspace → snapshot vision-archive
./gradlew endSessionProject → archive .agents/
./gradlew endSessionReport → rapport multi-zones
La fase 3modelará o processo de término da sessão como umgrafo de estadocomhttps://github.com/langgraph4j/langgraph4j[LangGraph4j]:
[Start] → [Inventaire fichiers modifiés]
→ [Classification RGPD] (nœud ONNX)
→ [Branchement par cercle]
├→ cercle 0 → snapshot → commit
├→ cercle 2 → anonymisation → commit
├→ cercle 4 → archive → commit
└→ cercle 1 → commit configuration/
→ [Rapport] → [End]
Este grafo será versionado no CI/CD, executado pelo Gradle, configurado via os GitHub Secrets dos plugins. O LLM não precisará mais decidir o roteamento — o grafo fará isso.
O que Esta Arquitetura Resolve (e o que ela não Resolve)
|
A ontologia espacial não cobre tudo. As convenções de estilo de código, a nomenclatura, as escolhas de design arquitetural — tudo isso permanece no prompt. O que a ontologia espacial resolve é acamada de segurança e de visibilidade: onde cada byte deve viver, e quem pode vê-lo. |
Aqui está o que ela traz concretamente:
-
Não`git push`acidental de um segredo: os segredos são em`configuration/
(cercle 1). Os projetos públicos estão em`foundry/(círculo 4). Nenhum caminho atravessa os dois. -
Sem código de negócio nos dados
office/`contém.adoc`, alguns YAML, alguns JSON Schemas — mas não há`.kt`. Le `build.gradle.kts`que lá vive é um script de consumo, não é código de negócio. -
Sem pensamento estratégico exposto : Os documentos de visão vivem no jardim secreto (raiz fora-CVS). Os snapshots estão em`configuration/`(cofre privado). Ninguém, mesmo num círculo de confiança alargado, lê a gênese da estratégia.
-
Auto-priorização : o LLM observa o delta entre a álgebra relacional (o que existe) e os mapeamentos de especialistas (o que é necessário). A próxima tarefa de desenvolvimento surge desse delta.
Conclusão: a Arquitetura como Discurso
Não coloco manifesto político no rodapé do meu site. Não coloco regras éticas nos meus prompts. O alinhamento não está no texto — está nosistema de arquivos.
Quando um LLM trabalha neste espaço, ele não pode vazar um segredo (o caminho o impede). Ele não pode confundir um dado pedagógico com código-fonte (a zona física é diferente). Ele não pode esquecer uma regra de segurança de 80 000 tokens — porque a regra não está no prompt, ela está no`workspace/` → configuration/→office/→`foundry/`que cada leitura de arquivo seja reativa
É o princípio do secure by design aplicado ao alinhamento do agente: não pedir ao LLM para se lembrar das regras. Fazer com que a arquitetura torne o erro estruturalmente impossível.
E a propósito, isso dá ao LLM o que nenhum prompt pode lhe dar: a capacidade deperceberonde ele está, o que existe, o que falta — e disso deduzir o que ele deve fazer.
Referências
-
Artigo sobre a governança do agente Eager/Lazy :Governar um Agente IA com AsciiDoc
-
Artigo sobre o mecanismo Hot/Warm/Cold :Sliding Window e onda fria
-
Artigo sobre a auditoria de contexto:Quando Sua Própria Governança Torna-se o Problema
-
Artigo sobre a comparação dos três LLMs :DeepSeek-V4-Pro, Kimi K2.6, GLM-5.1