Install
openclaw skills install @thcjp/gateway-manager-freeopenclaw skills install @thcjp/gateway-manager-free把"网关配置"从翻文档翻半天压缩到填个表。声明式路由+统一认证+限流+监控,四件套。
API网关管理器免费版解决中小团队最常踩的三个坑:路由配置散落在多个文件、限流值靠拍脑袋、每个服务各自实现认证。本工具把这些高频操作固化为声明式YAML配置,一键生成Kong/APISIX/Nginx/Envoy的配置文件,配以网关选型决策矩阵,让Agent能直接给出可部署的配置与可执行的优化建议。
对Agent说:
"帮我配置一个网关路由:把 /api/v1/users/* 转发到用户服务 http://user-service:8001,需要JWT认证,限流100QPS。"
Agent输出声明式YAML:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | API网关管理器(免费版)处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
# gateway.yaml
routes:
- name: user-service
path: /api/v1/users/*
methods: [GET, POST, PUT, DELETE]
upstream: http://user-service:8001
strip_path: true
auth:
type: jwt
secret_env: JWT_SECRET
algorithm: HS256
rate_limit:
type: sliding_window
qps: 100
burst: 20
timeout:
connect: 5s
send: 30s
read: 30s
# 生成Kong声明式配置
gateway-manager render --config gateway.yaml --target kong --output kong.yaml
# ...
# 生成APISIX路由
gateway-manager render --config gateway.yaml --target apisix --output apisix-routes.yaml
# ...
# 生成Nginx配置
gateway-manager render --config gateway.yaml --target nginx --output nginx.conf
# ...
# 生成Envoy配置
gateway-manager render --config gateway.yaml --target envoy --output envoy.yaml
统一的YAML DSL,一次编写多网关生成:
| 匹配维度 | 字段 | 示例 |
|---|---|---|
| 路径前缀 | path | /api/v1/users/* |
| HTTP方法 | methods | [GET, POST] |
| Host头 | hosts | [api.example.com] |
| 自定义Header | headers | X-Version: v2 |
| 查询参数 | query | tenant=acme |
Agent执行规则:
/* 表示前缀匹配,/exact 表示精确匹配strip_path: true(转发时去掉匹配前缀)输入: 用户提供功能1:声明式路由配置所需的指令和必要参数。 处理: 解析功能1:声明式路由配置的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回功能1:声明式路由配置的响应数据,包含状态码、结果和日志。
四种认证模式在网关层统一处理,下游服务无需重复实现:
# API Key认证
auth:
type: api_key
header: X-API-Key
key_store: env # 从环境变量读取
key_env: API_KEY_STORE
# ...
# JWT认证
auth:
type: jwt
secret_env: JWT_SECRET
algorithm: HS256
claims:
- sub # 用户ID
- exp # 过期时间
- scope # 权限范围
# ...
# OAuth2 Token Introspection
auth:
type: oauth2
introspection_url: http://auth-service:8080/oauth/introspect
cache_ttl: 60 # introspection结果缓存60秒
# ...
# Basic Auth
auth:
type: basic
htpasswd_file: /etc/nginx/.htpasswd
安全红线:
输入: 用户提供功能2:统一认证代理所需的指令和必要参数。 处理: 解析功能2:统一认证代理的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回功能2:统一认证代理的响应数据,包含状态码、结果和日志。
两种限流算法,按需选择:
| 算法 | 适用场景 | 配置示例 |
|---|---|---|
| 固定窗口 | 简单场景,容忍边界突刺 | type: fixed_window, qps: 100 |
| 滑动窗口 | 精确限流,边界平滑 | type: sliding_window, qps: 100, burst: 20 |
rate_limit:
type: sliding_window
qps: 100
burst: 20
key: remote_addr # 按客户端IP限流
# 或 key: header:X-Tenant-Id 按租户限流
# 或 key: jwt:sub 按用户限流
response_headers: true # 返回X-RateLimit-Remaining头
限流key选择决策:
remote_addr:防爬虫、防DDoSheader:X-API-Key:按调用方限流jwt:sub:按用户限流header:X-Tenant-Id:多租户按租户限流输入: 用户提供已知限制所需的指令和必要参数。 处理: 解析已知限制的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回已知限制的响应数据,包含状态码、结果和日志。
采集四类核心指标,输出到Prometheus格式:
metrics:
enabled: true
port: 9091 # metrics暴露端口
collect:
- request_count # 请求总数
- request_duration # 请求延迟(P50/P95/P99)
- status_code_count # 状态码分布
- upstream_latency # 上游服务延迟
labels:
- route
- method
- status
关键指标看板:
Gateway Metrics Dashboard
=========================
Total QPS: 1,250
P50 Latency: 45ms
P95 Latency: 180ms
P99 Latency: 420ms
Error Rate (5xx): 0.3%
Rate Limited (429): 2.1%
# ...
Top Routes by QPS:
1. /api/v1/users 450 QPS P95:120ms
2. /api/v1/orders 320 QPS P95:200ms
3. /api/v1/products 280 QPS P95:90ms
输入: 用户提供功能4:监控指标采集所需的指令和必要参数。 处理: 解析功能4:监控指标采集的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回功能4:监控指标采集的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作不知道选哪个网关?按以下矩阵决策:
| 维度 | Kong | APISIX | Nginx | Envoy |
|---|---|---|---|---|
| 性能 | 高 | 极高 | 极高 | 高 |
| 插件生态 | 丰富 | 丰富 | 中(Lua) | 中(Filter) |
| 配置方式 | DB/声明式 | 声明式 | 文件 | xDS动态 |
| 动态配置 | 支持 | 支持 | 需reload | 原生支持 |
| 多协议 | HTTP/gRPC/TCP | HTTP/gRPC/TCP | HTTP/TCP | HTTP/gRPC/TCP/HTTP2 |
| 可观测性 | 内置 | 内置 | 需第三方 | 内置 |
| 学习曲线 | 中 | 中 | 低 | 高 |
| 适用规模 | 中大型 | 中大型 | 任意 | 大型/Service Mesh |
选型建议:
输入: 用户提供功能5:网关选型决策矩阵所需的指令和必要参数。 处理: 解析功能5:网关选型决策矩阵的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回功能5:网关选型决策矩阵的响应数据,包含状态码、结果和日志。
痛点:多个微服务各自暴露端口,前端要记多个域名,认证各自实现。
使用方式:对Agent说"帮我配一个网关,统一入口api.example.com,转发到user-service/order-service/product-service三个服务,全部走JWT认证"。Agent生成统一网关配置,含三个路由、统一JWT认证、按服务分配QPS限额。
效果:前端只需对接一个网关地址,认证逻辑收敛到网关层,下游服务简化。
痛点:老Nginx配置几千行,location嵌套混乱,没人敢动。
使用方式:把现有Nginx配置贴给Agent,Agent反解为声明式YAML,标注哪些location可合并、哪些规则重复、哪些缺超时配置。修正后重新生成干净的Nginx配置。
效果:Nginx配置从几千行混乱变为几百行声明式,可维护性大幅提升。
痛点:限流值设多少合适?设高了扛不住,设低了误杀正常用户。
使用方式:对Agent说"给支付接口配限流,按用户限流,每用户10QPS,突发20"。Agent生成sliding_window限流配置,建议先在灰度环境跑,观察429率,逐步调优。
效果:限流策略从拍脑袋变为数据驱动调优。
免费版支持四种主流网关的配置生成:Kong、APISIX、Nginx、Envoy。每次配置可一键生成多网关配置文件,方便选型对比。免费版不支持网关运行时管理(动态路由下发、配置热更新),属于专业版功能。
可以。生成的配置符合目标网关的规范,可直接放到对应目录部署。建议先在测试环境验证,特别是路由优先级、认证跳过路径等容易出错的配置。免费版提供配置语法校验,专业版提供配置dry-run测试。
简单场景用固定窗口(fixed_window),实现简单、性能高,但窗口边界可能有2倍突刺。精确限流用滑动窗口(sliding_window),边界平滑,但实现稍复杂。分布式场景(多网关实例)需要共享计数器,属于专业版功能。
认证失败统一返回401,响应体 {"code":401,"message":"Unauthorized"}。不建议在响应中区分"用户不存在"和"密码错误",避免被用于枚举攻击。JWT过期的处理建议客户端用refresh token换新access token,网关不负责刷新。
免费版支持按租户限流(key: header:X-Tenant-Id),但每个租户共享同一限流规则。按租户差异化限流(如付费租户1000QPS、免费租户10QPS)属于专业版功能。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent平台内置LLM提供(免费版路由GPT-4o-mini) |
| 目标网关 | 软件 | 必需 | 从对应官网安装 |
| Prometheus | 监控 | 可选 | 从prometheus.io安装,用于指标采集 |
~/.gateway/credentials/ 目录(已gitignore)本技能基于原始开源作品改进,保留原始版权声明:
本改进作品在原始作品基础上进行了深度差异化改造,包括但不限于:
原始MIT license允许使用、复制、修改和分发,需保留版权声明。本改进作品在保留原始版权声明的基础上添加自有署名,完全符合MIT license要求。
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:gateway-manager-pro
### 30秒上手:生成一个路由配置(补充)
# ...
对Agent说:
# ...
> "帮我配置一个网关路由:把 /api/v1/users/* 转发到用户服务 http://user-service:8001,需要JWT认证,限流100QPS。"
# ...
Agent输出声明式YAML:
# ...
```yaml
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |