Skip to content
This repository was archived by the owner on Aug 9, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
063564c
文档: 记录审计问题修复分工
CreatorEdition Jul 11, 2026
a48e8c7
修复: 统一 CE 发布镜像并收紧数据库工具
CreatorEdition Jul 11, 2026
e00e80d
修复: 补齐Web命令映射与前端构建门禁
CreatorEdition Jul 11, 2026
185e345
修复: 收紧账号池权限并隔离候选缓存
CreatorEdition Jul 11, 2026
da455ed
修复: 按本地自然日处理DST统计汇总
CreatorEdition Jul 11, 2026
d345f56
性能: 避免DST汇总枚举稀疏空日
CreatorEdition Jul 11, 2026
d35506a
文档: 完成审计修复验收记录
CreatorEdition Jul 11, 2026
a6ec3fc
文档: 记录定价与刷新状态补充修复分工
CreatorEdition Jul 11, 2026
e826b54
修复: 完善令牌刷新后的账号恢复验证
CreatorEdition Jul 11, 2026
4160cdf
修复: 按最终服务等级分层计算模型费用
CreatorEdition Jul 11, 2026
5010f42
功能: 添加出口诊断并同步刷新账号状态
CreatorEdition Jul 11, 2026
2c50790
国际化: 补齐出口诊断多语言文案
CreatorEdition Jul 11, 2026
846413d
文档: 完成定价与刷新状态修复验收
CreatorEdition Jul 11, 2026
ede7e56
文档: 刷新上游v0.5.0差异巡检基准与移植分类
CreatorEdition Jul 25, 2026
5245acb
修复: 对齐原生会话锚点与提示缓存键
CreatorEdition Aug 5, 2026
133e68a
修复: 排除失败请求的令牌与费用汇总
CreatorEdition Aug 5, 2026
e5c239f
文档: 刷新上游v0.5.2差异巡检
CreatorEdition Aug 5, 2026
fbabe7b
修复: 按额度窗口时长应用配额保护
CreatorEdition Aug 5, 2026
ddfac6d
发布: 为正式容器同步稳定标签
CreatorEdition Aug 5, 2026
0b20180
功能: 添加请求日志页码跳转
CreatorEdition Aug 5, 2026
8148202
修复: 持久化登录会话分组
CreatorEdition Aug 5, 2026
067307f
修复: 切号时清理账号绑定历史
CreatorEdition Aug 5, 2026
24d7873
修复: WebSocket遵循标准环境代理
CreatorEdition Aug 5, 2026
5601aa0
修复: 保留WebSocket显式缓存键
CreatorEdition Aug 5, 2026
f0fe925
测试: 覆盖账号类型与不可用筛选
CreatorEdition Aug 5, 2026
caebf81
修复: 改善窄屏布局与图表提示层
CreatorEdition Aug 5, 2026
a2d99a0
修复: 保留 Codex 自定义提供商字段
CreatorEdition Aug 5, 2026
6bc6304
文档: 更新上游差异与待办看板
CreatorEdition Aug 5, 2026
854cb98
文档: 校正完整测试计数
CreatorEdition Aug 5, 2026
834028c
功能: 固定账号操作栏并限制桌面日志
CreatorEdition Aug 7, 2026
31a981e
修复: 完善混合路由聚合兜底
CreatorEdition Aug 7, 2026
6ff49b5
修复: 收口WebSocket代理超时与鉴权
CreatorEdition Aug 7, 2026
8b12b6a
修复: 同步Codex网关WebSocket能力
CreatorEdition Aug 7, 2026
a99673b
文档: 更新上游差异审计与任务看板
CreatorEdition Aug 7, 2026
fe0bba5
功能: 添加桌面界面缩放与设置串行保存
CreatorEdition Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions .github/workflows/release-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -545,12 +545,40 @@ jobs:
set -euo pipefail
owner="$(printf '%s' "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
tag="${{ steps.release-version.outputs.tag }}"
prerelease_input="${{ github.event.inputs.prerelease || 'auto' }}"

case "$prerelease_input" in
true)
prerelease=true
;;
false)
prerelease=false
;;
auto)
if [[ "$tag" == *-* ]]; then
prerelease=true
else
prerelease=false
fi
;;
*)
echo "invalid prerelease input: $prerelease_input" >&2
exit 1
;;
esac

publish_tags=("$tag")
if [[ "$prerelease" == "false" ]]; then
publish_tags+=(stable latest)
fi

docker tag codexmanager-service:release "ghcr.io/${owner}/codexmanager-service:${tag}"
docker tag codexmanager-web:release "ghcr.io/${owner}/codexmanager-web:${tag}"
for publish_tag in "${publish_tags[@]}"; do
docker tag codexmanager-service:release "ghcr.io/${owner}/codexmanager-service:${publish_tag}"
docker tag codexmanager-web:release "ghcr.io/${owner}/codexmanager-web:${publish_tag}"

docker push "ghcr.io/${owner}/codexmanager-service:${tag}"
docker push "ghcr.io/${owner}/codexmanager-web:${tag}"
docker push "ghcr.io/${owner}/codexmanager-service:${publish_tag}"
docker push "ghcr.io/${owner}/codexmanager-web:${publish_tag}"
done

- name: List release assets
run: find release-assets -type f | sort
Expand Down
68 changes: 68 additions & 0 deletions .teamwork/discussions/2026-07-25_上游v0.5.0差异巡检.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# 2026-07-25 上游 v0.5.0 差异巡检结论

## 巡检背景

- 旧基准:`upstream/main = a614b559`(记录于 2026-07-07 差异结论)。
- 新基准:`upstream/main = e630b349 修改nginx的配置`(对应 tag v0.5.0,2026-07-23)。
- 增量规模:`a614b559..e630b349` 新增 **223 个提交**(含 merge);总分叉 upstream 领先 CE 420、CE 领先 upstream 284。
- CE 定位不变:本地桌面端 + service/web 的 Codex 账号池管理器 + 网关转发;剥离作者推广、赞助导流、远程 author content、AtomGit 推广、发行渠道宣传。
- 合并策略不变:只做语义移植,不直接 merge upstream,逐提交按"业务能力 / UI 样式 / 推广内容 / 发行渠道"拆分。

## CE 现状核对(已读代码确认)

| 能力 | CE 现状 | 上游现状 |
| --- | --- | --- |
| 模型目录 | 自研 `model_catalog_models`(迁移 047)+ `model_price_rules` / `model_sources` / `model_groups` / `model_options` | `model_catalog_v2` 事务存储 + 不可变整数价格快照 |
| 账号级代理 | 无 proxy 模块 | `account_proxy` + `proxy_testing/jobs` + ipwhois 地理 |
| Codex Skills | `cm-skills/cm-imagegen` 仅图片生成 | skills marketplace / 仓库安装 / skills.sh |
| device_code 登录 | 已有(20 处,auth_login/auth_tokens/rpc) | 有增量 |
| sub2api 导入 | 已有(account_import + add-account-modal) | 新 JSON 格式 + agent_identities 加固 |
| 网关 aggregate/proxy 语义 | 已有(protocol/aggregate_api、proxy.rs、candidates) | hybrid rotation 尊重纯聚合路由 |
| Lite 模式图片工具冲突 | `codex_headers.rs` 未处理 | 已修 |
| reset credit / hourly usage / automatic update / codex_projects / AboutCodexManagerCard | 均无 | 均有 |

## 分类清单

### 🟢 可复用(低风险语义移植,本轮执行)

| 上游提交 | 说明 | 置信度 |
| --- | --- | --- |
| `22a47d89` | avoid Responses Lite conflict with auto-injected image tool,纯网关 header 修复(42 行),CE 缺失 | 高 |
| `a127e27a` | honor aggregate-only routes in hybrid rotation,CE 有 aggregate/proxy 语义,修复混合轮换绕过纯聚合路由 | 中 |
| `2c61d38e` / `afe86293` | 桌面 dev server 清理 / NVM 环境保留,启动器健壮性小项 | 中 |

### 🟡 需移植(有对应架构但命名/结构不同,需语义改写)

| 上游提交 | 说明 | 置信度 |
| --- | --- | --- |
| `2c1fa090` + `715eb90a` | GPT-5.6 官方定价对齐 + GPT Image 2,CE 走自研 `model_price_rules`,需按 CE 结构补种子,不照搬 v2 迁移 | 高 |
| `692ab34e` + `482f7ffa` | 新 sub2api JSON 格式 / 加固导入,CE 有 sub2api 导入,但上游依赖 `agent_identities` 表(迁移 122),需评估是否连带引入 | 中 |
| `7796f900` | keep image generation connections alive,依赖上游 `transport-settings.ts`(CE 无),需落到 CE 网关设置 | 中 |
| Device Code 增量 | CE 已有 `device_code`,需 diff 上游是否有超出部分 | 低(待核对) |

### 🔴 需重构(架构分叉大,禁止整包,逐能力/页面级评估)

- **model_catalog_v2 全族**:`f0b5deb3` / `3bec379f` / `a6e44682` / `c9f59d18` / `90635813` / `18fbb6ab` 等。CE 走自研 catalog,v2 事务存储 + 不可变整数价格快照与 CE 冲突,需逐能力语义比对。
- **账号级代理 + ipwhois 地理**:`56c7c418` / `585a8f8a` / `4e8f4542` / `13889ff` 等约 15 提交。CE 完全无 proxy 模块,属大特性,需独立设计评审。
- **Codex Skills 市场/仓库/skills.sh**:`22256fe1` / `cc1a0e5c` / `d733b884` / `3edb03de`。CE `cm-skills` 仅 imagegen。
- **reset credit 额度重置**:`1197113d` / `b38691ca` / `ca93803d`。CE 无该服务流与 UI。
- **hourly/bucketed 用量分析 + 交互曲线**:`07cc39a4` / `76d7090f` / `6a372450`。CE 无分桶用量分析数据模型。
- **automatic update checker**:`04deb7a` / `27300e9f` 族。清理版是否需要自动更新需先定性。
- **Codex 项目启动器 + 账号组路由**:`0c957303`(`codex_projects.rs` 1459 行)。CE 无,大特性。
- **keep window UI mounted**:`f2131ca3` / `f2887c19`。性能特性,需结合 CE 渲染优化重估。

### ⚫ 不移植(推广/发行内容,符合 CE 剥离原则)

- `a555d900` / `a670ec09` AboutCodexManagerCard(作者信息卡 + i18n)。
- `e630b349` nginx 配置、`65b935e4` / `3d72ffe5` release、`f571de28` sponsor copy 精简。
- README 链接整理类。

## 本轮执行计划

按风险从低到高执行 🟢 项,逐项独立 commit + 定向测试:

1. `22a47d89` Lite/图片工具冲突(纯 header,风险最低)。
2. `2c1fa090` GPT-5.6 定价(按 CE `model_price_rules` 结构)。
3. `a127e27a` 聚合路由混合轮换。

🟡 中风险项与 🔴 重构项在本轮后按需另立子任务评估。
94 changes: 94 additions & 0 deletions .teamwork/discussions/2026-08-06_上游v0.5.2后续差异巡检.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# 上游 v0.5.2 后续差异巡检

审计身份:【CodeX-GPT】

## 基准证据

- 2026-08-06 已执行 `git fetch upstream --prune --tags` 与 `git ls-remote upstream`;两者一致,最新 `upstream/main` 为 `cdf0c5f2 docs: adjust sponsor listing`,即 `v0.5.2-19-gcdf0c5f2`,没有未拉取的新提交。
- `v0.5.2..upstream/main` 共 19 个提交;`e630b349..upstream/main` 共 95 个图提交,其中 76 个非合并、19 个合并。
- 当前 merge-base 为 `2c43779c`;以本轮审计起点 `854cb987` 统计,CE 独有 313、上游独有 515。不能直接 merge 或整包 cherry-pick。
- 2026-08-07 再次 fetch 后,`upstream/main` 仍为 `cdf0c5f2`,正式发布仍为 `v0.5.2`;`#422`(`01c83c1b`)和 `#423`(`dc35d40f`)未变化,`#421` 已从 `41da1800` 更新为 `e3e5eb0b`,三者均未进入 `upstream/main`。

## 已完成语义移植

1. `c98047eb`:原生会话锚点与 `prompt_cache_key` 对齐。
2. `3cd72771`:失败请求保留诊断明细但排除 Token、费用和配额汇总。
3. `6d72131e`:按真实窗口时长应用配额保护,并隔离单账号并发设置。
4. `0f4f79bd`:按 CE 发布 workflow 同步正式容器稳定标签。
5. `552e3f4d`:按 CE 日志页布局加入分页跳转与窄内容区换行。
6. `2aa9bec3`:补齐 `login_sessions.group_name` 的 CE 兼容迁移及存取 SQL。
7. `7716828f`:failover 删除账号绑定的完整 reasoning/加密/compaction 历史项,兼容缺少 `encrypted_content` 的空壳。
8. `85cf8c73`:WebSocket 遵循应用代理优先、标准环境代理回退和 `NO_PROXY` 旁路规则。
9. `1354b888`:provider 配置只覆盖 CE 管理字段,保留用户自定义字段。
10. CE 自有收口:现代主题 chart tooltip 禁用背景模糊,窄屏自动收起侧边栏并修正主内容/加载遮罩宽度;账号工具栏回归覆盖 K12、不可用筛选和重置时间换行。
11. `646095c4` 语义移植:按 CE 列、菜单和分页拆分账号主表与固定操作栏,系统 Chrome 覆盖窄屏、横向滚动、动态行高、空状态与分页。
12. `a127e27a` 相关风险收口:使用真实 SQLite/HTTP 和 CE 模型来源映射覆盖纯聚合、账号轮转拒绝聚合模型、账号 404 后聚合兜底,不引入上游 `model_catalog_v2`。
13. `84802156` 拆分移植:仅采用桌面文件日志上限,单文件 8 MiB、当前文件加最多 4 个归档;不引入耦合的启动备份、诊断 RPC 与设置 UI。
14. PR `#421` 语义移植:保留 CE 全局单代理优先于稳定代理池的既有规则,补齐环境/Windows/macOS 静态系统代理、连接阶段超时和失败日志;无效显式代理 fail-closed,代理凭据统一脱敏。
15. 蓝军审计后的 WebSocket 边界修补:401 后令牌刷新改为受连接截止时间约束的阻塞任务;系统代理 matcher 的 Basic/SOCKS 凭据在转换为 WebSocket 代理 URL 时保留;路由查询连接不跨越网络握手生命周期持有,避免单连接池配置下刷新自相等待。
16. PR `#421` 最新增量 `e3e5eb0b`:按所选平台 Key 的真实路由能力写入 `supports_websockets`,服务启动和相关 Key 路由设置变化时仅在内容变化后修复旧 profile;不复制上游自动终止 Codex `app-server` 的实现。

## 已确认不需移植

- `454fe220` 的最终托盘语义已在 CE 实现;`06b141f9` 是其前置中间修复,不单独移植。
- `2a252139` 的 `startup.html` 开发态导航不适用,CE 窗口直接使用开发服务地址;`1dbe17da` 的 3005->3006 自建开发代理也不存在于 CE。
- 作者页、赞助/AtomGit/远程 author content、整包 README/docs 推广不移植;README 的 Linux.do 认可社区入口保留。
- `15a90056` / `ee62ccf4` 的入站 zstd 解压边界不适用 CE 当前无入站解压路径;`9c6ab64d` 删除图片工具自动注入与 CE 已确认的图片兼容行为冲突。
- `02c17c45`、上游 model catalog 所有权/导出重构、Skills 市场和项目启动器均过大或与 CE 架构不一致,只抽取可复现的小问题。

## 待处理与条件评估

| 优先级 | 上游提交/主题 | 当前结论 |
| --- | --- | --- |
| P2 | `e44bfe35` 持久化 UI 缩放 | 功能尚未实现,独立评估 75%~125% 与 Tauri 主窗口持久化。 |
| P2 | `1617272a` GPT-5.6 价格 | 上游数值与 CE 已确认规则冲突,等待可核验官方来源。 |
| P2 | PR `#422` 模型级 Fast 策略 | 先明确模型策略、API Key 覆盖、客户端字段和聚合路由的最终优先级,再按 CE 迁移序列设计。 |
| P2 | PR `#423` 短期/小时用量趋势 | 短期预设可按 CE 日级接口单独评估;默认小时曲线依赖上游模型序列接口和前端组件,不能只移植前端补丁。 |

## 开放 PR 增量(尚未进入上游 main)

| PR | 规模 | CE 独立审计结论 |
| --- | --- | --- |
| `#421` / `e3e5eb0b` Responses WebSocket 与 profile 启动同步 | 相对 `upstream/main` 为 12 文件,+460/-40 | 已完成 CE 语义移植并补强显式代理 fail-closed、畸形代理凭据脱敏、终态 failover 超时和 profile 能力同步;蓝军发现的 401 刷新超时和系统代理认证丢失也已修正。上游启动时无条件原子重写配置后再按 mtime 终止旧进程,会把无内容变化的 Manager 重启也转化为 Codex 会话中断,CE 明确不采用。 |
| `#422` / `01c83c1b` 模型级 Fast 策略 | 16 文件,+557/-20 | 功能方向可用于 Luna/Terra 等模型,但上游依赖其迁移号 `129` 与 model catalog 结构;CE 当前迁移序列只到 `078`。此外 `block` 仍允许 API Key 内部 Fast 覆盖,与“模型级最终决策”描述冲突,先保留为 P2 设计复核。 |
| `#423` / `dc35d40f` 管理员短期用量与趋势稳定性 | 6 文件,+85/-5 | 新增当天/滚动 24 小时/72 小时预设、默认小时粒度及 Recharts `Brush` 索引修复;CE 当前 RPC 仅返回日级 `dailyUsage`,且内联 `AreaChart` 没有对应 `Brush`,不能直接 cherry-pick。 |

### `#423` 的 CE 适配边界

1. “当天”与滚动 24/72 小时预设可以复用 CE 已支持的任意时间范围查询,但必须补充跨自然日、DST 和空数据测试。
2. “默认按小时”不是纯 UI 选项。上游依赖 `seriesUsage`、`seriesBucketSeconds` 和模型序列类型;CE 需要先设计连续 RPC 字段、存储查询成本与 Web/Tauri 兼容,再决定是否实现。
3. 上游 `finiteChartIndex`、图表重建 key 和 `Brush` 防御只针对上游 `AdminUsageTrendChart`,对 CE 当前 `DailyTokenLineChart` 不构成可直接移植的修复。

### `#421` 必须保留的 CE 边界

1. 代理优先级保持 CE 既有语义:“CodexManager 全局单代理 > 账号稳定分流代理池 > 环境代理 > Windows/macOS 静态系统代理 > 直连”。
2. 无效显式代理不得因系统代理可用而静默掩盖;错误内容不得泄露代理凭据。
3. 首帧校验通过后即初始化日志;TCP、代理隧道或 WebSocket 握手失败/超时都必须产生可见终态。
4. 连接超时复用现有 `upstream_connect_timeout`,不得影响 HTTP/SSE 与流式空闲超时。
5. `supports_websockets` 必须由当前平台 Key 的协议、轮转方式和实际上游共同决定;修复旧 profile 时先比较内容,禁止仅因 Manager 重启刷新 mtime,更禁止自动终止用户正在运行的 Codex 进程。

### `#422` 实施前未决语义

1. `block` 是禁止客户端字段,还是禁止最终上游 `priority`;两者不能混为一个策略名称。
2. 模型策略、API Key 覆盖和客户端字段的优先级必须在日志 `service_tier_source` 中可追溯。
3. 纯聚合、账号池和混合路由都需基于最终选中模型应用同一策略,不能把不存在于 CE 目录的上游模型误判为 404。
4. 迁移必须使用 CE 连续版本号并覆盖旧数据库默认 `passthrough`,不得照搬上游文件名。

## 开放 Issue 信号

- 上游当前有 13 个开放 Issue,没有对应的新主分支提交;它们是风险线索,不等于可直接移植的实现。
- `#394`:用户从 `v0.4.0` 升级后桌面端无响应,上游讨论怀疑旧数据库兼容,但尚无复现证据或迁移修复;删除应用数据会造成配置丢失,CE 不采用该处理方式,继续以迁移回归和启动日志定位。
- `#258`:账号轮询或聚合 API 路由持续 503,未关联 PR;CE 已通过真实 Storage 模型映射和混合回退回归覆盖对应本地风险,仍需等待上游新的可复现证据。
- `#284`:Claude Code 经网关出现约 300 秒 thinking,讨论仍指向远端、网络或代理链路;CE 的 WebSocket 连接超时覆盖首次和 failover 的候选/令牌/代理/握手阶段,不替代流式空闲超时与 SSE 保活。
- `#252`:Windows 11 锁屏恢复后 UI 停滞仍无稳定复现,且有 `v0.5.1` 不复现反馈;没有可验证补丁,保留观察而不做猜测性修改。

## 验证记录

- `cargo test -p codexmanager-service --lib -- --test-threads=1`:1096 通过、0 失败。
- service 集成测试中 `gateway_logs` 29、`default_addr` 10、`e2e` 1、`rpc` 44、`shutdown_flag` 1 逐目标通过;`app_settings` 相关筛选中 env override 6、runtime sync 6、formal-use lock 1 均通过。`app_settings` 全目标运行至 13 项通过且无失败后触及 10 分钟门限,未将其记为 31 项全通过。
- 其余 workspace 包通过:core 138 通过、1 忽略;web 18;start 2;db-optimize 8。
- `cargo test -p codexmanager-service codex_profile --lib -- --test-threads=1`:15 通过、0 失败。
- `cargo fmt --all --check`:通过。
- `corepack pnpm run test:runtime`:117 通过、0 失败。
- `apps` TypeScript、相关 ESLint、生产构建通过;系统 Chrome 下 `accounts-action-rail` 与 `accounts-toolbar` Playwright `2/2` 通过,包含 390/640/1024px 固定操作栏、动态行高、K12、不可用筛选和重置时间布局。
- `cargo check --manifest-path apps/src-tauri/Cargo.toml`:通过。
Loading