Jelajahi Sumber

feat(usage-doc): update OpenCode config example with GPT-5.2 and Gemini v1beta (#597)

- Add OpenAI GPT-5.2 model configuration with reasoningEffort options
- Add GPT-5.2-small variant using medium reasoning effort
- Fix Gemini baseURL to use /v1beta endpoint
- Update i18n strings to reflect different baseURLs per provider
Ding 1 bulan lalu
induk
melakukan
af84e4b2b8

+ 2 - 2
messages/en/usage.json

@@ -543,8 +543,8 @@
         "important": "Important",
         "importantPoints": [
           "Create an API key in the cch console and set the CCH_API_KEY environment variable",
-          "All providers use ${resolvedOrigin}/v1 as baseURL (cch v1 API base URL)",
-          "When selecting models, use provider_id/model_id (e.g. cchClaude/claude-sonnet-4-5-20250929)"
+          "cchClaude/openai use ${resolvedOrigin}/v1; cchGemini uses ${resolvedOrigin}/v1beta",
+          "When selecting models, use provider_id/model_id (e.g. openai/gpt-5.2 or cchClaude/claude-sonnet-4-5-20250929)"
         ]
       },
 

+ 2 - 2
messages/ja/usage.json

@@ -543,8 +543,8 @@
         "important": "重要",
         "importantPoints": [
           "cch の管理画面で API Key を作成し、環境変数 CCH_API_KEY を設定してください",
-          "3 つの provider すべてで baseURL は ${resolvedOrigin}/v1(cch の v1 API ベース URL)",
-          "モデル選択は provider_id/model_id 形式(例:cchClaude/claude-sonnet-4-5-20250929)"
+          "cchClaude/openai は ${resolvedOrigin}/v1、cchGemini は ${resolvedOrigin}/v1beta を baseURL に使用します",
+          "モデル選択は provider_id/model_id 形式(例:openai/gpt-5.2 または cchClaude/claude-sonnet-4-5-20250929)"
         ]
       },
 

+ 2 - 2
messages/ru/usage.json

@@ -543,8 +543,8 @@
         "important": "Важно",
         "importantPoints": [
           "Создайте API key в панели cch и задайте переменную окружения CCH_API_KEY",
-          "Все provider используют ${resolvedOrigin}/v1 как baseURL (базовый URL cch v1 API)",
-          "При выборе модели используйте provider_id/model_id (например, cchClaude/claude-sonnet-4-5-20250929)"
+          "cchClaude/openai используют ${resolvedOrigin}/v1; cchGemini использует ${resolvedOrigin}/v1beta",
+          "При выборе модели используйте provider_id/model_id (например, openai/gpt-5.2 или cchClaude/claude-sonnet-4-5-20250929)"
         ]
       },
 

+ 2 - 2
messages/zh-CN/usage.json

@@ -539,8 +539,8 @@
         "important": "重要说明",
         "importantPoints": [
           "请先在 cch 后台创建 API Key,并设置环境变量 CCH_API_KEY",
-          "三个 provider 的 baseURL 都使用 ${resolvedOrigin}/v1(cch v1 API 地址)",
-          "模型选择时使用 provider_id/model_id 格式(例如 cchClaude/claude-sonnet-4-5-20250929)"
+          "cchClaude/openai 使用 ${resolvedOrigin}/v1,cchGemini 使用 ${resolvedOrigin}/v1beta",
+          "模型选择时使用 provider_id/model_id 格式(例如 openai/gpt-5.2 或 cchClaude/claude-sonnet-4-5-20250929)"
         ]
       },
 

+ 2 - 2
messages/zh-TW/usage.json

@@ -539,8 +539,8 @@
         "important": "重要說明",
         "importantPoints": [
           "請先在 cch 後台創建 API Key,並設置環境變量 CCH_API_KEY",
-          "三個 provider 的 baseURL 都使用 ${resolvedOrigin}/v1(cch v1 API 地址)",
-          "模型選擇時使用 provider_id/model_id 格式(例如 cchClaude/claude-sonnet-4-5-20250929)"
+          "cchClaude/openai 使用 ${resolvedOrigin}/v1,cchGemini 使用 ${resolvedOrigin}/v1beta",
+          "模型選擇時使用 provider_id/model_id 格式(例如 openai/gpt-5.2 或 cchClaude/claude-sonnet-4-5-20250929)"
         ]
       },
 

+ 22 - 2
src/app/[locale]/usage-doc/page.tsx

@@ -1080,6 +1080,8 @@ gemini`}
         $schema: "https://opencode.ai/config.json",
         theme: "opencode",
         autoupdate: false,
+        model: "openai/gpt-5.2",
+        small_model: "openai/gpt-5.2-small",
         provider: {
           cchClaude: {
             npm: "@ai-sdk/anthropic",
@@ -1100,16 +1102,34 @@ gemini`}
             options: {
               baseURL: `${resolvedOrigin}/v1`,
               apiKey: "{env:CCH_API_KEY}",
+              store: false,
+              setCacheKey: true,
             },
             models: {
-              "gpt-5.2": { name: "GPT-5.2" },
+              "gpt-5.2": {
+                name: "GPT-5.2",
+                options: {
+                  reasoningEffort: "xhigh",
+                  store: false,
+                  include: ["reasoning.encrypted_content"],
+                },
+              },
+              "gpt-5.2-small": {
+                id: "gpt-5.2",
+                name: "GPT-5.2 Small",
+                options: {
+                  reasoningEffort: "medium",
+                  store: false,
+                  include: ["reasoning.encrypted_content"],
+                },
+              },
             },
           },
           cchGemini: {
             npm: "@ai-sdk/google",
             name: "Gemini via cch",
             options: {
-              baseURL: `${resolvedOrigin}/v1`,
+              baseURL: `${resolvedOrigin}/v1beta`,
               apiKey: "{env:CCH_API_KEY}",
             },
             models: {

+ 11 - 1
tests/unit/usage-doc/opencode-usage-doc.test.tsx

@@ -69,18 +69,28 @@ describe("UsageDoc - OpenCode 配置教程", () => {
     expect(text).toContain('"baseURL": "http://localhost:23000/v1"');
 
     expect(text).toContain('"npm": "@ai-sdk/anthropic"');
-    expect(text).toContain('"npm": "@ai-sdk/openai"');
     expect(text).toContain('"npm": "@ai-sdk/google"');
+    expect(text).not.toContain('"npm": "@ai-sdk/openai"');
     expect(text).not.toContain("@ai-sdk/openai-compatible");
 
     expect(text).toContain("claude-haiku-4-5-20251001");
     expect(text).toContain("claude-sonnet-4-5-20250929");
     expect(text).toContain("claude-opus-4-5-20251101");
 
+    expect(text).toContain('"model": "openai/gpt-5.2"');
+    expect(text).toContain('"small_model": "openai/gpt-5.2-small"');
+
     expect(text).toContain("gpt-5.2");
+    expect(text).toContain("gpt-5.2-small");
+    expect(text).toContain('"reasoningEffort": "xhigh"');
+    expect(text).toContain('"reasoningEffort": "medium"');
+    expect(text).toContain('"store": false');
+    expect(text).toContain('"setCacheKey": true');
+    expect(text).toContain("reasoning.encrypted_content");
 
     expect(text).toContain("gemini-3-pro-preview");
     expect(text).toContain("gemini-3-flash-preview");
+    expect(text).toContain('"baseURL": "http://localhost:23000/v1beta"');
 
     unmount();
   });