FROM ghcr.io/openclaw/openclaw:latest USER root # 强制北京时间(解决 HF Spaces 默认 UTC 导致 agent 汇报时间错误) # 使用 OpenClaw 3.13 新增的 OPENCLAW_TZ 环境变量 ENV TZ=Asia/Shanghai ENV OPENCLAW_TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone WORKDIR /app # Install openclaw-china channels plugin RUN node openclaw.mjs plugins install @openclaw-china/channels || \ (echo "❌ Failed to install @openclaw-china/channels plugin" && exit 1) # Install wecom-app-ops skill (optional but recommended for wecom-app operations) RUN mkdir -p /root/.openclaw/skills && \ if [ -d "/root/.openclaw/extensions/openclaw-china/extensions/wecom-app/skills/wecom-app-ops" ]; then \ cp -a /root/.openclaw/extensions/openclaw-china/extensions/wecom-app/skills/wecom-app-ops /root/.openclaw/skills/ && \ echo "✅ wecom-app-ops skill installed"; \ else \ echo "⚠️ wecom-app-ops skill not found, skipping"; \ fi # --- Install Chromium and Playwright dependencies for agent-browser --- # 安装 Chromium 浏览器和所需的系统依赖(一次性安装所有依赖) RUN apt-get update && \ apt-get install -y --no-install-recommends \ python3-pip git \ chromium \ libxcb-shm0 libx11-xcb1 libx11-6 libxcb1 libxext6 libxrandr2 \ libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxi6 libgtk-3-0 \ libpangocairo-1.0-0 libpango-1.0-0 libatk1.0-0 libcairo-gobject2 \ libcairo2 libgdk-pixbuf-2.0-0 libxrender1 libasound2 libfreetype6 \ libfontconfig1 libdbus-1-3 libnss3 libnspr4 libatk-bridge2.0-0 \ libdrm2 libxkbcommon0 libatspi2.0-0 libcups2 libxshmfence1 libgbm1 && \ pip install --no-cache-dir requests pyyaml tavily-python --break-system-packages && \ rm -rf /var/lib/apt/lists/* # 设置 Playwright 环境变量(指向系统 Chromium,跳过浏览器下载) ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium ENV PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 # --- Install agent-browser CLI globally --- # agent-browser 需要全局安装才能作为命令使用 # 步骤 1: 安装 npm 包(包含 CLI 和 daemon) # 步骤 2: 下载浏览器(使用 --with-deps 自动安装系统依赖) RUN echo "📦 Installing agent-browser CLI..." && \ npm install -g agent-browser@latest && \ echo "✅ agent-browser npm package installed" && \ echo "📦 Installing browser and dependencies..." && \ agent-browser install --with-deps && \ echo "✅ agent-browser browser installed" && \ echo "🔍 Verifying installation..." && \ which agent-browser && \ agent-browser --version && \ echo "✅ agent-browser CLI installed and verified successfully" # 注意:ClawHub 技能(agent-browser、grok-search、deep-research-pro、feishu_docs) # 将在容器启动时通过 entrypoint.sh 安装,以确保始终获取最新版本 # Install ClawMate Companion plugin - 已停用 # RUN echo "📦 Installing ClawMate Companion..." && \ # git clone --depth 1 https://github.com/BytePioneer-AI/clawmate.git /tmp/clawmate && \ # mkdir -p /root/.openclaw/extensions && \ # cp -r /tmp/clawmate/packages/clawmate-companion /root/.openclaw/extensions/clawmate-companion && \ # cd /root/.openclaw/extensions/clawmate-companion && \ # npm install --omit=dev --no-audit --no-fund && \ # rm -rf /tmp/clawmate && \ # echo "✅ ClawMate Companion 安装成功" # ============================================================ # 敏感文件不再 COPY 进镜像,改为运行时从 Supabase 下载 # 以下只预创建目录结构,文件由 entrypoint.sh 下载填充 # ============================================================ # patches 目标目录(clawmate 补丁) - 已停用 # RUN mkdir -p /root/.openclaw/extensions/clawmate-companion/src/core \ # && mkdir -p /root/.openclaw/extensions/clawmate-companion/skills/clawmate-companion # characters 目标目录(Maggie 角色资源) - 已停用 # RUN mkdir -p /root/.openclaw/extensions/clawmate-companion/skills/clawmate-companion/assets/characters/maggie/images # workspace 目标目录(角色设定、任务文档等) RUN mkdir -p /root/.openclaw/workspace/memory # cron 目标目录 RUN mkdir -p /root/.openclaw/cron # config 目标目录 RUN mkdir -p /root/.openclaw # Make openclaw CLI available globally (agent exec tool needs it for `openclaw status` etc.) # Use symlink instead of wrapper script to avoid Node.js module resolution issues RUN ln -sf /app/openclaw.mjs /usr/local/bin/openclaw && chmod +x /app/openclaw.mjs # Copy and set entrypoint script COPY entrypoint.sh /app/entrypoint.sh # Fix line endings and set executable permission RUN sed -i 's/\r$//' /app/entrypoint.sh && chmod +x /app/entrypoint.sh # HF Spaces requires port 7860 EXPOSE 7860 HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost:7860/ || exit 1 # Use entrypoint to inject secrets at runtime CMD ["/app/entrypoint.sh"]