ARTICLE DETAIL

资讯详情

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

Agentic 运行时编排实战:从容器到多 Runtime 调度

Agentic 运行时编排实战:从容器到多 Runtime 调度 1. 从“ax”这个标题说起一个被低估的运行时编排命题第一次看到“ax”这个标题很多人会一头雾水——两个字母既不像产品名也不像技术缩写。但把热搜词摊开来看线索就清楚了agentic、orchestration、runtime、Kubernetes、ax调度、agentic rag、codemeter runtime、webview2 runtime、container runtime is not running……这些词指向的是同一个母题运行时runtime与编排orchestration在 agentic 场景下的重新组合。我个人的判断是“ax”在这里更像一个代号代表“agent execution”或者“agentic orchestration axis”这类概念——它不是一个具体的开源项目名而是一类问题的统称当你的系统里同时存在多个 agent、多个 runtime、多个调度层时怎么把它们串起来、跑稳、可观测、可恢复。这个问题在 2024 年之后变得特别尖锐因为 agentic 应用从 demo 走向生产暴露出来的第一批问题几乎全在运行时层容器运行时挂了、WebView2 运行时找不到、Codex CLI 的 runtime 组件缺失、GGUF 模型没有匹配的 LM runtime、LabVIEW 8.5 的 runtime engine 装不上、Steam runtime 在 Debian 上要手动禁用……这些报错看起来分散其实是一件事运行时是 agentic 系统的地基而地基的碎片化程度远超大多数人的预期。Kubernetes 把容器编排做成了事实标准但 agentic 场景下的“运行时”不只是容器——它还包括模型推理运行时、浏览器渲染运行时、CLI 工具运行时、甚至桌面应用的运行时。Karmada 正式毕业、华为云在 agentic cloud 上的投入本质上也是在回应同一个问题编排层要向下兼容多种 runtime向上支撑 agent 的自主决策。这篇文章适合谁看如果你正在把 agent 应用往生产环境推或者你在 Kubernetes 上跑过推理服务、踩过 runtime 缺失的坑或者你只是好奇“agentic orchestration”到底在编排什么那这篇内容会对你有用。我会从设计思路、核心细节、实操过程、问题排查四个层面把“ax”背后这套运行时编排的逻辑拆开讲尽量做到你看完能直接抄作业。2. 整体设计与思路拆解为什么 runtime 成了 agentic 时代的瓶颈2.1 从“容器编排”到“运行时编排”的范式转移Kubernetes 解决的核心问题是把一堆容器调度到一堆机器上保证它们按预期运行。这个模型在微服务时代非常成功因为微服务的运行时是统一的——大家都是容器都是 Linux 进程差异只在镜像里。但 agentic 应用打破了这个前提。一个典型的 agentic 系统里至少存在四类运行时模型推理运行时llama-server、vLLM、TGI、Ollama每种对模型格式GGUF、safetensors和硬件GPU 型号、显存的要求都不同。工具执行运行时Codex CLI、浏览器自动化、代码沙箱这些工具有自己的二进制依赖和 runtime 组件。界面渲染运行时WebView2、Electron、CEF桌面端 agent 应用绕不开。容器运行时containerd、CRI-O、DockerKubernetes 节点上的基础层。这四类运行时的生命周期、健康检查方式、故障模式完全不同。模型推理运行时可能因为显存碎片化而 OOM工具执行运行时可能因为二进制路径不对而直接找不到界面渲染运行时可能因为系统缺一个 VC 2022 可再发行组件而启动失败。Kubernetes 原生的 liveness/readiness probe 对这些场景太粗了——它只能告诉你进程还在不在没法告诉你“runtime 组件是否完整”。所以“ax”这类命题的核心设计思路我理解是在 Kubernetes 的编排能力之上加一层运行时感知层。这层要能做三件事识别当前节点上有哪些 runtime 可用、为每个 agent 任务匹配最合适的 runtime、在 runtime 缺失或异常时给出可操作的降级路径。2.2 为什么不在容器里把所有 runtime 都打包进去这是我在实际项目里被问得最多的问题。直觉上既然 runtime 这么麻烦那我做一个“万能镜像”把 llama-server、Codex CLI、WebView2、VC 运行库全塞进去不就行了实测下来这条路走不通原因有三个第一镜像体积会爆炸。WebView2 Runtime 单独就 100MB 以上CUDA 基础镜像动辄几个 GB再加上各种 CLI 工具和模型文件一个镜像轻松超过 10GB。在 Kubernetes 里拉这种镜像节点磁盘和网络带宽都扛不住滚动更新一次要等十几分钟。第二版本冲突无法调和。不同 agent 任务可能依赖不同版本的 runtime。比如任务 A 需要 LabVIEW Runtime Engine 8.5任务 B 需要 2023 版这两个版本在同一容器里共存几乎不可能。模型推理更典型GGUF 格式需要特定版本的 llama.cpp runtime而 safetensors 需要 vLLM两者的 CUDA 依赖和 Python 环境经常打架。第三安全边界会模糊。把所有 runtime 塞进一个容器等于把攻击面合并了。一个 runtime 的漏洞可能影响整个容器内的所有组件。Kubernetes 的隔离优势就没了。所以更合理的做法是runtime 作为节点级资源由 DaemonSet 或节点初始化脚本统一管理agent 容器通过挂载或 socket 调用。这样 runtime 的版本升级和 agent 的镜像更新解耦节点上可以同时存在多个版本的 runtimeagent 按需选择。2.3 编排层要解决的核心矛盾动态匹配与静态调度Kubernetes 的调度器是静态的——它根据资源请求CPU、内存、GPU把 Pod 放到节点上放上去之后就不管了。但 agentic 场景下runtime 的可用性是动态的一个节点上可能刚跑完一个 GGUF 推理任务llama-server 还在但显存没释放另一个节点上 WebView2 刚被某个桌面 agent 占用新的 agent 进来会冲突。“ax调度”这个词如果指向的是 agent execution 调度那它要解决的就是这个动态匹配问题。我的思路是引入一个运行时注册与心跳机制每个节点上的 runtime 管理器可以是 DaemonSet定期上报本节点可用的 runtime 列表、版本、当前负载。调度器在放置 agent Pod 时除了看 CPU/内存/GPU还要看 runtime 匹配度。如果目标节点没有所需 runtime调度器可以选择等待、降级到兼容 runtime、或者触发 runtime 的按需拉取。这个机制在 Karmada 这类多集群编排框架里尤其重要。Karmada 正式毕业意味着多集群调度能力成熟了但跨集群的 runtime 一致性仍然是个难题——集群 A 有 GPU 和 vLLM集群 B 只有 CPU 和 llama.cpp同一个 agent 任务在两边跑行为可能完全不同。所以编排层必须把 runtime 差异显式建模而不是假设“容器能跑就行”。3. 核心细节解析与实操要点runtime 缺失的典型场景与应对3.1 容器运行时未启动Kubernetes 节点上最常见的拦路虎[error cri]: container runtime is not running这个报错几乎每个搭过 Kubernetes 集群的人都见过。它的字面意思是 CRIContainer Runtime Interface运行时没跑起来但根因可能有好几层containerd 或 CRI-O 服务本身没启动。服务启动了但 socket 路径不对kubelet 连不上。服务在跑但配置里禁用了某个关键插件比如disable_plugins里把cri关了。磁盘满了runtime 无法创建容器。排查顺序我一般是这样先systemctl status containerd看服务状态再crictl info看 CRI 是否响应然后检查/etc/containerd/config.toml里的[plugins.io.containerd.grpc.v1.cri]段是否被注释或禁用。如果是 CRI-O看/etc/crio/crio.conf里的runtime_path和conmon路径。提示在 Kubernetes v1.26 之后Docker Shim 被正式移除如果你还在用 Docker 作为 runtimekubelet 会直接报 CRI 不兼容。这时候要么换 containerd要么装 cri-dockerd。我建议直接换 containerd少一层抽象问题少一半。实操中还有一个隐蔽的坑节点重启后 containerd 没设开机自启。systemctl enable containerd这条命令看起来简单但在批量部署时经常被漏掉。我见过一个 20 节点的集群重启后一半节点 NotReady排查半天发现就是没 enable。3.2 模型推理运行时缺失GGUF 与 LM Runtime 的匹配问题no lm runtime found for model format gguf这个报错通常出现在你用了一个不支持 GGUF 的推理框架或者框架版本太老。GGUF 是 llama.cpp 推出的模型格式它的优势是量化灵活、CPU 推理友好但缺点是生态相对封闭——vLLM 直到较新版本才支持 GGUF而且支持程度有限。我的经验是如果你的模型是 GGUF 格式优先用 llama.cpp 的 server 模式llama-server。它的 runtime 依赖最少编译出来就是一个二进制不依赖 Python 环境在 Kubernetes 里跑特别省心。启动命令大概是这样./llama-server -m /models/model.gguf \ --host 0.0.0.0 --port 8080 \ -ngl 99 -c 4096 \ --parallel 4-ngl 99表示把所有层都放到 GPU 上-c 4096是上下文长度--parallel 4是并发槽位数。这几个参数直接决定显存占用和吞吐需要根据显卡型号算。比如一张 24GB 的卡跑 7B Q4_K_M 模型-ngl 99大概占 6-7GB剩下的显存可以开多个 parallel 槽位。如果你非要用 vLLM 跑 GGUF那要确认 vLLM 版本在 0.4.0 以上并且装了gguf相关的依赖。但实测下来vLLM 跑 GGUF 的性能不如跑 safetensors因为它的优化主要针对 FP16/BF16。所以我的建议是GGUF 归 llama.cppsafetensors 归 vLLM不要混用。3.3 工具运行时缺失Codex CLI 与 WebView2 的依赖链unable to locate the codex cli binary or required runtime components这个报错本质是 agent 在执行代码生成任务时找不到它依赖的 CLI 工具。Codex CLI 这类工具通常需要 Node.js runtime、Python runtime、以及一些系统库。在容器里跑的时候最容易漏的是Node.js 版本不对比如工具要求 18镜像里是 16。缺少libstdc或glibc的特定版本。PATH 环境变量没包含工具的安装路径。我的做法是在 agent 镜像的 Dockerfile 里显式声明所有 runtime 依赖并且在启动脚本里加一个 preflight 检查#!/bin/bash set -e command -v node /dev/null 21 || { echo node not found; exit 1; } command -v codex /dev/null 21 || { echo codex cli not found; exit 1; } node -e console.log(process.version) | grep -q v18 || { echo node version mismatch; exit 1; } exec $这个 preflight 脚本看起来啰嗦但它能把“运行时缺失”的问题在容器启动阶段就暴露出来而不是等 agent 跑到一半才报错。在 Kubernetes 里这个脚本可以作为command的前置失败就直接 CrashLoopBackOff配合事件告警排查效率高很多。WebView2 的问题更典型。could not find the webview2 runtime这个报错在 Windows 容器或桌面 agent 里很常见。WebView2 Runtime 是微软的组件默认不随 Windows 容器镜像分发需要单独安装。在 Dockerfile 里可以这样处理RUN powershell -Command \ Invoke-WebRequest -Uri https://go.microsoft.com/fwlink/p/?LinkId2124703 \ -OutFile MicrosoftEdgeWebview2Setup.exe ; \ Start-Process -FilePath MicrosoftEdgeWebview2Setup.exe -ArgumentList /silent /install -Wait注意WebView2 的安装包链接会变建议把安装包提前下载好放进镜像构建上下文而不是在构建时动态下载。动态下载在 CI 环境里经常因为网络问题失败而且版本不可控。3.4 桌面应用运行时LabVIEW、NDI、VC 的共存问题labview runtime engine 8.5、ndi 6 runtime、microsoft visual c 2022 x86 minimum runtime 14这几个热搜词指向的是另一类场景桌面级 agent 或自动化工具依赖的运行时。这类 runtime 的特点是版本敏感、安装方式传统通常是 exe 安装包、在容器里跑需要静默安装参数。LabVIEW Runtime Engine 8.5 是个老版本很多工业自动化项目还在用。它的静默安装参数是/quiet但 8.5 版本对 Windows 版本有要求在 Windows Server 2022 上可能装不上。我的经验是如果必须在容器里跑用 Windows Server 2019 基础镜像成功率更高。VC 2022 x86 Minimum Runtime 14 的问题更普遍。很多 agent 工具链尤其是 Python 的科学计算包、OpenCV、以及一些 CLI 工具依赖 VC 运行库。在 Windows 容器里这个运行库默认可能没装全。安装命令是vc_redist.x86.exe /install /quiet /norestart vc_redist.x64.exe /install /quiet /norestart注意 x86 和 x64 都要装因为有些 32 位工具会依赖 x86 版本。我踩过的坑是只装了 x64结果某个 32 位的模型转换工具跑不起来报错信息还特别隐晦查了半天才发现是缺 x86 运行库。NDI 6 Runtime 是视频流场景的依赖安装时要注意它需要管理员权限并且在容器里可能需要额外的网络配置NDI 依赖 mDNS 发现。如果 agent 只是做视频处理而不做发现可以只装 runtime 不启用发现服务。4. 实操过程与核心环节实现在 Kubernetes 上搭建 runtime 感知的 agent 编排4.1 节点 runtime 清单的采集与上报第一步是让每个节点知道自己有什么 runtime。我写了一个简单的采集脚本放在 DaemonSet 的 initContainer 里输出一个 JSON 文件到宿主机路径#!/bin/bash OUTPUT/var/lib/ax/runtimes.json mkdir -p /var/lib/ax check_runtime() { local name$1 local cmd$2 if command -v $cmd /dev/null 21; then version$($cmd --version 21 | head -n1) echo {\name\:\$name\,\available\:true,\version\:\$version\} else echo {\name\:\$name\,\available\:false,\version\:\\} fi } { echo [ check_runtime llama-server llama-server echo , check_runtime vllm vllm echo , check_runtime codex codex echo , check_runtime node node echo ] } $OUTPUT这个脚本很粗糙但够用。关键是它把 runtime 的可用性变成了一个可被 Kubernetes 读取的文件。然后我写了一个小的 sidecar 或者 CronJob定期把这个文件的内容同步到 ConfigMap 或者直接暴露成节点注解node annotation。节点注解的方式更优雅因为 Kubernetes 调度器可以直接读节点注解来做亲和性调度。命令是kubectl annotate node $NODE_NAME \ ax.io/runtimesllama-server,vllm,codex \ ax.io/runtime-versionsllama-server:r2389,vllm:0.4.2,codex:1.2.0这样在 Pod 的 affinity 里就可以写affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: ax.io/runtimes operator: In values: - llama-server这个机制的好处是调度器不需要知道 runtime 的细节只需要匹配标签。runtime 的版本管理、升级、故障恢复都由节点侧的 DaemonSet 负责和调度解耦。4.2 agent 任务的 runtime 需求声明有了节点侧的 runtime 清单下一步是让 agent 任务声明自己需要什么 runtime。我在 Pod 的 annotation 里加了一个字段metadata: annotations: ax.io/required-runtimes: llama-serverr2389,codex1.2.0 ax.io/fallback-runtimes: vllmrequired-runtimes是硬性要求不满足就不调度。fallback-runtimes是降级选项如果硬性要求满足不了可以尝试用 fallback。这个逻辑需要写一个自定义的调度器扩展Scheduler Extender或者用 MutatingWebhook 在 Pod 创建时做校验。我实测下来用 MutatingWebhook 更简单因为它不需要改调度器配置。Webhook 的逻辑是读 Pod 的 annotation查节点注解如果不匹配就给 Pod 打一个Unschedulable的标记或者直接修改 Pod 的 nodeSelector。但 Webhook 的缺点是它不能阻止调度只能修改 Pod 定义。所以更彻底的做法还是用调度器扩展。如果你不想写调度器扩展还有一个取巧的办法用 initContainer 做 runtime 检查。initContainer 里跑一个脚本检查所需 runtime 是否存在不存在就 exit 1。这样 Pod 会一直重启直到被调度到合适的节点。这个办法的缺点是浪费调度周期但在小规模场景下够用。4.3 runtime 的按需拉取与预热有些 runtime 体积很大比如 CUDA 相关的推理运行时不可能在每个节点上都预装。这时候需要按需拉取。我的做法是在节点上跑一个 runtime 管理器DaemonSet它监听一个自定义资源CRDRuntimeRequest当有 Pod 需要某个 runtime 而节点上没有时管理器负责拉取。拉取的方式取决于 runtime 类型容器化的 runtime直接crictl pull镜像然后启动一个长期运行的 Pod。二进制 runtime从对象存储下载解压到/opt/ax/runtimes/。模型文件从模型仓库下载放到共享存储。预热是个关键优化。如果每次 agent 任务来了才拉 runtime冷启动时间可能几十秒到几分钟。我的做法是根据历史调度记录预测接下来可能需要的 runtime提前拉取。比如每天晚上跑批处理任务那就在任务开始前 10 分钟预热。提示预热策略要配合资源配额。如果节点磁盘有限预热太多 runtime 会导致磁盘压力。我一般给 runtime 存储设一个上限比如 200GB超过就按 LRU 淘汰。4.4 多集群场景下的 runtime 一致性Karmada 毕业之后多集群编排的门槛低了很多。但跨集群的 runtime 一致性仍然是个挑战。我的做法是在每个集群里都部署同一套 runtime 采集和上报机制然后在 Karmada 的控制面里聚合。具体来说每个成员集群的节点注解会被同步到 Karmada 的Cluster资源里。Karmada 的调度器在放置工作负载时可以读这些注解把 agent 任务放到 runtime 匹配的集群。如果所有集群都没有所需 runtimeKarmada 可以触发一个PropagationPolicy的 fallback把任务放到有 fallback runtime 的集群。这个机制在混合云场景下特别有用。比如你有一个 GPU 集群在云上一个 CPU 集群在本地agent 任务可以根据 runtime 需求自动选择。我实测下来Karmada 的SpreadConstraint配合节点注解能做到比较精细的 runtime 感知调度。5. 常见问题与排查技巧实录5.1 runtime 相关报错的速查表报错关键词根因排查命令解决方式container runtime is not runningcontainerd/CRI-O 未启动或 socket 不通systemctl status containerd、crictl info启动服务、检查 config.toml、确认 socket 路径no lm runtime found for model format gguf推理框架不支持 GGUFllama-server --version、vllm --version换 llama.cpp 或升级 vLLMunable to locate codex cli binaryCLI 未安装或 PATH 不对which codex、echo $PATH安装 CLI、修正 PATH、加 preflight 检查could not find webview2 runtimeWebView2 未安装检查注册表或安装目录静默安装 WebView2 Runtimelabview runtime engine 8.5安装失败Windows 版本不兼容检查系统版本换 Windows Server 2019 基础镜像VC 2022 x86 minimum runtime缺失运行库未装全检查C:\Windows\System32\vcruntime140.dll同时安装 x86 和 x64 版本ndi 6 runtime初始化失败权限或网络问题检查管理员权限、mDNS以管理员运行、配置网络debian 禁用 steam runtimeSteam runtime 与系统库冲突dpkg -lgrep steam这张表是我在实际项目里积累的覆盖了大部分 runtime 相关的报错。但要注意报错信息只是入口根因往往在更底层。比如container runtime is not running可能是磁盘满了no lm runtime found可能是模型文件损坏。排查时要顺着依赖链往下查不要停在表面。5.2 三个我踩过的坑第一个坑containerd 的 snapshotter 配置错误导致镜像拉取失败。有一次集群里所有 Pod 都起不来报错是failed to pull image: failed to resolve reference。查了半天发现是 containerd 的snapshotter从overlayfs被改成了native导致镜像层无法正确解压。改回overlayfs后恢复正常。这个坑的教训是containerd 的配置变更要谨慎改完必须重启服务并验证。第二个坑GGUF 模型的分片文件没下全。一个大模型被分成多个 GGUF 文件比如model-00001-of-00004.gguf我只下了第一个llama-server 启动时报no lm runtime found。实际上 runtime 是有的是模型文件不完整。这个报错信息有误导性让我一开始以为是 runtime 问题。后来养成习惯下载模型后先校验文件数量和大小。第三个坑WebView2 在 Windows 容器里安装成功但 agent 仍报找不到。原因是 WebView2 的安装是 per-user 的而容器里的 agent 以另一个用户身份运行。解决方式是安装时加/silent /install并且确保安装到系统级路径或者用--user-data-dir指定用户数据目录。这个坑查了整整一天因为安装日志显示成功但运行时就是找不到。5.3 runtime 健康检查的最佳实践Kubernetes 原生的 probe 对 runtime 检查不够细我一般会加一个自定义的 readiness probereadinessProbe: exec: command: - /bin/sh - -c - | llama-server --version /dev/null 21 test -f /models/model.gguf curl -sf http://localhost:8080/health initialDelaySeconds: 10 periodSeconds: 5 failureThreshold: 3这个 probe 检查三件事runtime 二进制存在、模型文件存在、服务健康端点响应。三个都满足才算 ready。这样能把“runtime 缺失”和“服务未就绪”区分开排查时更有针对性。对于工具类 runtime比如 Codex CLIreadiness probe 可以简单一点readinessProbe: exec: command: - /bin/sh - -c - command -v codex codex --version initialDelaySeconds: 5 periodSeconds: 10注意readiness probe 不要写太重否则会拖慢 Pod 启动。如果 runtime 检查需要下载或编译放到 initContainer 里做probe 只做轻量校验。6. 运行时编排的扩展方向从单集群到 agentic cloud6.1 runtime 抽象层的设计考量如果你要把这套机制产品化我建议加一层 runtime 抽象。核心思路是定义一套统一的 runtime 接口不同 runtime 用 adapter 实现。接口大概包括Probe()检查 runtime 是否可用。Version()返回版本信息。Prepare()按需拉取或初始化。Health()健康检查。Cleanup()释放资源。这样 agent 任务只需要声明“我需要一个能跑 GGUF 的推理 runtime”而不需要关心底层是 llama.cpp 还是 vLLM。adapter 层负责匹配和转换。这个设计在多集群场景下尤其有价值因为不同集群的 runtime 实现可能不同但接口统一。6.2 agentic rag 对 runtime 的特殊需求agentic rag是最近很热的方向它和传统 RAG 的区别在于agent 会自主决定检索策略、多轮检索、甚至动态生成检索工具。这对 runtime 提出了新要求低延迟agent 的每一轮决策都可能触发检索runtime 的冷启动时间必须控制在毫秒级。高并发多个 agent 可能同时检索runtime 要能水平扩展。状态隔离不同 agent 的检索上下文要隔离不能互相污染。我的做法是把 embedding runtime 和 rerank runtime 做成常驻服务用 Kubernetes 的 HPA 根据 QPS 自动扩缩。embedding 模型用 ONNX Runtime 跑比 PyTorch 轻量冷启动快。rerank 模型用 llama.cpp 的 embedding 模式和推理 runtime 共用一套基础设施。6.3 从 Kubernetes 到 agentic cloud 的演进华为云在 agentic cloud 上的投入我理解是在把 Kubernetes 的编排能力向 agent 场景延伸。传统的 IaaS 提供虚拟机PaaS 提供容器而 agentic cloud 要提供的是agent runtime 即服务。这意味着runtime 的生命周期由平台管理用户只声明需求。runtime 的版本、依赖、安全补丁由平台统一维护。agent 任务的调度考虑 runtime 匹配度而不仅仅是资源。这个方向对运维团队的要求更高因为 runtime 的种类和版本会持续增长。我的建议是尽早建立 runtime 的元数据管理把每个 runtime 的依赖、兼容性、已知问题都记录下来。这个元数据在调度、排查、升级时都会用到。7. 我个人的几条实操心得第一runtime 问题要在 CI 阶段暴露不要留到生产。我在 CI 里加了一个 job专门跑 runtime 检查脚本把 agent 镜像里所有依赖的 runtime 都验证一遍。这个 job 跑一次大概 2 分钟但能省下生产环境几个小时的排查时间。第二runtime 的版本要锁死不要用 latest。llama.cpp 的更新很频繁不同版本的 API 和参数可能不兼容。我在 Dockerfile 里都是指定 commit hash 或者具体版本号升级时手动改改完跑回归测试。第三runtime 的日志要单独收集。agent 的日志和 runtime 的日志混在一起排查时很痛苦。我的做法是给 runtime 单独配一个日志路径用 sidecar 收集打上runtime标签。这样在 Kibana 或者 Loki 里可以按标签过滤。第四runtime 的故障要有降级路径。比如 llama-server 挂了agent 能不能降级到 CPU 推理vLLM 显存不够能不能降级到 llama.cpp这些降级路径要提前设计好并且在代码里实现。我见过太多系统runtime 一挂整个 agent 就不可用其实很多场景下降级跑慢一点也能接受。第五runtime 的文档要写给未来的自己。每个 runtime 的安装步骤、配置参数、已知问题都要记下来。我吃过亏半年前配的一个 runtime半年后出问题完全忘了当时怎么配的。现在我的习惯是每配一个 runtime就在内部 wiki 上写一页包括所有命令和坑。这套东西说到底核心就一句话agentic 系统的稳定性取决于 runtime 层的稳定性。编排层再智能runtime 挂了也是白搭。所以如果你在做 agent 相关的项目建议把 runtime 管理当成一等公民来对待而不是当成“环境配置”这种杂活。我自己的体会是花在 runtime 上的时间最后都会以“少加班”的形式回报回来。
返回列表