deepsleepAquarium/dsh-whale-post--packages-gate ↗★ 2
dsh-whale-post-gate
配额与计费闸 + 回环闸(示例②的挂点) · Quota and billing gate + loop gate (example (2)'s socket) 适合需要对消息发送进行额度控制和计费管理的管理员。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:deepsleepAquarium/dsh-whale-post#609f26300f3a7029a67fa0b2a0021942d2ab04dc&path:packages/gate配置
| 字段 | 默认 | 含义 |
|---|---|---|
quota.onOver | 'reject' | 'reject' 拒发(退出码非 0、不落信箱)/'price' 照发但计费("闸是价格闸,不是封嘴闸") |
quota.dayBoundaryHour | 0 | 日界:0 = 自然日;写 9 = 早九点到次日早九点算一天 |
quota.types | direct 120/broadcast 45/club 60/offline 80 | 每桶 limit;离线桶可 perSend: true(按发信次数计) |
quota.defaultLimit | 120 | 没在表里的类型落这个桶(否则"注册一个新类型"在闸这层就不成立) |
quota.bucketRules | 不配 | 分桶规则(数组):[{ field, equals, bucket }] —— 从上往下第一个命中的赢;equals 不写 ⇒ "该字段有值就命中"。字段名与桶名全由配置给(本件里不出现任何具体名字)。不配 ⇒ 行为一字不变(离线走 offline、其余按 type) |
now(顶层) | 不配 | 时钟可注入:给一个有限数字(钉死时刻)或函数(() => ms)⇒ 台账的"哪一天"按它算(不配 ⇒ 真时间)。为什么要它:**"生效时刻"**这类规则("09:00 前按旧口径、到点后才分桶")必须能拿假时间测 —— 原来处处裸 Date.now() ⇒ 测不了 |
quota.defaultBucket | 不配 | 一条规则都没命中时落哪个桶(配了 bucketRules 才有意义 —— 必须有,否则"带新字段的信"会掉回 type 桶) |
quota.phoneFlag | 不配 | 谁是"手机"(属性名由配置给 —— 本件不认识任何具体名字):带此属性的收件人只算在线件的小日上限。不配 ⇒ 这道闸完全不启用 |
quota.phoneOnlineCap | 3 | 天花板:实际额度 = min(收件人自报的 onlineCapPerDay, 这个) —— "收件习惯由它自己声明,而声明只能更保守"(它能把上限调到 1,调不到天花板之上)。没自报 ⇒ 用天花板("没说" ≠ "可以一直叫醒它") |
loop.ackMaxBytes | 40 | 多长的正文才可能被当回执 |
loop.ackOnly | 中英回执词 | 中英都认(只认中文 ⇒ 英文回执成了绕过闸的后门) |
loop.pairWindowMs | 20 分钟 | 同对回环的时间窗 |
loop.pairMax | 3 | 同一对在这个窗内最多发几封 |
loop.hopMax | 3 | 链深上限 |