mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-18 11:30:39 +00:00
Parse `--comfy-api-base` out of `/system_stats` `system.argv` and surface the backend's Comfy Cloud target in the connection panel. When it disagrees with the frontend's build-time `getComfyApiBaseUrl()`, show an amber warning so users can spot the mismatch before sign-in tokens get rejected. Records the cleaner long-term path (add `comfy_api_base` to the backend's `/features` endpoint) in docs/backend-cloud-api-base-feature-flag.md.
3.7 KiB
3.7 KiB
案 B: バックエンドの /features に comfy_api_base を追加する
背景
ComfyUI バックエンドは --comfy-api-base CLI フラグで Comfy Cloud の API ベース URL(prod / staging / カスタム)を選択する。
フロントエンドは __USE_PROD_CONFIG__ ビルド時定数で同じ値を選ぶ。
両者が食い違うと、フロントエンドが発行した Firebase トークン(または API キー)が
バックエンド経由で別の環境に投げられ、認証や課金が落ちる。
現状の検出方法(案 A、src/views/ConnectionPanelView.vue)は
/api/system_stats の system.argv(CLI 全引数)から --comfy-api-base を grep するもの。
動くが脆い:
- 引数の書式(
--flag VALUEvs--flag=VALUE)に依存する - バックエンド側の CLI シグネチャが変わると壊れる
- 「公開 API ではない情報」を検出ロジックに使っている
提案
ComfyUI 本体の /features エンドポイントに comfy_api_base を追加する。
/features はすでに「構造化された機能/設定の公開 API」という位置付けがあり、ここに含めるのが自然。
バックエンドの実装スケッチ
# tmp/ComfyUI/comfy_api/feature_flags.py:65 付近
def get_server_features() -> dict[str, Any]:
from comfy.cli_args import args
return {
...,
"comfy_api_base": args.comfy_api_base,
}
フロントエンドの変更
// 例: src/platform/connectionPanel/ あたりに移設
const features = await fetch(`${base}/api/features`).then((r) => r.json())
const backendCloudBase =
features.comfy_api_base ?? parseBackendCloudBase(stats.system?.argv)
features.comfy_api_base を優先し、未定義の場合のみ argv フォールバックを使う。
メリット
- 構造化された公開 API になり、CLI 変更の影響を受けない
- 拡張機能 / カスタムノードからも安定して参照できる
- 既存の
/featuresパターン(ファースト クラスのバックエンド能力公開)に合致 - フロントエンドの検出コードが自明になる
デメリット
Comfy-Org/ComfyUI本体への PR とリリースが必要- リリース前は案 A をフォールバックとして残す必要がある
comfy_api_baseを「公開してよい情報」と扱う合意が必要 (カスタム URL を使うユーザーには内部 URL が露出することになる)
ロードマップ
- 案 A をフロントエンドに実装(このコミット)
ConnectionPanelView.vueで/system_statsのargvを解析- 不一致を検出した場合は黄色の警告を表示
Comfy-Org/ComfyUIに/features拡張 PR を提出comfy_api/feature_flags.py:65にcomfy_api_baseを追加
- 本体リリース後、フロントエンドを
features.comfy_api_base優先に切替argvフォールバックは互換性のために残す
- 数バージョン後、
argvフォールバックを削除
関連ファイル
- ComfyUI 本体:
comfy/cli_args.py:229—--comfy-api-base引数定義(デフォルトhttps://api.comfy.org) - ComfyUI 本体:
comfy_api/feature_flags.py:65—get_server_features()の現状 - ComfyUI 本体:
server.py:646-685—/system_statsハンドラ(argvを返している) - フロントエンド:
src/config/comfyApi.ts:21-31—getComfyApiBaseUrl()(フロント側のビルド時定数) - フロントエンド:
src/views/ConnectionPanelView.vue— 案 A 実装場所 - フロントエンド:
src/platform/remoteConfig/refreshRemoteConfig.ts—/features既存利用