Compare commits

...

3 commits

Author SHA1 Message Date
9e8420c287
[IMPROVED] Mejorar documentación del proyecto en README.md
- Expandir estructura de directorios con información detallada
- Añadir sección de seguridad y privacidad
- Reorganizar y mejorar la claridad de las explicaciones
- Detallar la organización de archivos en cada directorio
- Separar claramente el código (en ~/devs) de la configuración (en ~/.*)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-04-01 17:35:02 -05:00
a556225146
[IMPROVED] Mover directorio de sonidos a ~/.sounds
- Actualizar función play_sound en claude_voice.py para usar ~/.sounds
- Eliminar código de detección de directorio de proyecto
- Actualizar documentación en README.md para reflejar la nueva ubicación
- Simplificar estructura de directorios en toda la documentación

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-04-01 17:34:00 -05:00
0b68ca3e18
[IMPROVED] Mover directorio de Ollama a ~/.ollama
- Actualizar rutas para usar ~/.ollama como directorio estándar
- Mejorar manejo de múltiples formatos de volúmenes en el archivo compose
- Actualizar documentación en README.md para reflejar la nueva ubicación
- Agregar más detalles sobre directorios en el directorio home del usuario

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-04-01 17:32:43 -05:00
3 changed files with 67 additions and 38 deletions

View file

@ -41,14 +41,21 @@ bin/update.sh
### Estructura de Directorios
Durante la instalación y uso, MRDevs Tools crea varios directorios importantes:
MRDevs Tools utiliza una estructura organizada que separa el código (en ~/devs) y la configuración (en directorios ocultos):
- `~/devs/bin/`: Scripts y herramientas ejecutables
- `~/devs/ollama/`: Configuración y datos para Ollama AI
- `~/devs/sounds/`: Archivos de sonido para notificaciones
#### Código y scripts
- `~/devs/bin/`: Scripts ejecutables y herramientas principales
- `lib/`: Bibliotecas compartidas de funciones
- `msg/`: Archivos de mensajes multilingües
- `config/`: Configuración del sistema
#### Configuración y datos
- `~/.sounds/`: Archivos de audio para notificaciones y alertas
- `~/.ollama/`: Configuración, modelos y datos para Ollama AI
- `~/.vosk/`: Modelos para reconocimiento de voz local
- `~/.cortana/`: Configuración y tokens para Claude Code
- `~/.developer/`: Tokens y configuraciones para herramientas de desarrollo
- `~/.cache/devs/`: Caché de descargas y datos temporales
## 🔧 Funcionalidades Principales
@ -78,7 +85,7 @@ Durante la instalación y uso, MRDevs Tools crea varios directorios importantes:
| `bin/sora_enable.sh` | Activa el alias 'sora' para Aider permanentemente |
| `bin/sora_disable.sh` | Desactiva el alias 'sora' para Aider |
| `bin/ai_token.sh` | Gestiona tokens de múltiples proveedores de IA vía SOPS |
| `bin/ollama_up.sh` | Inicia el servicio Ollama (IA local) con podman-compose. Crea y configura `~/devs/ollama/` |
| `bin/ollama_up.sh` | Inicia el servicio Ollama (IA local) con podman-compose. Crea y configura `~/.ollama/` |
| `bin/ollama_down.sh` | Detiene el servicio Ollama (IA local) |
| `bin/ollama.sh` | Cliente para interactuar con Ollama (auto-inicia el servicio si es necesario) |
| `bin/nodered.sh` | Administra Node-RED con soporte para ejecución, monitoreo y gestión completa del servicio |
@ -201,7 +208,7 @@ bin/claude_voice.py --timeout 30
bin/claude_voice.py --text "Cómo puedo crear un archivo en Python"
```
> **NOTA**: Esta funcionalidad es experimental y requiere un micrófono configurado correctamente. El reconocimiento de voz utiliza Vosk, una solución local que no requiere conexión a Internet. La primera vez que ejecutes el script con un nuevo idioma, descargará automáticamente el modelo de reconocimiento correspondiente. Los archivos de sonido para notificaciones se almacenan en `~/devs/sounds/`.
> **NOTA**: Esta funcionalidad es experimental y requiere un micrófono configurado correctamente. El reconocimiento de voz utiliza Vosk, una solución local que no requiere conexión a Internet. La primera vez que ejecutes el script con un nuevo idioma, descargará automáticamente el modelo de reconocimiento correspondiente. Los archivos de sonido para notificaciones se almacenan en `~/.sounds/`.
#### Aider CLI
@ -440,20 +447,48 @@ bin/cocomo.py --project /ruta/al/proyecto --ignore "*.generated.js" --ignore "ve
El script analizará el código fuente, contará las líneas efectivas, y calculará estimaciones de esfuerzo, tiempo y costos utilizando las tarifas por hora configuradas.
## 🔐 Seguridad y Privacidad
MRDevs Tools está diseñado con la seguridad y privacidad en mente:
- **Almacenamiento seguro**: Todos los tokens y credenciales se almacenan encriptados usando SOPS
- **Directorios ocultos**: La configuración sensible se almacena en directorios ocultos (con prefijo `.`)
- **Sin telemetría**: Las herramientas no recopilan ni envían datos de uso
- **Podman como predeterminado**: Se usa Podman (sin privilegios) para mayor seguridad en contenedores
- **Ejecución local**: Las funcionalidades como reconocimiento de voz funcionan localmente sin enviar datos
## 🔌 Arquitectura del Sistema
### Estructura de Directorios
```
devs/
├── bin/ # Scripts ejecutables y herramientas
│ ├── lib/ # Bibliotecas compartidas
│ ├── msg/ # Archivos de mensajes multilingües
│ └── config/ # Configuraciones y parámetros
│ └── *.gitignore # Plantillas de .gitignore específicas por tipo de proyecto
├── ollama/ # Configuración y datos de Ollama (IA local)
│ └── data/ # Almacenamiento persistente para modelos de Ollama
└── sounds/ # Archivos de audio para notificaciones
$HOME/
├── devs/ # Directorio principal del proyecto
│ └── bin/ # Scripts ejecutables y herramientas
│ ├── lib/ # Bibliotecas compartidas
│ ├── msg/ # Archivos de mensajes multilingües
│ ├── config/ # Configuraciones y parámetros
│ │ └── *.gitignore # Plantillas para proyectos
│ ├── bootstrap.sh # Instalador básico
│ ├── update.sh # Actualizador de entorno
│ ├── ollama*.sh # Scripts de Ollama
│ ├── claude_voice.py # Asistente de voz para Claude Code
│ └── ... # Otros scripts
├── .sounds/ # Archivos de audio para notificaciones
├── .ollama/ # Configuración y datos de Ollama (IA)
│ ├── models/ # Modelos descargados
│ └── podman-compose.yml # Configuración del contenedor
├── .vosk/ # Modelos para reconocimiento de voz
│ └── models/ # Modelos de voz por idioma
├── .cortana/ # Configuración de Claude Code
│ └── cortana.sops.yaml # Token encriptado
└── .developer/ # Tokens y configuraciones de desarrollo
├── github.sops.yaml # Token de GitHub encriptado
└── forgejo.sops.yaml # Token de Forgejo encriptado
```
### Componentes Principales

View file

@ -42,13 +42,8 @@ class Colors:
def play_sound(sound_type):
"""Reproduce un sonido para indicar estados"""
# Obtener el directorio del script y del proyecto
script_dir = os.path.dirname(os.path.abspath(__file__))
bin_dir = os.path.dirname(script_dir) if script_dir.endswith("/bin") else script_dir
project_dir = os.path.dirname(bin_dir) if bin_dir.endswith("/bin") else os.path.dirname(os.path.abspath(__file__))
# Usar sounds en el directorio del proyecto, no en /bin
sounds_dir = os.path.join(project_dir, "sounds")
# Usar ~/.sounds como directorio estándar para archivos de sonido
sounds_dir = os.path.join(os.path.expanduser("~"), ".sounds")
if not os.path.exists(sounds_dir):
os.makedirs(sounds_dir, exist_ok=True)

View file

@ -55,8 +55,8 @@ source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
title="${head_000} ${head_002}"
# Create the directory for Ollama in the development directory
mkdir -p "${BIN_HOME}/ollama"
# Create the directory for Ollama in the user's home directory
mkdir -p "${HOME}/.ollama"
# Check if we should use podman or docker (prefer podman)
if command -v podman >/dev/null 2>&1; then
@ -83,27 +83,26 @@ fi
echo "Using ${COMPOSE_CMD} to start Ollama service..."
# Copy compose file if it doesn't exist in the new location
if [ ! -f "${BIN_HOME}/ollama/podman-compose.yml" ] && [ -f "${BIN_HOME}/${BIN_BASE}/ollama/podman-compose.yml" ]; then
cp "${BIN_HOME}/${BIN_BASE}/ollama/podman-compose.yml" "${BIN_HOME}/ollama/"
if [ ! -f "${HOME}/.ollama/podman-compose.yml" ] && [ -f "${BIN_HOME}/${BIN_BASE}/ollama/podman-compose.yml" ]; then
cp "${BIN_HOME}/${BIN_BASE}/ollama/podman-compose.yml" "${HOME}/.ollama/"
fi
# Change to the directory containing the compose file
cd "${BIN_HOME}/ollama"
cd "${HOME}/.ollama"
# Create a subdirectory for Ollama data
mkdir -p "${BIN_HOME}/ollama/data"
# Update the compose file to use ollama/data directory
if [ -f "${BIN_HOME}/ollama/podman-compose.yml" ]; then
# Update the volume mount to use ollama/data instead of data
sed -i 's|../../data:/root/.ollama|../ollama/data:/root/.ollama|g' "${BIN_HOME}/ollama/podman-compose.yml"
sed -i 's|${BIN_HOME}/data:/root/.ollama|${BIN_HOME}/ollama/data:/root/.ollama|g' "${BIN_HOME}/ollama/podman-compose.yml"
# Update the compose file to use the default Ollama directory
if [ -f "${HOME}/.ollama/podman-compose.yml" ]; then
# Update any old volume paths to use the standard location
sed -i 's|../../data:/root/.ollama|.:/root/.ollama|g' "${HOME}/.ollama/podman-compose.yml"
sed -i 's|${BIN_HOME}/data:/root/.ollama|${HOME}/.ollama:/root/.ollama|g' "${HOME}/.ollama/podman-compose.yml"
sed -i 's|./data:/root/.ollama|.:/root/.ollama|g' "${HOME}/.ollama/podman-compose.yml"
sed -i 's|../ollama/data:/root/.ollama|.:/root/.ollama|g' "${HOME}/.ollama/podman-compose.yml"
# Start Ollama service with compose
${COMPOSE_CMD} -f podman-compose.yml up -d
else
# Create a basic compose file if none exists
cat > "${BIN_HOME}/ollama/podman-compose.yml" <<EOF
cat > "${HOME}/.ollama/podman-compose.yml" <<EOF
version: '3'
services:
ollama:
@ -112,7 +111,7 @@ services:
ports:
- "11434:11434"
volumes:
- ./data:/root/.ollama
- .:/root/.ollama
restart: unless-stopped
privileged: true
EOF
@ -132,7 +131,7 @@ if ! ${CONTAINER_CMD} container exists ollama 2>/dev/null || ! ${CONTAINER_CMD}
${CONTAINER_CMD} run -d --name ollama \
--privileged \
-p 11434:11434 \
-v "${BIN_HOME}/ollama/data:/root/.ollama" \
-v "${HOME}/.ollama:/root/.ollama" \
--restart unless-stopped \
docker.io/ollama/ollama:latest
fi