{"repo": "bisdom-cell/openclaw-model-bridge", "files": {"providers.d/glm5_coding_provider.py": {"34add154d4c01dd861f6380bcc12b12b12282785": {"t": 1785674162.059198, "n": 5321, "h": "2e60f76afcc4edcf", "c": "\"\"\"V37.9.254 — GLM-5.2 Coding Provider (Volcengine Ark, coding 专用按需调用)\n V37.9.255 — 端点刷新: ai-tokenhub → Volcengine Ark (用户确认 GLM-5.2 实际托管在\n 火山引擎 Ark, 同 doubao_21 平台; ai-tokenhub 账号无 GLM scope, 旧 key 10101)。\n\n接入第 12 个 provider: glm-5-2-260617 (GLM-5.2, 火山引擎 Ark 托管, 同 doubao_21 平台)。\n定位 = **coding 场景专用**——有需要编码的场景时按需显式调用 (`?provider=glm5_coding`),\n不是 primary 也不默认进 auto-fallback 链 (由 Mac Mini FALLBACK_ORDER env 控制是否纳入)。\n区别于第 7 个 built-in `glm` (Zhipu open.bigmodel.cn) —— 本 provider 是火山 Ark 托管的\nGLM-5.2, 独立 endpoint ID + 独立 key。\n\n设计契约 (镜像 doubao_seed_21_provider.py V37.9.216 Ark 安全模式):\n- 🔴 API key 严格走 env `GLM5_API_KEY` (不可硬编码, 即便用户豁免也守公开 repo 安全底线;\n push 前 ark-/sk- 泄漏扫描会拦截)。用独立 env (非复用 doubao_21 的 ARK_21_API_KEY),\n 让 GLM 与 doubao_21 各自持 key/endpoint 独立配置。key 是 Volcengine `ark-...` 格式。\n- Endpoint ID 走 env `GLM5_ENDPOINT_ID` (Volcengine 的 model 字段接收 endpoint ID `ep-...`\n 而非 model name — Volcengine Ark 与 OpenAI Compatible 端点的关键差异, 同 doubao_21)。\n- base_url = https://ark.cn-beijing.volces.com/api/v3 是公开 Volcengine 域名 (非裸 IP/\n 非机密) → 可入库 (与 doubao 2.0/2.1 同域名)。\n- dev 环境无 env → fallback 到公开 model 标识符 glm-5-2-260617 (合约通过 +\n ProviderRegistry.available() 因缺 GLM5_API_KEY 自动排除)。\n- Mac Mini 配 env → 真实 endpoint ID 注入, 可显式 `?provider=glm5_coding` 调用。\n\n🔴 诚实语义 (原则 #23 — 只声明实测过的能力):\n- **verification_tier = feature_verified** — V37.9.254 declared → V37.9.255 端点刷新 Ark →\n **V37.9.256-258 Mac Mini 直连 Ark E2E 全探针: text/streaming/tool_calling 3/3 实测通过**\n (is_prime 正确代码+finish_reason=stop+model=glm-5-2-260617+reasoning_tokens=0 /\n --stream SSE chunk+[DONE] / finish_reason=tool_calls+get_weather({city:东京}) arguments)。\n- **实测能力**: text ✅ / streaming ✅ / tool_calling ✅。\n- **实测不支持 / False (原则 #23 诚实)**:\n json_mode — V37.9.258 E2E 实测 HTTP 400 \"json_object is not supported by this model\" → False\n vision — coding 文本模型, 非多模态 (GLM-5V 是独立模型) → False\n reasoning — reasoning_tokens=0, 本 endpoint 无 reasoning 通道 → False\n (故不设 reasoning_off_body: 无 reasoning 通道不声明 batch-reasoning-off, 原则 #23。)\n- context_window = 131072 (128K, GLM-5 系典型值保守占位, 待端点规格/实测确认; 描述性\n metadata 不影响路由评分, 同 deepseek 原 65536 占位惯例)。\n\"\"\"\nimport os\n\nfrom providers import BaseProvider, ModelInfo, ProviderCapabilities\n\n\n_GLM5_FALLBACK_MODEL = \"glm-5-2-260617\"\n\n\nclass Glm5CodingProvider(BaseProvider):\n name = \"glm5_coding\"\n display_name = \"GLM-5.2 Coding (Volcengine Ark)\"\n base_url = \"https://ark.cn-beijing.volces.com/api/v3\" # 公开 Volcengine 域名, 非机密\n api_key_env = \"GLM5_API_KEY\"\n auth_style = \"bearer\"\n\n def __init__(self):\n endpoint_id = (os.environ.get(\"GLM5_ENDPOINT_ID\", \"\").strip()\n or _GLM5_FALLBACK_MODEL)\n self.models = [\n ModelInfo(\n model_id=endpoint_id, # Volcengine: model 字段接收 endpoint ID (ep-...)\n display_name=\"glm-5-2-260617 (GLM-5.2 Coding)\",\n modalities=[\"text\"],\n context_window=131072, # 128K 保守占位, 待端点规格/实测确认\n max_output_tokens=8192, # 保守占位, 待实测\n is_default=True,\n ),\n ]\n # 🔴 能力声明 (原则 #23 — declared tier: 来自 GLM-5 系文档 + OpenAI 兼容基线, 0 生产验证):\n # coding 典型集 text/tool_calling/streaming/json_mode declared True; vision/reasoning 保守 False;\n # verified_* 全 False (dev 无 key 无法 E2E), tier_evidence 留空走派生。\n self.capabilities = ProviderCapabilities(\n text=True,\n vision=False, # coding 文本模型, GLM-5V 是独立模型\n audio=False,\n video=False,\n tool_calling=True, # V37.9.258 E2E: finish_reason=tool_calls + get_weather arguments\n streaming=True, # V37.9.257 E2E: SSE chunk 流\n json_mode=False, # V37.9.258 E2E 实测不支持: HTTP 400 \"json_object is not supported by this model\"\n reasoning=False, # reasoning_tokens=0 (本 endpoint 无 reasoning 通道)\n context_window=131072,\n max_output_tokens=8192,\n # verified_* — V37.9.256-258 Mac Mini 直连 Ark E2E 全探针: text/streaming/tool_calling 3/3 通过;\n # json_mode 实测不支持 (400) / vision 非多模态 / reasoning 无通道 → 诚实 False\n verified_text=True, # E2E: is_prime 正确代码 + finish_reason=stop + model=glm-5-2-260617\n verified_vision=False,\n verified_tool_calling=True, # V37.9.258 E2E: finish_reason=tool_calls + get_weather({\"city\":\"东京\"})\n verified_streaming=True, # E2E: --stream SSE chunk 流 (快排解释) + finish_reason=stop + [DONE]\n verified_fallback=False, # 未真生产 fallback 接管\n verified_reasoning=False, # reasoning_tokens=0 (本调用无 reasoning, 与 reasoning=False 一致)\n # feature_verified: 全能力探针 E2E (text/streaming/tool_calling 3/3 通过); tier_evidence 显式引用证据\n verification_tier=\"feature_verified\",\n tier_evidence=\"Mac Mini 直连 Volcengine Ark E2E 全探针 2026-07-07: text/streaming/tool_calling 3/3 通过 \"\n \"(is_prime 正确代码+finish_reason=stop+model=glm-5-2-260617+reasoning_tokens=0 / \"\n \"--stream SSE chunk+[DONE] / finish_reason=tool_calls+get_weather({city:东京}) arguments);\"\n \"json_mode 实测不支持 (HTTP 400 json_object is not supported by this model) / \"\n \"vision 非多模态 / reasoning 无通道 / 未真生产 fallback 接管\",\n )\n"}, "b64080df9bfe85bc3f295af17f898b239a656072": {"t": 1785846840.223823, "n": 5321, "h": "2e60f76afcc4edcf", "c": "\"\"\"V37.9.254 — GLM-5.2 Coding Provider (Volcengine Ark, coding 专用按需调用)\n V37.9.255 — 端点刷新: ai-tokenhub → Volcengine Ark (用户确认 GLM-5.2 实际托管在\n 火山引擎 Ark, 同 doubao_21 平台; ai-tokenhub 账号无 GLM scope, 旧 key 10101)。\n\n接入第 12 个 provider: glm-5-2-260617 (GLM-5.2, 火山引擎 Ark 托管, 同 doubao_21 平台)。\n定位 = **coding 场景专用**——有需要编码的场景时按需显式调用 (`?provider=glm5_coding`),\n不是 primary 也不默认进 auto-fallback 链 (由 Mac Mini FALLBACK_ORDER env 控制是否纳入)。\n区别于第 7 个 built-in `glm` (Zhipu open.bigmodel.cn) —— 本 provider 是火山 Ark 托管的\nGLM-5.2, 独立 endpoint ID + 独立 key。\n\n设计契约 (镜像 doubao_seed_21_provider.py V37.9.216 Ark 安全模式):\n- 🔴 API key 严格走 env `GLM5_API_KEY` (不可硬编码, 即便用户豁免也守公开 repo 安全底线;\n push 前 ark-/sk- 泄漏扫描会拦截)。用独立 env (非复用 doubao_21 的 ARK_21_API_KEY),\n 让 GLM 与 doubao_21 各自持 key/endpoint 独立配置。key 是 Volcengine `ark-...` 格式。\n- Endpoint ID 走 env `GLM5_ENDPOINT_ID` (Volcengine 的 model 字段接收 endpoint ID `ep-...`\n 而非 model name — Volcengine Ark 与 OpenAI Compatible 端点的关键差异, 同 doubao_21)。\n- base_url = https://ark.cn-beijing.volces.com/api/v3 是公开 Volcengine 域名 (非裸 IP/\n 非机密) → 可入库 (与 doubao 2.0/2.1 同域名)。\n- dev 环境无 env → fallback 到公开 model 标识符 glm-5-2-260617 (合约通过 +\n ProviderRegistry.available() 因缺 GLM5_API_KEY 自动排除)。\n- Mac Mini 配 env → 真实 endpoint ID 注入, 可显式 `?provider=glm5_coding` 调用。\n\n🔴 诚实语义 (原则 #23 — 只声明实测过的能力):\n- **verification_tier = feature_verified** — V37.9.254 declared → V37.9.255 端点刷新 Ark →\n **V37.9.256-258 Mac Mini 直连 Ark E2E 全探针: text/streaming/tool_calling 3/3 实测通过**\n (is_prime 正确代码+finish_reason=stop+model=glm-5-2-260617+reasoning_tokens=0 /\n --stream SSE chunk+[DONE] / finish_reason=tool_calls+get_weather({city:东京}) arguments)。\n- **实测能力**: text ✅ / streaming ✅ / tool_calling ✅。\n- **实测不支持 / False (原则 #23 诚实)**:\n json_mode — V37.9.258 E2E 实测 HTTP 400 \"json_object is not supported by this model\" → False\n vision — coding 文本模型, 非多模态 (GLM-5V 是独立模型) → False\n reasoning — reasoning_tokens=0, 本 endpoint 无 reasoning 通道 → False\n (故不设 reasoning_off_body: 无 reasoning 通道不声明 batch-reasoning-off, 原则 #23。)\n- context_window = 131072 (128K, GLM-5 系典型值保守占位, 待端点规格/实测确认; 描述性\n metadata 不影响路由评分, 同 deepseek 原 65536 占位惯例)。\n\"\"\"\nimport os\n\nfrom providers import BaseProvider, ModelInfo, ProviderCapabilities\n\n\n_GLM5_FALLBACK_MODEL = \"glm-5-2-260617\"\n\n\nclass Glm5CodingProvider(BaseProvider):\n name = \"glm5_coding\"\n display_name = \"GLM-5.2 Coding (Volcengine Ark)\"\n base_url = \"https://ark.cn-beijing.volces.com/api/v3\" # 公开 Volcengine 域名, 非机密\n api_key_env = \"GLM5_API_KEY\"\n auth_style = \"bearer\"\n\n def __init__(self):\n endpoint_id = (os.environ.get(\"GLM5_ENDPOINT_ID\", \"\").strip()\n or _GLM5_FALLBACK_MODEL)\n self.models = [\n ModelInfo(\n model_id=endpoint_id, # Volcengine: model 字段接收 endpoint ID (ep-...)\n display_name=\"glm-5-2-260617 (GLM-5.2 Coding)\",\n modalities=[\"text\"],\n context_window=131072, # 128K 保守占位, 待端点规格/实测确认\n max_output_tokens=8192, # 保守占位, 待实测\n is_default=True,\n ),\n ]\n # 🔴 能力声明 (原则 #23 — declared tier: 来自 GLM-5 系文档 + OpenAI 兼容基线, 0 生产验证):\n # coding 典型集 text/tool_calling/streaming/json_mode declared True; vision/reasoning 保守 False;\n # verified_* 全 False (dev 无 key 无法 E2E), tier_evidence 留空走派生。\n self.capabilities = ProviderCapabilities(\n text=True,\n vision=False, # coding 文本模型, GLM-5V 是独立模型\n audio=False,\n video=False,\n tool_calling=True, # V37.9.258 E2E: finish_reason=tool_calls + get_weather arguments\n streaming=True, # V37.9.257 E2E: SSE chunk 流\n json_mode=False, # V37.9.258 E2E 实测不支持: HTTP 400 \"json_object is not supported by this model\"\n reasoning=False, # reasoning_tokens=0 (本 endpoint 无 reasoning 通道)\n context_window=131072,\n max_output_tokens=8192,\n # verified_* — V37.9.256-258 Mac Mini 直连 Ark E2E 全探针: text/streaming/tool_calling 3/3 通过;\n # json_mode 实测不支持 (400) / vision 非多模态 / reasoning 无通道 → 诚实 False\n verified_text=True, # E2E: is_prime 正确代码 + finish_reason=stop + model=glm-5-2-260617\n verified_vision=False,\n verified_tool_calling=True, # V37.9.258 E2E: finish_reason=tool_calls + get_weather({\"city\":\"东京\"})\n verified_streaming=True, # E2E: --stream SSE chunk 流 (快排解释) + finish_reason=stop + [DONE]\n verified_fallback=False, # 未真生产 fallback 接管\n verified_reasoning=False, # reasoning_tokens=0 (本调用无 reasoning, 与 reasoning=False 一致)\n # feature_verified: 全能力探针 E2E (text/streaming/tool_calling 3/3 通过); tier_evidence 显式引用证据\n verification_tier=\"feature_verified\",\n tier_evidence=\"Mac Mini 直连 Volcengine Ark E2E 全探针 2026-07-07: text/streaming/tool_calling 3/3 通过 \"\n \"(is_prime 正确代码+finish_reason=stop+model=glm-5-2-260617+reasoning_tokens=0 / \"\n \"--stream SSE chunk+[DONE] / finish_reason=tool_calls+get_weather({city:东京}) arguments);\"\n \"json_mode 实测不支持 (HTTP 400 json_object is not supported by this model) / \"\n \"vision 非多模态 / reasoning 无通道 / 未真生产 fallback 接管\",\n )\n"}}, "providers.d/doubao_seed_21_provider.py": {"34add154d4c01dd861f6380bcc12b12b12282785": {"t": 1785674268.8112607, "n": 4351, "h": "094f8bf740cc49b6", "c": "\"\"\"V37.9.216 — Doubao Seed 2.1 Pro Provider (Volcengine Ark, 旗舰版)\n\n接入第 11 个 provider: doubao-seed-2-1-pro (火山引擎 Ark, 新旗舰, 多模态 + reasoning),\n区别于第 8 个 doubao_provider.py (Doubao Seed 2.0 Pro)。\n\n设计契约 (镜像 doubao_provider.py V37.9.52 安全模式):\n- 🔴 API key 严格走 env ARK_21_API_KEY (不可硬编码, 即便用户豁免也守公开 repo 安全底线;\n push 前 sk-/ark- 泄漏扫描会拦截)。用独立 env (非复用 doubao 2.0 的 ARK_API_KEY),\n 让 2.1 旗舰与 2.0 各自持 key/endpoint 独立配置。\n- Endpoint ID 走 env ARK_21_ENDPOINT_ID (Volcengine 的 model 字段接收 endpoint ID\n 而非 model name — Volcengine Ark 与 OpenAI Compatible 端点的关键差异)。\n- base_url = https://ark.cn-beijing.volces.com/api/v3 是公开 Volcengine 域名 (非裸 IP/\n 非机密) → 可入库 (与 doubao 2.0 同域名)。\n- dev 环境无 env → fallback 到公开 model 标识符 doubao-seed-2-1-pro-260628\n (合约通过 + ProviderRegistry.available() 因缺 ARK_21_API_KEY 自动排除)。\n- Mac Mini 配 env → 真实 endpoint ID 注入, fallback chain 可激活。\n\n🔴 诚实语义 (原则 #23 + 渐进验证纪律):\n- V37.9.216 接入 declared (能力仅声明未实测) → V37.9.217 Mac Mini E2E 实测 5 项\n (text/vision/tool_calling/streaming/reasoning) 全通过 → 升 feature_verified。\n- verification_tier = \"production_observed\"(V37.9.277)— 唯一 primary 承载全部生产流量\n 2026-07-02 起(V37.9.222 B1 flip,22+ 天零 provider 事故 + B1 批量注入 7654 次实测开火)。\n verified_text/vision/tool_calling/streaming/reasoning=True; verified_fallback=False\n (未真生产 fallback 接管, 同 doubao 2.0/deepseek 惯例)。\n- 能力声明 (含 json_mode=True) = Doubao Seed 2.1 Pro advertised 能力; json_mode 声明\n 未单测。旗舰质量: bat-ball 答对 0.05 + 完整 reasoning 通道 + 无乱码 (优于 deepseek 量化版)。\n- 镜像 doubao 2.0 V37.9.53-55 / deepseek V37.9.201→205 渐进验证。\n\"\"\"\nimport os\n\nfrom providers import BaseProvider, ModelInfo, ProviderCapabilities\n\n\n_DOUBAO_21_FALLBACK_MODEL = \"doubao-seed-2-1-pro-260628\"\n\n\nclass DoubaoSeed21Provider(BaseProvider):\n name = \"doubao_21\"\n display_name = \"Doubao Seed 2.1 Pro (Volcengine Ark)\"\n base_url = \"https://ark.cn-beijing.volces.com/api/v3\"\n api_key_env = \"ARK_21_API_KEY\"\n auth_style = \"bearer\"\n # V37.9.222 B1: Ark 原生支持 per-request 关 reasoning (2026-07-02 实测 thinking:disabled\n # → reasoning_tokens 0 + 17.7s vs 默认 5138/166s)。批量 workload 注入此片段走快路。\n reasoning_off_body = {\"thinking\": {\"type\": \"disabled\"}}\n\n def __init__(self):\n endpoint_id = (os.environ.get(\"ARK_21_ENDPOINT_ID\", \"\").strip()\n or _DOUBAO_21_FALLBACK_MODEL)\n self.models = [\n ModelInfo(\n model_id=endpoint_id,\n display_name=\"doubao-seed-2-1-pro-260628\",\n modalities=[\"text\", \"vision\"],\n context_window=262144,\n max_output_tokens=16384,\n is_default=True,\n is_vision=True,\n ),\n ]\n self.capabilities = ProviderCapabilities(\n # 能力声明 (Doubao Seed 2.1 Pro 旗舰 advertised 能力, 同 2.0 Pro 家族)\n text=True,\n vision=True,\n audio=False,\n video=False,\n tool_calling=True,\n streaming=True,\n json_mode=True,\n reasoning=True, # Doubao Seed Pro 是推理模型 (2.0 实测有 reasoning_content)\n context_window=262144,\n max_output_tokens=16384,\n # verified_* (6 维跟踪); V37.9.217 Mac Mini E2E 实测 5 项通过 → flip True\n verified_text=True, # E2E: content=\"0.05\" bat-ball 答对 + finish_reason=stop\n verified_vision=True, # E2E: 湖面/橙色皮划艇/针叶林/覆雪山脉 全命中\n verified_tool_calling=True, # E2E: finish_reason=tool_calls + get_weather({\"city\":\"东京\"})\n verified_streaming=True, # E2E: chat.completion.chunk 流 + finish_reason=stop + [DONE]\n verified_fallback=False, # 未真生产 fallback 接管 (同 doubao 2.0/deepseek 惯例)\n verified_reasoning=True, # E2E: reasoning_content 通道 + reasoning_tokens=255\n # production_observed (V37.9.277): 真实生产流量运行 (最强声明, 证据见 tier_evidence)\n verification_tier=\"production_observed\",\n tier_evidence=\"唯一 primary 承载全部生产流量 2026-07-02 起 (V37.9.222 B1 flip, 22+ 天 cron 周期\"\n \"零 provider 事故); B1 批量 thinking-off 注入实测大规模开火 (adapter.log 7654 次 \"\n \"@2026-07-24, dream curl 超时 0 复发); E2E 2026-07-02: text/vision/tool_calling/\"\n \"streaming/reasoning 5/5 (bat-ball 0.05 / vision 全命中 / tool_calls / chunk+[DONE] / \"\n \"reasoning_tokens=255) 无乱码;json_mode 声明未单测 / 未真生产 fallback 接管\",\n )\n"}, "b64080df9bfe85bc3f295af17f898b239a656072": {"t": 1785846859.6785772, "n": 4351, "h": "094f8bf740cc49b6", "c": "\"\"\"V37.9.216 — Doubao Seed 2.1 Pro Provider (Volcengine Ark, 旗舰版)\n\n接入第 11 个 provider: doubao-seed-2-1-pro (火山引擎 Ark, 新旗舰, 多模态 + reasoning),\n区别于第 8 个 doubao_provider.py (Doubao Seed 2.0 Pro)。\n\n设计契约 (镜像 doubao_provider.py V37.9.52 安全模式):\n- 🔴 API key 严格走 env ARK_21_API_KEY (不可硬编码, 即便用户豁免也守公开 repo 安全底线;\n push 前 sk-/ark- 泄漏扫描会拦截)。用独立 env (非复用 doubao 2.0 的 ARK_API_KEY),\n 让 2.1 旗舰与 2.0 各自持 key/endpoint 独立配置。\n- Endpoint ID 走 env ARK_21_ENDPOINT_ID (Volcengine 的 model 字段接收 endpoint ID\n 而非 model name — Volcengine Ark 与 OpenAI Compatible 端点的关键差异)。\n- base_url = https://ark.cn-beijing.volces.com/api/v3 是公开 Volcengine 域名 (非裸 IP/\n 非机密) → 可入库 (与 doubao 2.0 同域名)。\n- dev 环境无 env → fallback 到公开 model 标识符 doubao-seed-2-1-pro-260628\n (合约通过 + ProviderRegistry.available() 因缺 ARK_21_API_KEY 自动排除)。\n- Mac Mini 配 env → 真实 endpoint ID 注入, fallback chain 可激活。\n\n🔴 诚实语义 (原则 #23 + 渐进验证纪律):\n- V37.9.216 接入 declared (能力仅声明未实测) → V37.9.217 Mac Mini E2E 实测 5 项\n (text/vision/tool_calling/streaming/reasoning) 全通过 → 升 feature_verified。\n- verification_tier = \"production_observed\"(V37.9.277)— 唯一 primary 承载全部生产流量\n 2026-07-02 起(V37.9.222 B1 flip,22+ 天零 provider 事故 + B1 批量注入 7654 次实测开火)。\n verified_text/vision/tool_calling/streaming/reasoning=True; verified_fallback=False\n (未真生产 fallback 接管, 同 doubao 2.0/deepseek 惯例)。\n- 能力声明 (含 json_mode=True) = Doubao Seed 2.1 Pro advertised 能力; json_mode 声明\n 未单测。旗舰质量: bat-ball 答对 0.05 + 完整 reasoning 通道 + 无乱码 (优于 deepseek 量化版)。\n- 镜像 doubao 2.0 V37.9.53-55 / deepseek V37.9.201→205 渐进验证。\n\"\"\"\nimport os\n\nfrom providers import BaseProvider, ModelInfo, ProviderCapabilities\n\n\n_DOUBAO_21_FALLBACK_MODEL = \"doubao-seed-2-1-pro-260628\"\n\n\nclass DoubaoSeed21Provider(BaseProvider):\n name = \"doubao_21\"\n display_name = \"Doubao Seed 2.1 Pro (Volcengine Ark)\"\n base_url = \"https://ark.cn-beijing.volces.com/api/v3\"\n api_key_env = \"ARK_21_API_KEY\"\n auth_style = \"bearer\"\n # V37.9.222 B1: Ark 原生支持 per-request 关 reasoning (2026-07-02 实测 thinking:disabled\n # → reasoning_tokens 0 + 17.7s vs 默认 5138/166s)。批量 workload 注入此片段走快路。\n reasoning_off_body = {\"thinking\": {\"type\": \"disabled\"}}\n\n def __init__(self):\n endpoint_id = (os.environ.get(\"ARK_21_ENDPOINT_ID\", \"\").strip()\n or _DOUBAO_21_FALLBACK_MODEL)\n self.models = [\n ModelInfo(\n model_id=endpoint_id,\n display_name=\"doubao-seed-2-1-pro-260628\",\n modalities=[\"text\", \"vision\"],\n context_window=262144,\n max_output_tokens=16384,\n is_default=True,\n is_vision=True,\n ),\n ]\n self.capabilities = ProviderCapabilities(\n # 能力声明 (Doubao Seed 2.1 Pro 旗舰 advertised 能力, 同 2.0 Pro 家族)\n text=True,\n vision=True,\n audio=False,\n video=False,\n tool_calling=True,\n streaming=True,\n json_mode=True,\n reasoning=True, # Doubao Seed Pro 是推理模型 (2.0 实测有 reasoning_content)\n context_window=262144,\n max_output_tokens=16384,\n # verified_* (6 维跟踪); V37.9.217 Mac Mini E2E 实测 5 项通过 → flip True\n verified_text=True, # E2E: content=\"0.05\" bat-ball 答对 + finish_reason=stop\n verified_vision=True, # E2E: 湖面/橙色皮划艇/针叶林/覆雪山脉 全命中\n verified_tool_calling=True, # E2E: finish_reason=tool_calls + get_weather({\"city\":\"东京\"})\n verified_streaming=True, # E2E: chat.completion.chunk 流 + finish_reason=stop + [DONE]\n verified_fallback=False, # 未真生产 fallback 接管 (同 doubao 2.0/deepseek 惯例)\n verified_reasoning=True, # E2E: reasoning_content 通道 + reasoning_tokens=255\n # production_observed (V37.9.277): 真实生产流量运行 (最强声明, 证据见 tier_evidence)\n verification_tier=\"production_observed\",\n tier_evidence=\"唯一 primary 承载全部生产流量 2026-07-02 起 (V37.9.222 B1 flip, 22+ 天 cron 周期\"\n \"零 provider 事故); B1 批量 thinking-off 注入实测大规模开火 (adapter.log 7654 次 \"\n \"@2026-07-24, dream curl 超时 0 复发); E2E 2026-07-02: text/vision/tool_calling/\"\n \"streaming/reasoning 5/5 (bat-ball 0.05 / vision 全命中 / tool_calls / chunk+[DONE] / \"\n \"reasoning_tokens=255) 无乱码;json_mode 声明未单测 / 未真生产 fallback 接管\",\n )\n"}}}}