Nucleo propio: oye con whisper.cpp, piensa con un modelo de Ollama, habla con Piper, y hace RAG sobre los apuntes del usuario. 100% local, sin cuentas ni claves. Escrito bajo una restriccion dura, 4 GB de VRAM: el cerebro y whisper comparten tarjeta y solo caben porque estan dimensionados para ello. El RAG usa embeddings estaticos con busqueda hibrida; la voz clonada se sirve de una cache de frases. Incluye instalador (install.sh), requisitos, y documentacion del stack, del manejo de root y de las acciones. Los apuntes indexados y el diario NO se incluyen: son privados y el .gitignore los bloquea.
49 lines
2.2 KiB
Bash
Executable file
49 lines
2.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Sacar a JARVIS de la burbuja: que lo que ejecute sea en la maquina de verdad.
|
|
#
|
|
# El sintoma era que el asistente contestaba que "esta en un contenedor" y no
|
|
# podia hacer casi nada. Las 134 acciones del catalogo ya salian al host (todas
|
|
# llevan host:true), pero los comandos LIBRES —los que se inventa el modelo
|
|
# cuando lo que pides no esta en el catalogo— corrian dentro del sandbox, donde
|
|
# no hay ni tu Debian ni tus discos:
|
|
#
|
|
# dentro: PRETTY_NAME="GNOME 50 (Flatpak runtime)" sin /media, sin systemctl
|
|
# fuera: PRETTY_NAME="Debian GNU/Linux 12" /media, systemctl, docker
|
|
#
|
|
# Son dos capas distintas y hacen falta las dos:
|
|
#
|
|
# 1. `virtualization` (ajuste de Newelle). Decide si los comandos del modelo
|
|
# llevan delante `flatpak-spawn --host`. Estaba en true = todo dentro.
|
|
# Es lo que mira _host_prefix() en integrations/default_tools.py.
|
|
#
|
|
# 2. Los permisos del flatpak. Aunque los comandos salgan al host, las
|
|
# herramientas de FICHEROS de la app (leer, editar, indexar) son Python
|
|
# corriendo dentro: solo ven lo que el sandbox les deje. Estaba en
|
|
# `filesystems=home`, asi que fuera de tu carpeta personal no veia nada.
|
|
#
|
|
# Lo que esto NO quita: el candado de la contraseña al abrir, la confirmacion
|
|
# de lo destructivo, ni el dialogo de root. Esos siguen. Lo que cambia es que
|
|
# cuando TU autorizas algo, se ejecuta donde tiene que ejecutarse.
|
|
set -eu
|
|
|
|
APPID=io.github.qwersyk.Newelle
|
|
RAMA=${1:-master}
|
|
|
|
echo "1. comandos del modelo -> a la maquina, no a la burbuja"
|
|
flatpak run --command=gsettings "$APPID//$RAMA" set "$APPID" virtualization false
|
|
|
|
echo "2. permisos de ficheros -> todo el disco"
|
|
# host = el sistema de ficheros (salvo /usr y /etc, que van aparte)
|
|
# host-etc = /etc, para leer configuracion del sistema
|
|
# host-os = /usr, para mirar lo instalado
|
|
flatpak override --user \
|
|
--filesystem=host \
|
|
--filesystem=host-etc \
|
|
--filesystem=host-os \
|
|
"$APPID"
|
|
|
|
echo
|
|
echo "como queda:"
|
|
printf ' virtualization = %s\n' \
|
|
"$(flatpak run --command=gsettings "$APPID//$RAMA" get "$APPID" virtualization)"
|
|
flatpak info --show-permissions "$APPID//$RAMA" 2>/dev/null | grep -E "^filesystems=" | sed 's/^/ /'
|