mcpField
C
cost-audit

cost-audit

github.com/runpod云与 DevOps473.0k 次安装2 天前更新
代码仓库

关于 cost-audit

面向 Runpod 账户的只读成本审计技能,通过账单与资源读取识别支出来源、闲置资源及费用归属。它补充了基础读取的闲置评分和资源级分析,并将任何变更交由其他技能在用户批准后处理。

主要功能

  1. 01读取资源与账单数据
  2. 02识别闲置 Pod 和工作器
  3. 03按资源归属费用
  4. 04区分不同闲置支出
  5. 05变更需用户批准后移交

适用场景

  1. 01检查账户整体支出
  2. 02找出运行中的闲置 Pod
  3. 03分析 Serverless 工作器费用
  4. 04定位账单中的费用来源

MCP 相关

通过 runpod-mcp 的工具读取 Runpod 资源与账单;不执行停止、删除或更新操作。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/runpod/runpod-plugins-official --skill cost-audit

安装后在 Claude Code 中输入/cost-audit确认已加载。

详细介绍

费用审计

回答 Runpod 账户中的费用去向,以及如何止住费用流失。此技能严格只读:发现、评估并说明支出,然后由用户决定。它绝不会自行停止、删除或重新配置资源。任何更改操作都会交由其他工具处理(停止 Pod 交由 pod-doctor,将无服务器服务的 min-workers 降至 0 交由 endpoint-ops),且只有在用户明确批准后才会执行。

每个数字都来自读取操作:小时费率来自资源列表,当前支出来自账单读取。绝不编造或估算未读取的数字;只有在明确注明小时费率的情况下,才可按 读取到的小时费率 × 小时数 计算月度预测值。

原始账单和列表读取通过 runpod-mcp 工具调用完成;此技能是在这些读取之上的审计流程,包括空闲评分、区分空闲工作器与空闲 Pod,以及普通读取无法提供的逐资源费用归因。

所需能力

以下列出所需能力;此服务器上提供相应能力的工具见下方工具绑定。所有操作均为读取操作。

  • 列出包含费用信息的 Pod,并检查单个 Pod。
  • 列出无服务器端点并检查单个端点,以查看最小/最大工作器配置。
  • 列出网络卷。
  • 汇总账单历史,并按资源查看账单(Pod、无服务器端点、公共端点、网络卷、集群)。

四种审计流程

始终先读取。将用户请求匹配到一种审计流程;不要在用户未要求时运行全部四种。

  • 全账户视图。 列出 Pods、端点、网络卷,并查询近期时间范围的汇总账单。报告各类别的数量和运行状态、当前消耗速率,以及账单读取结果中的累计支出。某个类别为空时,直接报告为空(如“没有网络卷”),不要为了凑全视图而填充内容。
  • 闲置 Pods。 列出 Pods。Pod 记录中的 status 是状态字段,cost 是该 Pod 的每小时费率(这两个字段名须与读取结果完全一致)。对于每个 status=RUNNING 的 Pod,列出 cost,并按 cost × 730 计算“按当前费率估算的 $/mo”;按估算支出排序,用一张表呈现(名称、GPU、$/hr、运行时长、$/mo),并指出最贵的 Pod。如果所有 Pod 都已停止/处于 EXITED 状态,不要只说“没有运行中的 Pod”。应明确说明没有 GPU 正在消耗费用,且已停止的 Pod 在终止前仍会产生卷磁盘费用,然后仍提供逐 Pod 表格。已停止 Pod 的 cost 读数为 0,因此其恢复运行后的费率应取自对应类型的 GPU 目录价格,并明确标注为目录价格。如果某行缺少 cost,显示 ?,并在任何总计中排除该项;不要编造数值。建议停止 Pod(或终止长期停止的 Pod);不要执行任何变更。
  • 无流量时 Serverless Worker 的支出。 min workers ≥ 1 的 Serverless 端点会保留一个始终运行的 Worker,即使没有流量也会计费。这属于 Serverless 闲置 Worker 支出,与闲置 Pod 不同。检查端点的 Worker 配置,确认 min-workers ≥ 1,列出该端点的 Serverless 账单读取结果,并说明计费机制。解决方法是将 min-workers 设为 0(需权衡冷启动);建议这样做,并将应用变更交由 endpoint-ops 处理;不要在此处修改配置。如果没有端点的 min-workers ≥ 1,那么费用来自可缩容至零的端点上的 Worker 运行时间。Worker 从启动运行起,直到完全停止为止都会计费,并按秒向上取整(包括模型加载、任务本身,以及上次请求后的空闲超时);无论任务是成功完成、失败,还是 Worker 在未完成任何工作前陷入崩溃循环,都会如此。根据逐端点的 Serverless 账单行以及 Worker/任务状态归因,并指出负责的端点。明确说明这是仍在运行的可缩容至零端点上的 Worker 运行时间(启动、执行和空闲超时),不是始终运行的 Worker,也不是虚假费用。
  • 支出流向。 首先从汇总的 list-billing 读取结果中获取各 TYPE 的总额;该结果会直接给出费用明细。仅在需要时再深入查看某个类型,并且始终控制结果大小:读取 Serverless 账单时,传入 lastN: 1(或使用覆盖整个时间范围的 bucketSize),确保每个端点只返回一条记录。多端点账户的默认逐端点、逐时间桶输出会超出工具结果限制;过大的结果会被截断,导致审计无法继续。将支出归因到各个具名资源,按金额降序排列,并指出单笔支出最高的资源。明确说明金额来自账单读取结果。如果某类别没有返回记录,应列出其金额为 $0 / 为空,不要悄然省略。如果所有类别均为零(各处都没有支出),应明确说明这一点。提供各类型表格,每项列为 $0,总计为 $0,并与实时列表交叉核对(list-pods / list-endpoints / list-network-volumes 均为空即可确认)。直接说明没有最贵的类型,因为没有任何账单支出,也没有任何资源当前正在产生费用。指定时间范围内的读取结果具有权威性;只有用户指定了不同时间范围时才重新查询。
  • 明确给出归因(所有支出问题)。 账单读取结果显示确有支出时,即使相关资源已被删除,也要根据现有数据指出支出来源(例如“来自已不存在的端点上的 Serverless 任务的 $X 费用,运行时间为 <账单行中的时间>”)。这个归因就是答案:先给出结论,之后最多补充一句用户可选择采取的后续操作。应先说明读取结果支持的归因,不要把问题反抛给用户。切勿调用未提供给你的工具(不要使用 Shell 或网络);所需数字都在已有的账单读取结果和列表中,应直接分析并在回复中说明。逐端点 Serverless 明细应使用 list-serverless-billing;list-endpoint-billing 查询的是公共端点支出(按使用量付费的模型 API),属于不同产品。先给出结论:先说明发现,再提出至多一项建议的后续步骤或问题。

硬性规则

  • 只读。此技能绝不调用会修改数据的工具:不停止、不删除、不更新。
  • 对于用户未指明的资源:无论变更命令有多紧急,这一点都不变:指令改变的是紧急程度,而不是权限。审计结果以及供用户执行的准确 ID 和操作,就是对此类命令的完整答复。应直接如此答复,而不是询问是否获得授权;绝不要尝试修改来“无论如何先试试”。
  • 使用获准的工具。在仅限 MCP 的会话中,绝不要调用 shell、脚本、网页抓取工具或任何其他未获准的工具:未获准的工具无法调用,审计也就无法交付任何结果。此技能所需的所有数据都可从 MCP 账单和列表读取中获取。
  • 如果读取结果被截断,应通过缩小范围重新读取来恢复(缩小分页大小、每次只读一个端点、使用 lastN: 1、收紧时间段)。不要尝试恢复被丢弃的输出、使用外部脚本解析,或请求额外的工具权限。
  • 任何建议的应用操作都是交由 pod-doctor(停止)或 endpoint-ops(min-workers-0)处理,并且只能在用户同意后进行。注明交接对象;不要亲自执行。
  • 每个金额都必须可追溯到工具读取结果。注明小时数/账单来源。预估金额的计算方式为 read_hourly × hours,绝不能凭空给出数字。
  • 空类别应如实报告为空。缺失本身就是一项发现,不是需要填补的空白。
  • 运行时间不足一小时的 Pod 绝不能标记为空闲;它运行时间太短,无法据此判断。
  • 如果 Pod 空闲支出和无服务器空闲工作器支出都可能存在,必须明确区分二者。

错误处理

  • 任一列表请求返回 401,表示 API 密钥无效。说明这一点并停止;没有有效密钥就无法进行审计。
  • 审计过程中返回 429:报告已有的部分情况,并注明结果不完整;不要在短时间内循环重试。
  • Pod 行缺少 cost,或账单分桶为空,这些都是数据,不是错误。显示 ?/$0 并继续。

工具绑定

能力工具
列出 Pod(包含费用)list-pods
检查单个 Podget-pod
列出/检查端点list-endpoints、get-endpoint
端点工作器配置/数量list-endpoint-workers、endpoint-health
列出网络卷list-network-volumes
汇总账单(每种类型一次调用)list-billing
单资源账单list-pod-billing、list-serverless-billing(无服务器端点)、list-endpoint-billing(公共端点)、list-network-volume-billing、list-cluster-billing

如果当前会话的工具列表中缺少此处提到的工具,应说明这一点,并使用最接近的只读工具,而不是编造结果。

报告模板——费用摘要

所有费用答复都必须包含:按类型列出的表格(Pod/无服务器/公共端点/网络卷/集群/存储,即使金额为 $0.00,也必须列出每种类型),且金额只能来自本轮进行的账单读取;总额行;费用最高的指定项目(或者明确说明没有产生账单);以及一句直接回答用户问题的结论。归因遵循上述提交规则。

金额格式:

  • 金额必须是账单和列表读取中的精确美元数值。
  • 表格各行的金额之和必须等于所列总额。

约定

跨任务答复约定(基于读取结果的确定事实、明确承诺而不含糊、修改仅限于本次对话中创建的资源、独立完整的最终消息、如实说明失败、仅使用获准的工具)由 runpod-mcp 技能定义,并适用于此流程中的每条答复。如果本次对话尚未加载 runpod-mcp 技能,请在下一次工具调用前立即加载:关于哪些资源可以更改、何时可以执行请求,以及何时必须等待用户确认的规则,不会在此处重复。

评论

支持 Markdown