2026-05-01時点ではOpenCode GoをVSCodeのGitHubCopilot ChatにBYOKするのは無理そう

2026-06-10 追記: 現在はできるようになっているらしい。

ryozi.hatenadiary.jp

新たな従量課金の地を求めてOpenCode Goに行き着く。私ぐらいのやる気があまりなく貧乏性な人間にはOpenCode Goはちょうど良さそうと感じた。

OpenCode(TUI)でしか使えないのかな?と思っていると、APIキーの文字やOpenAIのCompleation CompatibleなエンドポイントURLが公開されており、自前のエージェントに組み込んだりと遊べそうな雰囲気を感じた

GitHub Copilot CLIではできるようだった。

johnlokerse.dev

なら、VSCodeのGitHub Copilot Chatでもできるんじゃね?と思い始めた。

が、結果としてはうまくいかなかった。reasoningが発生しない程度の会話ぐらいしかできなかった。(現代においてはほぼ使い物にならない)

なのでこの話はここでおしまい。以下は読む価値無し。


まず、2026/05/01時点では、VSCodeのGitHub Copilot Chatは大手のBYOKやOllamaには対応しているが、任意のOpenAI CompatibleなBYOK(?)はInsidersでないとサポートされていないらしい。

ドキュメントに以下のようにあったが、これはもう古くて使い物にならなかった。(Changelogを見ていたら2025/10の内容なので古いですねという感じ)

https://code.visualstudio.com/docs/copilot/customization/language-models#_add-a-model-from-a-built-in-provider

Configuring a custom OpenAI-compatible model is currently only available in VS Code Insiders as of release 1.104. You can also manually add your OpenAI-compatible model configuration in the github.copilot.chat.customOAIModels setting

とりあえずVSCode Insidersを入れてみる。

Chatのモデル選択のところを開き、歯車マークをクリックする。

Language Modelsの一覧がでてくる。 「+Add Models」を押すと、InsidersだとOpenAI Compatibleが出てくるので希望が出てくる。ここから触れてみる。

名前は後で変えられるので適当でよい。ただ、APIキーだけしっかり入れること

chatLanguageModels.jsonが開くので適当に入れる。

[
    {
        "name": "opencode-go",
        "vendor": "customoai",
        "apiKey": "${input:chat.lm.secret.-XXXXXXX}",
        
        "models": [
            {
                "id": "deepseek-v4-pro",
                "name": "DeepSeek V4 Pro",
                "url": "https://opencode.ai/zen/go/v1/chat/completions",
                "toolCalling": true,
                "maxInputTokens": 128000,
                "maxOutputTokens": 16000
            },
            {
                "id": "kimi-k2.6",
                "name": "Kimi K2.6",
                "url": "https://opencode.ai/zen/go/v1/chat/completions",
                "toolCalling": true,
                "vision": true,
                "maxInputTokens": 64000,
                "maxOutputTokens": 16000
            }
        ]
    }
]

GUI上はこんな風に出るようになり、いい感じに見える。

が、使ってみると動かない。

Sorry, your request failed. Please try again.

Copilot Request id: 6445f944-12c2-4e1d-b843-abac0cbc0746

Reason: Request Failed: 400 {"error":{"message":"Error from provider (DeepSeek): The reasoning_content in the thinking mode must be passed back to the API.","type":"invalid_request_error","param":null,"code":"invalid_request_error"}}: Error: Request Failed: 400 {"error":{"message":"Error from provider (DeepSeek): The reasoning_content in the thinking mode must be passed back to the API.","type":"invalid_request_error","param":null,"code":"invalid_request_error"}} 
...

簡単な応対はできるのだけど、reasoningが発動すると死ぬという感じに見える。

ここでおしまい。


Issueも上がっているようだがやる気は感じられない。持ち込まれたAPIの実装都合とか知るかよ、という感じでしょうけど。

github.com

設定に何が効くか、実装を眺めていた時のメモ。

https://github.com/microsoft/vscode/blob/1.118.1/extensions/copilot/src/extension/byok/vscode-node/customOAIProvider.ts#L52-L64

https://github.com/microsoft/vscode/blob/1.118.1/extensions/copilot/src/extension/byok/common/byokProvider.ts#L49-L64

OpenCode Go上はこんな感じで利用履歴が見える。こういうの好き。というか、今のGitHub Copilot Chatのシステムプロンプト17K近くあるんか…


あまり関係ないが、勤めている会社がMicro$oftに魂を売っているのもあり、いよいよGitHubやGitHu Copilotを導入していくぞ!(今更?)という矢先に、可用性の問題とかGitHub Copilotプランの改悪(…これは今までが異常であるべき状態になっただけではある)とか、色々出てきている。やっぱりベンダーロックインは良くないのではという気持ちになっている。でも自前で運用するのは嫌だしなぁ。なんとかならないかなぁ