github / github/copilot-cli

[Bug] BYOK Anthropic provider does not emit turn lifecycle and reasoning events

未关闭
#2,651 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
area:models
主要语言
Shell
星标
11.2k
派生
1.9k
平均合并
14 小时 16 分钟
30 天内合并 PR
6

描述

### Describe the bug

When using a BYOK Anthropic provider (`type: "anthropic"`) with the Copilot SDK, several session events are never delivered to the SDK over the JSON-RPC notification channel. The SDK team investigated and confirmed the root cause is in the CLI.

See [github/copilot-sdk#1064](https://github.com/github/copilot-sdk/issues/1064) for the full SDK-side investigation.

The following events fire correctly with the default backend and BYOK OpenAI, but are absent with BYOK Anthropic:

- `assistant.turn_start`
- `assistant.turn_end`
- `assistant.reasoning`
- `assistant.reasoning_delta`
- `session.usage_info`

### Affected version

GitHub Copilot CLI 1.0.24-0.

### Steps to reproduce the behavior

A repro script that creates identical sessions across three backends and compares the set of event types delivered to `on_event` is available in the SDK issue linked above. Summary of output:

```
Default (claude-haiku-4.5): turn_start=2, turn_end=2, usage=2, message=2
BYOK Anthropic (claude-haiku-4-5): turn_start=0, turn_end=0, usage=2, message=2
BYOK Anthropic (claude-sonnet-4-6): turn_start=0, turn_end=0, usage=2, message=2
BYOK OpenAI (gpt-5.4-nano): turn_start=2, turn_end=2, usage=2, message=2
```

### Expected behavior

All backends should emit `assistant.turn_start` and `assistant.turn_end` events. The SDK documentation lists both as non-ephemeral events that are always emitted, and the agent loop documentation states "the number of `assistant.turn_start` / `assistant.turn_end` pairs equals the total number of LLM API calls."

### Additional context

- **SDK:** `github-copilot-sdk==0.2.2`
- **Provider:** Azure AI Foundry with `type: "anthropic"` provider config
- **Models tested:** `claude-haiku-4-5`, `claude-sonnet-4-6` -- both missing events
- **Controls:** Default backend and BYOK OpenAI (`gpt-5.4-nano`) on the same Foundry endpoint emit all events correctly
- **Impact:** Code that relies on turn boundaries for per-turn token accounting gets no turn-level granularity with BYOK Anthropic. `assistant.usage` events do fire, so session-level totals are still available.

贡献指南

打开贡献指南

调研方向

Start with the linked github/copilot-sdk#1064 investigation and its repro script; compare event types delivered through the JSON-RPC notification channel for default, BYOK Anthropic, and BYOK OpenAI sessions. Trace the CLI's BYOK Anthropic event path and verify completion when turn lifecycle, reasoning, and usage events match the expected backend behavior.

由索引模型根据 Issue 内容生成。

评估

技术栈
azure, shell
领域
api
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
冷清
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。