AskaEth
a684328b76
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled
feat(memory): T1 加保守全局速率限流(防每天数百到上千次调用失控)
主人 2026-10-07 裁定:按最优解加全局限流。
- 新增 t1RateGate(滑动窗口、可注入时钟,~70 行);默认
120 次 / 60 分钟(现网 700-1000 条新记忆/天 ≈ 25-42/小时,
取 120 留约 3-5 倍余量)
- 过闸摆在「t1Enabled + 有灰区候选」两个守卫之后、发请求之前
⇒ 不调模型就不占额度;放行才记账
- 超限语义与既有失败路径同源:跳过 T1、决定仍是 create、零改写,
只多一个 reason=t1_throttled 进留痕 + ReviewStats.T1Throttled 计数
- 配置键 t1PerWindow / t1WindowSec 放 $DATA_DIR/config/memory-tidy.json
(零新 env 键,启动期读一次);坏配置回落默认 + WARN,不启动失败
- 每窗口只记一条 WARN(超限是预期行为,一天几百条会淹掉真故障)
- IngestRuleVersion 仍为 d3.2:判定规则集与解析契约没变,变的只是
额度状态,reason 列已可分辨(升版会有 §17.6 记过的幂等键重复行副作用)
自研而非复用 session.NewRateLimiter 的理由(design/12 §N C.5 自己登记过
这条取舍):既有件 Allow() 内部写死 time.Now(),没有时钟注入缝,
而本切片必须能注入可控时钟;且复用会把 channel 层概念拖进 memory 包。
2026-10-07 16:25:54 +08:00
..
2026-10-05 11:47:39 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-07 14:10:33 +08:00
2026-10-07 16:25:54 +08:00
2026-10-07 11:41:44 +08:00
2026-10-07 11:41:44 +08:00
2026-10-07 11:41:44 +08:00
2026-10-07 11:41:44 +08:00
2026-10-06 15:59:16 +08:00
2026-10-06 15:59:16 +08:00
2026-10-07 14:10:33 +08:00
2026-10-06 15:59:16 +08:00
2026-10-07 16:22:28 +08:00
2026-10-06 08:04:12 +08:00
2026-10-06 15:59:16 +08:00
2026-10-07 16:25:54 +08:00
2026-10-06 08:04:12 +08:00
2026-10-07 14:10:33 +08:00
2026-10-07 16:25:54 +08:00
2026-10-07 16:25:54 +08:00
2026-10-07 14:10:33 +08:00
2026-10-07 16:25:54 +08:00
2026-10-06 08:04:12 +08:00
2026-10-07 16:25:54 +08:00
2026-10-05 11:47:39 +08:00
2026-10-05 08:04:47 +08:00
2026-10-05 08:04:47 +08:00
2026-10-04 14:20:22 +08:00
2026-10-05 08:04:47 +08:00
2026-10-04 13:32:54 +08:00
2026-10-05 11:47:39 +08:00
2026-10-05 08:04:47 +08:00
2026-10-04 13:32:54 +08:00
2026-10-05 11:47:39 +08:00
2026-10-04 13:32:54 +08:00
2026-10-07 09:48:37 +08:00
2026-10-04 12:07:44 +08:00
2026-10-04 12:07:44 +08:00
2026-10-07 09:48:37 +08:00
2026-10-05 11:47:39 +08:00
2026-10-07 11:41:44 +08:00
2026-10-05 11:47:39 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 14:20:22 +08:00
2026-10-07 11:41:44 +08:00
2026-10-06 22:39:35 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:26:34 +08:00
2026-10-06 08:04:12 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:07:00 +08:00
2026-10-05 11:29:36 +08:00
2026-10-07 11:07:00 +08:00
2026-10-06 08:04:12 +08:00
2026-10-06 08:04:12 +08:00
2026-10-07 11:07:00 +08:00
2026-10-06 08:04:12 +08:00
2026-10-06 08:04:12 +08:00
2026-10-06 08:04:12 +08:00
2026-10-07 11:07:00 +08:00
2026-10-07 11:07:00 +08:00
2026-10-07 11:07:00 +08:00
2026-10-06 22:39:35 +08:00
2026-10-06 22:39:35 +08:00
2026-10-07 11:07:00 +08:00
2026-10-07 11:26:34 +08:00
2026-10-06 22:39:35 +08:00
2026-10-07 11:07:00 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:26:34 +08:00
2026-10-07 11:26:34 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 14:20:22 +08:00
2026-10-04 14:20:22 +08:00
2026-10-04 13:32:54 +08:00
2026-10-04 14:20:22 +08:00