跳到正文

赠金与签到 ​

三个额度窗口(5 小时、每周、每月)是每个账户日常的额度。赠金条是管理员在窗口之外另加的一条额度,有自己的规则;签到是让用户每天点一次,攒够天数就能领取赠金或重置卡。

两者都在后台的「赠金」页管理(需要「用量」权限)。设计的完整规则见赠金与签到(设计),这一页讲怎么用。

名词 ​

名词含义
赠金条一组规则:名称、谁能开关、是否公开数额、适用哪些模型、默认到期时间
赠金某个账户在某条赠金条里的一笔额度:数额、已用多少、何时到期、来源
备用额度一种赠金条,只在所有其他额度都用完之后才动用

赠金的单位是积分,和模型定价、窗口里的「积分」上限是同一把尺子。因此没有设置价格的模型(每次 0 积分)不会动用赠金,赠金条对它们没有意义。

新建赠金条 ​

点「新建赠金条」,填写:

字段说明
名称 / 说明都会显示给用户;说明按纯文本显示,不解析标记
类型「赠金」,或「备用额度」(见下)
开关「用户自选」:用户决定要不要优先用它;「始终优先」:不管用户怎么想都优先用;「仅在额度用完后」:留到窗口用完之后才用。备用额度没有这一项
默认开启只对「用户自选」有意义:用户还没选过时是开还是关,默认开
显示数额关闭后,用户只看到剩余的百分比和「已用完」,看不到 1000 这样的总数。这一项只在系统设置里的「用量显示为」是「具体数值」时才起作用:选「剩余」或「已用」时,所有赠金条本来就只显示百分比
适用模型勾选后,只有这些模型的请求会动用这条赠金条;一个都不勾表示全部模型
默认到期时间发放时没有另外指定有效期,就用它;留空表示不过期
使用中关闭后停止动用和显示,已发的数额保留

改规则立刻对所有人生效,已经发出去的数额不受影响。

一次请求怎么扣 ​

请求先确定要用的模型,然后按这个顺序找额度,够了就停:

  1. 优先使用的赠金:「始终优先」的,以及「用户自选」且用户开着的。同一个用户有多笔时,先到期的先用。这一步付掉的部分不占用窗口额度。
  2. 窗口额度:和没有赠金时完全一样。
  3. 后备赠金:窗口不够时,才动用「仅在额度用完后」的、用户自选但关着的,以及备用额度(备用额度排最后)。后备必须整笔覆盖这次请求才动用,不拆分。
  4. 重置卡:用户开了「自动使用重置卡」时,再花一张卡。赠金会过期而卡是用户自己攒的,所以赠金排在卡前面。
  5. 都不行:照旧返回 429,并告诉用户什么时候恢复。

「用户自选但关着」的赠金条不是不能用,只是「先不用」,会退到第 3 步。想让一条赠金用户绝对用不了,就别发给他。

每分钟的频率限制(RPM、TPM)不受赠金影响。 它们是保护上游服务商的突发限制,不是额度:一个请求即使整笔由赠金支付,也照样计入并受限制,被拒绝的请求不会动用赠金。

不设限的账户不动用赠金:默认设置下管理员不受额度限制,请求根本不预留额度,赠金也就不会被扣。

发放赠金 ​

在赠金条的面板里点「发放」:

字段说明
发给谁所有人、某个用户组,或指定用户名(逗号分隔,不区分大小写)
每个账户的积分大于 0、不超过 1,000,000;填错三个零不会悄悄发给所有人
有效期(天)自现在起多少天后到期;留空则用赠金条的默认到期时间,两者都没有就不过期
备注一句话,会写进这笔赠金的记录

一次发放是一个整体:任何一个用户名不存在,整次都不发。「所有人」包括全部账户,含已停用的。每个收到赠金的账户会收到一条站内通知。

查看、收回、停用与删除 ​

  • 查看:赠金条面板里的「已发放」列出每笔赠金——账户、已用/总额、到期时间、来源(管理员发放或签到)、备注。
  • 收回:点某笔赠金的「收回」,只收回没用完的部分;已经用掉的部分保留在记录里。
  • 停用:把「使用中」关掉,停止动用和显示,数额保留,重新开启后继续。
  • 删除:连同其中所有赠金一起删除,不能恢复,所以要先确认一次。

到期 ​

到期时刻之后,那一笔不再被动用(不会被删除,仍在记录里)。到期前 3 天,系统给持有人发一条站内通知,每笔赠金只通知一次,同一个账户同一条赠金条里快到期的几笔合并成一条。

备用额度 ​

类型选「备用额度」,就是所有额度(窗口和各条赠金)都用完之后才动用的一笔,比如「用完之后再送 20 积分」。它没有用户开关,永远排在最后,也可以像赠金一样限定模型、设置到期时间。

备用额度是预先发好、最后才动用的,用户在到账前就能看见它;不是「用完之后才凭空出现」。

共享额度池 ​

类型选「共享额度池」,就是所有账户共用的一份余额,只给它勾选的模型用(一个都不勾表示所有模型)。它没有「发放」,管理员直接给池子充值;每个用户都能看到它,不需要持有什么。

字段说明
开关「用户自选」:每个用户自己决定要不要优先用池子,关着的话池子退到窗口用完之后再用;「强制启用」:这些模型的请求先扣池子,池子用完(或当天份额用完)就改扣用户自己的额度;「只能用额度池」:这些模型只从池子扣,不碰窗口、不碰用户自己的赠金、不用重置卡,池子用完或当天份额用完就直接拒绝(429,告诉用户什么时候恢复)
重置「不重置」:充多少用多少;「每天 / 每周(周一)/ 每月」:每个周期开始时把余额重置为「重置为」的数额。周期按签到设置的时区算。手动充值的部分只保留到下次重置
初始余额只在新建时填;留空则等于「重置为」
每人每天上限一个账户一天最多从池子里用多少,留空或 0 表示不限,用来防止一个人把池子吃光

建好之后,打开池子的面板可以看到剩余余额和今天有几个账户用过,在「调整余额」里选「增加」(填负数是扣掉,最多扣到 0)或「设为剩余」。

几点要知道:

  • 池子排在扣费顺序的最前面:在「优先使用的赠金」之前先扣池子;后备阶段同样先扣池子。
  • 「只能用额度池」时,请求结束后的实际花费即使超过预留,也全部记到池子上,不会转到用户的窗口。
  • 不设限的账户(默认是管理员)不动用池子,和赠金一样。
  • 池子不能用作签到奖励,也不能和别的类型互相转换。

用户看到什么 ​

用户在 /usage 的「赠金」一节看到自己持有的每条赠金条:

  • 名称、剩余多少、最近的到期时间、适用模型数量。「剩余多少」的措辞跟额度窗口一致,由系统设置里的「用量显示为」决定:「剩余」显示「还剩 60%」,「已用」显示「已用 40%」,「具体数值」显示「剩余 6 / 10」(不公开数额的赠金条仍显示百分比)。
  • 一行说明这条赠金现在是「先于额度使用」还是「在额度之后使用」。
  • 「用户自选」的赠金条有一个「优先使用」开关;强制的那几条只显示状态。
  • 共享额度池也显示在这里,标着「所有人共用」,有每人每天上限的话会写「今天已用 X,每人每天 Y」,定期重置的会写下次重置时间。

签到 ​

后台「赠金」页下方的「签到」一节:

设置说明
签到整体开关,关闭时用户端什么都不显示
时区「一天」按这个时区算,默认 Asia/Shanghai;写错的名字按 UTC 处理,保存时会拒绝
每次签到的奖励可以什么都不给,也可以每次给一笔赠金(选哪条赠金条、数额、几天后到期)或重置卡
里程碑一张表,每行是「连续签到 N 天」或「本月累计签到 N 天」→ 奖励,最多 30 行

奖励有两种:赠金(选赠金条、数额、有效天数;有效天数留 0 则用赠金条的默认到期时间)和重置卡(名称、重置范围、张数、有效天数)。

里程碑要**用户自己点「领取」**才发。一个周期内每行只能领一次:连续天数的周期是这一段连续,本月累计的周期是自然月。用户漏签一天,连续天数就从头算。

防刷:

  • 每个账户每天只能签到一次,靠数据库唯一键保证,多个请求同时到达也只记一天、只发一次奖励;里程碑的领取同理。
  • 已停用的账户不能签到;实例要求验证邮箱才能对话的,没验证邮箱的账户也不能签到。
  • 保存设置时就检查:赠金奖励指向的赠金条必须存在且在使用中,数额、天数、张数都要在合理范围内。

如果每次签到的奖励发不出去(比如它指向的赠金条后来被删了),签到本身仍然记录,界面会提示奖励没有到账。这时去后台修正奖励设置。

控制台命令 ​

命令作用
bonus list create edit delete管理赠金条
bonus grant grants revoke发放、查看、收回
bonus pool给共享额度池充值或设定剩余(--add N / --set N)
checkin config config set查看和修改签到设置
credit bonus credit bonus switch用户查看自己的赠金条、开关「优先使用」
checkin checkin now checkin claim用户查看签到、签到、领取里程碑

以上管理命令需要「用量」权限;用户命令所有账户都可用。bonus grant、bonus revoke、bonus delete 需要加 --yes 才会执行。checkin config set 的奖励和里程碑用 JSON 传入。详细参数用 <命令> --help 查看。

接口 ​

接口权限说明
GET/POST /api/admin/bonus/bars用量列出、新建赠金条
PUT/DELETE /api/admin/bonus/bars/{id}用量修改、删除赠金条
GET/POST /api/admin/bonus/bars/{id}/grants用量列出、发放
DELETE /api/admin/bonus/grants/{id}用量收回一笔
POST /api/admin/bonus/bars/{id}/pool用量给共享额度池充值({"op":"add","amount":N})或设定剩余("op":"set")
GET/PUT /api/admin/checkin用量读取、保存签到设置
GET /api/bonus、PUT /api/bonus/{id}/choice登录用户自己的赠金条、开关
GET/POST /api/checkin、POST /api/checkin/claims/{rule}登录用户签到状态、签到、领取

Obsidian Arc · 自托管 AI 工作空间