Spaces:
Sleeping
Sleeping
| # Dockerfile.ace — OpenClaw + ACE (self-improving agent) | |
| # | |
| # Extends the OpenClaw image with Python 3.12 and the ACE framework | |
| # pre-installed, so the agent can learn from past sessions automatically. | |
| # | |
| # Build (two-step, from the openclaw repo root): | |
| # | |
| # # 1. Build the base OpenClaw image | |
| # docker build -t openclaw:base . | |
| # | |
| # # 2. Extend with ACE | |
| # docker build -t openclaw:local -f Dockerfile.ace . | |
| # | |
| # Then set OPENCLAW_IMAGE=openclaw:local in your .env file. | |
| # | |
| # IMPORTANT: You must pass your LLM API key through docker-compose so | |
| # ace-learn can call the reflection model. Add to docker-compose.yml | |
| # under the gateway service's environment section: | |
| # | |
| # ACE_MODEL: "bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0" | |
| # # Plus one of: AWS_BEARER_TOKEN_BEDROCK, ANTHROPIC_API_KEY, | |
| # # OPENROUTER_API_KEY, or LITELLM_API_KEY | |
| ARG OPENCLAW_IMAGE=openclaw:base | |
| FROM ${OPENCLAW_IMAGE} | |
| USER root | |
| # --------------------------------------------------------------------------- | |
| # Python 3.12 + uv | |
| # --------------------------------------------------------------------------- | |
| # uv — fast Python package & version manager | |
| RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/usr/local/bin sh | |
| # Install Python 3.12 to a shared location | |
| # (bookworm ships 3.11; uv downloads an official standalone build) | |
| ENV UV_PYTHON_INSTALL_DIR=/opt/python | |
| RUN uv python install 3.12 | |
| # --------------------------------------------------------------------------- | |
| # ACE framework | |
| # --------------------------------------------------------------------------- | |
| RUN rm -rf /opt/ace \ | |
| && git clone --depth 1 https://github.com/Kayba-ai/agentic-context-engine.git /opt/ace \ | |
| && cd /opt/ace \ | |
| && uv sync --no-dev --extra claude-code --python 3.12 \ | |
| && uv pip install boto3 --python .venv/bin/python \ | |
| && chown -R node:node /opt/ace | |
| # Wrapper script: writes output to the persistent workspace volume | |
| # so the skillbook survives container restarts. | |
| RUN printf '#!/bin/bash\n\ | |
| set -euo pipefail\n\ | |
| export OPENCLAW_HOME="${OPENCLAW_HOME:-$HOME/.openclaw}"\n\ | |
| OUTPUT_DIR="$OPENCLAW_HOME/workspace/skills/kayba-ace"\n\ | |
| mkdir -p "$OUTPUT_DIR"\n\ | |
| cd /opt/ace\n\ | |
| exec .venv/bin/python examples/openclaw/kayba-ace/learn_from_traces.py \\\n\ | |
| --output "$OUTPUT_DIR" \\\n\ | |
| "$@"\n' > /usr/local/bin/ace-learn \ | |
| && chmod +x /usr/local/bin/ace-learn | |
| # Note: Do NOT set OPENCLAW_HOME here — the base image derives it from | |
| # $HOME (~/.openclaw). Setting it explicitly causes double-nesting. | |
| # --------------------------------------------------------------------------- | |
| # Restore original user and working directory | |
| # --------------------------------------------------------------------------- | |
| USER node | |
| WORKDIR /app | |