2026 深圳Agent 沙龙材料分享 Vibe Chaos 面向生产集群的 Agent 工程实践_第1页
2026 深圳Agent 沙龙材料分享 Vibe Chaos 面向生产集群的 Agent 工程实践_第2页
2026 深圳Agent 沙龙材料分享 Vibe Chaos 面向生产集群的 Agent 工程实践_第3页
2026 深圳Agent 沙龙材料分享 Vibe Chaos 面向生产集群的 Agent 工程实践_第4页
2026 深圳Agent 沙龙材料分享 Vibe Chaos 面向生产集群的 Agent 工程实践_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BladeAI·从混沌工程出发,复盘动手类Agent的生产责任层从VibeCoding到VibeChaos·从「LLM会做」到「Agent敢做」从会做到敢做蒋泽林(林曜)·BladeAICoreMaintainer·ChaosBladeContributor场景经验命令经验风险判断权限边界指标解释恢复/复盘隐性知识藏在资深SRE的脑子里总账:1–3人日/次|不敢做·做不准·做完不算数LLM理解意图与证据,Agent串起多阶段工作流;真正的生产动作仍要由确定性责任层兜底。准备翻wiki·拼100+字命令协调审批·值班·安全窗口执行多端切换·三块大屏收尾恢复·截图·催复盘错误代价错误代价测试红→生产事故副作用本地可见→集群不可见VibeChaos=VibeUI+工程兜底(合同·拦截·验证·恢复)+可迁移方法论VibeCoding可以忘了代码长什么样;VibeChaos不行——下一步,把工程兜底拆成十二关。VibeChaos接口:“checkoutCPU80%,10min”人的角色:审合同、签字归档ClickChaos接口:表单/长命令人的角色:拼命令、盯指标TraditionalCoding接口:写代码人的角色:执行者VibeCoding接口:“我想要X”人的角色:监工人机界面改写→人机界面改写→Throwaway/AcceptCodingChaosBladeBladeAI·用一句话安全地在生产K8s里演练故障的开源Agent一句话进来:选用例→生成合同→安全审查→注入→双层验证→自动恢✓K8s故障演练Agent把一句话变成注入、验证、恢复闭环12道关卡由硬代码执行✓ChaosBlade上层编排器底层仍由ChaosBlade/kubectl执行×不是ChaosBlade替代品不重写故障注入内核✓本地CLI/TUI不注册、不上传集群凭证命令/参数/UID副作用与恢复证据可审计·可复盘·可入库一句话不是直接变成命令,而是先变成合同,再经过安全、验证与恢复责任层。结果闭环L1+L2验证·自动恢复合同·授权·身份·恢复不用手写blade命令·不用盯着执行·目标与恢复都有硬约束执行编排ChaosBlade/“给cms-demo的checkout打CPU80%”SRE·开发·QA→→→ChaosBladeChaosBladeBox·平台层Web编排·审计·资产化可把BladeAI作为自然语言能力接入什么时候用哪一层?确定性CLI/CI注入打得进去批量编排/审计/资产化管得起来一句话演练+生产护栏敢让AI动手它夹在用户/平台与底层引擎之间:向上接意图与编排,向下复用Tool和Kube用户·SRE/开发/QA/CI流水线自然语言↓↑TaskReport★BladeAI·敢用层↔ToolChaosBladeTool·引擎层2019开源·MonkeyKing十年实践·blade+OperatorPod/Node/Container×CPU/Mem/Net/DiskKubernetesAPI/真实集群CRD·kubectl·事件/状态Pod·Node·ServiceTool管“打得进去”,Box管“管得起来”,BladeAI管“敢让AI动手”——三段责任,一个生态。blade/CRD↓k执行编排blade/mixed/kubectl-native验证与恢复L1+L2·RecoverGraphIntentCompilerNL→FaultSpec12道关卡让AI动手可靠②②运行时把不同入口统一成同一任务会话·流式事件·Checkpointer·配置注入factory.create_agent()③AgentCore三张图分别承担三类不可混合的责任IntentGraphPipelineGraphRecoverGraph明确用户要什么完成一次受控实验主流程失败也能独立止血对话澄清→生成FaultSpec规划→确认→执行→验证→报告恢复动作→当前态验证→完成/告警共享基础:AgentState保存进度·Router决定下一步·Checkpointer支持断点恢复⑤外部世界ChaosBlade/KubernetesAPI·OpenAI-CompatibleLLM·MCPServers·SQLite/PostgreSQL·OTLP三张图决定“下一步去哪”;FaultSpec决定“哪些事实不能变”;横切能力决定“能做、能记、能审计什么”。三张LangGraph负责状态流转,横切能力负责知识、安全、记忆与审计,FaultSpec提供全程不变的参照系FaultSpec数据总线生成冻结用户确认约束Safety/Target参照Verify重建入库Audit确认后frozenCLI/TUIHTTP/SSEPythonSDKDirect/Batch上层Agent④横切能力节点调用它们,但控制权不交给LLM怎么不断线并可追溯Memory·Store·Observability·Config怎么理解怎么安全行动Safety·Tools·MCP怎么找到方法Skills·Knowledge①接入层谁可以发起任务PromptModePromptMode按节点组装PromptSectionsChatOpenAI兼容端点·保留reasoning_content·Connect/ReadTimeout分离Knowledge:文档索引→Outline→Section;SkillL3当前为整资源文件粒度结构化@tool+阶段工具面隔离AST命令校验·TargetGuard·SafetyCheck·ConfirmationGate工具输出截断+语义压缩;MCP按阶段挂载并隔离超时Trace/Metrics+热冷数据分层+Checkpointer+可预测配置优先级模型能力只负责判断;生产级Agent还必须解决认知切换、知识预算、动作授权和长任务连续性关键模块·设计权衡01意图澄清、执行和验证需要不同的认知边界知识越多≠上下文越好0254个用例和9篇文档全量注入,成本与干扰同时上升工具可以调用≠动作获得授权03正确工具也可能作用于错误目标、错误阶段和错误参数模型回答结束≠任务责任结束04长会话、外部依赖、进程重启和审计都跨越一次模型调用PromptsLLMFactorySkillsKnowledgeSafetyGuardsTools·ToolGuardMemory·MCPObservabilityPersistence·Config工程约束对应模块关键技术选择与边界LLM负责理解、选择和解释;横切模块负责边界、连续性和证据——后者才是Agent的生产基础。一条解决长期可靠性一条解决长期可靠性,一条解决生产责任;十二道关覆盖一次任务的完整生命周期十二道关地图蓝色关卡解决“Agent会不会逐渐失控”;橙色关卡解决“失控后会不会造成事故”。通用可靠性从“能跑一次”到“长期可用”高风险责任从“会调用工具”到“可以进入生产”⑪留下失败教训⑧独立验证结果⑦区分错误④锁定执行目标⑫切换认知模式⑨保证恢复完成⑥识别停滞③生成确定动作⑩管住上下文⑤限制阶段权限②找对知识①固化用户意图任务生命周期1理解5恢复2决策4验证3行动6学习LLM只负责字段提取;用户签字、规则校验和合同冻结不交给概率模型高风险高风险Agent必备““给checkout注入CPU压力80%”至少有6种合法解读;六个字段各自猜错,整次演练打错目标的概率接近90%为什么会翻车为什么会翻车 1自然语言缺少scope/namespace/副本范围↓ 2LLM猜defaultnamespace与持续时间↓猜测值直接进入bladecreate↓打到同名生产Pod,用户无机会纠正Scopescope:podTargettarget:Scopescope:podTargettarget:cpuActionaction:fullloadMatchernamespace+labelsParamscpu-percent=80duration/Guard34合同如何生效 4用户确认/修正 5@dataclass(frozen=True) 6记录intenFaultSpec·SDD在混沌工程的落地OpenSpec·GitHubSpecKit·AWSKiro解决的是AI先行动、后补规范ChaosBlade四要素直接继承:Scope/Target/Matcher/ActionVibeCodingVibeCoding用SDD收敛需求;V先让模型知道“有什么”,再选择“需要什么”,最后读取“当前阶段真正要用的内容”通用Agent问题54个用例+9篇知识文档≈80Ktokens小模型上下文溢出大模型每轮更慢、更贵所有模型无关内容干扰选择03深读:加载真正需要的正文候选最少·内容最深入→SkillSKILLbody/ResouKnowledgeread_resource(file,section)只把当前任务需要的正文放进上下文02选择:确定本次需要什么候选收敛到一个Skill/文档Skillactivate_skillKnowledge读取Outline这一层完成“选用例”和“选文档”01发现:先暴露目录候选多·每项信息很轻Skillname+descriptionKnowledgefilename+description模型先知道系统拥有哪些能力Knowledge·文档级回答“为什么这样判断、如何验证”当前支持按MarkdownHeading精确读取SectionSkill·用例级回答“这次故障怎么做”当前最深读取到Resource整文件渐进加载的关键不是“少放一些内容”,而是让模型看得见目录,并能够主动请求下一层。四层边界分别约束语义、状态、进程参数和宿主机命令面;少一层就会留下旁路高风险执行保证高风险执行保证危险路径不是某个坏危险路径不是某个坏Prompt,而是llm_output→shellstring:字段、分隔符和内层命令在同一个字符串里被操作系统重新解释11结构化ToolSchema2FrozenFaultSpec3argvBuilder4ToolGuardParserLLM只能提交scope/target/action/确认后的合同不能原地改写程序拼成list[str],subprocessshell=Falsebinary+kubectlsubcommand+token规则+params审计拦截不存在的字段与枚举幻觉拦截跨节点共享状态漂移;|$()不会获得shell语义拦截宿主机侧危险命令与非法子命令Pydantic/Literalfrozen+defensivecopybuild_*_cmdparse_command/audit边界说明:ToolGuard检查宿主机相关token;kubectlexec后传入容器的argv不按宿主shell注入处理,因为执行层本身使用shell=False。安全不是一条正则:先限制模型能表达什么,安全不是一条正则:先限制模型能表达什么,再限制程序能执行什么,最后把每次执行写进审计链。TargetGuard防止模型悄悄换目标或故障类型;HPA/rollout后的Pod身份对齐是另一类问题授权漂移授权漂移checkout→cartCPU→memory实体漂移HPA/rollout后PodUID已变化当前仍需TargetSnapshot批准:cms/app=checkout/CPU→调用:kubectlexectool-pod--bladecreatepod-mem--label用户确认时冻结的授权语义namespacecmslabelsapp=checkoutblade_targetcpuowner/secondaryscopes方法可变,目标与故障家族锁定递归解析kubectlexec内层命令labelsapp=cartblade_targetmemconfidenceHIGH工具名相同,不代表影响目标相同按粗到细顺序比较并决定路由scopepod=pod✓namespacecms=cms✓labelscheckout≠cart×faultcpu≠mem×REJECTREJECT_DRIFT·不进入ToolNodeDRIFTDRIFT:TUI展示original/proposed重新确认;CLI拒绝并让模型自纠;第二次漂移硬终止。实现边界:UNKNOWN默认拒绝;classifier异常当前fail-open+权限不是Prompt里的提醒,而是factory.py给每个LangGraph节点绑定的不同工具集合Verify想“重启一下看得更清楚”→找不到blade_create/fullkubectl的工具签名→这条越权调用根本无法形成1PLAN·只读探索Skill·Knowledge·saveplan看不到:blade_create/destroyfullkubectl/script4RECOVER·先止血submit_recover·wait看不到:blade_create不能在恢复中追加新故障2EXECUTE·执行合同blade_create/statusfullkubectl·script·wait看不到:blade_destroy恢复不由执行者自行触发3VERIFY·独立取证Skill·Knowledge·wait看不到:blade_createfullkubectl写入面策略边界|可见工具仍经过TargetGuard/ToolGuard限制目标、子命令与宿主机参数能力边界|节点只bind当前阶段工具未绑定的工具名不会进入LLMschema通用Agent问题通用Agent问题凌晨三点:Agent凌晨三点:Agent看似一直在工作47次调用后,系统状态仍然没有变化触发后的确定动作触发后的确定动作要求切换路径1精确重复kubectlgetpod相同精确重复kubectlgetpod↓output:Pendingoutput:Pending2参数抖动过滤整个工具或禁止该子命令↓LLM:再查一次LLM:再查一次3空转/复读无tool_call×3,或两段文本前50字重复拦截没有任何外部动作、只重复解释的假进展。或输出最终结论44硬预算Planning/Execute100·Verify/Recover60·Replan3·wall-clockToken成本$8·用户白等一晚停止机制不是一个停止机制不是一个Detector:先纠偏,再限权,再强制收敛,最后由硬预算终止。注入成功必须同时证明:实验真的成立,故障效应真的出现,证据之间没有矛盾InjectorInjector:UID=abc·Success但CPU:baseline18%→current20%结论:不能判verified程序化检查控制面与逐资源状态✓blade_status:实验仍在Running✓blade_query_k8s:逐资源Success✓affected_count:目标覆盖数量可见✓5秒settlere-check捕获异步失败terminalterminalfailed→跳过L2,直接否决+60pp+60pp独立Verifier只看当前证据,不继承成功叙事基线当前变化✓同一指标、同一资源做baseline对比✓Skill验证步骤全部进入checklist✓PrimaryEvidenceObserved=trueFinalize|证据能自洽吗?模型交卷后,程序再次审查完整性✓证据数字与观测时间线一致✓Skill步骤无缺失、无跳过✓有基线时必须使用baseline✓L1、L2、checklist结论不冲突证据缺口重验证据缺口重验效果失败重规划关键边界:关键边界:L1failed≠L1skipped非ChaosBlade或验证通道不可用时,L1可跳过;但L2必须用真实故障效应补足证明。只有只有L1未否决、L2观察到主证据、Finalize确认证据RecoverGraph将“执行恢复”与“证明恢复”分层:只接受当前状态与注入前基线的同指标、同资源对比独立入口主流程恢复独立入口主流程恢复TUI/recoverCLIrecoverIndependentRecoverGraph·与注入流程解耦HostBlade+UIDblade_destroy→blade_statuskubectlexec注入发现RunningHostBlade+UIDblade_destroy→blade_statuskubectlexec注入发现RunningtoolPod→execkubectl-native按Skill执行反向操作:NotFound/CRD删除:L1可通过,但不能直接判恢复成功recover_verifier_loop读取恢复上下文recover_verifier_tools同指标·同资源finalize_recover_verification无kubectl证据则驳回·仍有故障则仅RECOVERED故障效应消失当前状态回到基线PARTIAL证据混合或检查不全保留warnings与证据链UNRECOVERED重试后仍有故障动作成功只说明“恢复命令已执行”模型给判断,状态机决定能否结束没有“日志报错后静默退出”这条路关键边界:实验对象消失,只能证明关键边界:实验对象消失,只能证明“控制面没有记录”;L2还必须恢复成功不是恢复成功不是destroy返回0,而是当前状态回到基线;无法证明,就不能绿灯放行。工具输出治理发生在LLM摘要之前:保指标、保消息配对、保最近结果,把昂贵压缩留给真正的语义历史通用通用Agent能力kubectlkubectlJSON往往几十KB,但验证真正需要的是name、phase、conditions、restartCount、events;直接保全文会挤掉合同与决策0·指标先提取从原始ToolMessage抽RestartCount、Disk%、状态等,写入additional_kwargs,并把摘要放在内容头部截断后关键数字仍可见截断后关键数字仍可见1·结构化瘦身识别Pod/Node/EventJSON,只保metadata、conditions、capacity、事件原因等关键字段先减结构,不先砍字节先减结构,不先砍字节2·两档截断最近3个toolresult≤16KB;历史结果≤1KB;原文缓存到磁盘并给出引用提示新证据完整,旧证据有界新证据完整,旧证据有界3·空闲微压缩超过5分钟无交互:旧toolresult替换clearedmarker,仍保最近3个暂停后清理过期观察暂停后清理过期观察消息分割时,消息分割时,AItool_call与对应ToolMessage必须成对移动;否则下一轮发给模型的对话协议本身就是非法的。⑩-A⑩-A不理解语义,只做可证明的减法:先把100KB工具噪声变成仍可验证的结构化事实。关卡⑩记忆压缩:删掉对话,保住“继续执行”的能力长会话真正要保存的不是聊天记录,而是任务目标、关键决策、当前状态和下一步只保留最近只保留最近N轮,会同时丢掉早期判断依据:为什么压缩前|关键决策散落在整段会话保留尾部消息,无法保住早期语义第第3轮|Pending=PVC未绑定第第7轮|CPU78%,验证通过第第10轮|发现残留进程待清理└─“最新N轮”只能看到尾部先提取结构化指标,再截断历史工具输出;若已回到阈值下,直接继续执行。②语义压缩·只保留影响后续的事实Goal·Target·Progress·KeyResultsErrors&Fixes·NextSteps<analysis>仅用于起草,写回前会被剥离下一轮拿到三块互补上下文代码重注入|[Context代码重注入|[Contextpreserved]blade_uid·FaultSpec/目标·activeSkillplan·injectionmethodLLMLLM写回|[CompressedHistory]关键决策·已完成步骤·结果与错误修复方式·下一步原样保留|既有摘要原样保留|既有摘要+最近消息⑩-A⑩-A解决“窗口装不下”;⑩-B解决“删掉历史后,任务还能不能继续”。关卡⑪经验自进化:把一次失败变成下一通用Agent通用Agent问题下一次任务启动下一次任务启动33~/.blade-ai/EXPERIENCE.mdSafetyRules·FaultInjectionVerification·K8sCluster25KB·200lines4FULL·PlanningMINIMAL·ExecuteVERIFICATION·VerifyRECOVERY·Recover2Rule:发生了什么Why:错误/验证异常How:下次如何避坑1一次演练结束SkillSkill保存已知成功路径;EXPERIENCE补齐Skill没覆盖的失败、验证异常和环境陷阱。PromptMode决定装配哪些section、绑定哪些工具、要求什么输出;模式由Graph节点选择,不由LLM自选通用通用Agent能力同一个全能同一个全能SystemPrompt会互相污染:意图阶段急着执行、规划阶段调用写工具、验证阶段继承成功叙事、Plan模式输出不可运行方案VERIFICATIONVERIFICATIONverifier_loop只装验证规则、知识、经验与证据提交Schema独立结论ag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论