返回资讯中心
外部精选
软件工程
#开发者实时流

Silex 将 AIOps 智能体工具调用迁至代码模式,成本降低三分之一

来源标题:Cutting AIOps agent cost by a third with code mode and Pydantic Monty

Silex AIOps 平台在 10 月将所有智能体工具调用改为代码模式,程序运行于 Pydantic 的 Monty 解释器,使智能体成本降低三分之一。该平台让 AI 智能体处理一级和二级运维工单,人类只负责审批变更。智能体通过客户现有的 ITSM、监控、源代码管理和 Red Hat Ansible Automation Platform 等工具工作,且从不登录主机。

Hacker News 最新eoskx2026/11/3 · 4 天前30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

这是关于 Silex AIOps 平台系列文章的第一篇。Silex AIOps 平台是我们构建的系统,旨在让 AI agent 处理一级和二级运维工单。文章先简要介绍平台,然后讲述我们在十月做出的一项改动:把所有 agent 工具调用改为代码模式,让 agent 的程序在 Pydantic 的 Monty 解释器中运行。我们会梳理推动我们做出这一改动的问题、架构设计,以及两次试验的数据。

IT 运维的大部分时间花在决策周围的步骤上。有人领取工单,搜索日志和仪表盘,判断问题所在,编写方案,等待审批,执行作业,确认是否生效,然后写报告。在平台上,agent 完成这些工作,人只做那个真正重要的决定——批准变更。

Agent 承担基础设施分诊、磁盘和服务修复、服务器补丁、服务器构建、数据库请求和安全修复。它们通过客户已有的工具工作:ITSM 和 CMDB、监控和日志、源代码管理,以及 Red Hat Ansible Automation Platform(AAP)。Agent 从不登录主机。它像 SRE 一样广泛读取信息,但只有在 ITSM 中指定的审批人签字批准后,才通过启动已批准的 AAP 作业模板来变更主机。

flowchart TB subgraph DP["数据平面,位于客户网络中"] A["沙箱中的 Agent<br/>仅含占位密钥"] EG["执行网关<br/>每次工具调用"] MG["模型网关<br/>每次模型调用"] C["连接器<br/>持有真实凭据"] A --> EG A --> MG EG --> C end C --> S["ITSM 和 CMDB、AAP、<br/>监控和日志"] MG --> P["模型提供商<br/>走客户路由"] DP -->|"仅出站"| CP["控制平面<br/>控制台、工作流引擎、注册"]

本文关注的是两个网关。Agent 发起的每次工具调用都经过执行网关,网关检查会话、工作流被授予的工具、我们固定的工具定义、启动策略和变更门禁,然后将调用记录在哈希链审计日志中。每次模型调用都经过模型网关,网关持有提供商密钥、执行预算限制,并记录每次请求的 token 和成本。Agent 运行在没有真实凭据的沙箱中。由于规则位于网关而非 agent harness 中,无论 agent 运行在 Claude Code、Codex 还是开源 harness 中,相同的控制都适用。

一个事件响应 agent 需要大量工具。对于一个分诊工作流,我们授予 ITSM 的工单和变更工具、CMDB、Grafana 的 MCP server(用于指标和日志),以及 AAP 的 MCP server(用于清单、主机、作业模板和作业)。算上 harness 自身的工具,模型在每次调用时被提供了 69 个工具定义。每个定义都消耗 token,而且模型在每一轮都要再次为它们付费。

响应才是更大的问题。在基础设施即代码管理下的企业环境拥有数千到数万个节点,描述这些节点的工具也以这样的规模返回结果。为浏览 UI 的人设计的工具会返回每条记录的每个字段。在我们的大型测试环境中,作业模板目录的一页(2,008 个模板中的 100 个)就有 494 KB,约 125,000 个 token。而 agent 通常只需要其中一行。

使用直接工具调用时,每个响应都进入模型的对话,模型在之后的每一轮都要重新读取整个对话。我们的 agent 在单个任务上可以进行超过 400 次工具调用,因此运行早期的一个大响应会被反复付费。成本随峰值请求大小增长,而且当上下文被 agent 根本不需要的输出填满时,运行可靠性也会下降。

Agent harness 各自以自己的方式对此进行防护。Claude Code 将任何超过 50,000 字符的 MCP 响应保存到文件,并给模型前 2,000 个字符。code CLI 保留响应中约 12,000 个 token,即头部和尾部。Gemini CLI 将长响应写入文件并显示其中一部分,Goose 只给模型文件的路径。这些限制防止对话爆炸,但它们在哪里截断就在哪里截断。在一次早期实验室运行中,agent 列出了八个作业模板,包含控制器返回的每个字段,共 59.6 KB。我们的网关在该响应末尾添加了一条注释,说明启动策略允许哪些模板。Claude Code 将响应截断到前 2,000 个字符,模型从未看到那条注释,运行也从未启动它需要的只读模板。

因此,在大环境中工作的 agent 要么付费携带它不需要的文本,要么丢失它确实需要的那一行。我们希望过滤在到达模型之前发生,并且对每个 harness 都以相同方式进行。

代码模式背后的想法很简单。模型不再一次调用一个工具并读取每个响应,而是编写一个简短的程序,将工具作为函数调用,过滤它们返回的内容,并只打印它需要的内容。Cloudflare 在 2025 年 9 月将其描述为 Code Mode,Anthropic 在 11 月写了关于使用 MCP 进行代码执行的文章,报告一个任务从 150,000 个 token 降至 2,000 个。Anthropic 也指出了关键问题:模型编写的代码必须在某个地方运行,这带来了运维开销和安全问题。

对我们来说,安全问题决定了设计。Agent 在每次运行时编写自己的转换代码。该代码按定义就是不受信任的,而且它调用的工具可以读取生产 CMDB 并在 AAP 中启动作业。无论运行它的是什么,都不能给程序绕过适用于直接调用的控制的途径。

我们考察了运行 agent 程序的三个位置:

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →