API限流算法引擎·专业版

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

面向后端开发者的 API 限流算法引擎(专业版)。在免费版设计指南基础上,提供可直接集成到 Python 服务的三种限流算法实现:令牌桶(允许突发)、漏桶(恒定速率)、滑动窗口日志(边界精确)。时钟通过 clock 函数注入,便于单元测试与确定性复现;提供放行判断、重试等待时间、窗口计数等方法,参数非法与时钟回退均有校验。商品类技能,引擎已通过 9 正例 + 3 边界断言测试。可据此改造为 Redis+Lua 分布式限流。

一句话选型结论

按资料字段整理

API限流算法引擎·专业版是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_9f56358d/zsai-api-rate-limiting-pro
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_9f56358d仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量4.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
API限流算法引擎·专业版当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

4.9 KB
模型实际读到的说明书原文,来自技能仓库

API限流算法引擎·专业版

输入 / 输出

输入:限流参数(容量/速率或窗口)、请求时间;输出:allow() 是否放行、retry_after() 等待秒数、current_count() 窗口计数。

使用示例

from rate_limiter import TokenBucket
import time
tb = TokenBucket(capacity=100, refill_rate=10, clock=time.time)
if tb.allow():
    ...  # 处理请求
else:
    ...  # 返回 429,Retry-After: tb.retry_after()

引擎代码:rate_limiter.py

# -*- coding: utf-8 -*-
"""API 限流算法引擎:令牌桶 / 漏桶 / 滑动窗口。确定性算法,时间戳由调用方传入,便于测试与复现。"""


class TokenBucket:
    """令牌桶:允许一定突发(桶容量内),按固定速率补充令牌。

    capacity: 桶容量(最大突发请求数)
    refill_rate: 每秒补充令牌数
    """

    def __init__(self, capacity, refill_rate, clock=lambda: 0.0):
        if capacity <= 0 or refill_rate <= 0:
            raise ValueError("capacity 与 refill_rate 必须为正数")
        self.capacity = float(capacity)
        self.refill_rate = float(refill_rate)
        self._clock = clock
        self.tokens = float(capacity)
        self.last = clock()

    def allow(self, tokens=1):
        now = self._clock()
        if now < self.last:
            raise ValueError("时钟不能回退")
        self.tokens = min(self.capacity, self.tokens + (now - self.last) * self.refill_rate)
        self.last = now
        if self.tokens >= tokens:
            self.tokens -= tokens
            return True
        return False

    def retry_after(self, tokens=1):
        """距下一次放行还需等待的秒数(当前令牌不足时)。"""
        need = tokens - self.tokens
        return max(0.0, need / self.refill_rate)


class LeakyBucket:
    """漏桶:请求以固定速率漏出,超出容量直接拒绝,输出速率恒定(适合平滑流量)。"""

    def __init__(self, capacity, leak_rate, clock=lambda: 0.0):
        if capacity <= 0 or leak_rate <= 0:
            raise ValueError("capacity 与 leak_rate 必须为正数")
        self.capacity = float(capacity)
        self.leak_rate = float(leak_rate)
        self._clock = clock
        self.water = 0.0
        self.last = clock()

    def allow(self, amount=1):
        now = self._clock()
        if now < self.last:
            raise ValueError("时钟不能回退")
        self.water = max(0.0, self.water - (now - self.last) * self.leak_rate)
        self.last = now
        if self.water + amount <= self.capacity:
            self.water += amount
            return True
        return False


class SlidingWindowLog:
    """滑动窗口日志:记录窗口内每个请求的时间戳,统计窗口内请求数,边界精确(无固定窗口的2倍突发问题)。"""

    def __init__(self, max_requests, window_seconds, clock=lambda: 0.0):
        if max_requests <= 0 or window_seconds <= 0:
            raise ValueError("max_requests 与 window_seconds 必须为正数")
        self.max_requests = int(max_requests)
        self.window = float(window_seconds)
        self._clock = clock
        self.log = []

    def allow(self):
        now = self._clock()
        boundary = now - self.window
        self.log = [t for t in self.log if t > boundary]
        if len(self.log) < self.max_requests:
            self.log.append(now)
            return True
        return False

    def current_count(self):
        now = self._clock()
        return len([t for t in self.log if t > now - self.window])

测试(9 正例 + 3 边界(test_rate_limiter.py 实跑全过):满桶突发、时间推进补令牌、漏桶恒定漏出、滑动窗口精确计数与无2倍突发;非法参数、时钟回退、零配额边界均正确报错。)

硬性规则

  • 确定性输出:相同输入必得相同结果,时间/随机量通过参数注入;
  • 非法输入(负数、越界、格式错误)一律抛 ValueError,不静默吞掉;
  • 本引擎为算法/计算参考,集成到业务时请结合真实参数与压测,不替代专业判断。

常见问题

5 问
答案由本站依据条目字段整理
API限流算法引擎·专业版怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_9f56358d/zsai-api-rate-limiting-pro。安装方式为未标注。装完刷新技能列表或重开客户端。

API限流算法引擎·专业版支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

API限流算法引擎·专业版权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

API限流算法引擎·专业版收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

API限流算法引擎·专业版用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。