# 账号保护:本地修改状态 > 本文件记录上一轮默认模式调整。后续修复与最终验证见 [本地修复结果](LOCAL_REPAIR_RESULTS_2026-09-14.md)。 日期:2026-09-14。本次按用户要求将默认模式改为“初代兼容”,并修复与默认启停直接相关的配置还原和模式解析问题。只修改本地源码,未连接/部署服务器、未执行数据库迁移、未批量修改任何现有账号。 前两轮是审查与复现,没有修复业务代码。以下列出的“已完成”才是本轮实际修改并验证的内容。 ## 已完成 1. **默认初代兼容。** 新建、导入、复制以及关闭后重新开启保护,适用账号默认保存 `mode=legacy`。OpenAI OAuth/Setup Token 使用 session 指纹、nodejs24 TLS 模板;Anthropic OAuth/Setup Token 使用 nodejs24 TLS,保留原身份机制。并发保持原有更低限制,否则上限 16。随机代理、影子账号、API Key 及其他不适用类型继续使用通用并发保护。 2. **前后端默认入口一致。** 后端不传 mode 的预览/应用、前端 API 默认参数及编辑弹窗默认选择都改为 legacy;按钮排在策略列表首位并标注“默认”。仍可显式选择 mode1 或其他现有策略。 3. **保留存量选择。** 已开启的 mode1/mode2/其他策略不会因新默认值或普通读取而转换;重复调用开启接口保持当前开启策略。历史缺少 mode 的标记仍按原规则读取,避免升级解释漂移。 4. **TLS 还原修复。** 新应用策略保存完整受管配置快照;还原会恢复原 TLS 开关和自定义模板 ID。历史稀疏快照中未记录的字段不再被无条件删除。已修复“原来 TLS=true,还原后仍为 false”及“还原 legacy 丢失自定义模板 ID”两条复现。 5. **generic 识别修复。** 持久态 generic 不再被改写为 mode1;随机代理账号改为固定代理后,可以显式选择 mode1,正常路径不再误报“模式一配置无效”。 6. **未知策略拒绝。** 未知的非空模式返回 `400 / UNKNOWN_PROTECTION_STRATEGY`,不会自动应用默认策略。只有省略模式才使用新默认值。 说明:TLS 模板配置仍受全局 TLS 开关和插件传输控制。本次没有开启服务器的全局开关,也没有证明真实上游握手或模型效果。如果历史缺陷已经删除了某账号的原始模板信息,本次修复不能凭空恢复丢失的数据,需依据此前备份核对。 ## 仍未解决 | 问题 | 当前状态与下一步 | | --- | --- | | 原生 WSS 身份不一致 | **仍可复现,包括初代兼容。** mode1 的头/体设备 ID 不同;legacy/mode2 未完整应用声明身份。需要统一 HTTP/WSS/测试出站的身份计划并覆盖首帧及后续帧。默认值修改不能替代此修复。 | | 策略切换非原子 | **仍可复现。** 先提交还原再提交新策略;第二步失败会留下保护关闭状态。需要单事务及版本冲突检查,缓存只发布最终状态。 | | 无标记旧快照覆盖新保护 | **仍可复现。** 最终合并函数依据传入对象跳过读取已启用策略。需要以锁定后的数据库状态为准。 | | mode2 与批量保存保护不统一 | **mode2 普通编辑仍可复现;SQL 批量遗漏为源码已确认。** 需要统一全部策略的受管字段集合。 | | 平台适用条件未强制执行 | **仍可复现。** 最小兼容等显式策略仍能应用到不支持的平台。此次未知模式已拒绝,但不等于完整资格校验已完成。 | | TLS 预览不显示全局覆盖原因 | **可观测性缺口仍在。** 账号预览可以显示 nodejs24,实际因全局关闭而走标准传输。需区分配置目标、有效计划和实际观测。 | | 智能测试缺少执行策略快照 | 仍只保存保护布尔值和题目配置,不能完整重现实际策略/TLS/代理/并发。初代身份在智能测试入口的接入范围也需要进一步统一验收。 | 此外,项目总审查中的普通管理员系统操作权限、管理账号资源权限、定制站更新源、Live 零费用结算、缺失安全检查脚本及 CI 数据库覆盖问题,本轮均未修复。前次全量测试中与本任务无关的失败也不宣称已经解决。 ## 验证结果 - 后端:保护/模式一/指纹/默认值/账号创建复制相关定向测试在 service、repository、admin handler 三个包以 `-tags=unit` 执行通过。 - 后端:service/repository/admin handler 的 `go vet` 通过;`go build ./cmd/server` 通过,输出到本机临时目录。 - 前端:账号相关 27 个文件、369 项测试通过,包含普通编辑、新建、批量修改、保护组件/API 和语言键检查。 - 前端:`vue-tsc --noEmit`、改动文件 ESLint、Vite 生产构建通过,构建用时 18.27 秒,输出到本机临时目录。 - 专项复现:原 14 个场景由 2 通过/12 失败变为 **6 通过/8 失败**。四条旧失败转为通过:标准策略 TLS 开关还原、legacy 自定义模板还原、generic 转 mode1、未知策略拒绝。剩余失败如上表,未通过修改断言掩盖。 - 复验日志:[after-legacy-default.log](verification/account-protection-review/after-legacy-default.log)。模式一对照用例已改为显式选 mode1,防止默认改变后测试目标也跟着改变;原始修复前日志保留。 - 本次没有真实 PostgreSQL 集成/竞态验收,也没有访问真实上游。不能将定向回归和编译通过表述为全项目全量通过。 ## 主要改动文件 - `backend/internal/service/account_protection.go`:默认创建/启用策略改为 legacy,保留不适用类型的通用保护。 - `backend/internal/service/account_anti_degrade.go`:默认选择常量、持久态与请求默认值分离、未知值拒绝、完整快照及兼容旧快照的还原。 - `backend/internal/service/anti_degrade_strategies.go`:初代兼容默认描述与非诊断默认定位。 - `frontend/src/utils/accountProtection.ts`:前端共享默认模式常量。 - `frontend/src/api/admin/accounts.ts`、`frontend/src/components/account/EditAccountModal.vue`:API 默认值、预选、排序及默认标注。 - 对应 Go/Vue 测试,以及当前文档和专项复验材料。 现有 Git 仓库尚无提交,本次没有创建提交、发布包或服务器版本。后续如要部署,应先处理上述高优先级问题并完成独立数据库和真实调用验收。