0) Potřebné balíčky
sudo apt update
sudo apt install docker-buildx
Užitečné prompty:
Prompt pro Junior AI Vývojáře (The Safe Assistant)
Role: Působ jako Junior Developer & Researcher. Tvým úkolem je asistovat Senior Architektovi při stavbě projektu. Tvou prioritou je rychlost u jednoduchých úkolů a absolutní opatrnost u jádra systému.
Tvé kompetence (Dělej samostatně):
Rutinní kód: Psaní jednoduchých funkcí, validací, UI komponent a unit testů podle existujících vzorů.
Research: Prohledávej internet pro dokumentaci knihoven, hledej nejlepší syntaxi a řešení běžných chyb (StackOverflow styl).
Dokumentace: Piš komentáře ke kódu a aktualizuj README na základě provedených změn.
Refaktoring (Basic): Přejmenovávání proměnných pro lepší čitelnost, rozbíjení příliš dlouhých řetězců.
Tvá omezení (STOP & REPORT):
Pokud narazíš na úkol, který vyžaduje:
Změnu v architektuře databáze nebo globálních stavů (Store/Context).
Změnu v jádru bezpečnosti, autentizace nebo šifrování.
Logiku, která má přesah do více než 2 hlavních modulů zároveň.
Optimalizaci výkonu, která by vyžadovala přepsání logiky Seniora.
Instrukce pro krizové situace:
Jakmile identifikuješ úkol z kategorie „Omezení“, okamžitě zastav práci na tomto úkolu a proveď následující:
Stručně popiš, v čem vidíš riziko a proč je úkol složitý.
Vytvoř položku do souboru TODO_SENIOR.md (nebo ji vypiš do konzole).
Pokračuj dalším jednoduchým úkolem ze seznamu, který nezasahuje do jádra.
Formát hlášení pro Seniora:
[⚠️ COMPLEX TASK DETECTED]
Soubor: [Cesta k souboru]
Problém: [Popis, proč na to nestačíš]
Návrh: [Tvé zjištění z internetu, jak by se to ASI mělo dělat]
Status: Přidáno na TODO list pro architekta.
Senior AI
Role: Působ jako Lead Software Architect & Senior Engineer. Tvým úkolem je převzít tento projekt, vyřešit kritickou logiku a připravit prostředí pro juniorního AI vývojáře (nižší model), který bude pokračovat v rutinní práci.
Tvůj cíl:
Analýza a Refaktoring: Identifikuj architektonické slabiny, cyklické závislosti a nepřehledný kód. Proveď refaktoring jádra na modulární architekturu. Kód musí být rozdělen do malých, jednoúčelových funkcí (max 20-30 řádků), které jsou snadno pochopitelné pro modely s malým kontextem.
Hard-Coding (Těžká práce): Implementuj všechny komplexní algoritmy, datové modely a integrační rozhraní, u kterých hrozí, že by je juniorní model nepochopil nebo pokazil.
Standardizace (Mantinely): Vytvoř soubor CONTRIBUTING.md nebo sekci v promptu s pravidly: jak pojmenovávat proměnné, jak ošetřovat chyby a jaký používat styl (např. "Vždy používej async/await", "Každá funkce musí mít JSDoc/Typing").
Dekompozice (Fronta úkolů): Rozbij zbytek projektu na atomické úkoly. Každý úkol musí být popsaný tak, aby k jeho splnění junior nepotřeboval znát zbytek celého projektu (tzv. Context-Free tasks).
Pravidla pro výstup:
Neukončuj práci, dokud není jádro stabilní a plně otestované.
U každého souboru, který vytvoříš, napiš do záhlaví komentář // ARCHITECT_NOTE:, kde vysvětlíš juniorovi, co v tomto souboru nesmí měnit a na co má navázat.
Výstupem bude:
Revidovaný kód jádra.
Technická dokumentace rozhraní (API/Moduly).
"Master Prompt for Junior" – instrukce, které vložím do Codex CLI pro další fázi.
"*
1) Struktura
~/ai/
├── tools/
│ ├── codex/
│ │ ├── node20/
│ │ │ ├── Dockerfile
│ │ │ ├── .dockerignore
│ │ │ └── README.md
│ │ ├── trixie/
│ │ │ ├── Dockerfile
│ │ │ ├── .dockerignore
│ │ │ └── README.md
│ │ └── full/
│ │ ├── Dockerfile
│ │ ├── .dockerignore
│ │ └── README.md
│ │
│ ├── gemini/
│ │ ├── slim/
│ │ │ ├── Dockerfile
│ │ │ ├── .dockerignore
│ │ │ └── README.md
│ │ └── full/
│ │ ├── Dockerfile
│ │ ├── .dockerignore
│ │ └── README.md
│ │
│ └── claude/
│ ├── slim/
│ │ ├── Dockerfile
│ │ ├── .dockerignore
│ │ └── README.md
│ └── full/
│ ├── Dockerfile
│ ├── .dockerignore
│ └── README.md
│
├── data/
│ ├── volumes/
│ │ ├── codex/
│ │ ├── gemini/
│ │ └── claude/
│ ├── cache/
│ │ ├── codex/
│ │ ├── gemini/
│ │ └── claude/
│ └── logs/
│ ├── codex/
│ ├── gemini/
│ └── claude/
│
└── projects/
├── project-a/
│ ├── src/
│ ├── docs/
│ ├── scripts/
│ ├── .ai/
│ │ ├── handoff.md
│ │ ├── context.md
│ │ ├── decisions.md
│ │ └── next-steps.md
│ ├── README.md
│ ├── TODO.md
│ └── .env.example
│
└── project-b/
├── src/
├── docs/
├── scripts/
├── .ai/
├── README.md
├── TODO.md
└── .env.example
3) Dockerfile - mocný
FROM node:20-trixie
USER root
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONUNBUFFERED=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1 \
npm_config_update_notifier=false
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
python3-dev \
pipx \
git \
git-lfs \
curl \
wget \
unzip \
zip \
xz-utils \
tar \
gzip \
bzip2 \
build-essential \
pkg-config \
ca-certificates \
gnupg \
ripgrep \
fd-find \
jq \
vim \
nano \
less \
procps \
sudo \
openssh-client \
rsync \
make \
cmake \
libssl-dev \
libffi-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
zlib1g-dev \
liblzma-dev \
tk-dev \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g npm@latest pnpm
RUN npm install -g @openai/codex@latest
# užitečné Python tooly pro AI workflow
RUN python3 -m pip install --break-system-packages \
uv \
virtualenv \
poetry \
pytest \
ruff \
black \
ipython
WORKDIR /workspace
# nech roota, pokud chceš "hodně volné" prostředí
CMD ["/bin/bash"]
3) Aliasy
#alias codexsafe='docker run --rm -it -u node -e HOME=/home/node -v "$(pwd)":/workspace -v "$HOME/ai/data/volumes/codex/node-home":/home/node -w /workspace --cap-drop=ALL --security-opt no-new-privileges codexbox:node20 sh -lc '"'"'codex resume --last || exec codex'"'"''
#alias codexauto='docker run --rm -it -u node -e HOME=/home/node -v "$(pwd)":/workspace -v "$HOME/ai/data/volumes/codex/node-home":/home/node -w /workspace --cap-drop=ALL --security-opt no-new-privileges codexbox:node20 sh -lc '"'"'codex resume --last || exec codex --full-auto'"'>
#alias codexunsafe='docker run --rm -it -u node -e HOME=/home/node -v "$(pwd)":/workspace -v "$HOME/ai/data/volumes/codex/node-home":/home/node -w /workspace codexbox:node20 sh -lc '"'"'codex resume --last || exec codex --dangerously-bypass-approvals-and-sandbox'"'"''
alias airoot='cd ~/ai'
alias aiprojects='cd ~/ai/projects'
alias aicodex='cd ~/ai/data/volumes/codex'
aiupdate() {
docker build --pull -t codexbox:node20 "$HOME/ai/tools/codex/node20" &&
docker run --rm codexbox:node20 codex --version &&
docker build --pull -t codexbox:trixie "$HOME/ai/tools/codex/trixie" &&
docker run --rm codexbox:trixie codex --version &&
docker build --pull -t codexbox:full "$HOME/ai/tools/codex/full" &&
docker run --rm codexbox:full codex --version &&
docker build --pull -t gemini:slim "$HOME/ai/tools/gemini/slim" &&
docker build --pull -t gemini:full "$HOME/ai/tools/gemini/full" &&
docker build --pull -t claude:slim "$HOME/ai/tools/claude/slim" &&
docker build --pull -t claude:full "$HOME/ai/tools/claude/full"
}
aiupdate() {
docker build --pull -t codexbox:node20 "$HOME/ai/tools/codex/node20" &&
docker run --rm codexbox:node20 codex --version &&
docker build --pull -t codexbox:trixie "$HOME/ai/tools/codex/trixie" &&
docker run --rm codexbox:trixie codex --version &&
docker build --pull -t codexbox:full "$HOME/ai/tools/codex/full" &&
docker run --rm codexbox:full codex --version &&
docker build --pull -t gemini:slim "$HOME/ai/tools/gemini/slim" &&
docker build --pull -t gemini:full "$HOME/ai/tools/gemini/full" &&
docker build --pull -t claude:slim "$HOME/ai/tools/claude/slim" &&
docker build --pull -t claude:full "$HOME/ai/tools/claude/full"
}
codexsafe() {
case "$PWD" in
"$HOME/ai/projects/"*)
docker run --rm -it \
-u node \
-e HOME=/home/node \
-v "$PWD":"/projects/$(basename "$PWD")" \
-v "$HOME/ai/data/volumes/codex/node-home":/home/node \
-w "/projects/$(basename "$PWD")" \
--cap-drop=ALL \
--security-opt no-new-privileges \
codexbox:node20 \
sh -lc 'codex resume --last || exec codex'
;;
*)
echo "Spusť to jen z ~/ai/projects/<projekt>"
return 1
;;
esac
}
codexauto() {
case "$PWD" in
"$HOME/ai/projects/"*)
docker run --rm -it \
-u node \
-e HOME=/home/node \
-v "$PWD":"/projects/$(basename "$PWD")" \
-v "$HOME/ai/data/volumes/codex/node-home":/home/node \
-w "/projects/$(basename "$PWD")" \
--cap-drop=ALL \
--security-opt no-new-privileges \
codexbox:node20 \
sh -lc 'codex resume --last || exec codex --full-auto'
;;
*)
echo "Spusť to jen z ~/ai/projects/<projekt>"
return 1
;;
esac
}
codexunsafe() {
case "$PWD" in
"$HOME/ai/projects/"*)
docker run --rm -it \
-u node \
-e HOME=/home/node \
-v "$PWD":"/projects/$(basename "$PWD")" \
-v "$HOME/ai/data/volumes/codex/node-home":/home/node \
-w "/projects/$(basename "$PWD")" \
codexbox:node20 \
sh -lc 'codex resume --last || exec codex --dangerously-bypass-approvals-and-sandbox'
;;
*)
echo "Spusť to jen z ~/ai/projects/<projekt>"
return 1
;;
esac
}