Claude Code¶
Claude Code je AI asistent na programovanie, ktorý sa spúšťa v termináli. Dokáže prehľadávať a upravovať súbory, vykonávať príkazy a pracovať s existujúcim zdrojovým kódom.
V infraštruktúre SAV sa Claude Code spúšťa v kontajneri Singularity na prihlasovacom uzle. Pripája sa priamo k službe Anthropic; lokálny server modelu, úloha vLLM ani SSH tunel nie sú potrebné.
Rýchly štart¶
Spustite skript na spustenie agenta:
cd ~/my-project
~/llm/claude.sh
Spúšťací skript zobrazí interaktívne menu relácií:
Claude Code session:
1) Continue last session
2) Start new session
3) Select previous session
4) List sessions
5) Exit
Select [1]:
Výberom možnosti spustíte Claude Code v aktuálnom pracovnom adresári.
Spúšťací skript¶
Uložte spúšťací skript do ~/llm/claude.sh a nastavte mu právo na spustenie:
chmod +x ~/llm/claude.sh
Spúšťací skript používa tieto predvolené cesty:
/home/$USER/llm/.container_passwd
/home/$USER/llm/.container_group
Tieto súbory umožňujú kontajneru identifikovať UID používateľa a jeho primárnu skupinu z hostiteľského systému. Vytvorte ich jednorazovo:
mkdir -p ~/llm
getent passwd root "$USER" > ~/llm/.container_passwd
getent group root "$(id -gn)" > ~/llm/.container_group
Ak sa zmenia údaje vášho účtu, vytvorte ich znova.
Autentifikácia¶
Claude Code sa pripája priamo k službe Anthropic. Autentifikáciu je potrebné nastaviť pomocou podporovaného spôsobu prihlásenia pre váš účet.
Nepoužíva sa API kľúč vLLM ani lokálny endpoint kompatibilný s OpenAI API.
Spúšťací skript pripojí váš domovský adresár do kontajnera. Claude Code tak získa prístup k používateľskej konfigurácii a môže medzi spusteniami uchovávať údaje relácií.
Používanie¶
claude.sh [WORKSPACE] [MODE] [-B HOST[:CONTAINER]] [-- CLAUDE_ARGS...]
WORKSPACE Directory to work in (default: current directory)
MODE --continue, --new, --resume or --list
With no MODE, an interactive menu is shown.
-B, --bind Additional bind mount (can be specified multiple times)
-- ARGS Arguments passed directly to Claude Code
Examples:
~/llm/claude.sh
~/llm/claude.sh /myproject/path
~/llm/claude.sh --continue
~/llm/claude.sh /myproject/path --new
~/llm/claude.sh --resume
~/llm/claude.sh --list
# Add an additional project directory to the container.
~/llm/claude.sh /myproject/path -B /project/<account_ID>:/project/<account_ID>
# Pass arguments directly to Claude Code.
~/llm/claude.sh -- --help
Režimy relácií¶
| Režim | Funkcia |
|---|---|
--continue |
Pokračuje v poslednej konverzácii v aktuálnom pracovnom adresári. |
--new |
Spustí novú konverzáciu. |
--resume |
Otvorí interaktívny výber relácie v Claude Code. |
--list |
Otvorí výber relácie. |
| (bez režimu) | Zobrazí interaktívne menu; kláves Enter vyberie Pokračovať v poslednej relácii. |
Interaktívne menu sa zobrazí ešte pred spustením kontajnera. Režim relácie preto môžete vybrať bez čakania na inicializáciu kontajnera.
Zobrazenie relácií
Claude Code neposkytuje samostatný príkaz sessions list, aký má Qwen Code.
Možnosť --list v spúšťacom skripte a položka 4 v menu preto otvárajú
interaktívny výber relácie pomocou príkazu claude --resume.
Claude Code ukladá údaje relácií do domovského adresára používateľa. Keďže
spúšťací skript pripája $HOME do kontajnera, história relácií a konfigurácia
zostávajú dostupné aj pri ďalších spusteniach.
Priebeh spúšťacieho skriptu¶
Spúšťací skript vykonáva tieto kroky:
- Načíta cestu ku kontajnerovému obrazu z premennej
CLAUDE_SIFa overí, či obraz existuje. - Spracuje argumenty príkazového riadka — pracovný adresár, režim relácie, ďalšie pripojené adresáre a argumenty pre Claude Code.
- Určí režim relácie — ak režim nebol zadaný, zobrazí interaktívne menu.
- Pripraví predvolené pripojenia adresárov a súborov — pracovný adresár, domovský adresár, socket Munge, konfiguráciu SLURM a súbory používateľských účtov.
- Pridá voliteľné pripojenia zadané pomocou
-Balebo--bind. - Načíta Singularity prostredníctvom systému environment modules.
- Spustí Claude Code v kontajneri s vybraným pracovným adresárom a argumentmi relácie.
Bez závislosti od vLLM
Na rozdiel od spúšťacieho skriptu Qwen Code, claude.sh nevyhľadáva SLURM
úlohy, nevytvára SSH tunely ani nekonfiguruje endpoint kompatibilný s OpenAI API.
Claude Code sa pripája priamo k službe Anthropic.
~/llm/claude.sh
#!/bin/bash
set -euo pipefail
# ----------------------------------------------------------------------
# Configuration
# ----------------------------------------------------------------------
CLAUDE_SIF="${CLAUDE_SIF:-/apps/images/vllm/x86_64/Claude_code_x86_64_Nov2026.sif}"
if [[ -z "$CLAUDE_SIF" || ! -f "$CLAUDE_SIF" ]]; then
echo "ERROR: CLAUDE_SIF is not set or the image does not exist." >&2
echo "Example: export CLAUDE_SIF=/path/to/Claude_code.sif" >&2
exit 1
fi
USER_HOME="$HOME"
USER_LLM_DIR="/home/${USER}/llm"
WORKSPACE="$PWD"
WORKSPACE_SET=0
MODE=""
EXTRA_ARGS=()
EXTRA_BINDS=()
# ----------------------------------------------------------------------
# Usage
# ----------------------------------------------------------------------
usage() {
cat <<EOF
Usage:
$(basename "$0") [WORKSPACE] [MODE] [OPTIONS] [-- CLAUDE_ARGS...]
Modes:
--continue Continue the last session
--new Start a new session
--resume Select a previous session
--list Open the session picker
Options:
-B, --bind HOST[:CONTAINER]
Add an additional bind mount (repeatable)
-h, --help Show this help
Examples:
$(basename "$0")
$(basename "$0") /myproject/path
$(basename "$0") --continue
$(basename "$0") /myproject/path --new
$(basename "$0") -B /project/<account_ID>:/project/<account_ID>
$(basename "$0") /project/<account_ID> -B /scratch/<account_ID>:/scratch/<account_ID> -- --model sonnet
Default bind mounts:
$HOME:$HOME
/run/munge:/run/munge
/var/spool/slurmd/conf-cache:/etc/slurm
/home/$USER/llm/.container_passwd:/etc/passwd
/home/$USER/llm/.container_group:/etc/group
EOF
}
# ----------------------------------------------------------------------
# Parse arguments
# ----------------------------------------------------------------------
while [[ $# -gt 0 ]]; do
case "$1" in
--continue|--new|--resume|--list)
MODE="$1"
shift
;;
-B|--bind)
if [[ $# -lt 2 ]]; then
echo "ERROR: $1 requires a bind specification." >&2
exit 1
fi
EXTRA_BINDS+=("$2")
shift 2
;;
--)
shift
EXTRA_ARGS+=("$@")
break
;;
-h|--help)
usage
exit 0
;;
-*)
echo "ERROR: Unknown option: $1" >&2
usage >&2
exit 1
;;
*)
if [[ "$WORKSPACE_SET" -eq 0 ]]; then
WORKSPACE="$1"
WORKSPACE_SET=1
else
echo "ERROR: Unexpected argument: $1" >&2
usage >&2
exit 1
fi
shift
;;
esac
done
# ----------------------------------------------------------------------
# Validate workspace
# ----------------------------------------------------------------------
WORKSPACE="$(realpath "$WORKSPACE")"
if [[ ! -d "$WORKSPACE" ]]; then
echo "ERROR: Workspace does not exist: $WORKSPACE" >&2
exit 1
fi
# ----------------------------------------------------------------------
# Interactive session menu
# ----------------------------------------------------------------------
case "$MODE" in
--continue)
CLAUDE_ARGS=(--continue)
;;
--new)
CLAUDE_ARGS=()
;;
--resume)
CLAUDE_ARGS=(--resume)
;;
--list)
CLAUDE_ARGS=(--resume)
;;
"")
if [[ ! -t 0 ]]; then
echo "Not a terminal. Pass --continue, --new," >&2
echo "--resume or --list explicitly." >&2
exit 1
fi
echo
echo "Claude Code session:"
echo
echo " 1) Continue last session"
echo " 2) Start new session"
echo " 3) Select previous session"
echo " 4) List sessions"
echo " 5) Exit"
echo
read -r -p "Select [1]: " CHOICE || CHOICE=1
# Pressing Enter selects the default.
CHOICE=${CHOICE:-1}
case "$CHOICE" in
1)
CLAUDE_ARGS=(--continue)
;;
2)
CLAUDE_ARGS=()
;;
3)
CLAUDE_ARGS=(--resume)
;;
4)
CLAUDE_ARGS=(--resume)
;;
5)
exit 0
;;
*)
echo "Invalid selection." >&2
exit 1
;;
esac
;;
*)
echo "Unknown option: $MODE" >&2
echo
usage >&2
exit 1
;;
esac
# Append additional Claude Code arguments.
CLAUDE_ARGS+=("${EXTRA_ARGS[@]}")
# ----------------------------------------------------------------------
# Default bind mounts
# ----------------------------------------------------------------------
BINDS=(
"$WORKSPACE:$WORKSPACE"
"$USER_HOME:$USER_HOME"
"/run/munge:/run/munge"
"/var/spool/slurmd/conf-cache:/etc/slurm"
"$USER_LLM_DIR/.container_passwd:/etc/passwd"
"$USER_LLM_DIR/.container_group:/etc/group"
)
# Append user-defined bind mounts.
for bind in "${EXTRA_BINDS[@]}"; do
BINDS+=("$bind")
done
# ----------------------------------------------------------------------
# Load Singularity
# ----------------------------------------------------------------------
if command -v module >/dev/null 2>&1; then
module load singularity
fi
if ! command -v singularity >/dev/null 2>&1; then
echo "ERROR: singularity command not found." >&2
exit 1
fi
# Check architecture.
if [[ "$(uname -m)" != "x86_64" ]]; then
echo "ERROR: This Claude Code image requires x86_64." >&2
exit 1
fi
# ----------------------------------------------------------------------
# Build bind arguments
# ----------------------------------------------------------------------
SINGULARITY_BINDS=()
for bind in "${BINDS[@]}"; do
SINGULARITY_BINDS+=(--bind "$bind")
done
# ----------------------------------------------------------------------
# Launch Claude Code
# ----------------------------------------------------------------------
singularity exec \
"${SINGULARITY_BINDS[@]}" \
--pwd "$WORKSPACE" \
--env "PATH=/usr/local/bin:/opt/agent_env/bin:/opt/slurm/bin:/opt/slurm/sbin:$HOME/.local/bin:/usr/bin:/bin" \
"$CLAUDE_SIF" \
bash -lc 'exec /usr/local/bin/claude "$@"' -- "${CLAUDE_ARGS[@]}"
Pripojenie SLURM na clustri Devana
Na clustri Devana je potrebné pripojiť SLURM nasledovne -- bind /etc/slurm:/etc/slurm &
--env "PATH=/usr/local/bin:/opt/agent_env/bin:$HOME/.local/bin:/usr/bin:/bin"
!!!
Zodpovedné používanie agentov¶
Claude Code dokáže vykonávať príkazy a upravovať súbory. Keďže beží na prihlasovacom uzle, príkazy vykonávané priamo agentom sa spúšťajú na tomto uzle.
Spúšťací skript sprístupňuje SLURM v kontajneri pripojením socketu Munge
a konfigurácie SLURM. Claude Code tak môže používať príkazy ako sbatch,
srun, squeue a scancel.
Pri výpočtovo náročných úlohách nastavte Claude Code tak, aby úlohy odosielal do SLURM, namiesto priameho vykonávania výpočtov na prihlasovacom uzle.
For example:
Compile the software and run its test suite. Submit the build and tests
through SLURM to the CPU partition using the appropriate project account.
Check the job status and report the output.
Agent môže odosielať úlohy v rámci vašej alokácie
Príkazy vykonávané Claude Code môžu čerpať výpočtové zdroje vášho projektu.
V zadaniach preto uvádzajte účet, partition a časový limit úlohy. Bežiace úlohy
skontrolujete príkazom squeue -u "$USER".
Agent skutočne upravuje súbory
Claude Code spúšťajte v projektovom adresári, s ktorým má pracovať. Dôležité projekty spravujte pomocou systému na správu verzií, aby bolo možné zmeny skontrolovať a vrátiť späť. Pri povoľovaní automatického vykonávania príkazov postupujte opatrne.
Pripojené adresáre a súbory (bind mounts)¶
Spúšťací skript obsahuje predvolené pripojenia adresárov a súborov.
Ďalšie cesty možno zadať pomocou -B alebo --bind.
| Pripojenie | Účel |
|---|---|
$WORKSPACE:$WORKSPACE |
Sprístupní vybraný pracovný adresár v kontajneri |
$HOME:$HOME |
Sprístupní používateľskú konfiguráciu a trvalé údaje relácií |
/run/munge:/run/munge |
Sprístupní autentifikačný socket Munge potrebný pre SLURM |
/var/spool/slurmd/conf-cache:/etc/slurm |
Konfigurácia clustra Perun, vďaka ktorej klienti SLURM vedia, s ktorým riadiacim uzlom komunikovať |
/etc/slurm → /etc/slurm |
Konfigurácia clustra Devana, vďaka ktorej klienti SLURM vedia, s ktorým riadiacim uzlom komunikovať |
.container_passwd:/etc/passwd |
Umožňuje kontajneru identifikovať používateľský účet hostiteľského systému |
.container_group:/etc/group |
Umožňuje kontajneru identifikovať skupinu hostiteľského systému |
Premenná prostredia PATH obsahuje tieto adresáre:
/usr/local/bin— spustiteľný súbor Claude Code./opt/agent_env/bin— ďalšie nástroje prostredia agenta./opt/slurm/binand/opt/slurm/sbin— príkazy SLURM.$HOME/.local/bin— spustiteľné súbory nainštalované používateľom./usr/binand/bin— štandardné systémové nástroje.
Ďalšie pripojené adresáre¶
Spúšťací skript nemá pevne nastavené projektové adresáre. Ďalšie adresáre môžete pripojiť pri spustení agenta:
~/llm/claude.sh /myproject/path \
-B /project/<account_ID>/project/<account_ID> \
-B /scratch/<account_ID>:/scratch/<account_ID>
Možno zadať viacero možností -B. Každá sa odovzdá Singularity ako ďalšie
pripojenie adresára.
Zdrojové cesty pripojenia musia existovať
Všetky zdrojové cesty na hostiteľskom systéme musia existovať a musia byť prístupné. Ak požadovaný zdroj nemožno pripojiť, Singularity oznámi chybu.
Riešenie problémov¶
`CLAUDE_SIF nie je nastavená`
Cesta ku kontajnerovému obrazu nie je nakonfigurovaná.
export CLAUDE_SIF=/path/to/Claude_code.sif
Overte, či súbor existuje:
ls -lh "$CLAUDE_SIF"
Menu sa nezobrazuje
Interaktívne menu sa zobrazí iba vtedy, keď nie je zadaný režim relácie a spúšťací skript beží v termináli.
Run:
~/llm/claude.sh
Pri neinteraktívnom spustení zadajte režim explicitne:
~/llm/claude.sh --continue
`singularity: command not found`
Overte, či je dostupný modul Singularity:
module avail singularity
module load singularity
which singularity
`claude: command not found`
Overte, či je Claude Code nainštalovaný v kontajneri na očakávanej ceste:
singularity exec "$CLAUDE_SIF" which claude
Spúšťací skript očakáva túto cestu:
/usr/local/bin/claude
Ak je spustiteľný súbor nainštalovaný inde, upravte záverečný príkaz v claude.sh.
Príkazy SLURM v kontajneri zlyhávajú
Skontrolujte socket Munge, konfiguráciu SLURM a súbory používateľského účtu:
ls -l /run/munge
ls -l /var/spool/slurmd/conf-cache
ls -l ~/llm/.container_passwd
ls -l ~/llm/.container_group
Overte, či kontajner dokáže vykonávať príkazy SLURM:
singularity exec \
--bind /run/munge:/run/munge \
--bind /var/spool/slurmd/conf-cache:/etc/slurm \
--bind "$HOME/llm/.container_passwd:/etc/passwd" \
--bind "$HOME/llm/.container_group:/etc/group" \
--env "PATH=/opt/slurm/bin:/opt/slurm/sbin:/usr/bin:/bin" \
"$CLAUDE_SIF" squeue -u "$USER"
Pripojenie SLURM na clustri Devana
Na clustri Devana je potrebné pripojiť SLURM nasledovne -- bind /etc/slurm:/etc/slurm &
--env "PATH=/usr/local/bin:/opt/agent_env/bin:$HOME/.local/bin:/usr/bin:/bin"
| Prejav | Možná príčina |
|---|---|
squeue: command not found |
V premennej PATH chýbajú binárne súbory SLURM. |
Invalid user alebo chyby pri identifikácii účtu |
Súbory passwd alebo group chýbajú alebo sú zastarané. |
| Chyby prihlasovacích údajov Munge | Socket Munge nie je pripojený alebo služba Munge nebeží. |
Unable to contact slurm controller |
Konfigurácia SLURM chýba alebo odkazuje na nesprávny cluster. |
| Chyba pripojenia adresára | Zdrojová cesta na hostiteľskom systéme neexistuje alebo nie je prístupná. |
Claude Code nemá prístup k projektovým súborom
Overte, či je pracovný adresár pripojený a či máte právo zápisu:
ls -ld "$PWD"
Pre ďalšie adresáre pridajte explicitné pripojenie pomocou -B:
~/llm/claude.sh "$PWD" -B /project/shared:/project/shared
Reláciu nemožno obnoviť
Údaje relácií Claude Code sa ukladajú do domovského adresára používateľa.
Overte, či je $HOME pripojený do kontajnera a či je dostupná rovnaká
používateľská konfigurácia.
Interaktívny výber relácie otvoríte pomocou --resume:
~/llm/claude.sh --resume
Referenčná príručka¶
Príkazy¶
| Úloha | Príkaz |
|---|---|
| Interaktívne menu | ~/llm/claude.sh |
| Pokračovať v poslednej relácii | ~/llm/claude.sh --continue |
| Spustiť novú reláciu | ~/llm/claude.sh --new |
| Vybrať predchádzajúcu reláciu | ~/llm/claude.sh --resume |
| Zobraziť/vybrať relácie | ~/llm/claude.sh --list |
| Spustiť v inom pracovnom adresári | ~/llm/claude.sh ~/myproject/path |
| Pridať pripojenie adresára | ~/llm/claude.sh -B /data:/data |
| Odovzdať argumenty programu Claude Code | ~/llm/claude.sh -- --help |
Konfigurácia¶
| Premenná | Účel |
|---|---|
CLAUDE_SIF |
Cesta ku kontajnerovému obrazu Singularity s Claude Code. |