ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AgentScope Apple Container 工作区首次 initialize 失败怎么排查?

AgentScope Apple Container 工作区首次 initialize 失败怎么排查? AgentScope Apple Container 工作区首次 initialize 失败怎么排查【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope如果你在 macOS 上用 AgentScope 的AppleContainerWorkspace第一次调用initialize()或async with进入工作区时抛异常但之后不清楚卡在哪一步、该查什么。这篇文章给出完整的排查路径先核对前置条件再按报错信息定位失败阶段CLI 检查、镜像拉取、容器创建、容器内 bootstrap、网关健康检查最后重新执行并验证。适用环境macOS 26 且为 Apple silicon 的 MacIntel Mac 不受 Apple Container 支持Apple Container 1.0.0 或更高版本官方文档在 1.0.0 与 1.1.0 上测试过。initialize() 实际执行了哪些步骤首次initialize()按 AppleContainerWorkspace 的_provision_backend顺序执行CLI 检查运行container system version --format json确认containerCLI 已安装且系统服务在运行。拉取基础镜像用container image list判断本地是否已有镜像默认python:3.11-slim没有则container image pull。创建并启动容器container run -d --name as_ws_workspace_id --cpus 2 --memory 2G image sleep infinity若同名容器已存在则改为重新附着并视情况container start。容器内 bootstrap 启动 MCP 网关由 SandboxedWorkspaceBase 的_setup_mcp_gateway执行——仅当网关脚本不存在时运行 bootstrap 命令序列然后启动网关进程并轮询/health最多等 30 秒。每个阶段有各自不同的报错文本拿到异常后先对照下面的清单定位阶段再做对应检查。先核对前置条件官方工作区文档 列出的硬性前提逐项确认Apple Container 已安装。从 Apple 官方开发者站点Apple Container developer site安装。container system start已在运行。这是创建任何工作区之前的必做项。容器 VM 在首次initialize()期间必须能出网。bootstrap 阶段要通过apt-get安装系统包、通过安装脚本下载uv。文档明确指出如果容器 VM 无法访问互联网initialize 会在 bootstrap 步骤以 apt-get 或 curl 错误失败。在终端直接验证 CLI 与服务这正是initialize()内部_check_cli执行的命令container system version --format json该命令能返回 JSON 输出说明 CLI 已安装且系统服务在运行返回非零退出码说明服务未启动先执行container system start再继续。按报错信息定位失败阶段initialize()各阶段失败时抛出的RuntimeError文本不同直接对应到具体环节报错特征失败阶段处理方向Apple Container CLI is not installed.CLI 检查未安装containerCLI先安装 Apple ContainerApple Container CLI is not available. Ensure it is installed and running: \container system start.| CLI 检查 | 系统服务未运行执行container system start完整报错里还附带该命令的 stderr可先看 stderr 内容Failed to pull image python:3.11-slim: ...镜像名以你配置的base_image为准镜像拉取出网问题见下文网络排查报错尾部附带 pull 的 stderrFailed to create container as_ws_id: stderr: ... stdout: ...容器创建看附带的 stderr/stdout通常是container run参数或资源问题Failed to start container as_ws_id: ...重新附着已停止的容器看附带的 stderr... bootstrap failed (exit code) for: cmd\nstderr: ...\nstdout: ...容器内 bootstrap报错会给出具体失败的那条命令及其 stderr/stdout按命令判断gateway did not become healthy within 30s. Tail of /root/.agentscope/gateway.log:网关健康检查异常信息里已经带了网关日志最后 2000 字符直接读这段日志bootstrap 阶段的失败信息特别有用源码在每条命令失败时会把命令原文、退出码、stderr、stdout 全部放进异常。首次 bootstrap 的完整命令序列AppleContainerWorkspace 的_bootstrap_commands是apt-get updateapt-get install -y --no-install-recommends curl ripgrep从https://astral.sh/uv/install.sh下载安装uvuv venv /root/.agentscope/.venv再用uv pip install安装网关基础依赖mcp2.0.0、uvicorn、fastapi、httpx及你通过extra_pip传入的包uv pip install --no-deps agentscope。也就是说报错里的for: ...apt-get...指向第 1 步for: ...curl -LsSf https://astral.sh/uv/install.sh...指向第 2 步——这两步恰好都是文档说过的“VM 无出网时最先失败”的环节。每条 bootstrap 命令有 600 秒的超时限制超时会以 exit -1 失败。重点排查容器 VM 的出网能力文档给出了一个直接的网络验证命令。容器名固定为as_ws_workspace_idworkspace_id缺省时自动生成 UUID先用container list --all --format json找到你的容器然后# Verify the container VM can reach external hosts before using the workspace: container exec container-id curl -I https://pypi.org按文档的说法判断结果VM 内的 DNS 解析应当开箱可用如果TCP 连接超时但 DNS 能解析检查宿主机防火墙是否阻断了来自容器 VM 的流量容器 VM 默认共享宿主机网络栈如果宿主机走代理要确保代理/防火墙规则覆盖容器 VM 的出站流量。拉镜像阶段的Failed to pull image报错通常也是同一类出网问题的早期表现——镜像要经container image pull从远端拉取。修复后重新执行并验证修复环境问题后直接再次调用initialize()即可不需要手动清理。依据源码行为bootstrap只在网关脚本缺失时运行全新容器或上次 bootstrap 中断且每一步都是幂等的bootstrap 先写 glob helper、最后才写网关脚本部分成功的 bootstrap 下次initialize()会干净地重试第二次initialize()在容器仍在运行时是 no-op不会重复创建。验证工作区真正可用最短路径是文档里的生命周期示例import asyncio from agentscope.workspace import AppleContainerWorkspace async def main(): async with AppleContainerWorkspace() as ws: backend ws.get_backend() result await backend.exec_shell([echo, hello]) print(result.stdout) # Container is stopped and removed. asyncio.run(main())能看到hello输出说明容器创建、bootstrap、网关启动全链路通过。若要更严格地确认 bootstrap 装齐了依赖仓库测试设置APPLE_CONTAINER_LIVE1后运行使用的检查方式是在容器内执行rg --version uv --version python3 --version三者都返回正常即表示 bootstrap 成功rg来自 apt-get 步骤uv来自安装脚本步骤python3必须由基础镜像自带——这也是 文档 对base_image的要求Debian/Ubuntu 系且预装python3默认python:3.11-slim。边界与限制Intel Mac 直接不可用Apple Container 不支持 Intel Mac这类机器上的 initialize 失败不属于本文排查范围需要换用其他工作区后端。close()会删除容器且不保留文件系统状态官方文档明确“Filesystem state is not persisted”所以排查过程中close()之后重跑等价于全新的一次首次 initialize。网关健康检查的判据是 30 秒内/health通过如果走到这一步才失败异常信息里自带的gateway.log尾部日志就是第一手线索不要跳过它直接重跑。镜像短名与规范名等价python:3.11-slim与docker.io/library/python:3.11-slim换镜像时不必纠结写法但必须满足“Debian/Ubuntu 系 预装 python3”否则 bootstrap 的 apt-get 步骤会失败。相关文档Apple Container 工作区说明、工作区实现、常量定义镜像、端口、路径、沙箱工作区基类bootstrap 与健康检查、真实容器测试。【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表