尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

openclaw源码解读——入门与破局:4 开发环境搭建:从 clone 到运行,踩坑指南

openclaw源码解读——入门与破局:4 开发环境搭建:从 clone 到运行,踩坑指南 1. 准备工作以下内容记录为我本地安装、部署和搭建Agentteams, Openclaw以及我自己的计划开源项目ClawForge相关的安装内容openclaw的搭建就不再单独列。1. 我用的是win11系统所以我需要先在win安装wsl后续所有的安装都是在wsl里2. 需要预先装个docker我是在win上装了一个Docker Destop启动Docker Destop的时候wsl里的docker也就启起来了3. 在wsl里安装pnpm4. 拉源码1 Agentteams的源码2OpenClaw的源码:2. AgentTeams源码编译这一步仅演示直接编译的异常信息真正的部署在第5节进入AgentTeams目录make install编译和构建最后一步出错因为我的agentteams依赖openclaw-base但是找不到现在卡在最后一步第 25 步错误信息很明确FROM ${OPENCLAW_BASE_IMAGE} higress-registry.cn-hangzhou.cr.aliyuncs.com/agentteams/openclaw-base:20260423-8359cbc: not found这个openclaw-base镜像在阿里云仓库中不存在可能是版本号更新了或者镜像名称变了。2.1 问题根源AgentTeams 的 Manager 镜像依赖一个OpenClaw 基础镜像openclaw-base它包含了 OpenClaw 的运行环境和依赖。这个镜像通常会在构建时从阿里云或 GitHub 仓库拉取。我当前的AgentTeams的版本中 Dockerfile 中引用的版本20260423-8359cbc可能已经被更新或删除了。我们需要找到一个可用的版本或直接使用 GitHub 上的官方镜像。由于ClawForge是源码级的编程所以在这里openclaw基础镜像我也从源码上编译和构建3. OpenClaw源码编译和部署这一步开始编译安装和部署进入openclaw源码目录3.1 pnpm安装3.2 pnpm编译3.3. 执行pnpm setup并按提示执行source让配置生效4. 将本地构建的openclaw复制到AgentTeams4.1. 修改AgentTeams目录下的openclaw-base/Dockerfile告诉docker从本地cp openclaw镜像不要从官网拉# # AgentTeams OpenClaw Base Image - Shared base for Manager and Worker # ARG HIGRESS_REGISTRYhigress-registry.cn-hangzhou.cr.aliyuncs.com FROM ${HIGRESS_REGISTRY}/higress/ubuntu:24.04 ARG APT_MIRROR ARG HTTP_PROXY ARG HTTPS_PROXY ARG http_proxy ARG https_proxy ARG NPM_REGISTRYhttps://registry.npmjs.org/ ARG OPENCLAW_SOURCE./openclaw # ← 新增指向本地源码目录 ENV HTTP_PROXY${HTTP_PROXY} \ HTTPS_PROXY${HTTPS_PROXY} \ http_proxy${http_proxy} \ https_proxy${https_proxy} RUN if [ -n ${APT_MIRROR} ]; then \ for _src in /etc/apt/sources.list /etc/apt/sources.list.d/ubuntu.sources; do \ [ -f ${_src} ] sed -i \ s|archive.ubuntu.com|${APT_MIRROR}|g; \ s|security.ubuntu.com|${APT_MIRROR}|g; \ s|ports.ubuntu.com|${APT_MIRROR}|g ${_src} || true; \ done; \ fi \ apt-get update apt-get install -y \ git python3 make g curl \ jq gettext-base openssh-client ca-certificates procps tzdata \ rm -rf /var/lib/apt/lists/* RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ apt-get install -y nodejs \ npm install -g pnpm \ rm -rf /var/lib/apt/lists/* # 使用本地 OpenClaw 源码 COPY ${OPENCLAW_SOURCE} /opt/openclaw RUN cd /opt/openclaw \ pnpm config set registry ${NPM_REGISTRY} \ pnpm install \ pnpm build \ pnpm ui:build \ echo Verifying critical native addons... \ MSC_DIR/opt/openclaw/node_modules/matrix-org/matrix-sdk-crypto-nodejs \ MSC_VER$(jq -r .version ${MSC_DIR}/package.json) \ MSC_ARCH$(uname -m) \ case ${MSC_ARCH} in \ x86_64) MSC_FILEmatrix-sdk-crypto.linux-x64-gnu.node ;; \ aarch64) MSC_FILEmatrix-sdk-crypto.linux-arm64-gnu.node ;; \ *) echo Unsupported arch: ${MSC_ARCH} exit 1 ;; \ esac \ if [ ! -f ${MSC_DIR}/${MSC_FILE} ]; then \ echo matrix-sdk-crypto native addon missing — fetching ${MSC_FILE} v${MSC_VER}...; \ for i in 1 2 3 4 5; do \ curl -fsSL --retry 3 --retry-delay 2 \ https://github.com/matrix-org/matrix-rust-sdk-crypto-nodejs/releases/download/v${MSC_VER}/${MSC_FILE} \ -o ${MSC_DIR}/${MSC_FILE} break; \ echo attempt $i failed, retrying...; \ sleep $((i * 3)); \ done; \ fi \ if [ ! -f ${MSC_DIR}/${MSC_FILE} ] || [ ! -s ${MSC_DIR}/${MSC_FILE} ]; then \ echo ERROR: failed to fetch matrix-sdk-crypto native addon; \ ls -la ${MSC_DIR}/ 2/dev/null | head -20; \ exit 1; \ fi \ echo Native addon present: ${MSC_DIR}/${MSC_FILE} ($(stat -c%s ${MSC_DIR}/${MSC_FILE}) bytes) \ chmod x /opt/openclaw/openclaw.mjs \ ln -sf /opt/openclaw/openclaw.mjs /usr/local/bin/openclaw \ echo Linked openclaw CLI to /usr/local/bin/openclaw \ rm -rf \ .git .github \ test \ docker-compose.yml Dockerfile* \ scripts/git-hooks \ assets README-header.png \ .secrets.baseline .pre-commit-config.yaml \ .dockerignore .gitignore .gitattributes \ .oxfmtrc.jsonc .oxlintrc.json .shellcheckrc \ .detect-secrets.cfg .npmrc \ .env.example appcast.xml \ vitest*.config.ts tsdown.config.ts fly*.toml render.yaml \ rm -rf /root/.local/share/pnpm /root/.npm RUN npm install -g mcporter skills nacos-group/cli \ rm -rf /root/.npm ENV HTTP_PROXY \ HTTPS_PROXY \ http_proxy \ https_proxy4.2. 确保本地源码在正确位置在AgentTeams-main/AgentTeams-main目录下创建一个指向你 OpenClaw 源码的软链接cd /home/MY_BASE_DIR/AgentTeams-main/AgentTeams-main ln -s /home/MY_BASE_DIR/openclaw-main openclaw4.3. 构建命令 编译openclaw-base在 AgentTeams-main/AgentTeams-main 根目录执行docker build \ -t my-openclaw-base:latest \ -f openclaw-base/Dockerfile \ --build-arg NPM_REGISTRYhttps://registry.npmmirror.com \ --build-arg APT_MIRRORmirrors.aliyun.com \ --build-arg OPENCLAW_SOURCE./openclaw \ .4.4. 验证构建完成后你可以进入容器检查docker run --rm -it my-openclaw-base:latest /bin/bash cat /opt/openclaw/package.json如果看到正确的版本信息说明源码已经成功复制进去。4.5 退出临时容器5. 继续完成2. AgentTeams源码部署部分5.1. 确认my-openclaw-base:latest镜像存在docker images | grep my-openclaw-base5.2. 修改配置文件5.2.1. 修改配置文件由于AgentTeams 源码中所依赖的openclaw-base在源码中默认值为“20260423-8359cbc”全是写死的我们不需要用它的默认镜像我们用自己构建的镜像由于我们自己构建的镜像OPENCLAW_BASE_IMAGE 的值为 my-openclaw-baseOPENCLAW_BASE_VERSION 的值为 latest为了构建准确我们需要在Makefile里修改这两个变量的值这样就能使用我们自己构建的镜像进行源码及编程5.2.2. 重新构建Agent Teams直接构建整个AgentTeams网速快的话40多分钟就能构建完。命令AGENTTEAMS_LLM_API_KEYsk-xxx make install它会依次构建1. agentteams/agentteams-controller:latestdocker build --build-arg HIGRESS_REGISTRYhigress-registry.cn-hangzhou.cr.aliyuncs.com \ -t agentteams/agentteams-controller:latest \ ./agentteams-controller/2. agentteams/manager:latestdocker build --build-arg HIGRESS_REGISTRYhigress-registry.cn-hangzhou.cr.aliyuncs.com --build-arg BUILTIN_VERSIONlatest --build-arg OPENCLAW_BASE_IMAGEmy-openclaw-base:latest --build-context shared./shared/lib \ --build-arg AGENTTEAMS_CONTROLLER_IMAGEagentteams/agentteams-controller:latest \ -f manager/Dockerfile \ -t agentteams/manager:latest \ .3. agentteams/manager-copaw:latest 40多分钟docker build --build-arg HIGRESS_REGISTRYhigress-registry.cn-hangzhou.cr.aliyuncs.com --build-arg BUILTIN_VERSIONlatest \ --build-arg AGENTTEAMS_CONTROLLER_IMAGEagentteams/agentteams-controller:latest \ -f manager/Dockerfile.copaw \ -t agentteams/manager-copaw:latest \ .4. agentteams/worker-agent:latestdocker build --build-arg HIGRESS_REGISTRYhigress-registry.cn-hangzhou.cr.aliyuncs.com --build-arg OPENCLAW_BASE_IMAGEmy-openclaw-base:latest --build-context shared./shared/lib \ --build-arg AGENTTEAMS_CONTROLLER_IMAGEagentteams/agentteams-controller:latest \ -t agentteams/worker-agent:latest \ ./worker/5. agentteams/copaw-worker:latest1解决访问github网速慢的问题但这里会下载github上的CoPaw 包(https://github.com/johnlanni/CoPaw/archive/212405a30380bc319b02397c166d5296029c89b8.tar.gz) 所以如果你电脑访问github速度很慢可以在构建时传入代理参数设置代理或者手动下载包然后再解压缩到copaw目录我采用的是后者的方式。2) 如果你采用的是手动下载github压缩包需要修改copaw/Dockerfile让docker直接读取本地已经下载好的压缩包不要去拉github上的包3) 重新构建agentteams/copaw-worker:latest 20分钟docker build --build-arg HIGRESS_REGISTRYhigress-registry.cn-hangzhou.cr.aliyuncs.com --build-context shared./shared/lib \ --build-arg AGENTTEAMS_CONTROLLER_IMAGEagentteams/agentteams-controller:latest \ -t agentteams/copaw-worker:latest \ ./copaw/4手动安装如果你第5.2.2步执行得很顺利那么它会自动部署启动服务你不用管如果你是手动构建的那么需要手动执行安装脚本第一步运行安装脚本给脚本加上执行权限chmod x install/agentteams-install.sh准备一个Api Key执行安装脚本./install/agentteams-install.sh第二步登录页面设置manager的人格特质就可以开始愉快的聊天啦以下是各服务的端口网关主机端口容器内 8080 [18080]: 18080Higress 控制台主机端口容器内 8001 [18001]:Element Web 直接访问主机端口容器内 8088 [18088]:Manager 控制台主机端口容器内 18888 [18888]:Higress 控制台: http://localhost:18001用户名: admin / 密码: 您可以通过 Higress 控制台切换到其他 LLM 提供商OpenAI、Anthropic 等
返回列表