﻿========================================================
  CODEX API 呼叫節點轉換工具
  在 ChatGPT 帳號 / CGU API 節點 / OpenAI 官方之間一鍵切換
========================================================


【這是什麼】

Codex 預設是用你自己的 ChatGPT 帳號或 OpenAI API Key。
這個工具讓你一鍵切換到長庚大學的 CGU API 節點（用學校發的 Key，
不必自己付 OpenAI 的錢），想切回來也是一鍵。

需要先有 CGU API Key，在這裡啟用並複製：
https://air.cgu.edu.tw/workspace4/LLMAPI/index.php


【第一次使用】

0. 先把收到的壓縮檔「解壓縮」到桌面或文件夾
   ※ 不要在壓縮檔裡直接點開 exe：那樣程式其實是在暫存資料夾裡執行，
     設定放在那裡，關掉就不見了。

1. 先「完全關閉」Codex App
   ※ Codex 從 26.915 版起改名叫「ChatGPT」，開始功能表與右下角圖示都是 ChatGPT
   - 在 Codex App 裡結束
   - 再看螢幕右下角工作列的通知區域，有沒有 Codex 的小圖示
   - 有的話在圖示上按右鍵 → Exit
   ※ 這步很重要。Codex 是啟動時把登入資料讀進記憶體的，
     沒關乾淨就切換，不但不會生效，還可能被它寫回舊的。

2. 執行「CODEX API 呼叫節點轉換工具 v1.6.3.exe」

   >>> 如果跳出藍色視窗「Windows 已保護您的電腦」<<<
       這是因為程式沒有付費的數位簽章，不是中毒。
       點左邊的「其他資訊」→ 按「仍要執行」即可。

3. 程式會自動找到你的 Codex 設定資料夾（C:\Users\你的帳號\.codex）
   同時會在 exe 旁邊建立 profiles.json 存你的設定
   找不到的話會跳出視窗請你手動選
   ※ 上方有「切換 / 帳號與節點 / Skill / 設定 / 用量」五個分頁可以點

4. 按「CGU API 節點」，貼上你的 CGU API Key
   ※ 不要按最後那張「OpenAI 官方 API」—— 那張是給 OpenAI 官方的 Key 用的，
     CGU 的 Key 填進去會被拿去打 api.openai.com，一定失敗。
     真的貼錯了工具會跳出來問你，按「否」就好。
   模型自動用 gpt-5.6-luna，不會多問你
   想換模型，按「目前狀態」右上角的「更換模型…」
   想改節點名稱，到「帳號與節點」分頁按「編輯」

5. 切到「Skill」分頁，按「安裝 / 更新」
   ※ 這步不能跳過。Codex 內建的作圖功能寫死了會打 OpenAI 官方網址，
     不裝這個 skill 的話，在 CGU 模式下叫它畫圖一定失敗。

6. 重新啟動 Codex App


【平常怎麼用】

打開工具 →「切換」分頁看「目前狀態」知道現在是哪個模式
→ 關掉 Codex → 按想切的那顆按鈕 → 重開 Codex

按過一次之後，Key 和 ChatGPT 帳號都會被記住（用 Windows 帳號綁定加密），
下次切換不用再輸入。


【換模型】

「切換」分頁「目前狀態」右上角的「更換模型…」，ChatGPT 登入、原生 OpenAI、
各個節點都能換，切走再切回來也會記得。

預設模型是 gpt-5.6-luna / high，對話框裡有一顆「用預設」一鍵選好。
ChatGPT 登入與原生 OpenAI 是直接連 OpenAI 官方，只能用 Codex 內建清單裡的模型；
節點是中轉站，對方有什麼就能用什麼——在「編輯節點」裡按「更新清單」
可以把伺服器實際支援的模型抓回來選。
推理強度只會列出該模型支援的選項，換模型時會自動調成合法的值。

改完要重新啟動 Codex App 才生效。


【省額度設定（預設已開啟）】

程式第一次執行時會自動幫你開好，不用手動設定。
想關掉的話到「設定」分頁取消勾選。

它在設定檔加了這兩行：

    model_context_window = 272000
    model_auto_compact_token_limit = 240000

這會讓 Codex 更早把對話壓縮掉。每次請求帶的 token 變少，同樣的額度
可以用比較久（約 1.5~2 倍），對回答品質影響很小。

一樣要重開 Codex 才生效。

如果你自己在 config.toml 設了別的 model_context_window
（例如某個中轉站的模型上下文比較小），工具不會去蓋掉它，
「設定」分頁會顯示「你自訂的上下文設定」。


【自訂呼叫節點】

「帳號與節點」分頁可以改名稱、改網址，也可以「新增節點」。
新增時先選範本，網址等設定會自動填好：

    CGU API     長庚大學中轉站（跟剛安裝時的預設節點一模一樣）
    MercuryAPI  長庚的 MercuryAPI，Key 跟 CGU API 不是同一把，
                要到 https://air.cgu.edu.tw/mercuryapi/ 用推薦碼領取（sk-mercury-…）；
                不支援畫圖
    OpenAI      OpenAI 官方，可以放另一把 OpenAI Key
    其他        其他 OpenAI 相容的中轉站，名稱和網址自己填

新增的節點會自動出現在「切換」分頁的按鈕列。
每個節點各自記自己的 API Key 與模型，互不影響。

「API 格式」只有 responses：新版 Codex 已經不支援 chat，
設成 chat 的話 Codex 會拒絕載入設定、整個打不開。
只支援 Chat Completions 的中轉站目前沒辦法接。

你自己在 config.toml 手寫的東西，工具不會去刪或覆蓋：
自己寫的 [model_providers.xxx]、自己設的環境變數
（例如 [shell_environment_policy.set] 裡的 OPENAI_API_KEY）、
自己設的上下文大小。工具只會動它自己寫進去的部分。


【更新到新版】

工具啟動時會看一眼學校的下載頁有沒有更新的版本，有的話視窗上方會出現
一條提示：「有新版本 v1.x.x」，按「前往下載頁」就會開啟

    https://air.cgu.edu.tw/

下載新的壓縮檔，解壓縮之後把新的 exe 放回原來的位置（舊的可以直接刪掉）。
旁邊的 profiles.json 不要刪 —— 你記住的節點、Key、模型都在裡面，
新版會直接接著用。

不想被提醒可以在「設定」分頁取消「啟動時檢查有沒有新版本」。
這個檢查只是去讀下載頁上的檔名來比版本，不會上傳任何東西，
也不會自動下載或自動安裝，要不要換新版完全由你決定。


【設定檔在哪裡】

就在 exe 旁邊，叫做 profiles.json。

  記住的節點、模型、加密後的 API Key 全在這一個檔案裡。
  要備份就複製它，要清乾淨就刪掉它（程式會重新長出預設的節點）。

在「設定」分頁按「開啟資料夾」，檔案總管會直接幫你指到它。

如果 exe 放在 Program Files 這種不能寫入的地方，程式會自動改存到系統
資料夾，並在「設定」分頁告訴你實際位置。把 exe 移到桌面或文件夾就會
存回旁邊。


【要把電腦給別人用、或搬到別台之前】

到「帳號與節點」分頁，把不要留下的東西刪掉：

  上半部  每個記住的帳號與節點，刪掉就等於清掉它的 Key
  下半部  「其他資料」：切換備份、目前的登入資料、config.toml 的環境變數

關於複製走會不會帶到 Key：

  只複製 exe          不會帶走任何東西，程式裡沒有你的資料
  連 profiles.json 一起複製   會帶走「加密後」的 Key，但別台解不開 ——
                      加密綁定「這台電腦的這個 Windows 帳號」，
                      程式偵測到設定來自別台時也會自動清掉

  真正的登入資料在 Codex 自己的 .codex 資料夾，不在這個程式這邊。


【切換按鈕上會顯示剩餘額度】

打開程式時，節點按鈕會顯示還剩幾 % 的額度，下面有一條顏色條：

    綠色 = 還很多
    黃色 = 要注意了
    紅色 = 快用完

不用切過去才發現沒錢了。精確金額在「用量」分頁。


【看用量】

「CGU API 用量」按「查詢」，可以看到已用多少 Token、花了多少美金、
還剩多少額度。


【常見問題】

Q: 跳出「Windows 已保護您的電腦」
A: 點「其他資訊」→「仍要執行」。程式沒有數位簽章而已。

Q: 切換完 Codex 還是舊的
A: Codex 沒關乾淨。檢查右下角工作列通知區域的小圖示，右鍵 → Exit，
   再重開一次。

Q: 叫 Codex 畫圖失敗
A: 沒裝 CGU API Skill（在「Skill」分頁），或裝完沒重開 Codex。
   另外，MercuryAPI 節點本身不支援畫圖，要畫圖請切到 CGU API 節點。

Q: 顯示 401
A: Key 貼錯或已失效，去 Key 頁面重新複製。
   也可能是 Key 填錯地方了：CGU / MercuryAPI 的 Key 要填在它自己那張節點卡片，
   填到「OpenAI 官方 API」的話，Codex 會拿它去打 api.openai.com。
   到「帳號與節點」分頁看一眼，填錯的話按「清除 Key」，再回「切換」分頁
   按對的那張卡片重貼一次。

Q: 顯示 403
A: 該模型你的帳號沒有權限，或額度用完了。按「查詢」看剩餘額度。

Q: 不小心把 CGU 節點刪掉了
A: 到「帳號與節點」按「新增節點」，範本會自動選好「CGU API」，
   網址和設定都已經填好，貼上 Key 按儲存就回來了。

Q: Codex（新版叫 ChatGPT）更新之後打不開
A: 這跟本工具無關。Codex 從 26.915 版起會安裝一個 Windows 背景服務，
   而安裝服務需要系統管理員權限，一般開啟時會被 Windows 擋下來。
   在「開始」按右鍵 →「終端機 (系統管理員)」，確認視窗是 PowerShell
   （如果開成「命令提示字元」，先輸入 powershell 按 Enter），貼上這一行：

   $d = Get-ChildItem "C:\Program Files\WindowsApps" -Directory -Filter "OpenAI.Codex_*_x64__*" | Sort-Object { [version](($_.Name -split '_')[1]) } | Select-Object -Last 1; Add-AppxPackage -DisableDevelopmentMode -Register "$($d.FullName)\AppxManifest.xml"

   跑完就能正常開啟。沒有系統管理員權限的話，請找電腦管理員處理。

Q: 我的設定會不會被弄壞
A: 每次寫入前都會自動備份到 .codex\_switcher_backups\，
   保留最近 40 份。程式只改該改的幾行，其他設定原樣保留。
   寫入前會先確認改完還是合法的設定檔；檔案本身有格式錯誤、
   或不是 UTF-8 編碼時，工具會直接拒絕修改並告訴你原因，不會硬改。
   切換到一半失敗（例如檔案被 Codex 占用）會整個還原，不會停在一半。

Q: 想完全移除
A: 1. 用工具切回「ChatGPT 登入帳號」或「OpenAI 官方 API」
   2. 「Skill」分頁按「移除」
   3. 「帳號與節點」分頁 →「其他資料」→「切換備份」按「清除」
      （備份裡有切換當時的 Key 與登入資料，是明碼）
   4. 不想留省額度設定的話，到「設定」分頁取消勾選
   5. 把 exe 和旁邊的 profiles.json 一起刪掉
      （如果「設定」分頁顯示設定檔在系統資料夾，也把那個資料夾刪掉）


Q: 我的 API Key 會不會跟著 exe 被複製走
A: 只複製 exe 不會。連旁邊的 profiles.json 一起複製的話，會帶走加密後的
   Key，但在別台電腦解不開，程式也會自動清掉。

Q: 我把 exe 複製到另一台電腦，它顯示上一台的路徑或帳號
A: 程式會偵測到設定來自別台機器，自動清掉路徑與金鑰（操作紀錄會寫），
   請重新選一次 .codex 並輸入 Key。

Q: 之前的版本在 %LOCALAPPDATA%\CGUCodexSwitcher\ 留了設定檔
A: 新版不會讀它，開啟時會在操作紀錄裡把路徑列出來，確認沒問題就可以刪。


【回報問題】

請先執行下面這行（在 exe 所在資料夾開命令提示字元）：

    "CODEX API 呼叫節點轉換工具 v1.6.3.exe" --selftest report.json

會產生 report.json，裡面沒有你的 API Key，可以直接附上。


【API 文件】

https://air.cgu.edu.tw/workspace4/LLMAPI/api_call.html
