116 lines
4.0 KiB
Markdown
116 lines
4.0 KiB
Markdown
# codex-retry-gateway-tui
|
|
|
|
- 文档层级:客户端工具
|
|
- 应用性质:客户端 TUI
|
|
- 源码来源:git submodule
|
|
- 运行关系:客户端工具
|
|
- 部署模型:外部安装器
|
|
- 对应服务:`services/pc/user-app/codex-retry-gateway-tui/current/README.md`、`services/a100/user-app/codex-retry-gateway-tui/current/README.md`
|
|
- 对应 stack:无
|
|
- Secret 边界:本地用户配置
|
|
- 分发方式:`uvx` / `uv tool install`。
|
|
- 包名:`codex-retry-gateway-tui`
|
|
- 命令名:`codex-retry-gateway-tui`
|
|
- 本地状态路径:`~/.config/codex-retry-gateway-tui/`
|
|
- 目标 API:本机或内网 codex-retry-gateway。
|
|
- 备注:客户端工具本身不是长期服务;user-app README 只记录具体宿主安装状态。
|
|
|
|
Terminal UI for `codex-retry-gateway`.
|
|
|
|
## Quick Start
|
|
|
|
Run once from a public git repo with `uvx`:
|
|
|
|
```bash
|
|
uvx --from git+https://gitea.shujk.top/shujakuin/codex-retry-gateway-tui.git codex-retry-gateway-tui
|
|
```
|
|
|
|
Install as a user command:
|
|
|
|
```bash
|
|
uv tool install git+https://gitea.shujk.top/shujakuin/codex-retry-gateway-tui.git
|
|
codex-retry-gateway-tui
|
|
```
|
|
|
|
Install as a user command with Pixi global from the published Gitea repo:
|
|
|
|
```bash
|
|
pixi global install \
|
|
--git https://gitea.shujk.top/shujakuin/codex-retry-gateway-tui.git \
|
|
--expose codex-retry-gateway-tui \
|
|
--expose codex-gateway-tui \
|
|
codex-retry-gateway-tui
|
|
```
|
|
|
|
Default behavior:
|
|
|
|
```text
|
|
1. reuse saved ~/.config/codex-retry-gateway-tui/api-url when present
|
|
2. otherwise auto-discover ~/.codex-retry-gateway/state.json gateway_base_url
|
|
3. otherwise fall back to ~/.codex-retry-gateway/config/config.json listen_host/listen_port
|
|
4. otherwise use http://127.0.0.1:4610/__codex_retry_gateway
|
|
```
|
|
|
|
Manual override example:
|
|
|
|
```bash
|
|
codex-retry-gateway-tui --api-url http://100.115.235.115:4610
|
|
```
|
|
|
|
Configuration:
|
|
|
|
- `--api-url` / `CODEX_RETRY_GATEWAY_TUI_API_URL`
|
|
- `--status-url` / `CODEX_RETRY_GATEWAY_TUI_STATUS_URL`
|
|
- `--save-config`
|
|
- `--install`
|
|
- `--refresh-seconds` / `CODEX_RETRY_GATEWAY_TUI_REFRESH_SECONDS`
|
|
- `--timeout` / `CODEX_RETRY_GATEWAY_TUI_TIMEOUT`
|
|
- request-table preferences auto-save to `~/.config/codex-retry-gateway-tui/request-table.json`
|
|
|
|
Environment variables:
|
|
|
|
- `CODEX_RETRY_GATEWAY_TUI_API_URL`
|
|
- `CODEX_RETRY_GATEWAY_TUI_API_URL_FILE`
|
|
- `CODEX_RETRY_GATEWAY_TUI_STATUS_URL`
|
|
- `CODEX_RETRY_GATEWAY_TUI_STATUS_URL_FILE`
|
|
- `CODEX_RETRY_GATEWAY_TUI_VERSION_CHECK_URL`
|
|
- `CODEX_RETRY_GATEWAY_TUI_VERSION_CHECK_TIMEOUT`
|
|
- `CODEX_RETRY_GATEWAY_TUI_NO_VERSION_CHECK`
|
|
|
|
## Local Development
|
|
|
|
```bash
|
|
cd apps/codex-retry-gateway-tui
|
|
uv run codex-retry-gateway-tui
|
|
```
|
|
|
|
Views:
|
|
|
|
- overview: current gateway status and summary counts
|
|
- requests: recent requests, response/request/thread IDs, timing, effort, reasoning tokens, usage, current retry round like `3(2)`, retry note, and lifecycle status: `waiting` before the first response, `streaming` after it, final `HTTP <code>`, red `stalled` after no activity, or red `discarded` when the client cancels
|
|
- logs: recent gateway logs
|
|
- profiles: independently managed text profiles and image profiles, each with its own active selection and actions
|
|
|
|
Controls:
|
|
|
|
- `1` overview
|
|
- `2` requests
|
|
- `3` logs
|
|
- `4` profiles
|
|
- `i` switch the profiles table between text and image profiles
|
|
- `c` edit request-table column visibility, order, and widths
|
|
- `e` edit selected profile in `$VISUAL` / `$EDITOR`
|
|
- `/` filter
|
|
- `r` refresh
|
|
- `m` switch request table compact/wide width profile
|
|
- `Shift-Left` / `Shift-Right` scroll the active table
|
|
- `p` probe selected profile
|
|
- `s` switch to selected profile
|
|
- `w` save selected profile snapshot
|
|
- `d` delete selected inactive profile
|
|
- `u` open selected profile upstream URL
|
|
|
|
This client uses only the public gateway admin API and does not need SSH or secrets.
|
|
|
|
Profile editing uses a temp TOML draft opened in `$VISUAL` or `$EDITOR` and then saves it back through the matching gateway API. Text drafts only contain text upstream settings; image drafts only contain image upstream settings for `/images/*` and `/v1/images/*`. Manual secrets are always blank in the draft, so a blank value keeps the existing secret file.
|