deepsleepAquarium/dsh-whale-post--packages-gate ↗★ 2

dsh-whale-post-gate

配额与计费闸 + 回环闸(示例②的挂点) · Quota and billing gate + loop gate (example (2)'s socket) 适合需要对消息发送进行额度控制和计费管理的管理员。

패키지
dsh-whale-post-gate
호환성
미검증
버전
0.6.1
라이선스
MIT
최근 업데이트
2026. 10. 11.

설치

$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.dayBoundaryHour0日界:0 = 自然日;写 9 = 早九点到次日早九点算一天
quota.typesdirect 120/broadcast 45/club 60/offline 80每桶 limit;离线桶可 perSend: true(按发信次数计)
quota.defaultLimit120没在表里的类型落这个桶(否则"注册一个新类型"在闸这层就不成立)
quota.bucketRules不配分桶规则(数组):[{ field, equals, bucket }] —— 从上往下第一个命中的赢;equals 不写 ⇒ "该字段有值就命中"。字段名与桶名全由配置给(本件里不出现任何具体名字)。不配 ⇒ 行为一字不变(离线走 offline、其余按 type)
now(顶层)不配时钟可注入:给一个有限数字(钉死时刻)或函数(() => ms)⇒ 台账的"哪一天"按它算(不配 ⇒ 真时间)。为什么要它:**"生效时刻"**这类规则("09:00 前按旧口径、到点后才分桶")必须能拿假时间测 —— 原来处处裸 Date.now() ⇒ 测不了
quota.defaultBucket不配一条规则都没命中时落哪个桶(配了 bucketRules 才有意义 —— 必须有,否则"带新字段的信"会掉回 type 桶)
quota.phoneFlag不配谁是"手机"(属性名由配置给 —— 本件不认识任何具体名字):带此属性的收件人只算在线件的小日上限。不配 ⇒ 这道闸完全不启用
quota.phoneOnlineCap3天花板:实际额度 = min(收件人自报的 onlineCapPerDay, 这个) —— "收件习惯由它自己声明,而声明只能更保守"(它能把上限调到 1,调不到天花板之上)。没自报 ⇒ 用天花板("没说" ≠ "可以一直叫醒它")
loop.ackMaxBytes40多长的正文才可能被当回执
loop.ackOnly中英回执词中英都认(只认中文 ⇒ 英文回执成了绕过闸的后门)
loop.pairWindowMs20 分钟同对回环的时间窗
loop.pairMax3同一对在这个窗内最多发几封
loop.hopMax3链深上限