跳到正文

软件功能授权与使用次数限制

“允许导出”与“每月允许导出 500 次”是两条不同的规则。RunFeature 只检查权限;RunMeteredFeature 在业务成功后确认次数。

设置每月 500 次导出

在策略的功能列表中添加 export,再增加一条功能额度:功能 export、额度 500、周期“每月”。默认用完就拒绝。允许额外使用时,填写最多额外次数;系统会记录超出量,供你的订单系统处理。

每天和每月额度按 UTC 零点重置;累计额度不重置。修改额度不会删除已经使用的次数。

导出成功后,才确认扣次

把自己的业务函数传给对应 SDK 方法。新任务使用新编号,同一任务重试使用原编号、功能和数量;不同进程不要同时执行同一编号。

语言计次业务调用
Goclient.RunMeteredFeature(ctx, "export", 1, jobID, exportReport)
Javaclient.runMeteredFeature("export", 1, jobID, this::exportReport)
Node.jsawait client.runMeteredFeature("export", 1, jobID, exportReport)
Pythonclient.run_metered_feature("export", 1, job_id, export_report)
C#await client.RunMeteredFeature("export", 1, jobID, ExportReport)
C++client.RunMeteredFeature("export", 1, jobID, exportReport)
Rustclient.run_metered_feature("export", 1, &job_id, || export_report())?
Rubyclient.run_metered_feature("export", 1, job_id) { export_report }
Cln_run_metered_feature(client, "export", 1, job_id, export_report, context)

先在策略中为实际功能设置次数规则,再按 AI 接入流程生成提示词。AI 应使用对应语言的 RunMeteredFeature 和稳定任务编号接入真实业务,重试同一任务时保留原编号。

SDK 保存待确认任务。

业务成功而确认失败时,再次调用同一任务只重试确认,不重复执行业务。若程序在业务执行中途崩溃,SDK 会停止自动重做;核对自己的持久业务结果后,用 ResolveMeteredFeature 确认或取消。远程扣次和本地业务不构成同一个事务。

需要自己控制预留流程时
  1. 为这次导出生成并保存一个业务编号。
  2. Reserve 预留 1 次额度,返回 pending 后再导出。返回 committed 表示已完成过,不能再次执行。
  3. 导出成功并保存结果后,Commit 确认扣次。
  4. 导出失败且没有完成业务时,Cancel 取消预留,不扣次数。

预留默认有效 15 分钟,遇到 UTC 周期重置会提前结束。直接调用 API 可用 reservation_seconds 设置 30–3600 秒。

语言预留确认 / 取消
GoReserve(ctx, "export", 1, jobID)Commit / Cancel(ctx, hold.ID, jobID)
Java / Node.jsreserve("export", 1, jobID)commit / cancel(id, jobID)
Cln_reserve(client, "export", 1, jobID)ln_commit / ln_cancel(client, id, jobID)
C++ / C#Reserve("export", 1, jobID)Commit / Cancel(id, jobID)
Pythonreserve("export", 1, jobID)commit / cancel(id, jobID)

返回字段怎么读?

字段含义
reservation_id / operation_id预留编号与原业务编号,重试继续使用原值。
status / expires_at预留状态和截止时间;pending 待完成,committed 已扣次,canceled 已取消,expired 已过期。
consumption.used / reserved本周期已确认次数 / 所有有效任务正在预留的次数。
consumption.limit / remaining基础额度 / 可用基础次数。remaining = max(0, limit - used - reserved),不包含允许超出的部分。
consumption.quantity / overage本任务次数 / 已确认的基础额度超出量;不会替厂商向客户收款。
consumption.period / reset_atUTC 用量周期 / 下次重置时间;终身额度的 reset_at 为 null。

发送什么、返回什么和每个字段的类型,见授权验证接口中的预留、确认和取消。

确认超时后,只重试确认。

业务已成功时,不取消预留,也不重新导出。保存原编号和结果,继续调用 Commit;若预留已过期,保留任务供人工核对。远程扣次无法与你本地业务组成同一个事务。

Consume 仍可用于直接记账,但会立即扣次。需要避免业务失败仍扣次时,请用预留流程。所有计次接口都需要联网,不计入平台四类 API 调用额度。