Como usar o Jev para sugerir qual nota linkar no Obsidian enquanto você escreve?

fluxo do Jev no Obsidian sugerindo qual nota linkar durante a escrita
Resposta rápida

Usar o Jev no Obsidian para sugerir link interno é tratar a coisa como escolha, não como redação de prompt. O Jev é o modelo System One da TypeSafe AI: não gera texto, recebe um state mais perguntas tipadas e devolve decisão tipada com probabilidades e confiança. O fluxo é: state com o parágrafo em edição, uma pergunta Choice com os títulos das notas candidatas (máximo 255 opções, sempre com uma opção de recusa) e a leitura do confidence de 0 a 1 em três faixas: alta insere, média sugere, baixa não faz nada. A qualidade da sugestão mora na lista de candidatos.

Sugerir link interno não é problema de escrever prompt, é problema de escolher entre notas que você JÁ tem

Fala aí, beleza? O Jev é o modelo System One da TypeSafe AI, lançado em 15 de setembro de 2026, e ele não gera texto: recebe um state mais perguntas tipadas e devolve decisão tipada, com probabilidade por opção e um valor de confiança

Ou seja, ele foi feito exatamente pra isso: escolher um item de uma lista

Antes que tu pergunte: não existe plugin oficial (nem da comunidade, até onde dá pra confirmar) que use o Jev pra sugerir links internos no Obsidian. Os plugins com Jev que aparecem listados hoje resolvem tag e pasta

Então aqui o caminho é montar o fluxo na mão, via API

E o ponto central do post é esse: a lista de candidatos manda mais que a redação do prompt 🙂

O que você precisa antes de começar

Do lado do modelo:

  • acesso à API da TypeSafe, ou a rota do OpenRouter, que lista jev-latest e jev-1.13
  • a chave guardada com segurança, nunca chumbada no código do plugin

Do lado do Obsidian, duas capacidades bem simples:

  • listar os títulos das notas do vault
  • pegar o parágrafo que está em edição no momento

E dois limites que já mandam na arquitetura, antes mesmo de tu escrever a primeira linha:

  • a janela de contexto do jev-1.13 é de 32.000 tokens
  • uma pergunta Choice aceita no máximo 255 opções

Guarda esses dois números, porque eles decidem o desenho do fluxo lá na frente

Domine o Jev e coloque decisões de IA dentro do seu sistema
Pré-inscrição Curso Jev

Domine o Jev e coloque decisões de IA dentro do seu sistema

Você vai aprender a usar o Jev, o System One Model da TypeSafe AI, pra automatizar decisões com resposta tipada e confiança medida, sem depender de chat nem de alguém revisando cada passo. Entre na lista de espera para garantir a condição de lançamento!

Quer ver o padrão funcionando antes de codar?

Dá pra sentir o formato da decisão usando plugin que já existe e já usa Jev pra escolher entre itens do próprio vault

O Auto Tagger (Jev) sugere uma tag pra nota atual escolhendo entre as tags que tu já usa. Ele roda pelo comando "Auto-tag current note" na paleta ou pelo ícone de tag na ribbon, e manda ao Jev o título da nota, o começo do corpo e os nomes das tags candidatas

Uma única pergunta Choice, com uma opção literal "None of these fit well" na lista

É o mesmo esqueleto que a gente vai montar pra links, só que trocando tags por títulos de notas

O Jevault faz o primo disso pra pastas: sugere pasta de destino usando as pastas que já existem e pede confirmação antes de mover

E se tu for codar isso com agente?

A TypeSafe tem uma skill de agente. No Claude Code, a instalação é:

claude plugin marketplace add typesafe-ai/skills
claude plugin install typesafe@typesafe-ai

Em outros agentes:

npx skills add typesafe-ai/skills --skill typesafe-ai

A instalação é local ao projeto por padrão, e -g instala global. Tome cuidado! A recomendação é escolher UM método só, pra não ficar com cópias duplicadas rodando

  1. Definir o state: só o trecho em foco

O state é o que o modelo vai avaliar. Aqui é o título da nota atual mais o parágrafo que tu está escrevendo

const state = `# ${notaAtual.titulo}\n\n${paragrafoEmFoco}`

O erro comum deste passo: enfiar o vault inteiro (ou a nota inteira de 40 parágrafos) achando que "mais contexto = melhor resposta". A janela é de 32.000 tokens, e contexto demais só dilui o sinal do trecho que importa

  1. Montar a lista de candidatos

Na pergunta Choice, criteria é um mapa: cada chave é o nome da opção, cada valor é a descrição daquela opção. Quando o título já se explica sozinho, o valor pode ser null

const criteria = {}

for (const nota of notasDoVault) {
  criteria[nota.titulo] = nota.descricaoCurta ?? null
}

O erro comum deste passo: mandar uma shortlist arbitrária tipo "as 5 notas mais recentes". A documentação do Choice orienta passar a lista COMPLETA em vez de um recorte, porque cada opção custa poucos tokens

Se tu corta antes, tu já decidiu pelo modelo. E decidiu mal

  1. Incluir a opção de recusa

A documentação recomenda incluir uma opção do tipo "other" ou "none of the above" sempre que a lista pode não cobrir toda entrada

criteria["Nenhuma delas"] = "Nenhuma nota candidata tem relação real com este trecho"

O erro comum deste passo: esquecer a recusa. Sem ela, o modelo é obrigado a escolher alguma coisa, e tu ganha um link errado com cara de link certo

A maioria dos parágrafos que tu escreve simplesmente não precisa de link, né? A lista tem que permitir dizer isso

  1. Montar o corpo da requisição

O corpo tem três campos no topo: state (o conteúdo a avaliar), model e questions (um mapa de ids de pergunta que TU escolhe)

const body = {
  state,
  model: "jev-latest",
  questions: {
    // o id é seu: a resposta volta sob esse mesmo id
    nota_para_linkar: montarChoice(criteria)
  }
}

O formato exato da pergunta Choice está na documentação do primitivo, vale abrir do lado enquanto monta

O erro comum deste passo: inventar id diferente na hora de ler a resposta. Ela volta sob o mesmo id que tu mandou, então padroniza isso numa constante e pronto

  1. Ler a resposta inteira, não só a opção

A resposta de um Choice traz três coisas: a opção selecionada, uma probabilidade pra cada opção e um valor de confiança de 0 a 1

E de onde vem esse confidence? Da forma da distribuição: concentrada em uma opção = confiança alta, espalhada entre várias = confiança baixa

O erro comum deste passo: pegar só a opção selecionada e ignorar o resto. As probabilidades são justamente o que te deixa mostrar "essa aqui, mas a segunda tava quase empatada"

  1. Transformar decisão em ação com três faixas

A documentação sugere dividir a confiança em três faixas: alta (agir automaticamente), média (pedir confirmação, marcar pra revisão ou buscar mais dados) e baixa (não agir, mandar pra humano ou usar outro caminho)

E o corte de cada faixa depende do risco da ação

Faixa O que o fluxo faz na sua nota
Alta escreve o link direto no parágrafo
Média mostra a sugestão e espera tu confirmar
Baixa não faz nada, segue o jogo

O erro comum deste passo: usar um corte único, copiado de outro projeto, sem pensar no risco. Escrever texto DENTRO da nota do usuário é ação intrusiva, então o corte da faixa alta aqui tem que ser bem mais conservador que o de um fluxo que só loga uma sugestão

Esse raciocínio de calibrar corte por risco é o mesmo que aparece quando tu usa o modelo pra moderar conteúdo enviado por usuários: o que muda não é o modelo, é o preço de errar

  1. Escrever a instrução ao pé da letra

A página de jaggedness do jev-1.13 avisa: o modelo responde a pergunta que tu escreveu, não a que tu quis dizer. Escopo, negação e condição implícita são lidos literalmente

Se tu quer "a nota que aprofunda ESTE conceito", escreve isso. Não escreve "a nota mais relacionada" esperando que ele adivinhe teu critério de relação

O erro comum deste passo: descrição de opção genérica demais, tipo "anotações". Isso serve pra qualquer parágrafo do vault, e opção que serve pra tudo é opção que não diferencia nada

Link interno ruim é pior que link nenhum, porque ele sobrevive. Fica lá, e daqui seis meses tu clica achando que vai achar algo

Três sintomas clássicos:

Sintoma: as sugestões são plausíveis, mas inúteis

Causa: lista de candidatos ruim, ou sem opção de recusa. O modelo escolhe o menos pior porque tu não deixou ele dizer "nenhuma"

Solução: recusa explícita na lista, e descrições que DIFERENCIAM as notas umas das outras, não que descrevem o vault

Como prevenir: antes de mandar, olha teu criteria e pergunta: eu, humano, conseguiria escolher só com essas descrições? Se não conseguiria, o Jev também não

Causa: o corte da faixa alta ficou baixo demais. Uma decisão que merecia confirmação caiu na faixa que age sozinha e virou escrita direta na nota

Solução: sobe o corte da faixa alta, pra esse tipo de caso cair na média e esperar tua confirmação, e registra a confiança ao lado da sugestão. O Auto Tagger (Jev) faz exatamente isso: mostra a confiança do modelo junto com a tag aplicada

Como prevenir: durante os primeiros dias, roda em modo sugestão puro. Nada é escrito sem tu clicar

Sintoma: duplicatas e ruído no corpo da nota

Causa: o fluxo não checou o que a nota JÁ linka, então sugere de novo o que já está lá

Solução: filtra os candidatos antes de montar o criteria, tirando o que a nota já referencia. Mesmo princípio do plugin de tags, que nunca duplica tag que a nota já tem

const jaLinkadas = new Set(notaAtual.linksInternos)
const candidatas = notasDoVault.filter(n => !jaLinkadas.has(n.titulo))

Como prevenir: filtro do lado do plugin, sempre. Não é trabalho do modelo lembrar o que tu já escreveu

Os cantos ásperos que atrapalham AQUI

A própria página de jaggedness do jev-1.13 lista limitações, e três delas batem direto nesse caso de uso:

  • contagem não é confiável (caracteres, ocorrências, itens de lista longa), e o erro cresce com o tamanho do que é contado. Então nada de pedir "quantas vezes esse termo aparece" como critério de link
  • datas são lidas como texto, não como quantidade ordenada. Comparar qual nota é mais antiga ou se cai numa janela de tempo é pouco confiável, faz isso no código
  • o state é tratado como dado, não como hostil por padrão. Nota é texto que veio de algum lugar (clipping, PDF, artigo colado), e conteúdo escrito pra manipular o modelo pode mover a resposta

Esse último é aquele detalhe que ninguém pensa em vault pessoal… até colar um artigo com instrução escondida no meio 😛

Variações: vault grande, ranqueamento e busca por linha

Quando o vault passa de 255 notas

Aí a lista completa não cabe em um Choice só, porque o limite é 255 opções por pergunta

O caminho é quebrar em shortlists e ranquear. O cookbook de Re-ranking da TypeSafe usa o mesmo Choice sobre uma shortlist MAIS um Noul absoluto por candidato

Que é o Noul? O primitivo que responde uma probabilidade por pergunta independente. Então cada candidato ganha uma nota própria, que não depende de com quem ele está competindo

E aí vem o truque bom: ordenar pela própria probabilidade em vez de aplicar um limiar. Uma shortlist cujo maior noul fica abaixo de 0,30 é descartada inteira, sem dó

Esse padrão de ranquear e cortar é o mesmo esqueleto de quando tu usa o modelo pra qualificar e priorizar leads: muda o domínio, a mecânica é igual

Escala real documentada

O cookbook Skill suggestion ranqueia 182 skills em uma única requisição, e depois busca o texto completo das três primeiras pra julgar de novo com evidência melhor

Transplanta isso: primeira passada com os títulos (barato, rápido, muitos candidatos), segunda passada só com as 3 notas finalistas, dessa vez mandando o corpo delas

Duas requisições em vez de uma, e a decisão final acontece com evidência de verdade, não com título

Linkar um ponto exato dentro de uma nota longa

O cookbook Line-by-line search marca cada linha do documento com um id, usa um Choice pra ranquear esses ids contra a pergunta em linguagem natural e uma pergunta Noul pra checar se o documento contém resposta. O exemplo trabalha com 218 ids de linha

É o caminho pra sair de "linka essa nota" e chegar em "linka esse trecho dessa nota"

Decisão sobre a estrutura do vault

Nem toda decisão é sobre link. O Jevault sugere pasta de destino pra notas Markdown usando as pastas que já existem, exige confirmação antes de mover e valida a nota original pra evitar sobrescrita

Vale como referência de comportamento: sugerir, confirmar, só então mexer. E repara que ele não tem modo offline, usa a API da TypeSafe, guarda a chave como secret do Obsidian (SecretStorage) e só faz requisição quando tu pede classificação ou Retry

O plugin em si é gratuito, mas cada requisição consome créditos geridos pela TypeSafe

Conclusão

Quem decide a qualidade da sugestão de link não é a redação do prompt

É a lista de candidatos (completa, com descrições que diferenciam, com opção de recusa) e é o corte de confiança que tu escolhe pra cada faixa

Próximo passo prático: roda o fluxo em modo sugestão puro, sem escrever nada na nota, por alguns dias. Anota o confidence das escolhas boas e das ruins

Com esses números na mão tu define a faixa que age automaticamente, em vez de chutar um 0,8 porque parece bonito

Sobre custo: no OpenRouter o Jev sai por US$ 0,042 por 1 milhão de tokens de entrada, e a saída é US$ 0,00 por 1 milhão de tokens. Cada decisão dessas é barata, o que ajuda a rodar em modo observação sem medo

Último aviso importante: a TypeSafe anunciou que pausou temporariamente os cadastros novos no Jev por causa da demanda. As contas já criadas seguem funcionando normalmente

Se tu já tem acesso, bora montar esse fluxo e me conta como ficou =)

até o próximo post!

Perguntas frequentes

Existe algum plugin pronto que usa o Jev pra sugerir link interno no Obsidian?

Não, pelo menos não até onde dá pra confirmar. Os plugins com Jev que existem hoje resolvem tag (Auto Tagger) e pasta de destino (Jevault), não link interno. Pra esse caso específico o caminho é montar o fluxo na mão via API, usando o mesmo esqueleto de Choice que esses plugins já usam.

Quanto custa rodar esse fluxo de sugestão de link com o Jev?

No OpenRouter o Jev sai a US$ 0,042 por 1 milhão de tokens de entrada, e a saída não é cobrada (US$ 0,00 por 1 milhão de tokens). Como o state de cada requisição é só o título da nota mais um parágrafo, o custo por sugestão tende a ser baixo.

O que acontece se o vault tiver mais notas do que cabe na janela de contexto do jev-1.13?

A janela do jev-1.13 é de 32.000 tokens, e uma pergunta Choice aceita no máximo 255 opções. Se o vault passar disso, o ajuste é reduzir o que entra no criteria (por exemplo por pasta ou por tag), nunca cortar a lista de forma arbitrária tipo ‘as mais recentes’, porque a documentação do Choice orienta mandar a lista completa das opções que sobrarem.

Dá pra confiar no Jev pra decidir qual nota é mais recente ou contar quantos links já existem no parágrafo?

Não é recomendado. A página de jaggedness do jev-1.13 avisa que contagem não é confiável e que o erro cresce com o tamanho do que é contado, e que datas são lidas como texto, não como quantidades ordenadas. Pra esse fluxo de link o Jev entra só na escolha entre candidatos, não em lógica de contagem ou ordenação temporal.

Como instalar a skill de agente da TypeSafe se eu quiser codar esse fluxo junto com o Claude Code?

No Claude Code a instalação é claude plugin marketplace add typesafe-ai/skills seguido de claude plugin install typesafe@typesafe-ai. Em outros agentes o comando é npx skills add typesafe-ai/skills –skill typesafe-ai, e por padrão a instalação fica local ao projeto, usando -g só se tu quiser deixar global.

Por que incluir uma opção tipo ‘Nenhuma delas’ na lista de candidatos pra link?

Porque a documentação do Choice recomenda incluir uma opção de recusa sempre que a lista pode não cobrir a entrada real. Sem essa opção o modelo é obrigado a escolher alguma nota mesmo quando nenhuma tem relação com o parágrafo, e nem todo parágrafo que tu escreve precisa de link interno.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Claude Code

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

Blog | Mais populares