mirror of
https://gitcode.com/JianFeeeee/ModelRouter.git
synced 2026-11-07 09:47:23 +00:00
## 为什么需要 `account_add` 允许**不带凭据**创建账号(设计如此:"未带凭据的等 login 完成"), 于是"先建占位、再走登录补齐"是正常用法。但登录没走完时(用户放弃、或历史批量 导入)会留下**只有元数据、永远不可用**的账号:它们占着 provider 的账号计数 (面板显示"10 个账号"却全不可用),让"这个平台到底能不能用"难以判断。 实测生产:13 个账号里只有 1 个真正可用 —— codearts 10 个 + trae 2 个全是占位 (同秒批量创建、nickname=id、凭据库里无对应条目)。 ## 安全性(破坏性操作,两条性质都被变异验证钉住) ① **只删没有凭据的**:有凭据的一律不动(哪怕它测试失败 —— 那是"可疑"而非 "空壳",处置完全不同); ② **dry_run 默认开启**:不显式传 dry_run=false 就只回报会删哪些,不真删; ③ 复用 `plugin.account_delete`(同一份删除实现)—— 删除时要顺带做的事 (drop source、清旧单账号源、删凭据)不另写一套,否则必然漂移。 ## ★ 踩到 Lua 顶层 local 上限(第 13 次同类) helper 写成顶层 `local function accountHasCredential` 后 `luac -p` 直接报 `too many local variables (limit is 200)`。改为挂在 plugin 表上(`plugin.__hasCredential`) —— 同样只有一份实现,且不占顶层名额。**每次给本文件加顶层 local 前必须 luac -p。** ## 判据(3 条 + 变异 2/2) internal/core/channels_clear_credentialless_test.go - 只删空壳、保留有凭据的,且**有凭据者的凭据必须仍在**(防误删) - 指定 platform 时范围隔离(不动别的平台) - 未知平台必须报错(否则会误删全部平台) 变异:无条件全删 → 报红;dry_run 默认改 false → 报红。