81 lines
2.7 KiB
Bash
81 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
ensure_root
|
|
detect_pkg_manager
|
|
pkg_install curl
|
|
pkg_install git || true
|
|
|
|
if ask_to_install "Builder-Agent"; then
|
|
echo ""
|
|
read -rp "Ollama Router Base-URL (z.B. http://192.168.3.21:11437): " ROUTER_URL
|
|
ROUTER_URL=${ROUTER_URL:-http://localhost:11437}
|
|
echo ""
|
|
read -rp "Projektverzeichnis (leer = auto-detect): " PROJECT_DIR
|
|
if [ -z "${PROJECT_DIR}" ]; then
|
|
if git rev-parse --show-toplevel >/dev/null 2>&1; then
|
|
PROJECT_DIR="$(git rev-parse --show-toplevel)"
|
|
else
|
|
PROJECT_DIR="$(pwd)"
|
|
fi
|
|
fi
|
|
PROJECT_DIR="$(readlink -f "${PROJECT_DIR}")"
|
|
BASE="/srv/ai/builder"
|
|
$SUDO mkdir -p "${BASE}"
|
|
$SUDO tee "${BASE}/builder.yml" >/dev/null <<'EOF'
|
|
name: Builder-Agent
|
|
language: de
|
|
autonomy: soft
|
|
endpoint: "${ROUTER_URL}"
|
|
models:
|
|
planner: "llama3.1:8b-instruct"
|
|
reasoner: "huihui_ai/deepseek-r1-abliterated:14b"
|
|
coder_primary: "qwen2.5-coder:14b"
|
|
coder_secondary: "deepseek-coder-v2:16b"
|
|
cpu_fallback: "qwen2.5-coder:7b"
|
|
workspace:
|
|
project_dir: "${PROJECT_DIR}"
|
|
tests:
|
|
enabled: true
|
|
force_languages: []
|
|
prompts:
|
|
system: |
|
|
Du bist ein Builder-Agent (soft). Ziel: Probleme lösen mit minimaler Rückfrage.
|
|
Strategie:
|
|
1) Plane kurz (ToDo-Liste), dann implementiere iterativ im Workspace.
|
|
2) Führe nach jedem Schritt Tests/Lints aus (falls verfügbar). Repariere Fehler selbstständig.
|
|
3) Schreibe klare Commits; dokumentiere Änderungen kompakt in CHANGELOG.md.
|
|
4) Nur bei sicherheitsrelevanten/zerstörerischen Aktionen Rückfrage.
|
|
Liefere am Ende: TL;DR + nächste Schritte.
|
|
EOF
|
|
$SUDO sed -i "s|\${ROUTER_URL}|${ROUTER_URL}|g; s|\${PROJECT_DIR}|${PROJECT_DIR}|g" "${BASE}/builder.yml"
|
|
$SUDO tee "${BASE}/run_tests.sh" >/dev/null <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
ROOT="${1:-.}"
|
|
cd "${ROOT}"
|
|
if [ -f "requirements.txt" ] || ls -1 **/requirements.txt >/dev/null 2>&1; then
|
|
command -v pytest >/dev/null 2>&1 && pytest -q || true
|
|
fi
|
|
if [ -f "package.json" ]; then
|
|
if npm run | grep -q "test"; then npm test --silent || true; fi
|
|
if npm run | grep -q "lint"; then npm run lint --silent || true; fi
|
|
if npm run | grep -q "typecheck"; then npm run typecheck --silent || true; fi
|
|
fi
|
|
if [ -f "composer.json" ]; then
|
|
if [ -f "vendor/bin/pest" ]; then vendor/bin/pest || true
|
|
elif [ -f "vendor/bin/phpunit" ]; then vendor/bin/phpunit || true
|
|
fi
|
|
fi
|
|
if [ -f "Dockerfile" ]; then
|
|
docker build -q -t tmp-builder-test . || true
|
|
fi
|
|
if command -v shellcheck >/dev/null 2>&1; then
|
|
find . -type f -name "*.sh" -print0 | xargs -0 -r shellcheck || true
|
|
fi
|
|
EOF
|
|
$SUDO chmod +x "${BASE}/run_tests.sh"
|
|
echo "✅ Builder-Agent konfiguriert unter ${BASE} (Workspace: ${PROJECT_DIR})"
|
|
else
|
|
log "${YELLOW}⏭ Builder-Agent übersprungen.${NC}"
|
|
fi
|