IA y agentes
Rebase incluye cuatro elementos distintos para asistentes de IA, y cada uno resuelve un problema diferente. Vale la pena saber a cuál de ellos estás recurriendo:
| Qué es | Quién lo consume | |
|---|---|---|
| Servidor MCP | Un servidor Model Context Protocol basado en stdio con 40 herramientas sobre tu esquema, datos, usuarios, almacenamiento, cron y servidor de desarrollo | Un asistente, en tiempo de ejecución |
| Skills de agentes | 20 archivos de skills en Markdown escritos en tu repositorio mediante rebase skills install |
Un asistente, como material de referencia |
| Archivos de instrucciones | ai-instructions.md además de archivos de puntero por asistente, generados por rebase init |
Un asistente, como reglas siempre activas |
| Claves de API | Credenciales de máquina con alcance limitado, por colección y por operación | Cualquier elemento que llame a la API HTTP |
Los tres primeros tratan de dotar al asistente de conocimiento y herramientas. El cuarto es el único que decide lo que realmente puede hacer.
La parte que importa: a qué puede acceder un agente
Sección titulada «La parte que importa: a qué puede acceder un agente»Un agente con herramientas sobre tu base de datos es un llamador de API ordinario que simplemente decide su propia siguiente solicitud. Rebase no intenta restringirlo mediante instrucciones: un prompt no es un mecanismo de control de acceso, y un agente que lee tus filas está leyendo texto que otra persona podría haber escrito. La restricción debe residir por debajo del agente, en la credencial que porta.
Rebase le otorga a esa credencial dos compuertas independientes:
- La lista de permisos de la clave de API. Declarada por colección y por operación,
donde
deletese puede separar dewrite, que suele ser el permiso que deseas denegar a un agente al que, por lo demás, se le permite editar. - Seguridad a nivel de fila (RLS). Las claves de API no eluden RLS. Una clave se conecta como el
rol de Postgres
rebase_usercomo cualquier otro llamador, por lo que tus políticas siguen decidiendo qué filas se devuelven.
Ambas deben permitir una solicitud. Ninguna sustituye a la otra, y la segunda
es la razón por la cual una clave con permisos "*" aún puede devolver un conjunto
de resultados vacío.
Un detalle que suele confundir: el ajuste access: "public" de una colección amplía qué
filas puede ver un llamador, no quién puede llamar. Es una declaración sobre la
visibilidad de las filas, no sobre la autenticación. Concederlo no añade a un llamador a la
lista de permisos, y denegarlo no detiene a ninguno.
La mecánica (creación de claves, el JSON de permisos, rotación, caducidad, límites de velocidad) se detalla en API REST → Claves de API. No pases por alto Reglas de seguridad (RLS); la segunda compuerta solo es tan buena como las políticas que hayas escrito.
Búsqueda vectorial
Sección titulada «Búsqueda vectorial»Rebase cuenta con un tipo de propiedad vector nativo en Postgres y un
método de consulta .vectorSearch() con distancias cosine, l2 e inner_product.
Ya está documentado, en dos lugares en vez de uno:
- Consulta de datos → Búsqueda vectorial — el método del SDK,
el campo
_distanceque añade a cada fila y las consideraciones - API REST → Búsqueda vectorial — los
parámetros de consulta
vector_search,vector,vector_distanceyvector_threshold
Tres aspectos que debes saber antes de diseñar en torno a esto. Rebase almacena y busca
embeddings; no los calcula: no hay ningún proveedor de embeddings, configuración
de modelo ni clave de API en ningún lugar de Rebase, por lo que generar los vectores es tu responsabilidad.
pgvector es un requisito previo. La imagen de base de datos del scaffold ya
la incluye, así que un proyecto creado con rebase init no necesita nada aquí;
apuntando a una base de datos aprovisionada por otra persona, necesitas una
imagen que lleve la extensión y un rol con permiso para ejecutar
CREATE EXTENSION vector; una vez — Rebase no instala extensiones por ti. Y
cada columna vectorial obtiene un índice HNSW para la distancia coseno,
porque coseno es lo que mide vectorSearch salvo que pases distance: un
índice sirve exactamente a un operador. Ajústalo, o desactívalo, en la
propiedad: consulta El índice.
Tampoco es posible suscribirse a consultas vectoriales; .vectorSearch(...).listen() es
rechazado con VECTOR_SEARCH_NOT_LIVE.
Para la búsqueda léxica (texto completo clasificado sobre los campos que especifiques, incluyendo contenido JSONB y arrays), consulta Búsqueda. Es un mecanismo diferente y ambos no interactúan entre sí.
Próximos pasos
Sección titulada «Próximos pasos»- Servidor MCP — conecta Claude Code, Cursor o cualquier cliente MCP
- Skills de agentes —
rebase skills instally las 20 skills - Archivos de instrucciones de IA — el patrón de reglas estructuradas
