AutoDL 中使用 Codex CLI 的完整流程
本 Skill 用於幫助使用者在 AutoDL 遠端伺服器中直接使用 Codex CLI 修改和除錯專案程式碼,避免將遠端專案和大數據下載到本機。適用於以下場景:
- 使用者的程式碼和資料都在 AutoDL 遠端伺服器上;
- 資料檔案較大,不適合下載到本機;
- 使用者希望 Codex 直接讀取遠端程式碼、修改檔案、執行測試;
- AutoDL 伺服器無法直接存取
chatgpt.com或api.openai.com; - 安裝 Codex CLI 時遇到網路、npm、PATH、gawk、SHA 校驗等問題。
1. 總體思路
不要把 AutoDL 上的專案下載到本機再讓 Codex 修改,而是:
- 在本機電腦開 SSH 反向代理;
- 讓 AutoDL 透過本機代理存取 OpenAI;
- 在 AutoDL 伺服器中安裝 Codex CLI;
- 在 AutoDL 專案目錄中直接執行
codex; - 讓 Codex 在遠端伺服器上直接讀取、修改、執行程式碼。
最終目標是:
cd /autodl-tmp/你的專案目錄
codex
2. 取得 AutoDL 的 SSH 位址和埠號
在 AutoDL 控制台中找到當前執行個體的 SSH 登入命令。
通常格式類似:
ssh -p 32384 [email protected]
其中:
[email protected]
是 AutoDL 位址;
-p 32384
是 SSH 埠號。
後續所有命令中的 <PORT> 替換為埠號,例如 32384;<HOST> 替換為位址,例如 connect.bjb2.seetacloud.com。
3. 在本機電腦開啟 SSH 反向代理
如果本機電腦已經開啟 Clash、VPN 或其他代理,並且本機代理埠號是 7890,則在本機 Windows PowerShell、CMD 或 Git Bash 中執行:
ssh -N -R 7890:127.0.0.1:7890 -p <PORT> root@<HOST>
範例:
ssh -N -R 7890:127.0.0.1:7890 -p 32384 [email protected]
輸入 AutoDL 的 SSH 密碼。
注意:
- 輸入密碼時,終端不會顯示任何字元,也不會顯示
*; - 貼上密碼後直接按 Enter;
- 如果登入成功,該視窗會卡住不動,這是正常的;
- 不要關閉這個視窗,它負責維持 AutoDL 到本機代理的隧道。
如果提示:
Permission denied
說明密碼錯誤,需要回 AutoDL 控制台複製正確的 SSH 密碼。
4. 在 AutoDL 中設定代理環境變數
開啟另一個終端,正常 SSH 登入 AutoDL,或者使用 AutoDL 網頁終端。
進入 AutoDL 後執行:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
然後測試網路:
curl -I https://chatgpt.com
curl -I https://api.openai.com
如果之前是:
Connection timed out
現在變成:
HTTP/1.1 200 Connection established
說明代理隧道已經生效。
如果存取 chatgpt.com 回傳:
HTTP/2 403
這通常說明已經連到了網站,只是網頁本身被 Cloudflare 或存取策略拒絕,不一定代表代理失敗。應繼續測試 Codex 安裝腳本或 api.openai.com。
5. 安裝 Codex CLI
在 AutoDL 中執行:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
如果成功,會看到類似:
Installing Codex CLI
Detected platform: Linux (x64)
Resolved version: ...
Installing standalone package ...
Codex CLI installed successfully.
6. 處理 gawk / SHA-256 校驗報錯
如果安裝過程中出現:
Could not find SHA-256 digest for codex-package-x86_64-unknown-linux-musl.tar.gz in codex-package_SHA256SUMS.
通常是系統預設 awk 不是 GNU awk,安裝腳本解析 SHA256SUMS 失敗。
先檢查:
awk --version
如果輸出:
awk: not an option: --version
說明當前 awk 不是 GNU awk。
不要使用:
bash awk --version
這是錯誤寫法。awk 是二進位程式,不是 shell 腳本。
修復方式:
apt-get update
apt-get install -y gawk
安裝後檢查:
gawk --version
awk --version
如果 awk --version 仍然不是 GNU Awk,則切換預設 awk:
update-alternatives --install /usr/bin/awk awk /usr/bin/gawk 20
update-alternatives --set awk /usr/bin/gawk
再次檢查:
awk --version
正常後重新安裝 Codex:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
7. 處理 npm command not found
如果執行:
npm install -g @openai/codex
出現:
bash: npm: command not found
說明當前 AutoDL 環境沒有 Node.js/npm。
可以使用 conda 安裝:
conda install -c conda-forge nodejs -y
檢查:
node -v
npm -v
然後給 npm 設定代理:
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890
再安裝 Codex:
npm install -g @openai/codex
如果官方安裝腳本已經成功,則不需要 npm 方案。
8. 處理 codex command not found
安裝成功後,如果執行:
codex --version
卻出現:
bash: codex: command not found
通常是當前終端 PATH 沒重新整理。
先執行:
export PATH=/root/.local/bin:$PATH
然後檢查:
which codex
codex --version
也可以直接用完整路徑:
/root/.local/bin/codex --version
為了以後每次開啟終端都能使用 codex,寫入 .bashrc:
echo 'export PATH=/root/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
再次檢查:
codex --version
正常情況下會顯示類似:
codex-cli 0.141.0
9. 登入 Codex
AutoDL 通常是無瀏覽器環境,應使用裝置碼登入:
codex login --device-auth
Codex 會在終端裡給出登入連結和一次性 code。
在本機電腦瀏覽器中開啟連結,登入 ChatGPT,然後輸入終端給出的 code。
登入成功後,AutoDL 中會顯示:
Successfully logged in
可以檢查登入狀態:
codex login status
10. 在 AutoDL 專案目錄中啟動 Codex
進入專案目錄:
cd /autodl-tmp/你的專案目錄
範例:
cd /autodl-tmp/Tencent-Advertising-Algorithm-Competition
啟動 Codex:
codex
之後即可讓 Codex 直接分析和修改遠端程式碼。
推薦第一條 prompt:
請先閱讀這個專案的程式碼結構,不要讀取完整資料集。幫我分析訓練流程和當前可能的問題。先不要修改檔案,先給我修改方案。
如果需要它修改程式碼,可以說:
請根據剛才的分析修改程式碼。只修改必要檔案,不要讀取完整資料集,不要刪除資料、權重和日誌檔案。修改後告訴我改了哪些檔案,以及如何測試。
11. 大數據專案的安全使用規則
AutoDL 專案通常包含大數據、模型權重、日誌和實驗結果。使用 Codex 前建議新建 AGENTS.md:
nano AGENTS.md
寫入:
# 專案說明
這是一個執行在 AutoDL 伺服器上的機器學習專案。
## 重要規則
- 不要讀取完整資料集。
- 不要開啟 data、dataset、checkpoints、outputs、logs 等大檔案目錄,除非使用者明確要求。
- 如果需要檢查資料格式,只讀取前 5 行或請求使用者提供小樣本。
- 修改程式碼前,先說明準備修改哪些檔案。
- 不要刪除任何資料檔案、模型權重、日誌或實驗結果。
- 不要直接執行完整訓練,除非使用者明確要求。
- 優先執行輕量級測試、語法檢查或小樣本測試。
然後再執行:
codex
12. 推薦的完整命令順序
本機電腦:開啟反向代理
ssh -N -R 7890:127.0.0.1:7890 -p <PORT> root@<HOST>
保持該視窗不關閉。
AutoDL 伺服器:設定代理
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
AutoDL 伺服器:測試網路
curl -I https://chatgpt.com
curl -I https://api.openai.com
AutoDL 伺服器:修復 awk
apt-get update
apt-get install -y gawk
AutoDL 伺服器:安裝 Codex
curl -fsSL https://chatgpt.com/codex/install.sh | sh
AutoDL 伺服器:重新整理 PATH
export PATH=/root/.local/bin:$PATH
echo 'export PATH=/root/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
AutoDL 伺服器:檢查版本
codex --version
AutoDL 伺服器:登入
codex login --device-auth
AutoDL 伺服器:進入專案並啟動
cd /autodl-tmp/你的專案目錄
codex
13. 常見問題速查
問題 1:curl: (28) Failed to connect to chatgpt.com
原因:AutoDL 無法直接存取 ChatGPT。
解決:本機電腦開啟 SSH 反向代理,並在 AutoDL 設定代理環境變數。
問題 2:輸入 SSH 密碼時貼不上
原因:SSH 密碼輸入不會顯示任何字元。
解決:貼上後直接按 Enter。如果出現 Permission denied 才說明密碼錯誤。
問題 3:HTTP/1.1 200 Connection established 後出現 HTTP/2 403
原因:代理隧道已通,目標網站拒絕了當前請求。
解決:繼續測試安裝腳本或 api.openai.com,不一定是代理失敗。
問題 4:npm: command not found
原因:AutoDL 中沒有安裝 Node.js/npm。
解決:
conda install -c conda-forge nodejs -y
問題 5:Could not find SHA-256 digest
原因:系統預設 awk 不是 GNU awk,安裝腳本解析 SHA 校驗檔案失敗。
解決:
apt-get install -y gawk
必要時:
update-alternatives --install /usr/bin/awk awk /usr/bin/gawk 20
update-alternatives --set awk /usr/bin/gawk
問題 6:bash: codex: command not found
原因:Codex 安裝成功,但當前 shell 的 PATH 沒有重新整理。
解決:
export PATH=/root/.local/bin:$PATH
source ~/.bashrc
或者:
/root/.local/bin/codex --version
問題 7:Codex 登入時打不開瀏覽器
原因:AutoDL 是遠端無瀏覽器環境。
解決:
codex login --device-auth
在本機瀏覽器中完成裝置碼登入。
14. 使用原則
在 AutoDL 中使用 Codex 時,應遵守以下原則:
- 先開代理,再用 Codex;
- 不要關閉本機 SSH 反向代理視窗;
- 不要在大數據根目錄啟動 Codex;
- 優先從專案程式碼目錄啟動 Codex;
- 使用
AGENTS.md限制 Codex 不要讀取大數據; - 修改程式碼前讓 Codex 先給方案;
- 修改後用
git diff檢查; - 不要讓 Codex 直接刪除資料、權重或實驗結果;
- 完整訓練前,先讓 Codex 做小樣本測試;
- 每次重新開啟 AutoDL 終端時,確認代理變數和 PATH 是否仍然存在。