踐)
1. 從ax這個(gè)標(biāo)題說(shuō)起一個(gè)被低估的運(yùn)行時(shí)縮寫第一次看到ax這個(gè)標(biāo)題絕大多數(shù)人的反應(yīng)是懵的——兩個(gè)字母沒(méi)有正文沒(méi)有關(guān)鍵詞沒(méi)有摘要只有一串熱搜詞在旁邊晃悠agentic、orchestration、runtime、Kubernetes。這種信息量極低的輸入恰恰是最考驗(yàn)拆解能力的場(chǎng)景。因?yàn)閍x本身不是一個(gè)完整的產(chǎn)品名它更像是一個(gè)縮寫錨點(diǎn)需要結(jié)合上下文才能還原出它真正指向的技術(shù)領(lǐng)域。我的判斷是這里的ax大概率指向Agent eXecution或者Agent eXperience這一類概念落在agentic orchestration runtime這個(gè)技術(shù)棧里。為什么這么判斷看熱搜詞的組合就知道了——agentic rag、agentic cloud、orchestration、runtime、Kubernetes這幾個(gè)詞同時(shí)出現(xiàn)指向的是一條非常明確的技術(shù)鏈路在 Kubernetes 之上構(gòu)建面向智能體Agent的編排與運(yùn)行時(shí)環(huán)境。這不是單純的模型推理問(wèn)題而是多個(gè)智能體如何被調(diào)度、如何被編排、如何在容器化環(huán)境里穩(wěn)定跑起來(lái)的工程問(wèn)題。如果你正在做 AI Agent 相關(guān)的平臺(tái)建設(shè)或者你是一個(gè)后端/基礎(chǔ)設(shè)施工程師突然被要求把 Agent 跑在 K8s 上那這篇內(nèi)容就是寫給你的。我會(huì)把a(bǔ)x這個(gè)模糊標(biāo)題背后可能涉及的核心技術(shù)點(diǎn)全部拆開(kāi)agentic runtime 到底是什么、orchestration 層要解決什么問(wèn)題、Kubernetes 在其中扮演什么角色、以及實(shí)際落地時(shí)會(huì)踩哪些坑。全文基于我自己的工程實(shí)踐和常見(jiàn)行業(yè)方案來(lái)寫不堆概念只講能落地的東西。需要先說(shuō)明一點(diǎn)由于原始輸入幾乎是空的以下所有內(nèi)容都是基于ax agentic orchestration runtime Kubernetes這組關(guān)鍵詞所做的合理技術(shù)演繹屬于該領(lǐng)域從業(yè)者在面對(duì)這類需求時(shí)最可能采用的主流方案。如果你手上的ax是某個(gè)具體內(nèi)部項(xiàng)目代號(hào)那核心邏輯依然通用只是命名不同而已。2. agentic runtime 到底在運(yùn)行時(shí)做什么2.1 普通 runtime 和 agentic runtime 的本質(zhì)區(qū)別要理解 agentic runtime先得理解普通 runtime。我們熟悉的 runtime 有很多種JVM 是 Java 的運(yùn)行時(shí)容器 runtime比如 containerd、CRI-O是容器的運(yùn)行時(shí)WebView2 Runtime 是瀏覽器內(nèi)核的運(yùn)行時(shí)。它們的共同點(diǎn)是——為某種程序提供執(zhí)行環(huán)境管理生命周期、資源、依賴。agentic runtime 的特殊之處在于它要執(zhí)行的程序不是一段確定性的代碼而是一個(gè)會(huì)思考、會(huì)調(diào)用工具、會(huì)多輪決策的智能體。這就帶來(lái)幾個(gè)普通 runtime 不會(huì)遇到的問(wèn)題執(zhí)行路徑不確定普通程序從 main 函數(shù)進(jìn)去路徑基本可預(yù)測(cè)Agent 可能這一輪調(diào)搜索工具下一輪調(diào)數(shù)據(jù)庫(kù)再下一輪決定我需要再問(wèn)用戶一句。runtime 必須能動(dòng)態(tài)響應(yīng)這種不確定性。狀態(tài)需要跨輪次保持Agent 的對(duì)話歷史、工具調(diào)用結(jié)果、中間推理狀態(tài)都要在 runtime 里持久化否則多輪任務(wù)根本跑不下去。資源消耗波動(dòng)極大一次簡(jiǎn)單的意圖識(shí)別可能幾十毫秒一次復(fù)雜的多步推理可能幾分鐘還可能觸發(fā)外部 API 調(diào)用。runtime 要能彈性伸縮。所以 agentic runtime 的核心職責(zé)可以概括成四件事會(huì)話狀態(tài)管理、工具調(diào)用編排、執(zhí)行沙箱隔離、生命周期與資源調(diào)度。這四件事里任何一件做不好Agent 在生產(chǎn)環(huán)境里都會(huì)出問(wèn)題。2.2 一個(gè) agentic runtime 的最小構(gòu)成從工程視角看一個(gè)能用的 agentic runtime 至少包含下面幾個(gè)模塊。我用表格列出來(lái)方便你對(duì)照自己手上的系統(tǒng)查漏補(bǔ)缺模塊職責(zé)常見(jiàn)實(shí)現(xiàn)方式會(huì)話管理器維護(hù) Agent 的對(duì)話上下文、記憶、中間狀態(tài)Redis / 數(shù)據(jù)庫(kù) 內(nèi)存緩存工具注冊(cè)中心管理 Agent 可調(diào)用的工具清單、參數(shù) schema配置中心 / 服務(wù)注冊(cè)執(zhí)行引擎驅(qū)動(dòng) Agent 的推理-行動(dòng)循環(huán)自研狀態(tài)機(jī) / 工作流引擎沙箱隔離層隔離工具執(zhí)行防止越權(quán)與資源搶占容器 / 微虛擬機(jī) / 進(jìn)程隔離可觀測(cè)層記錄每一步?jīng)Q策、耗時(shí)、token 消耗OpenTelemetry 日志系統(tǒng)這里我要強(qiáng)調(diào)一個(gè)很多人忽略的點(diǎn)執(zhí)行引擎和沙箱隔離層必須解耦。我見(jiàn)過(guò)一些早期實(shí)現(xiàn)把工具調(diào)用直接寫在推理循環(huán)里工具一多就變成一坨意大利面改一個(gè)工具要?jiǎng)雍诵倪壿嫛U_的做法是讓執(zhí)行引擎只負(fù)責(zé)決定調(diào)用哪個(gè)工具、傳什么參數(shù)具體怎么執(zhí)行、在哪執(zhí)行交給沙箱層。這樣工具可以獨(dú)立升級(jí)沙箱可以獨(dú)立擴(kuò)容。2.3 為什么 runtime 層不能省有人會(huì)問(wèn)我直接用一個(gè)大模型 API加個(gè) while 循環(huán)不就行了嗎為什么要專門搞個(gè) runtime這個(gè)問(wèn)題我在項(xiàng)目里被問(wèn)過(guò)不止一次。答案是Demo 和生產(chǎn)的差距全在 runtime 層。一個(gè) while 循環(huán)能跑通單用戶單會(huì)話的演示但一旦上生產(chǎn)你會(huì)立刻遇到這些問(wèn)題并發(fā)上來(lái)了會(huì)話狀態(tài)互相污染怎么辦某個(gè)工具調(diào)用卡死了怎么超時(shí)、怎么重試、怎么熔斷Agent 陷入死循環(huán)一直調(diào)用同一個(gè)工具怎么檢測(cè)和打斷用戶量波動(dòng)怎么在不浪費(fèi)資源的前提下彈性伸縮出問(wèn)題了怎么回溯Agent 當(dāng)時(shí)為什么做了這個(gè)決策這些問(wèn)題的答案全都在 runtime 層。所以ax如果指向 agentic runtime那它解決的就不是能不能跑的問(wèn)題而是能不能穩(wěn)定、可觀測(cè)、可擴(kuò)展地跑的問(wèn)題。這才是它真正的價(jià)值所在。3. orchestration 層多智能體協(xié)作的調(diào)度中樞3.1 單 Agent 到多 Agent 的臨界點(diǎn)單個(gè) Agent 能做的事情是有上限的。當(dāng)任務(wù)復(fù)雜到需要一個(gè) Agent 負(fù)責(zé)規(guī)劃、一個(gè)負(fù)責(zé)檢索、一個(gè)負(fù)責(zé)執(zhí)行、一個(gè)負(fù)責(zé)校驗(yàn)的時(shí)候你就進(jìn)入了multi-agent orchestration的領(lǐng)域。這也是熱搜詞里orchestration和agentic同時(shí)出現(xiàn)的原因——它們本來(lái)就是一對(duì)。orchestration 層要解決的核心問(wèn)題是誰(shuí)來(lái)決定下一步該哪個(gè) Agent 干活以及它們之間怎么傳遞信息。這里有兩種主流范式中心化編排有一個(gè) Orchestrator Agent 或調(diào)度器統(tǒng)一決策任務(wù)分發(fā)給誰(shuí)。優(yōu)點(diǎn)是邏輯集中、容易調(diào)試缺點(diǎn)是 Orchestrator 本身可能成為瓶頸和單點(diǎn)。去中心化協(xié)作Agent 之間通過(guò)消息或共享狀態(tài)直接通信沒(méi)有統(tǒng)一調(diào)度。優(yōu)點(diǎn)是靈活、可擴(kuò)展缺點(diǎn)是行為難以預(yù)測(cè)調(diào)試?yán)щy。我的經(jīng)驗(yàn)是生產(chǎn)環(huán)境優(yōu)先選中心化編排。去中心化聽(tīng)起來(lái)很美但一旦 Agent 數(shù)量超過(guò)五六個(gè)行為就變得不可控出了問(wèn)題你連日志都串不起來(lái)。中心化編排雖然 Orchestrator 是瓶頸但你可以通過(guò)水平擴(kuò)展 Orchestrator 實(shí)例、把狀態(tài)外置來(lái)解決。3.2 編排層的關(guān)鍵設(shè)計(jì)任務(wù)圖 vs 狀態(tài)機(jī)編排邏輯怎么表達(dá)是個(gè)繞不開(kāi)的設(shè)計(jì)決策。常見(jiàn)的有兩種任務(wù)圖DAG方式把整個(gè)流程畫成有向無(wú)環(huán)圖節(jié)點(diǎn)是 Agent 或工具邊是依賴關(guān)系。優(yōu)點(diǎn)是直觀、可視化好、容易做并行缺點(diǎn)是遇到需要循環(huán)、需要?jiǎng)討B(tài)分支的場(chǎng)景就力不從心——而 Agent 恰恰經(jīng)常需要根據(jù)結(jié)果決定下一步。狀態(tài)機(jī)方式定義一組狀態(tài)和轉(zhuǎn)移條件Agent 的執(zhí)行就是狀態(tài)之間的跳轉(zhuǎn)。優(yōu)點(diǎn)是能表達(dá)循環(huán)和動(dòng)態(tài)分支缺點(diǎn)是圖復(fù)雜了以后狀態(tài)爆炸維護(hù)成本高。實(shí)際項(xiàng)目里我傾向于混合方案外層用 DAG 表達(dá)粗粒度的階段劃分比如規(guī)劃→檢索→執(zhí)行→校驗(yàn)每個(gè)階段內(nèi)部用狀態(tài)機(jī)處理 Agent 的動(dòng)態(tài)決策。這樣既有全局的可視化又有局部的靈活性。這個(gè)設(shè)計(jì)不是拍腦袋來(lái)的是因?yàn)榧?DAG 在遇到檢索結(jié)果不夠需要回到規(guī)劃階段重新規(guī)劃這種回環(huán)時(shí)會(huì)非常別扭。3.3 編排層和 runtime 層的邊界這里有個(gè)容易混淆的地方orchestration 和 runtime 到底誰(shuí)管什么我的劃分標(biāo)準(zhǔn)是orchestration 管做什么runtime 管怎么跑。編排層決定任務(wù)怎么拆、分給誰(shuí)、按什么順序runtime 層負(fù)責(zé)把每個(gè) Agent 實(shí)例真正跑起來(lái)管理它的狀態(tài)、資源、生命周期。兩者通過(guò)一個(gè)清晰的接口交互——編排層下發(fā)執(zhí)行任務(wù) X參數(shù) Yruntime 層返回執(zhí)行結(jié)果 Z消耗資源 W。這個(gè)邊界如果劃不清最常見(jiàn)的后果就是編排層里塞了一堆本該屬于 runtime 的邏輯比如重試、超時(shí)、資源限制導(dǎo)致編排層越來(lái)越重最后變成一個(gè)什么都管的怪物。我在一個(gè)項(xiàng)目里見(jiàn)過(guò)編排層代碼超過(guò)兩萬(wàn)行其中一半是在處理本該 runtime 負(fù)責(zé)的容錯(cuò)邏輯重構(gòu)的時(shí)候痛苦不堪。4. Kubernetes 在 agentic 架構(gòu)里扮演什么角色4.1 為什么是 K8s而不是別的熱搜詞里 Kubernetes 出現(xiàn)頻率極高還帶著karmada 正式畢業(yè)agentic cloud 堅(jiān)實(shí)底座這樣的描述。這說(shuō)明一個(gè)趨勢(shì)Kubernetes 正在成為 agentic 工作負(fù)載的默認(rèn)底座。為什么是 K8s因?yàn)?agentic 工作負(fù)載的幾個(gè)特征恰好都是 K8s 擅長(zhǎng)的需要彈性伸縮Agent 的負(fù)載波動(dòng)大K8s 的 HPA水平 Pod 自動(dòng)擴(kuò)縮天然適配。需要隔離不同 Agent、不同用戶的執(zhí)行環(huán)境要隔離K8s 的 Namespace、Pod、NetworkPolicy 提供了現(xiàn)成的隔離原語(yǔ)。需要統(tǒng)一調(diào)度多 Agent 協(xié)作本質(zhì)上是資源調(diào)度問(wèn)題K8s 的調(diào)度器就是干這個(gè)的。需要聲明式管理Agent 的部署、配置、版本管理用 K8s 的 YAML 聲明式描述比腳本可靠得多。但要注意K8s 不是銀彈。Agent 的很多特性比如長(zhǎng)會(huì)話、有狀態(tài)、突發(fā)性工具調(diào)用和 K8s 默認(rèn)假設(shè)的無(wú)狀態(tài)、短生命周期是有沖突的。這就引出了下一節(jié)的坑。4.2 把 Agent 塞進(jìn) Pod 的三種姿勢(shì)實(shí)際落地時(shí)Agent 和 K8s 的結(jié)合方式主要有三種各有取舍姿勢(shì)一一個(gè) Agent 一個(gè) Pod。每個(gè) Agent 實(shí)例獨(dú)立跑在一個(gè) Pod 里通過(guò) Service 暴露。優(yōu)點(diǎn)是隔離徹底、擴(kuò)縮容粒度細(xì)缺點(diǎn)是 Pod 數(shù)量爆炸冷啟動(dòng)慢會(huì)話狀態(tài)難保持。姿勢(shì)二一個(gè) Agent 類型一個(gè) Deployment。同類型的 Agent 共享一個(gè) Deployment多副本負(fù)載均衡。優(yōu)點(diǎn)是資源利用率高缺點(diǎn)是有狀態(tài)會(huì)話需要外置且同一 Deployment 內(nèi)的 Agent 實(shí)例難以差異化配置。姿勢(shì)三Agent 作為 Sidecar 或獨(dú)立容器。把 Agent 的執(zhí)行邏輯做成 Sidecar和主業(yè)務(wù)容器共享網(wǎng)絡(luò)和生命周期。優(yōu)點(diǎn)是耦合緊密、通信快缺點(diǎn)是 Sidecar 模式對(duì)資源開(kāi)銷敏感Agent 這種重負(fù)載不太適合。我的建議是會(huì)話型 Agent 用姿勢(shì)二 狀態(tài)外置任務(wù)型 Agent 用姿勢(shì)一。會(huì)話型 Agent 需要長(zhǎng)期保持上下文用 Deployment 多副本 Redis 存狀態(tài)最經(jīng)濟(jì)任務(wù)型 Agent 生命周期短、隔離要求高一 Pod 一實(shí)例更合適。4.3 K8s 原生能力對(duì) agentic 場(chǎng)景的適配缺口K8s 很強(qiáng)但直接拿來(lái)跑 Agent 有幾個(gè)明顯的缺口必須自己補(bǔ)會(huì)話親和性K8s 的 Service 默認(rèn)是隨機(jī)負(fù)載均衡同一個(gè)會(huì)話的請(qǐng)求可能打到不同 Pod。需要引入會(huì)話親和session affinity或者用一致性哈希。長(zhǎng)連接支持Agent 和用戶之間經(jīng)常是長(zhǎng)連接比如流式輸出K8s 的 Ingress 和 Service 對(duì)長(zhǎng)連接的支持需要額外配置超時(shí)和 keepalive。GPU/異構(gòu)資源調(diào)度如果 Agent 涉及本地模型推理GPU 調(diào)度、顯存隔離這些 K8s 原生支持有限需要 device plugin 或?qū)iT的調(diào)度器。細(xì)粒度資源限制Agent 的資源消耗波動(dòng)大K8s 的 request/limit 是靜態(tài)的需要配合 VPA垂直 Pod 自動(dòng)擴(kuò)縮或自定義指標(biāo)。這些缺口不是 K8s 的缺陷而是它作為通用平臺(tái)的必然結(jié)果。補(bǔ)這些缺口正是 agentic runtime 存在的意義。5. 落地時(shí)最容易踩的五個(gè)坑5.1 坑一把會(huì)話狀態(tài)存在 Pod 內(nèi)存里這是新手最常犯的錯(cuò)誤。Pod 一重啟所有會(huì)話上下文全丟用戶回來(lái)發(fā)現(xiàn) Agent失憶了。更糟的是如果 Pod 有多個(gè)副本用戶的下一次請(qǐng)求可能打到另一個(gè)副本同樣失憶。正確做法會(huì)話狀態(tài)必須外置到 Redis、數(shù)據(jù)庫(kù)或?qū)iT的狀態(tài)存儲(chǔ)。Pod 只做無(wú)狀態(tài)的計(jì)算。我一般用 Redis 存熱會(huì)話帶 TTL用數(shù)據(jù)庫(kù)存冷會(huì)話和審計(jì)日志。這樣 Pod 隨便重啟、隨便擴(kuò)縮狀態(tài)都不丟。5.2 坑二工具調(diào)用沒(méi)有超時(shí)和熔斷Agent 調(diào)用外部工具時(shí)如果那個(gè)工具掛了或者響應(yīng)極慢整個(gè) Agent 就會(huì)卡在那里。我見(jiàn)過(guò)一個(gè)案例某個(gè)搜索工具因?yàn)榫W(wǎng)絡(luò)問(wèn)題響應(yīng)要 30 秒Agent 的推理循環(huán)沒(méi)有超時(shí)控制結(jié)果所有并發(fā)請(qǐng)求全部堆積整個(gè)服務(wù)雪崩。正確做法每一個(gè)工具調(diào)用都必須有超時(shí)、重試、熔斷三件套。超時(shí)時(shí)間根據(jù)工具特性設(shè)定查詢類 3-5 秒生成類 30-60 秒重試要有退避策略熔斷用類似 Hystrix 或 Resilience4j 的機(jī)制。這些邏輯應(yīng)該封裝在 runtime 的工具調(diào)用層而不是散落在每個(gè)工具實(shí)現(xiàn)里。5.3 坑三Agent 死循環(huán)燒錢Agent 陷入調(diào)用工具→結(jié)果不滿意→再調(diào)用同一個(gè)工具的循環(huán)是真實(shí)會(huì)發(fā)生的事。如果不加控制一個(gè)死循環(huán)的 Agent 能在幾分鐘內(nèi)燒掉大量 token 和 API 調(diào)用費(fèi)用。正確做法在 runtime 層設(shè)置最大步數(shù)限制和循環(huán)檢測(cè)。最大步數(shù)好理解比如限制一個(gè)任務(wù)最多 20 步。循環(huán)檢測(cè)稍微復(fù)雜一點(diǎn)我的做法是記錄最近 N 步的工具調(diào)用簽名工具名 參數(shù)哈希如果發(fā)現(xiàn)重復(fù)模式就強(qiáng)制中斷并返回當(dāng)前結(jié)果。這個(gè)檢測(cè)邏輯放在執(zhí)行引擎里成本很低但能救命。5.4 坑四忽略 token 消耗的可觀測(cè)性Agent 的 token 消耗是成本大頭但很多團(tuán)隊(duì)上線時(shí)根本沒(méi)做 token 級(jí)別的監(jiān)控。等到月底賬單出來(lái)才發(fā)現(xiàn)超支卻不知道錢花在哪了。正確做法在 runtime 的每一次模型調(diào)用處埋點(diǎn)記錄輸入 token、輸出 token、模型名稱、耗時(shí)、關(guān)聯(lián)的會(huì)話 ID 和任務(wù) ID。這些數(shù)據(jù)匯總起來(lái)你才能回答哪個(gè) Agent 最費(fèi)錢哪類任務(wù)消耗最高有沒(méi)有異常調(diào)用??捎^測(cè)性不是錦上添花是成本控制的基礎(chǔ)設(shè)施。5.5 坑五K8s 資源限制拍腦袋設(shè)置給 Agent 的 Pod 設(shè)置 CPU/內(nèi)存 limit 時(shí)很多人憑感覺(jué)填個(gè)數(shù)字。設(shè)小了Agent 一跑復(fù)雜任務(wù)就 OOMKilled設(shè)大了資源浪費(fèi)調(diào)度效率低。正確做法先用 VPA 的 recommend 模式跑一段時(shí)間收集真實(shí)資源使用數(shù)據(jù)再據(jù)此設(shè)置 request 和 limit。同時(shí)要注意Agent 的內(nèi)存消耗和會(huì)話長(zhǎng)度強(qiáng)相關(guān)長(zhǎng)會(huì)話的 Agent 需要更大的內(nèi)存預(yù)算。我一般會(huì)給 Agent 容器設(shè)置比普通服務(wù)更寬松的內(nèi)存 limit因?yàn)樗姆逯荡_實(shí)高。6. 一套可復(fù)現(xiàn)的最小 agentic runtime 搭建思路6.1 技術(shù)選型與理由假設(shè)你要從零搭一套跑在 K8s 上的 agentic runtime我的選型建議如下每條都附上理由編排層用輕量工作流引擎如 Temporal 或自研狀態(tài)機(jī)不用重量級(jí) BPM。理由是 Agent 的流程動(dòng)態(tài)性強(qiáng)BPM 的建模方式太重。狀態(tài)存儲(chǔ)Redis 存熱狀態(tài) PostgreSQL 存冷狀態(tài)和審計(jì)。理由是 Redis 快PostgreSQL 可靠且支持復(fù)雜查詢。工具調(diào)用統(tǒng)一封裝成 HTTP/gRPC 接口通過(guò)服務(wù)網(wǎng)格如 Istio做流量管理和熔斷。理由是服務(wù)網(wǎng)格能把這些橫切關(guān)注點(diǎn)從業(yè)務(wù)代碼里剝離。沙箱用 K8s 的 Pod 或 gVisor 做隔離。理由是 Pod 隔離夠用且生態(tài)成熟gVisor 適合安全要求更高的場(chǎng)景??捎^測(cè)OpenTelemetry 采集 Prometheus 存儲(chǔ) Grafana 展示。理由是這套組合是云原生事實(shí)標(biāo)準(zhǔn)生態(tài)最全。6.2 核心執(zhí)行循環(huán)的偽代碼runtime 的核心是一個(gè)推理-行動(dòng)循環(huán)。下面是我常用的結(jié)構(gòu)用偽代碼表達(dá)def run_agent(session_id, task, max_steps20): state load_session(session_id) step 0 while step max_steps: # 1. 調(diào)用模型做決策 decision call_model(state, task) # 2. 檢查是否結(jié)束 if decision.type final_answer: save_session(session_id, state) return decision.content # 3. 循環(huán)檢測(cè) if is_loop_detected(state, decision): return 檢測(cè)到循環(huán)已中斷 # 4. 執(zhí)行工具調(diào)用帶超時(shí)熔斷 result execute_tool( decision.tool_name, decision.tool_args, timeoutdecision.timeout, retry3 ) # 5. 更新?tīng)顟B(tài) state.append(decision, result) step 1 return 達(dá)到最大步數(shù)限制這段代碼看著簡(jiǎn)單但每一行背后都有講究。比如execute_tool里的超時(shí)和重試is_loop_detected的檢測(cè)邏輯save_session的持久化策略都是前面幾節(jié)討論的內(nèi)容。runtime 的復(fù)雜度不在主流程而在這些邊角邏輯。6.3 K8s 部署清單的關(guān)鍵字段把 runtime 部署到 K8s 時(shí)有幾個(gè)字段必須仔細(xì)配置我列出來(lái)并說(shuō)明原因apiVersion: apps/v1 kind: Deployment metadata: name: agent-runtime spec: replicas: 3 template: spec: containers: - name: runtime resources: requests: memory: 1Gi cpu: 500m limits: memory: 4Gi # 峰值高limit 給足 cpu: 2000m livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 30 # Agent 啟動(dòng)慢延遲要夠 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 10 env: - name: SESSION_STORE value: redis://redis:6379重點(diǎn)看三個(gè)地方memory limit 給到 request 的 4 倍因?yàn)?Agent 峰值確實(shí)高、livenessProbe 的 initialDelaySeconds 設(shè) 30 秒Agent 初始化加載模型或配置慢設(shè)短了會(huì)被誤殺、會(huì)話存儲(chǔ)通過(guò)環(huán)境變量注入方便不同環(huán)境切換。6.4 驗(yàn)證 runtime 是否健康的檢查清單部署完之后怎么確認(rèn) runtime 真的健康我一般跑這幾個(gè)檢查單會(huì)話多輪測(cè)試連續(xù)發(fā)多輪請(qǐng)求確認(rèn)上下文保持正確。并發(fā)會(huì)話測(cè)試同時(shí)開(kāi) 50 個(gè)會(huì)話確認(rèn)狀態(tài)不串。工具故障注入故意讓某個(gè)工具超時(shí)確認(rèn)熔斷生效、Agent 優(yōu)雅降級(jí)。Pod 重啟測(cè)試手動(dòng) kill 一個(gè) Pod確認(rèn)會(huì)話不丟、請(qǐng)求自動(dòng)轉(zhuǎn)移。死循環(huán)測(cè)試構(gòu)造一個(gè)會(huì)觸發(fā)循環(huán)的任務(wù)確認(rèn)步數(shù)限制和循環(huán)檢測(cè)生效。資源壓測(cè)用壓測(cè)工具打滿觀察 HPA 是否正常擴(kuò)容、OOM 是否發(fā)生。這六項(xiàng)過(guò)了runtime 基本可以上生產(chǎn)。任何一項(xiàng)沒(méi)過(guò)都說(shuō)明還有坑沒(méi)填。7. 關(guān)于ax這類模糊需求的一些個(gè)人經(jīng)驗(yàn)回到最開(kāi)始的問(wèn)題。ax這個(gè)標(biāo)題信息量極低但它反映了一個(gè)真實(shí)場(chǎng)景很多時(shí)候我們接到的需求就是模糊的需要自己補(bǔ)全上下文。熱搜詞、關(guān)鍵詞、行業(yè)趨勢(shì)都是補(bǔ)全上下文的線索。我在實(shí)際工作中處理這類模糊需求的經(jīng)驗(yàn)是先確定技術(shù)領(lǐng)域再確定問(wèn)題邊界最后才動(dòng)手。以ax agentic orchestration runtime Kubernetes為例技術(shù)領(lǐng)域是 AI Agent 基礎(chǔ)設(shè)施問(wèn)題邊界是如何在 K8s 上構(gòu)建 Agent 的編排與運(yùn)行時(shí)動(dòng)手方向就清晰了。另外分享一個(gè)判斷技巧當(dāng)一組關(guān)鍵詞里同時(shí)出現(xiàn)agentic和runtime和Kubernetes時(shí)八成是在討論 Agent 的平臺(tái)化落地而不是單點(diǎn)技術(shù)。因?yàn)檫@三個(gè)詞分別對(duì)應(yīng)應(yīng)用形態(tài)執(zhí)行環(huán)境部署底座是平臺(tái)建設(shè)的三個(gè)層次。理解了這個(gè)層次關(guān)系你就能快速定位自己該關(guān)注哪一層。最后說(shuō)一句關(guān)于 K8s 的體會(huì)。K8s 生態(tài)里最近karmada 畢業(yè)agentic cloud 底座這類討論很多說(shuō)明整個(gè)云原生社區(qū)正在把 Agent 當(dāng)作一等公民來(lái)對(duì)待。這對(duì)做基礎(chǔ)設(shè)施的人來(lái)說(shuō)是好事——意味著有越來(lái)越多的成熟組件可以復(fù)用不用什么都自己造。但也意味著競(jìng)爭(zhēng)在加劇光會(huì)把 Agent 跑起來(lái)已經(jīng)不夠了得會(huì)把 Agent 跑得穩(wěn)、跑得省、跑得可觀測(cè)。這才是 agentic runtime 這個(gè)方向真正的門檻所在。