# Claude Code 协作镜像(单 agent 版,与 blackboard 协议适配) # # 构建(在仓库根目录执行,构建上下文为 claude code/ 目录): # cd /mnt/e/Code/Go/awesomeProject/agent # DOCKER_BUILDKIT=0 docker build -f "claude code/Dockerfile" -t claude-coop "claude code/" # # 基础镜像用 node:22-alpine(自带 node 22 + npm,满足 Claude Code 的 Node 要求)。 # 在其上装系统工具(curl/wget/git/jq/openssl/ripgrep)和 python3 + 常用库, # 再全局安装 @anthropic-ai/claude-code 和 MCP SDK,最后放入协作组件 #(blackboard MCP server / supervisor / prompts)。 # # 与 pi-coop 的差异: # - 用 claude-code 替代 pi-coding-agent # - blackboard 工具从 pi extension 改为独立 MCP server(stdio 协议) # - 模型配置走 ANTHROPIC_* 环境变量(不是 pi provider 体系) FROM node:22-alpine # ---- 系统工具 + Python ---- # 先把 apk 源换成清华镜像并用 http(node:22-alpine 的 Alpine 3.24 用官方 CDN # 拉 APKINDEX 会报 TLS: unspecified error,改 http 绕过;装上 ca-certificates 后 # TLS 即恢复正常)。之后 apk add 装系统工具 + python3。 RUN sed -i 's|https://dl-cdn.alpinelinux.org|http://mirrors.tuna.tsinghua.edu.cn|g' /etc/apk/repositories \ && apk add --no-cache \ bash ca-certificates git ripgrep \ curl wget jq openssl file \ python3 py3-pip # ---- Python 常用库 ---- # 用清华 PyPI 镜像加速;--no-cache-dir 避免膨胀;--break-system-packages 放行 Alpine 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 # ---- 全局安装 Claude Code ---- # 使用 npmmirror 镜像加速国内下载。 # @anthropic-ai/claude-code:提供 claude CLI(headless 模式入口) RUN npm install -g \ --registry=https://registry.npmmirror.com \ @anthropic-ai/claude-code@latest # ---- 协作组件 ---- # blackboard MCP server 放 /mcp,supervisor 与 prompts 放默认路径。 RUN mkdir -p /mcp /prompts /blackboard COPY blackboard-server.mjs /mcp/blackboard-server.mjs COPY mcp-servers.json /mcp-servers.json COPY supervisor.sh /usr/local/bin/supervisor.sh COPY AGENTS.md /prompts/AGENTS.md COPY prompts /prompts RUN chmod +x /usr/local/bin/supervisor.sh # ---- MCP SDK 本地安装 ---- # ESM 模块解析要求依赖在脚本所在目录的 node_modules 内(全局安装的包不会被 # ESM import 解析到,NODE_PATH 也只对 CommonJS require 生效)。因此在 /mcp # 目录本地安装 @modelcontextprotocol/sdk,让 blackboard-server.mjs 能 import 到。 RUN cd /mcp && npm init -y >/dev/null 2>&1 \ && npm install \ --registry=https://registry.npmmirror.com \ @modelcontextprotocol/sdk@latest # ---- 非 root 用户 ---- # node:22-alpine 自带 node 用户(uid 1000),直接复用,与 pi-coop 的 uid 1000 对齐, # 便于 blackboard 挂载卷权限一致。 # 注意:--dangerously-skip-permissions 不能以 root 运行,必须用非 root 用户。 RUN chown -R node:node /mcp /prompts /blackboard /mcp-servers.json USER node WORKDIR /blackboard ENTRYPOINT ["/usr/local/bin/supervisor.sh"]