Guida completa all'agente di sviluppo software autonomo con memoria persistente.
CodePalace è un agente di sviluppo software autonomo con memoria persistente. Analizza il progetto, pianifica le azioni, scrive codice, esegue test e consolida le conoscenze acquisite — tutto in automatico.
codepalace self-update per restare aggiornatoUn solo comando installa tutto: CodePalace, dipendenze Python e mempalace-rs (backend veloce in Rust).
# Installazione rapida (consigliata)
bash <(curl -sL https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/install_release.sh)
# Dopo l'installazione, ricarica la shell
source ~/.bashrc
# Verifica
codepalace version
| Opzione | Descrizione |
|---|---|
| --skip-rust | Salta installazione mempalace-rs (usa backend Python) |
| --skip-deps | Salta dipendenze di sistema |
| --skip-sqlite | Salta compilazione sqlite3 dai sorgenti |
| --skip-onnx | Salta installazione ONNX Runtime |
| --python-only | Solo dipendenze Python (= --skip-rust --skip-sqlite --skip-onnx) |
| --local-dir PATH | Usa directory locale per mempalace-rs |
| --force | Forza reinstallazione |
| --verbose | Output verboso per debug |
# Installazione rapida
bash <(curl -sL https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/install_mac.sh)
# Installazione rapida (consigliata)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
irm https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/install_windows.ps1 -OutFile install_windows.ps1; .\install_windows.ps1 -User
💡 Windows SmartScreen potrebbe mostrare un avviso al primo avvio: clicca "More info" > "Run anyway".
Scarica l'archivio per la tua piattaforma dalla cartella releases/ del repository:
# 1. Scarica ed estrai l'archivio
tar xzf codepalace_VERSIONE_piattaforma.tar.gz
# 2. Esegui lo script di installazione
# Linux:
cd codepalace_VERSIONE_piattaforma && bash install_release.sh --local
# macOS:
cd codepalace_VERSIONE_piattaforma && bash install_mac.sh --user
# Windows: estrarre lo ZIP e lanciare .\install_windows.ps1 -User
# 3. Avvia CodePalace
codepalace
Per installare solo il binario precompilato senza mempalace-rs:
bash <(curl -sL https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/install_release.sh)
💡 Per l'installazione via Docker, vedi la Sezione 8 — Docker. . Il backend MemPalace Rust è incluso automaticamente con install_release.sh; per i dettagli vedi la Sezione 7 — Memoria.
Almeno una chiave API è necessaria per funzionare. Imposta la variabile d'ambiente:
# OpenRouter (consigliata — accesso a tutti i modelli)
export OPENROUTER_API_KEY=sk-or-v1-...
# Oppure OpenAI diretto
export OPENAI_API_KEY=sk-...
Oppure usa il flag
--api-key:
codepalace run -t "Task" --api-key sk-or-v1-...
# Esegui il tuo primo task
codepalace run -t "Crea un file hello.py che stampa Hello World"
# Specifica la directory del progetto
codepalace run -t "Aggiungi test per Calculator" -p ./myproject
# Modalità interattiva
codepalace interactive -p ./myproject
| Comando | Descrizione |
|---|---|
| run | Esegue un singolo task e termina |
| interactive | Modalità interattiva REPL con controllo step-by-step |
| serve | Avvia il server API REST (HTTP POST /run) |
| tui | Interfaccia terminale (TUI) con Textual |
| webmempalace | Avvia il web server MemPalace (Flask dashboard) |
| self-update | Controlla e installa aggiornamenti |
| version | Mostra la versione corrente |
| help | Guida dettagliata di tutti i parametri |
Esegue un task specificato con --task o --task-file e termina automaticamente.
codepalace run -t "Crea una classe Calculator con add, subtract"
codepalace run --task-file task.txt -p ./myproject
codepalace run -t "Fix bug" --thinking high
REPL interattivo con comandi dedicati per esplorare il progetto, gestire la memoria e controllare il flusso.
codepalace interactive -p ./myproject
# Comandi disponibili nel REPL:
# task <desc> Esegui un task
# chat <msg> Chat rapida
# dir/read/tree Esplora progetto
# git/diff/log Operazioni git
# memory <query> Cerca in memoria
# recall [room] Richiama ricordi
# status/config Info sessione
# phase [name] Cambia fase
# auto Toggle auto-approve
# obs Toggle osservazioni
# help Mostra comandi
# exit/quit/q Esci
Avvia un server HTTP che espone l'endpoint POST /run per eseguire task via API.
codepalace serve --host 0.0.0.0 --port 8080
# Esempio di richiesta
curl -X POST http://localhost:8080/run \
-H "Content-Type: application/json" \
-d '{"task": "Crea un modulo auth", "project": "./myproject", "max_steps": 50}'
# Risposta:
# {"status": "success", "steps": 12, "total_reward": 0.85, "trajectory_summary": "..."}
Interfaccia utente ricca nel terminale basata su Textual. Supporta anche la modalità web via browser.
# TUI nel terminale
codepalace tui -p ./myproject
# TUI nel browser (richiede textual-serve)
codepalace tui --web --host 0.0.0.0 --port 8000
# Con modello specifico
codepalace tui --thinking medium
Avvia l'interfaccia web per esplorare e gestire la memoria MemPalace.
codepalace webmempalace
codepalace webmempalace --port 8080 --debug
| Flag | Descrizione | Default |
|---|---|---|
| -t, --task TEXT | Descrizione del task da eseguire | — |
| --task-file FILE | File contenente la descrizione del task | — |
| -p, --project DIR | Directory del progetto | ./projects |
| --max-steps N | Numero massimo di step (0 = illimitati) | 0 |
| Flag | Descrizione | Default |
|---|---|---|
| -m, --model MODEL | Modello LLM principale | z-ai/glm-5.1 |
| --classification-model | Modello per classificazione/analisi | openai/gpt-4o-mini |
| --base-url URL | URL base API | https://openrouter.ai/api/v1 |
| --api-key KEY | Chiave API (o variabili d'ambiente) | Da env |
| --thinking {high,medium,normal} | Livello ragionamento: high=esteso, medium=equilibrato, normal=senza | normal |
| --json-mode | Forza risposta JSON nelle chiamate API | off |
| --temperature FLOAT | Temperatura LLM (0 = deterministico) | 0.7 |
| Flag | Descrizione | Default |
|---|---|---|
| --confirm-every-steps N | Chiedi conferma ogni N step (modalità interattiva/TUI) | 100 |
| --max-retries N | Max retry per chiamata API | 3 |
| --max-task-retries N | Max retry con ripianificazione se il task fallisce | 2 |
| --context-max-tokens N | Dimensione massima context window in token | 64000 |
| --language {en,it} | Lingua dei prompt: en=English, it=Italiano | Da config |
| Flag | Descrizione |
|---|---|
| --no-dedup | Disabilita deduplicazione azioni |
| --no-compression | Disabilita compressione contesto |
| --no-prompt-caching | Disabilita prompt caching (aumenta i costi) |
| --no-git | Disabilita git auto-commit |
| Flag | Descrizione |
|---|---|
| --read-only | Modalità sicura: solo lettura, nessuna scrittura su file |
| --sandbox | Modalità sandbox: comandi shell ristretti |
| Flag | Descrizione | Default |
|---|---|---|
| --host HOST | Host del server | 0.0.0.0 |
| --port PORT | Porta del server | 8080 (serve) / 8000 (tui) |
| --web | TUI via browser (richiede textual-serve) | off |
| --debug | Modalità debug Flask (solo webmempalace) | off |
| Flag | Descrizione |
|---|---|
| --debug-logging | Abilita log DEBUG (prompt e risposte LLM complete) |
CodePalace utilizza una configurazione Dual-LLM: un modello principale per l'esecuzione e un modello di classificazione per l'analisi.
| Ruolo | Modello | Descrizione |
|---|---|---|
| Modello principale | z-ai/glm-5.1 | Utilizzato per generazione codice, pianificazione e esecuzione |
| Classificatore | openai/gpt-4o-mini | Utilizzato per analisi, classificazione task e decisioni rapide |
Entrambi i modelli sono accessibili tramite OpenRouter con una singola OPENROUTER_API_KEY. Per usare un modello diverso, usa i flag -m e --classification-model:
# Modello principale personalizzato
codepalace run -t "Refactor architecture" -m z-ai/glm-5.1 --thinking high
# Modello principale + classificatore personalizzati
codepalace run -t "Fix bug" -m z-ai/glm-5.1 --classification-model openai/gpt-4o-mini
# Usare OpenAI diretto (senza OpenRouter)
codepalace run -t "Task" --base-url https://api.openai.com/v1 --api-key sk-...
Il sistema MemPalace organizza la conoscenza in stanze tematiche. Ogni azione viene registrata e le lezioni apprese vengono consultate prima di ogni nuovo task per evitare errori passati.
| Stanza | Contenuto |
|---|---|
| error_patterns | Pattern di errore e soluzioni trovate |
| successful_strategies | Strategie che hanno funzionato con successo |
| code_templates | Template di codice riutilizzabili |
| task_history | Cronologia dei task completati |
| reward_signals | Segnali di reward per l'apprendimento RL |
| debugging_patterns | Pattern di debug e risoluzione problemi |
| project_schemas | Struttura e organizzazione dei progetti |
| dependency_maps | Mappa delle dipendenze tra componenti |
| style_guides | Convenzioni di stile e formattazione |
| test_strategies | Strategie di testing efficaci |
# Cerca nella memoria
memory Come gestire errori di connessione
# Richiama una stanza specifica
recall error_patterns
# Il Lesson Consultant consulta automaticamente la memoria
# prima di ogni task per evitare errori passati
MemPalace utilizza mempalace-rs come backend primario — un binario Rust standalone ad alte prestazioni che offre velocità fino a 10x superiori rispetto al vecchio backend Python.
| Caratteristica | mempalace-rs (Rust) ✅ | mempalace (Python) ⚠️ |
|---|---|---|
| Stato | Backend primario e consigliato | Legacy — deprecato |
| Prestazioni | Fino a 10x più veloce | Standard |
| Dipendenze | Nessuna (binario standalone) | chromadb, numpy, ecc. |
| Installazione | Incluso nella release compilata | Non più mantenuto attivamente |
⚠️ Il backend Python (mempalace) è deprecato e non riceve più aggiornamenti. Usa sempre mempalace-rs per i nuovi progetti.
💡 La memoria è persistente tra sessioni. Il Knowledge Graph collega entità e relazioni temporali per un richiamo contestuale efficiente. Il backend Rust è attivato di default e non richiede configurazione aggiuntiva.
Il modo più semplice per usare CodePalace con Docker:
# 1. Scarica l'immagine
docker pull codepalace:latest
# 2. Esegui un task (sostituisci la tua API key)
docker run -it --rm \
-e OPENROUTER_API_KEY=sk-or-v1-... \
-v $(pwd)/projects:/app/projects \
codepalace run "Crea un file hello.py"
💡 Per una configurazione persistente con docker-compose, vedi la sezione Docker Compose sotto.
# Server API in background
docker run -d --name codepalace-agent \
-e OPENROUTER_API_KEY=sk-or-v1-... \
-p 8080:8080 \
-v $(pwd)/projects:/app/projects \
codepalace serve
# Modalità interattiva
docker run -it --rm \
-e OPENROUTER_API_KEY=sk-or-v1-... \
-v $(pwd)/projects:/app/projects \
codepalace interactive
# TUI via browser
docker run -d --name codepalace-web \
-e OPENROUTER_API_KEY=sk-or-v1-... \
-p 8000:8000 \
codepalace web
Per un setup completo e persistente con volumi dati:
# Scarica i file di configurazione
curl -sL https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/docker-compose.user.yml -o docker-compose.user.yml
curl -sL https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/.env.example -o .env
# Configura le API key
nano .env
# Avvia il servizio
bash install_docker.sh
# oppure manualmente:
docker compose -f docker-compose.user.yml up -d
💡 Lo script install_docker.sh automatizza il download dell'immagine, la configurazione e l'avvio. Usa bash install_docker.sh --with-web per includere la TUI web.
| Comando | Descrizione |
|---|---|
| serve | Server API su 0.0.0.0:8080 (default) |
| run "task" | Esegue un singolo task |
| interactive | Modalità interattiva (richiede -it) |
| tui | TUI nel terminale |
| web | TUI via browser su 0.0.0.0:8000 |
| website | Avvia il sito PHP su porta 80 |
| shell | Shell interattiva per debug |
| version | Mostra la versione |
# Esegui un singolo task
docker compose run --rm agent run "Crea una classe Calculator"
# Esegui con modello specifico
docker run -it --rm \
-e OPENROUTER_API_KEY=sk-or-v1-... \
-v $(pwd)/projects:/app/projects \
codepalace run "Fix bug in parser"
# Modalità interattiva
docker run -it --rm \
-e OPENROUTER_API_KEY=sk-or-v1-... \
-v $(pwd)/projects:/app/projects \
codepalace interactive
# Shell per debug
docker compose run --rm agent shell
| Variabile | Descrizione | Default |
|---|---|---|
| OPENROUTER_API_KEY | Chiave API OpenRouter | — |
| OPENAI_API_KEY | Chiave API OpenAI (fallback) | — |
| GITHUB_PERSONAL_ACCESS_TOKEN | Token GitHub per MCP | — |
| BRAVE_API_KEY | Chiave API Brave Search | — |
| AGENT_PORT | Porta server API | 8080 |
| WEB_PORT | Porta TUI web | 8000 |
| PROJECTS_DIR | Directory progetti | /app/projects |
| MEMPALACE_DIR | Directory memoria MemPalace | /app/data/mempalace |
| MEMPALACE_BACKEND | Backend MemPalace: rust (consigliato) o python (deprecated) | rust |
⚠️ In Docker, self-update non è supportato. Aggiorna l'immagine con docker pull codepalace:latest e ricostruisci.
Oltre all'immagine Docker standard basata su Debian/Ubuntu, è disponibile un'immagine Alpine Linux per dimensioni ridotte (~40% più piccola).
# Build standard (senza ONNX Runtime)
docker build -f Dockerfile.alpine -t codepalace:alpine .
# Build con ONNX Runtime (~100MB aggiuntivi)
docker build -f Dockerfile.alpine --build-arg INCLUDE_ONNX=true -t codepalace:alpine-onnx .
docker run -it --rm \
-e OPENROUTER_API_KEY=sk-or-v1-... \
-v $(pwd)/projects:/app/projects \
codepalace:alpine serve
| Caratteristica | Standard (Debian) | Alpine |
|---|---|---|
| Dimensione immagine | ~1.2 GB | ~700 MB |
| libc | glibc | musl libc |
| Package manager | apt-get | apk |
| PHP | php8.2 | php83 |
| sqlite3 | Compilato da sorgenti | Compilato da sorgenti |
| ONNX Runtime | Supportato nativo | Limitato (richiede libstdc++) |
| Compatibilità PyInstaller | Full | Full (con musl detection) |
💡 L'immagine Alpine include PHP 8.3 per il sito web, sqlite3 compilato da sorgenti (≥3.35.0 per MemPalace) e supporto opzionale per ONNX Runtime tramite layer di compatibilità libstdc++.
CodePalace richiede sqlite3 ≥ 3.35.0 per MemPalace. Poiché molte distribuzioni Linux forniscono versioni precedenti, il sistema include un meccanismo automatico di patching:
runtime_hook_sqlite3.py) — Configura LD_LIBRARY_PATH prima dell'avvio dell'applicazione, includendo la directory del bundle PyInstaller e /opt/sqlite3/lib_sqlite_patch.py) — Cerca una versione aggiornata di libsqlite3 in percorsi multipli (bundle PyInstaller, /opt/sqlite3/lib, percorsi di sistema) e la precarica via ctypes.CDLL prima dell'import del modulo sqlite3 di Python| Piattaforma | Percorsi di ricerca |
|---|---|
| Linux (glibc) | /opt/sqlite3/lib, /usr/lib/x86_64-linux-gnu, /usr/lib64, /lib/x86_64-linux-gnu |
| Linux (Alpine/musl) | /opt/sqlite3/lib, /usr/lib, /lib, /lib/x86_64-linux-gnu |
| macOS | /usr/local/opt/sqlite3/lib, /opt/homebrew/opt/sqlite3/lib, /usr/local/lib |
| Windows | assets/sqlite3.dll, sqlite3.dll, %SYSTEMROOT%\System32 |
Il sistema di build supporta la compilazione di binari standalone tramite PyInstaller, con rilevamento automatico della piattaforma.
Lo script build_all.sh rileva automaticamente il sistema operativo, inclusa la distinzione tra Linux standard (glibc), WSL e Alpine/musl. La piattaforma Alpine viene rilevata tramite la presenza del comando apk o della stringa musl nell'output di ldd --version.
| Flag | Descrizione |
|---|---|
| --include-onnx | Includi ONNX Runtime nel binario (~100MB+) |
| --include-python-mempalace | Includi backend MemPalace Python (al posto di Rust) |
| --skip-rust | Salta compilazione del backend Rust |
⚠️ ONNX Runtime non ha wheel ufficiale per musl/Alpine. L'installazione richiede il layer di compatibilità libstdc++ (apk add libstdc++) e potrebbe non funzionare in tutti i casi. Per funzionalità AI locali complete, si consiglia l'immagine Docker standard.
Configurazione persistente di modello, temperatura, lingua e altri parametri. Si trova nella directory del progetto o in ~/.codepalace/.
{
"model": "z-ai/glm-5.1",
"classification_model": "openai/gpt-4o-mini",
"base_url": "https://openrouter.ai/api/v1",
"temperature": 0.7,
"thinking": "medium",
"language": "it",
"context_max_tokens": 64000,
"mempalace_backend": "rust",
"json_mode": true
}
💡 I parametri da riga di comando sovrascrivono models.json. La configurazione viene cercata in ordine: directory del progetto → ~/.codepalace/.
Configurazione utente e progetto che sovrascrive i valori predefiniti. Si trova nella directory del progetto o in ~/.codepalace/. Specifica solo i parametri che vuoi cambiare.
🎯 Campo description — Il campo più importante di user_config.json. La descrizione del progetto viene iniettata automaticamente nel contesto dell'agente ad ogni avvio come === LINEE GUIDA PROGETTO ===. Usa questo campo per definire le regole e le convenzioni che l'agente deve sempre seguire.
Una description efficace dovrebbe contenere:
{
"user_id": "Mario",
"current_project": "my_app",
"current_project_path": "/home/mario/projects/my_app",
"project_metadata": {
"name": "MyApp",
"version": "2.0.0",
"author": "Mario Rossi",
"description": "App web Flask per gestione ordini. Backend REST API in Python/Flask, frontend Vue.js. Usare type hints ovunque. Convenzione naming: snake_case per Python, camelCase per JS. Non modificare i file in legacy/. Test con pytest prima di ogni commit.",
"language": "python",
"frameworks": ["flask", "vue"]
},
"thinking": "medium",
"git_auto_commit": true
}
💡 La description viene letta da user_config.json → project_metadata.description. Se il campo è vuoto o assente, la sezione non appare nel contesto. Compilalo solo per i progetti dove vuoi che l'agente segua linee guida specifiche.
💡 Priorità di caricamento: user_config.json → models.json → variabili d'ambiente → valori predefiniti.
| Parametro | Descrizione | Default |
|---|---|---|
project_metadata.description | Linee guida progetto (iniettate nel contesto) | "" (vuoto) |
user_id | Identificativo utente | "user" |
current_project | Nome progetto corrente | "" |
current_project_path | Percorso progetto | directory corrente |
thinking | Livello di ragionamento | "medium" |
git_auto_commit | Commit automatico | true |
max_steps | Step massimi per task | 999999 |
sandbox_mode | Modalità sandbox (sola lettura) | false |
context_max_tokens | Token massimi contesto | 64000 |
CodePalace utilizza due directory distinte per separare configurazione e dati:
| Directory | Contenuto |
|---|---|
| ~/.codepalace/ | Configurazione utente: models.json, user_config.json |
| ~/.mempalace/ | Dati MemPalace: memoria, Knowledge Graph, logs |
| ~/.local/bin/ | Binario codepalace (installazione compilata) |
| ~/.local/share/codepalace/ | Applicazione completa (installazione compilata) |
| Variabile | Descrizione | |
|---|---|---|
| OPENROUTER_API_KEY | Chiave API OpenRouter (priorità alta) | |
| OPENAI_API_KEY | Chiave API OpenAI (fallback) | |
| CODEPALACE_DOCKER | Se impostata, configura per Docker | |
| PROJECTS_DIR | Directory progetti (default: ./projects) | |
| AGENT_PORT | Porta server API (per Docker) | |
| WEB_PORT | Porta TUI web (per Docker) | |
| MEMPALACE_BACKEND | Backend MemPalace: rust (consigliato) o python (deprecated) | rust |
| MEMPALACE_DIR | Directory dati MemPalace (default: ~/.mempalace) | |
| LD_LIBRARY_PATH | Percorsi librerie aggiuntive (SQLite, ONNX Runtime) |
# Aggiornamento automatico
codepalace self-update
# Oppure re-lancia lo script di installazione
bash <(curl -sL https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/install_release.sh)
# Con install_release.sh
bash <(curl -sL https://git.infinitech.it/forgejo-admin/codepalace_release/raw/branch/master/install_release.sh) --update
# Rimuovi il binario
rm ~/.local/bin/codepalace
# Rimuovi l'applicazione
rm -rf ~/.local/share/codepalace
# Rimuovi la configurazione (opzionale — conserva i dati!)
rm -rf ~/.codepalace
# Rimuovi i dati MemPalace (opzionale)
rm -rf ~/.mempalace
⚠️ Rimuovere ~/.mempalace elimina tutta la memoria accumulata. Se vuoi conservarla, fai un backup prima di disinstallare.
CodePalace è distribuito con licenza proprietaria. La licenza è gestita tramite il sistema License Manager integrato.
# Controlla lo stato della licenza
codepalace license status
# Mostra i dettagli della licenza
codepalace license info
| Tipo | Descrizione | Funzionalità |
|---|---|---|
| Community | Gratuita per uso personale | Core features, memoria base |
| Professional | Per sviluppatori professionisti | Tutte le features, priorità supporto |
| Enterprise | Per team e aziende | Tutto + supporto dedicato, SLA |
💡 Per informazioni dettagliate sulle licenze e per acquistare una licenza Professional o Enterprise, visita la pagina pricing o contattaci.
# Esegui un singolo task
codepalace run -t "Crea una classe Calculator con add, subtract"
# Task da file
codepalace run --task-file task.txt -p ./myproject
# Specifica progetto
codepalace run -t "Fix bug in parser" -p ./myproject
# Ragionamento esteso (migliore per task complessi)
codepalace run -t "Refactor the auth module" --thinking high
# Ragionamento bilanciato
codepalace run -t "Add input validation" --thinking medium
# Senza ragionamento extra (più veloce, più economico)
codepalace run -t "Add a comment" --thinking normal
# Read-only: l'agente può solo leggere, non scrivere
codepalace interactive -p ./myproject --read-only
# Sandbox: comandi shell ristretti
codepalace run -t "Analyze code" --sandbox
# Disabilita git auto-commit
codepalace run -t "Fix bug" --no-git
# Disabilita features per risparmiare token
codepalace run -t "Quick fix" \
--no-dedup \
--no-compression \
--no-prompt-caching
# Limita step massimi
codepalace run -t "Simple task" --max-steps 10
# Context window più ampia per progetti grandi
codepalace run -t "Refactor" --context-max-tokens 128000
# Avvia il server
codepalace serve --host 0.0.0.0 --port 8080
# Invia un task via curl
curl -X POST http://localhost:8080/run \
-H "Content-Type: application/json" \
-d '{
"task": "Crea un modulo di autenticazione",
"project": "./projects/myapp",
"max_steps": 50
}'
# Log completo (prompt e risposte LLM)
codepalace run -t "Debug this" --debug-logging
# Temperatura alta per soluzioni creative
codepalace run -t "Design a new architecture" --temperature 0.7
← Torna alla Homepage