Files
CST-agent/docs/env_openai.md
T
WHC adf3e9f024 v0.8.0: WebUI redesign, /web, workspace switch, 75% budget, no shell timeout
The front end is rebuilt on the design tokens the desktop app ships (surfaces,
color-mix borders, alpha hovers, accent): a 30-icon inline SVG sprite, dark and
light themes, layout switches as deep links (?side=0, ?panel=0, ?theme=light)
resolved before the first paint. The empty page is one line and leaves with the
first turn; the right rail keeps three cards - todo, file changes (+N -M) and
context (tokens, prompt cache hit rate). Both rails animate in and out, and a
collapsed rail widens its grid track to 0 instead of being removed, so the
transcript never slides into a zero-width column.

- src/webui.c: POST /api/workspace - re-root the agent at another directory
  (permission rules, metrics, AGENTS.md follow) and start a session there, as
  sessions live per directory; state also reports cached/cache_miss tokens
- src/agent_loop.c: cst_agent_set_workspace(), rebuilt prompt and re-measured
  budget; the auto-compact threshold is 75% of the window (was 60%)
- src/tui.c: /web forks a WebUI next to the TUI - separate process and a new
  session, because cst_webui_run() blocks and two writers corrupt one session
- src/os_compat.c, src/os_win.c: run_shell runs without a time limit unless
  CST_SHELL_TIMEOUT asks for one, so builds and long clones finish
- src/main.c, include/cst_webui.h: one CST_WEBUI_DEFAULT_PORT for --help, the
  docs and /web; Termux opens the browser through termux-open-url
- README.md, docs/webui.md, docs/env_openai.md: /web, /api/workspace, the new
  state fields, the 75% threshold and the layout deep links

tests/e2e_webui.sh green (permission round-trip, token paths, --web-dev);
make check green.
2026-10-09 11:50:13 +08:00

4.4 KiB
Raw Blame History

OpenAI 兼容 API 环境变量

CST-Agent 使用 OpenAI Chat Completions 协议(POST {base}/chat/completions,SSE 流式), 可对接官方 OpenAI、DeepSeek、MiniMax,以及其它兼容网关。

Provider 预设

--provider NAME(或 CST_PROVIDER,或 TUI 里的 /provider)一次性给出 base 和默认模型。 不传时沿用上次使用的 provider(记在配置目录的 settings.json)。

provider API Base 默认模型 Key 变量
minimax(默认) https://api.minimax.cn/v1 MiniMax-M2.7 MINIMAX_API_KEY
deepseek https://api.deepseek.com/v1 deepseek-flash(另有 deepseek-v4-pro) DEEPSEEK_API_KEY
openai https://api.openai.com/v1 gpt-4.1-mini OPENAI_API_KEY
teamorouter https://api.teamorouter.com/v1 登录后自动取 /models 第一个(/model 可换) TEAMOROUTER_API_KEY

显式给出的 --api-base / --model / 下表中的环境变量优先于预设。

解析顺序

项 优先级(高 → 低)
Key --api-key(只用于本次进程,不写盘)→ 该 provider 已保存的 key → provider 的 Key 变量 → CST_API_KEY → TUI 弹出遮罩输入框(输入后保存)
Base(含 /v1,不带 /chat/completions) --api-base → CST_API_BASE → OPENAI_BASE_URL → OPENAI_API_BASE → 预设
Model --model → CST_MODEL → OPENAI_MODEL → 该 provider 上次使用的模型 → 预设
推理强度 --effort → CST_EFFORT → 上次使用 → medium(low / medium / high / max)

key 按 provider 保存在 credentials 文件(权限 0600),每行 <provider>.api_key=...; TUI 里 /key 更换,命令行 --ask-key 输入(不回显):

  • Linux/macOS/Termux:$XDG_CONFIG_HOME/cst-agent/credentials(默认 ~/.config/cst-agent/)
  • Windows:%APPDATA%\cst-agent\credentials

旧版只有一行 api_key= 的文件仍可读:按其中的 api_base 归到对应 provider(没有 api_base 时视为 MiniMax)。

示例

DeepSeek

cst-agent --provider deepseek                            # 首次会询问 key;默认 deepseek-flash
cst-agent --provider deepseek --model deepseek-v4-pro -e high   # 推理内容显示为 Thought

OpenAI 官方

cst-agent --provider openai

MiniMax(默认)

cst-agent --provider minimax

任意兼容网关

export OPENAI_API_KEY='...'
export OPENAI_BASE_URL='https://your-gateway.example/v1'
export OPENAI_MODEL='your-model'
./cst-agent --headless --prompt 'ping' --workspace .

网关不支持 stream_options.include_usage 时设 CST_NO_STREAM_USAGE=1。

其它环境变量

变量 说明
CST_PROTOCOL 工具调用协议:native-eos(默认)/ native-inc / ctl / ctl-heredoc / xml
CST_MAX_STEPS 每个用户回合最多调用模型几次(默认 30)
CST_TOOL_OUT_CAP 单个工具输出发给模型的字节上限(默认 16384)
CST_CTX_WINDOW 发给模型的最近非 system 消息条数(默认 80)
CST_SHELL_TIMEOUT run_shell 超时秒数(默认不限,Ctrl+C / 停止按钮仍可随时中断)
CST_METRICS=0 / CST_METRICS_PATH 关闭 / 指定计时埋点 JSONL
CST_RECORD_SSE / CST_REPLAY_SSE 录制 / 回放原始 SSE 流目录;CST_REPLAY_CHUNK 控制回放分块字节数
CST_MODELS /model 可选列表,: 或 , 分隔
CST_AUTO_APPROVE=1 自动允许 shell/写文件(= --approval yolo;headless 默认开启)
CST_APPROVAL 审批模式 ask / auto(默认)/ yolo
CST_SANDBOX=off 关闭 run_shell 沙箱(Landlock / seccomp / macOS sandbox),auto 回落到只读白名单;landlock / seccomp 只允许该种
CST_SHELL shell 解释器路径(覆盖 busybox/sh)
CST_EXE_DIR 可执行文件目录(Termux 旁路 busybox 时有用)

网络:连接超时 30 秒;300 秒内无数据视为超时;429 / 5xx / 连接错误在尚未收到任何内容时自动重试 3 次(1s、2s、4s 退避)。

CLI 对照

--provider NAME  ← CST_PROVIDER
--api-base URL   ← CST_API_BASE / OPENAI_BASE_URL
--api-key KEY    ← 已保存的 key / <provider key 变量> / CST_API_KEY
--model NAME     ← CST_MODEL / OPENAI_MODEL
--effort LEVEL   ← CST_EFFORT
--protocol P     ← CST_PROTOCOL
--max-steps N    ← CST_MAX_STEPS