ACP: expose the model list as a category:model config option (session/new returns only mode and allow_all)
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 52/100
調査の方向性
Start at the copilot --acp entry point and trace the session/new, session/load, and session/set_config_option handlers; the issue names no source files or tests. Compare their behavior with the interactive /model picker. Done means model options and the active value are exposed, model changes emit updates, and unknown --model values no longer silently fall back.
索引モデルが issue の本文から書いたものです。
説明
Describe the feature or problem you'd like to solve
Over copilot --acp, a client has no way to list the models available to the signed-in account or to pick one for a session.
Measured on GitHub Copilot CLI 1.0.85 (macOS arm64):
session/newreturnssessionId,modesandconfigOptionsonly.configOptionsholds exactly twoselectoptions,modeandallow_all. There is no option withcategory: "model".session/loadreturns the same set.- Sending
/modelas a prompt answers: "The model-picker dialog is only available in the interactive CLI." --model <id>accepts any string.copilot --acp --model=not_a_real_model_xyzstarts, creates a session and completes a prompt with no error, no stderr, and nothing on the wire reports which model actually ran.
So an ACP client (an editor or a desktop app embedding Copilot) can only offer a single "Copilot default" row. It cannot show the models the user's plan allows, and if it hard-codes ids it cannot tell when one silently fell back.
Proposed solution
Advertise the model list the way the ACP spec already provides for it:
- Include a
SessionConfigOptionwithtype: "select"andcategory: "model"insession/newandsession/loadresponses, listing the ids the account can use andcurrentValueset to the active model. Grouping by vendor viaSessionConfigSelectGroupis fine. - Accept
session/set_config_optionfor that option and emitconfig_option_updateon change, so a client can switch models mid-session without respawning. - Ideally, reject an unknown
--modelvalue (or at least log it to stderr) instead of silently running the default.
This is the same shape the interactive /model picker already has; it just needs to be exposed on the ACP surface.
Example prompts or workflows
An ACP client starts copilot --acp, calls session/new, reads the model config option, shows its values in a picker, and calls session/set_config_option with the user's choice. Today step 3 yields nothing to show.
Additional context
Minimal reproduction (Node 24):
import { spawn } from 'node:child_process'
const c = spawn('copilot', ['--acp', '--no-auto-update'], { stdio: ['pipe', 'pipe', 'inherit'] })
const send = (o) => c.stdin.write(JSON.stringify(o) + '\n')
let buf = ''
c.stdout.on('data', (d) => {
buf += d
for (const line of buf.split('\n').slice(0, -1)) {
const m = JSON.parse(line)
if (m.id === 1) send({ jsonrpc: '2.0', id: 2, method: 'session/new', params: { cwd: process.cwd(), mcpServers: [] } })
if (m.id === 2) { console.log(Object.keys(m.result), m.result.configOptions.map((o) => o.id)); c.kill() }
}
buf = buf.slice(buf.lastIndexOf('\n') + 1)
})
send({ jsonrpc: '2.0', id: 1, method: 'initialize', params: { protocolVersion: 1, clientCapabilities: { fs: { readTextFile: false, writeTextFile: false } }, clientInfo: { name: 'probe', version: '0' } } })
Prints [ 'sessionId', 'modes', 'configOptions' ] [ 'mode', 'allow_all' ].
Version: GitHub Copilot CLI 1.0.85. ACP SDK used by the client: @agentclientprotocol/sdk 1.4.0.
- 主要言語
- Shell
- スター
- 11.2k
- フォーク
- 1.9k
- 平均マージ
- 14時間 16分
- マージ済み PR(30日)
- 6
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
github/copilot-cli のほかの issue
-
triage
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
github/copilot-cli#4932 ·
-
triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
github/copilot-cli#4909 ·
-
triage
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
github/copilot-cli#4906 ·
-
triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
github/copilot-cli#4729 ·
github/copilot-cli の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
bug easy help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
lacs-project/sysknife#503 ·
-
help wanted kind/documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
liquidmetal-dev/flintlock#1239 ·