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

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-latestejev-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
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
Passo a passo: do parágrafo em edição ao link sugerido
- 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
- 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
- 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
- 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
- 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"
- 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
- 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
Como evitar poluir a nota com links fracos
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
Sintoma: o link entrou, mas tu ficou em dúvida
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.
Formações
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Blog | Mais populares

Como montar um workflow de automação combinando decisões do Jev em código
Aprenda a montar um workflow com Jev: decisões tipadas encadeadas em código, alta confiança agindo sozinha e casos incertos escalando para revisão.

Jev decide, LLM escreve: como dividir os papéis dentro de um agente de IA
Jev é o modelo que decide, não escreve: entenda como dividir papéis entre Jev e LLM dentro de um agente de IA e quando usar cada um.

Para quem o Jev serve (e para quem não serve)?
Jev serve pra roteamento, scoring e guardrails em IA, não pra texto ou código. Veja pra quem o Jev serve e quando evitar.
