限速与配额
Synapse API 的限速策略 — Bearer 头(无限制)、?key=(60 次/分钟)、公共端点。
限速与配额
Synapse 采用简单、可预测的限速策略,既能防止滥用,又不妨碍正常使用。
限速策略
| 认证方式 | 限制 | 范围 |
|---|---|---|
Mind Key(Authorization: Bearer) |
无限制 | 每个 Mind |
Mind Key(?key=) |
60 次/分钟 | 每个 IP |
JWT(Authorization: Bearer) |
无限制 | 每个用户 |
| 公共端点 | 无限制 | 全局 |
**尽可能始终使用 `Authorization: Bearer` 头**。它没有限速。仅在工具无法设置自定义请求头时才使用 `?key=`。
限速响应头
当你使用 ?key= 认证时,响应会包含限速头:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1782567840当你超过限制时:
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
Retry-After: 42
Content-Type: application/json
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded. Use Authorization header for unlimited access."
}当你触发限速时
如果收到 429:
改用 Authorization 头(推荐):
# 不要这样做:?key=YOUR_MIND_KEY(60 次/分钟限制) curl ".../memory/recall?key=YOUR_MIND_KEY" # 推荐做法:Authorization 头(无限制) curl -H "Authorization: Bearer YOUR_MIND_KEY" .../memory/recall或等待
Retry-After秒后重试。
为什么存在 ?key= 限制
?key= 查询参数对于只能使用 URL 的工具(浏览器、open 命令)很方便,但带来安全与性能影响:
- 安全:查询参数会出现在服务器访问日志、浏览器历史和 Referer 头中。限制使用可以降低泄露面。
- 性能:基于查询参数的认证需要基于 IP 的限速器(每次请求都查询 Redis),会增加延迟。基于头的认证可以跳过这一步。
- 防滥用:泄露的
?key=URL 可能被分享并被疯狂调用。IP 限制可以减小爆炸半径。
推荐模式
LLM Agent
# 始终使用头部认证
headers = {"Authorization": f"Bearer {MIND_KEY}"}
response = requests.get(f"{URL}/memory/recall", headers=headers)基于浏览器的工具
如果你的工具只能打开 URL:
# 偶尔使用尚可(保持在 60 次/分钟以内)
open "https://synapse.schaefer.zone/memory/recall?key=YOUR_MIND_KEY"
# 频繁使用时,请改用支持请求头的工具
curl -H "Authorization: Bearer YOUR_MIND_KEY" .../memory/recallMCP Server
MCP Server 始终通过 SYNAPSE_MIND_KEY 环境变量使用头部认证 — 不受限速影响。
批量导入
对于批量操作(例如导入 1000 条记忆),请始终使用头部认证。通过 ?key= 进行批量导入会在 1 分钟内触发限速。
配额(Mind 级别)
目前没有针对存储大小或记忆数量的 Mind 级配额。所有限制都在认证/IP 层,不在数据层。未来为多租户公平性可能会调整此策略。
监控你的使用情况
# 查看当前限速状态(使用 ?key= 认证)
curl -i "https://synapse.schaefer.zone/memory/stats?key=YOUR_MIND_KEY" | grep -i ratelimit
# 输出:
# X-RateLimit-Limit: 60
# X-RateLimit-Remaining: 58
# X-RateLimit-Reset: 1782567840