IA & Agentes
O Rebase oferece quatro recursos distintos para assistentes de IA, e eles resolvem problemas diferentes. Vale a pena saber qual deles você está buscando:
| O que é | Quem consome | |
|---|---|---|
| Servidor MCP | Um servidor Model Context Protocol via stdio com 42 ferramentas para seu schema, dados, usuários, storage, cron e servidor de desenvolvimento | Um assistente, em tempo de execução |
| Agent skills | 21 arquivos de skill em Markdown gravados no seu repositório por rebase skills install |
Um assistente, como material de referência |
| Arquivos de instrução | ai-instructions.md mais arquivos de apontamento por assistente, gravados por rebase init |
Um assistente, como regras ativas contínuas |
| Chaves de API | Credenciais de máquina que têm escopos, por collection e por operação | Qualquer chamada para a API HTTP |
Os três primeiros servem para fornecer ao assistente conhecimento e ferramentas. O quarto é o único que decide o que ele pode de fato fazer.
A parte que importa: o que um agente pode manipular
Seção intitulada “A parte que importa: o que um agente pode manipular”Um agente com ferramentas sobre o seu banco de dados é um chamador de API comum que por acaso decide sua própria próxima requisição. O Rebase não tenta limitá-lo com instruções — um prompt não é um mecanismo de controle de acesso, e um agente que lê suas linhas está lendo texto que qualquer outra pessoa pode ter escrito. A restrição precisa existir abaixo do agente, na credencial que ele carrega.
O Rebase aplica a essa credencial duas barreiras independentes:
- Os escopos da chave. Declarados por operação e, quando você quiser, por
collection:
data:read:articles,data:write:articles.data:deleteé separado dedata:write, e geralmente é ele que você deseja reter de um agente que, de outra forma, teria permissão para editar. - Row-Level Security (RLS). As chaves de API não ignoram o RLS. Uma chave se conecta como a
role Postgres
rebase_usercomo qualquer outro chamador, de modo que suas políticas ainda decidem quais linhas retornam.
Ambas precisam permitir a requisição. Nenhuma substitui a outra, e a segunda
é a razão pela qual uma chave com data:read em todas as collections ainda pode retornar
um conjunto de resultados vazio.
Um detalhe que confunde muitos: o parâmetro access: "public" de uma collection expande quais
linhas um chamador pode ver, não quem pode chamar. Trata-se de uma declaração sobre
visibilidade de linhas, não sobre autenticação. Concedê-lo não dá um escopo a uma chave,
e retê-lo não bloqueia uma chave.
O funcionamento prático — criação de chaves, escolha de escopos, rotação, expiração, rate limits — é abordado em Chaves de API. Não deixe de consultar Regras de Segurança (RLS); a segunda barreira só é tão eficaz quanto as políticas que você escreveu.
Busca vetorial (Vector search)
Seção intitulada “Busca vetorial (Vector search)”O Rebase possui um tipo de propriedade vector nativo no Postgres e um
método de consulta .vectorSearch() com distâncias cosine, l2 e inner_product.
Isso já está documentado em dois locais:
- Consultando Dados → Busca Vetorial — o método
do SDK, o campo
_distanceadicionado a cada linha e as ressalvas - REST API → Busca Vetorial — os parâmetros de
consulta
vector_search,vector,vector_distanceevector_threshold
Três pontos a saber antes de planejar sua arquitetura: O Rebase armazena e busca
embeddings; ele não os calcula — não há provedor de embeddings, configuração
de modelo ou chave de API dentro do Rebase, portanto a geração dos vetores é sua responsabilidade.
O pgvector é um pré-requisito, e a instalação é opcional (opt-in).
database({ extensions: ["vector"] }) em config/resources.ts permite que o rebase db push e a validação de schema na inicialização executem CREATE EXTENSION IF NOT EXISTS vector para
você; sem isso, eles criam a coluna e deixam a extensão sob sua responsabilidade. De qualquer
forma, o servidor precisa de uma imagem contendo a biblioteca e uma role com permissão para instalá-la.
E toda coluna vetorial recebe um índice HNSW para
distância de cosseno, pois cosseno é o que o vectorSearch utiliza a menos
que você informe distance — um índice atende a exatamente um operador. Ajuste-o, ou
desative-o, na propriedade: veja O índice.
Consultas vetoriais também não suportam subscrições em tempo real; .vectorSearch(...).listen()
é recusado com VECTOR_SEARCH_NOT_LIVE.
Para busca lexical — busca full-text ranqueada nos campos informados, incluindo JSONB e conteúdo de arrays — consulte Busca. Trata-se de um mecanismo diferente e os dois não interagem.
Próximos passos
Seção intitulada “Próximos passos”- Servidor MCP — conecte o Claude Code, Cursor ou qualquer cliente MCP
- Agent Skills —
rebase skills installe as 21 skills - Arquivos de Instrução de IA — o padrão estruturado de regras