# Codex 账号功能:两步实施与评审核对 ## 当前覆盖:v0.7.3 官方账号服务(2026-10-16) 用户已取消每日小任务定时并授权今天完成正式实现及补丁发布;不再受旧“两任务/仅mock”的未来排期限制。新增独立 `codex-accounts` 插件,以官方公开 OAuth 和 PiAiAdapter、固定账号凭据视图提供登录/撤销/目录、账号额度、默认新请求模型与绑定最小请求;桌宠经鉴权同源桥接使用。旧后端默认不变,管理/日预热仍逐项显式授权,至少两个可读绑定才开放面板轮换。默认只影响本服务新请求,不替代全局旧激活账号。 额度兼容读取不是服务器精确采样证明;启动/5h满额触发继续关闭。真实 OAuth/账号/计费/宿主验收未进行;完成的是生产代码、增量模拟与打包,不是实际开通收费自动化。下文是旧版本设计/交付历史,旧依赖和“未实现”结论以新增后端说明为准。详见 [独立插件](codex-accounts/README.md)。 评审日期:2026-10-15。依据产品方案评审团三位成员实际只读报告(产品、UX、架构);它们是设计证据,不是运行测试或用户访谈。主会话负责实现、模拟验证及发布。 ## 第二任务后续交付:面板管理(v0.7.2,2026-10-16) 按用户最新要求,将共享切号从设置确认流程移至桌宠信息框:设置只提供默认关闭的管理开关、依赖说明和明确点击的安装入口;面板显示公共邮箱,点击直接轮换,无二次确认。至少两个绑定账号、唯一当前、精确版本、预热互斥、写前复核和未知结果隔离继续保留。临时回环能力通道替代未鉴权文件命令;邮箱/密钥仅在内存,面板增高28逻辑像素,保留经典/简洁、主题、尺寸与右键无交互。 安装只使用已核验宿主公共 pluginManager;同名即停止、不升级/降级/启用、不默认批准构建脚本。宿主无原子 ifAbsent,跨插件同时安装同名包的竞态不在保证内。本轮未真实安装、切号或调用模型。历史两任务的“设置确认/无面板邮箱”已被 v0.7.2 替代,未重开已取消日程或新增第三任务。 ## 第二任务后续交付:独立绑定的多账号每日预热(v0.7.2,2026-10-16) 仍属于原第二任务,不增加第三任务或恢复已取消的日程。v0.7.2 新增默认关闭、独立保存的逐账号定时授权,仅允许静态核验的通用订阅插件 0.9.9 公共独立模型条目。至多八账号,每账号每天一次逻辑请求;额度原始新鲜度无法证明时默认跳过,需逐账号额外同意,不代表 HTTP/Token/费用硬预算或真实宿主验收。不能代替原“至少两个已绑定账号”切号按钮门槛,两者是独立功能。 发送前持久认领,未知结果/崩溃认领暂停全部自动预热;旧单账号当日尝试阻止新计划,新计划认领也阻止旧计划重启重复。损坏日志不覆写;保存/关闭开关不解除暂停。连接/模型目录撤销后不得继续迟到调用。源码定向 358 项 Node 检查、1101 原生断言通过,无真实账号/模型请求、全量测试或重启。 下面的 v0.7.0/v0.7.1 两任务说明保留为发布历史;其中“多账号预热未实现”描述的是旧发布版本。v0.7.2 实现仍需受支持依赖和用户明确配置,缺失时不可用。 ## 任务一:只读账号识别(今天,v0.7.0) - 原生额度面板显示来源与匿名账号短标识,保留四尺寸、五主题、经典/简洁布局;不新增桌宠点击或右键行为。 - DSH → 设置 → 桌宠在 Codex 模式显示脱敏邮箱(公共接口提供时),缺失显示“邮箱未提供”;匿名短标识帮助区分遮罩相同的邮箱。不是完整邮箱展示,也不猜测 label / accountId。 - 专用订阅插件称“激活账号”;通用订阅插件称“默认账号”,Pool 仍可能为实际调用选择其他账号。两者都不承诺是某次请求的实际执行账号。 - 复用已有 status → usage → status 读取;不新增上游轮询。独立鉴权只读 account 路由只返回内存中的遮罩身份;GET/HEAD 不查询订阅插件,不切号、不调模型。 - 邮箱(包括遮罩)不进入桌宠 state.json、偏好、统计、账本、错误或日志。WPF 仅从原快照中的散列 accountKey 构建匿名显示。浏览器身份与额度必须同 provider / selection / key,超时/异常/换来源时不把旧身份配给新额度。 - 本版不提供切号按钮、多账号预热、全邮箱展开或多账号额度列表。这些不以“已可行”冒充“已实现”。 ## 任务二:主动切号与账号绑定预热安全适配(v0.7.1,2026-10-15 提前交付安全增量) 用户后续要求今天完成并发布;原 2026-10-16 16:00 Europe/Copenhagen 定时已删除,不再明日自动续做。仍恰好两个任务,不增加第三任务或偷偷启用未决收费能力。 **已实现:** DSH 原生设置的独立读取/选目标/共享影响确认;同源至少两个新鲜有效已绑定账号,精确依赖版本门控,15 秒一次性租约,确认重读、成功验证、来源 ABA 失效、取消/卸载旧回调拒绝。本插件切号与预热互斥;已发写结果未知时保守暂停后续切号及自动预热,普通额度可继续刷新。需先在订阅插件核验,再完整退出重启 DSH;超时不能撤回上游写,重新读到状态不能自动解除暂停。 **明确未启用:** 多账号 warm-up(公共账号绑定调用未在本机集成验证,且缺逐账号预算授权);WPF 卡片按钮(缺可信命令 IPC);多账号额度列表与完整邮箱展开。设置页按钮不冒充 WPF 按钮,也不通过后台切全局账号代替绑定。已验证切号版本仅专用 2.6.8 / 通用 0.9.9;其他版本保留只读并禁写。 **验证证据:** 源码 160 项新增/受影响 Node 检查、1101 条原生断言;涵盖两来源、0/1/2+账号、变更列表、失败/超时、来源往返、过时回调及隔离状态。独立只读复审曾发现未决写释放预热、来源 ABA 和旧回调三处遗漏;修复后新增对应回归,未把早期通过的 66 项测试当作全边界保证。无真实切号、凭据、模型或全量测试;宿主/真实账号验收仍待授权。 先检查任务一已发布的真实基线与当前公共能力,完成能安全交付的增量;不承诺在缺少依赖或用户决策时强开收费功能。 ### 切号按钮的硬性启用条件(用户明确要求) **必须先在受支持的其他订阅插件绑定至少两个 Codex 账号,才可启用切号按钮。** 桌宠不代管登录、不收集凭据。还必须满足: 1. 当前同一来源公共 status 返回新鲜、去重且结构有效的至少两个账号;不能只凭缓存 accountCount、模型数量或旧列表启用。“有效”是公共 DTO 的可用结构,不等同凭据或收费调用已实测成功。 2. 该来源有已确认的公开切号能力,且当前非 busy、非本地预热执行/重试中。专用插件用 account/select;通用插件用 setDefault,明确仅改变默认账号。 3. 零/单账号时禁用并说明“请先在订阅插件绑定至少两个 Codex 账号”;缺插件、未登录、列表未知/过期/失败、不支持切换需分别给出理由,不把未知写成零。 4. 选目标不等于执行;确认前重新核对来源、当前账号、目标仍存在且仍有至少两个账号;2→1、目标删除、重复 id、多 active/default、来源变更均拒绝执行,不自动替换目标或依赖。 ### 立即操作与并发边界 切号不是设置草稿,不随“保存偏好”执行。使用独立选择/确认;说明将改变 DSH 共享激活/默认账号、可能中断连接并刷新缓存与模型,不保证已在途请求原子切换。已开启的原有预热计划可能随后使用新激活账号;不能悄悄改旧开关。 取消零写调用,确认一次最多一次写调用,处理中防重复;成功必须重读验证。迟到额度和身份通过统一代际丢弃,覆盖普通轮询与 warmup.getQuota 两条写回路径。失败/超时/重读失败结果未知,不自动切回或重试。缺可靠全局在途检测时不能声称无冲突。 WPF 面板按钮还需可信 IPC / 公共导航通路与点击/拖动区分,不能拿任意可写文件当未鉴权命令通道;不得新增右键菜单。tiny 可用性与原生DSH等价入口必须验证。若无安全桥接,明确留下“面板入口”并说明原因,不以设置页按钮冒充面板按钮。 ### 多账号 warm-up 能力门槛 本机专用插件 2.6.8 没有已证实的公共账号绑定 stream,不能后台循环全局切号模拟。通用插件官方 0.9.9 的独立账号模型入口可能提供绑定路径,但本机未安装/未集成验收;只用公开模型目录和调用接口,不能深导内部函数/硬编码账号模型 ID/擅自安装升级或开启入口。 只有公开绑定模型、逐账号新鲜额度和宿主路由保持身份的证据齐备,才能做默认关闭、逐账号显式选择、预算限制、串行队列、发送前持久 claim、provider/账号/原因/窗口隔离与保守旧 journal 迁移。跨发送边界后结果未知不自动重试。不发真实模型请求来“测试”,不启用收费计划。 ### 增量验收与允许暂缓 用假账号、mock RPC 和私有临时文件覆盖:0/1/2+账号、缓存伪多账号、2→1、重复/非法行、两来源、多 active/default、目标删除、取消/重复确认/慢响应/失败/超时/外部切号/迟到结果、已有预热互斥、账号绑定失效、journal 隔离。只跑新增和受影响测试,不跑全量、不读真实凭据、不实际切号、不发收费模型请求、不自动重启。不把模拟通过说成真实账号集成验收。明日没有新版本发布授权则先本地交付,不自动追加公开版本。 需要用户后续决定但不阻塞只读首期:是否接受全局切号中断风险;是否允许遮罩邮箱进入WPF本地快照,或坚持内存IPC;逐账号选择与费用预算;是否愿意自行安装具备绑定能力的依赖版本。未决默认关闭/暂缓,写明具体缺口。 ## 评审核对 - 产品:账号识别是切对账号和安全预热的前置价值;共享写操作放后续。没有访谈和采用率数据,不编造收益/工期。 - UX:明确“激活/默认/实际执行”差异;缺邮箱/来源/长字符串不伪造,操作确认不混入保存偏好;保留拖动与右键无行为。 - 架构:现有 WPF 只读落盘快照,无可信命令回传;本期通过内存鉴权路由实现遮罩邮箱、WPF仅匿名标识,遵守不落邮箱的承诺。两家接口的本机/上游静态证据边界见 MULTI-ACCOUNT-NOTES.md。 - 分歧:产品/UX提出面板遮罩邮箱候选,架构指出与原隐私承诺冲突。本期采用更严格的设置页内存遮罩+面板匿名标识,完整面板邮箱与命令IPC留第二任务;不是按人数表决。 ## 首期实际增量验证 源码已通过 80 项新增/受影响 Node 检查与 69757 条已报告原生断言:身份 887、主题 54702、简洁 4924、陪伴 8344、回执 214、尺寸 438、偏好 216、额度呈现 32。使用 mock 公共 RPC、私有临时目录、真实隐藏 WPF;另以合成额度渲染并检查匿名来源布局。捕获重复的 887 条不重复计数。没有跑全量、启动真实桌宠、读取真实账号/凭据、切号、发送模型请求或自动重启;完整宿主页面、真实账号与混合 DPI 仍未验收。打包/公开发布的字节一致性另由发布记录核对。