# pigo 协作镜像(单 agent 版) # # 构建(在仓库根目录执行,先本地交叉编译 pigo,再 docker build): # $env:GOOS="linux"; $env:CGO_ENABLED="0" # go build -trimpath -ldflags="-s -w" -o coop/tmp/pigo-linux-amd64 ./cmd/pigo # docker build -f coop/Dockerfile -t pigo-coop . # 或直接用 Linux 的 Go 工具链时跳过交叉编译步骤。 # # 运行示例(模型后端由外部调用方通过环境变量传入): # docker run --rm \ # -e MODEL=deepseek-chat \ # -e BASE_URL=https://api.deepseek.com \ # -e API_KEY= \ # -e TASK="请为 XX 编写设计文档并实现原型" \ # -e ROUND_MAX=6 \ # pigo-coop # # 协作方式:单个 pigo 进程在工作区 /blackboard/workspace 内完成 task.md 的任务, # 用 --resume 保持跨轮连续上下文;完成时通过 blackboard 工具创建 DONE, # supervisor 把结果以结构化 JSON(/blackboard/result.json)落盘。 # # 基础镜像复用本机已有的 pigo-worker:latest(Alpine,已含 bash/git/wget/flock/ # timeout/CA 证书与静态 pigo 二进制),这里仅覆盖 pigo 二进制为新代码(含 # blackboard 工具)并加入 supervisor 与协作 prompt,避免重新拉取 golang/alpine。 FROM pigo-worker:latest # solve/pentest tools: base image only ships busybox (no curl/python3), add them here. # pigo-worker 镜像 USER=agent,RUN 层以非 root 执行,apk 无法锁库,先切 root 再恢复。 USER root RUN apk add --no-cache curl wget python3 py3-pip jq openssl # Python 常用库:网络/加密/数据/解析等,覆盖多数协作与 CTF 场景。 # 使用清华 PyPI 镜像加速国内构建;--no-cache-dir 避免膨胀镜像。 # --break-system-packages:Alpine 3.20+ 标记 externally-managed,pip 全局安装需显式放行。 RUN pip3 install --no-cache-dir --break-system-packages \ -i https://pypi.tuna.tsinghua.edu.cn/simple \ requests urllib3 certifi idna charset-normalizer \ cryptography pyOpenSSL paramiko pyjwt \ PyYAML beautifulsoup4 lxml \ python-dotenv click tqdm \ numpy pandas \ httpx aiohttp websockets dnspython \ psutil pillow USER agent # 覆盖 pigo 二进制:coop/tmp/pigo-linux-amd64 由本地 Go 交叉编译(GOOS=linux CGO_ENABLED=0)。 # legacy builder 不支持 COPY --chmod(需 BuildKit)。权限位由主机侧 chmod 提供(构建前先 chmod 755)。 COPY coop/tmp/pigo-linux-amd64 /usr/local/bin/pigo COPY coop/supervisor.sh /usr/local/bin/supervisor.sh COPY coop/prompts /prompts COPY coop/AGENTS.md /prompts/AGENTS.md WORKDIR /blackboard ENTRYPOINT ["/usr/local/bin/supervisor.sh"]