refactor(codex_account): 改用 Node.js 實作帳號查詢
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Successful in 13s

This commit is contained in:
2026-06-29 09:53:07 +00:00
parent 2e36931f83
commit 68c78e6736
5 changed files with 137 additions and 104 deletions
+11 -11
View File
@@ -1,6 +1,6 @@
# Codex CLI Composite Action
提供一個 Gitea/GitHub Actions composite action,用於安裝 Codex CLI、寫入 OAuth token、執行指定提示詞,並將 CLI 輸出寫入 action output;另提供透過 `codex app-server` 取得目前登入帳號 email 的 shell helper。
提供一個 Gitea/GitHub Actions composite action,用於安裝 Codex CLI、寫入 OAuth token、執行指定提示詞,並將 CLI 輸出寫入 action output;另提供透過 `codex app-server` 取得目前登入帳號 email 的 Node.js helper。
> 更新時間:2026/06/29 14:18:26
@@ -10,7 +10,7 @@
| 專案名稱 | 專案描述 |
| --- | --- |
| [codex](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/) | 提供 Codex CLI composite action(安裝 `@openai/codex`、寫入 OAuth token、執行提示詞並輸出文字),並提供透過 `codex app-server` JSON-RPC `account/read` 取得目前登入帳號 email 的 shell helper。 |
| [codex](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/) | 提供 Codex CLI composite action(安裝 `@openai/codex`、寫入 OAuth token、執行提示詞並輸出文字),並提供透過 `codex app-server` JSON-RPC `account/read` 取得目前登入帳號 email 的 Node.js helper。 |
### 參考專案
@@ -30,29 +30,29 @@
| 功能名稱 | 功能描述 |
| --- | --- |
| [app/codex_account.py](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/app/codex_account.py#L1) | [透過 codex app-server 的 JSON-RPC `account/read` 取得目前登入帳號的 email,取不到或逾時輸出空字串。](#appcodex_accountpy) |
| [app/codex_account.js](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/app/codex_account.js#L1) | [透過 codex app-server 的 JSON-RPC `account/read` 取得目前登入帳號的 email,取不到或逾時輸出空字串。](#appcodex_accountjs) |
## 使用範例
<a id="appcodex_accountpy"></a>
### app/codex_account.py
<a id="appcodex_accountjs"></a>
### app/codex_account.js
透過 `codex app-server` 的 JSON-RPC `account/read` 取得目前登入帳號的 email。腳本會啟動 `codex app-server` 子行程,依序送出 `initialize` / `initialized` / `account/read` 三筆 JSON-RPC 訊息,使用 `jq` 讀取回應中 `result.account.email` 並輸出到 stdout;讀到 EOF、JSON 解析失敗或超過逾時都會停止,取不到時輸出空字串。
透過 `codex app-server` 的 JSON-RPC `account/read` 取得目前登入帳號的 email。腳本會啟動 `codex app-server` 子行程,依序送出 `initialize` / `initialized` / `account/read` 三筆 JSON-RPC 訊息,使用 Node.js 標準函式庫讀取回應中 `result.account.email` 並輸出到 stdout;讀到 EOF、JSON 解析失敗或超過逾時都會停止,取不到時輸出空字串。
前置條件:
- `codex` CLI 已安裝(例如本 action 的安裝步驟已執行)。
- `jq` 已安裝。
- Node.js 已安裝。
- `$HOME/.codex/auth.json` 已寫入有效的 OAuth token。
典型呼叫方式:
```bash
# 取得目前登入帳號 email;預設等待 25 秒
bash app/codex_account.py
node app/codex_account.js
# 自訂等待 app-server 回應的逾時秒數
bash app/codex_account.py 10
node app/codex_account.js 10
```
預期結果:
@@ -63,12 +63,12 @@ bash app/codex_account.py 10
此模組亦可直接以指令執行,會將 email 印到 stdout(取不到時印空字串):
```bash
bash app/codex_account.py
node app/codex_account.js
```
## Docker
此專案提供以 `ubuntu:latest` 為基底的 Dockerfile,會安裝 `bash``jq`Node.js/npm 與 `@openai/codex`
此專案提供以 `ubuntu:latest` 為基底的 Dockerfile,會安裝 Node.js/npm 與 `@openai/codex`
```bash
docker build -t codex-account .