diff --git a/.cursor/rules/project.mdc b/.cursor/rules/project.mdc index 4fdd9cfff..ca92c0ed4 100644 --- a/.cursor/rules/project.mdc +++ b/.cursor/rules/project.mdc @@ -103,3 +103,9 @@ Use `bun` as the preferred package manager and script runner for the frontend (` - `bun run dev` for development server - `bun run build` for production build - `bun run i18n:*` for i18n tooling + +### Rule 4: New Channel StreamOptions Support + +When implementing a new channel: +- Confirm whether the provider supports `StreamOptions`. +- If supported, add the channel to `streamSupportedChannels`. diff --git a/AGENTS.md b/AGENTS.md index cf55dbc9a..212e73d77 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -98,3 +98,9 @@ Use `bun` as the preferred package manager and script runner for the frontend (` - `bun run dev` for development server - `bun run build` for production build - `bun run i18n:*` for i18n tooling + +### Rule 4: New Channel StreamOptions Support + +When implementing a new channel: +- Confirm whether the provider supports `StreamOptions`. +- If supported, add the channel to `streamSupportedChannels`. diff --git a/CLAUDE.md b/CLAUDE.md index a830fc46b..19cfe25cf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -98,3 +98,9 @@ Use `bun` as the preferred package manager and script runner for the frontend (` - `bun run dev` for development server - `bun run build` for production build - `bun run i18n:*` for i18n tooling + +### Rule 4: New Channel StreamOptions Support + +When implementing a new channel: +- Confirm whether the provider supports `StreamOptions`. +- If supported, add the channel to `streamSupportedChannels`. diff --git a/relay/common/relay_info.go b/relay/common/relay_info.go index a30e48671..81b7d21d6 100644 --- a/relay/common/relay_info.go +++ b/relay/common/relay_info.go @@ -290,21 +290,24 @@ func (info *RelayInfo) ToString() string { // 定义支持流式选项的通道类型 var streamSupportedChannels = map[int]bool{ - constant.ChannelTypeOpenAI: true, - constant.ChannelTypeAnthropic: true, - constant.ChannelTypeAws: true, - constant.ChannelTypeGemini: true, - constant.ChannelCloudflare: true, - constant.ChannelTypeAzure: true, - constant.ChannelTypeVolcEngine: true, - constant.ChannelTypeOllama: true, - constant.ChannelTypeXai: true, - constant.ChannelTypeDeepSeek: true, - constant.ChannelTypeBaiduV2: true, - constant.ChannelTypeZhipu_v4: true, - constant.ChannelTypeAli: true, - constant.ChannelTypeSubmodel: true, - constant.ChannelTypeCodex: true, + constant.ChannelTypeOpenAI: true, + constant.ChannelTypeAnthropic: true, + constant.ChannelTypeAws: true, + constant.ChannelTypeGemini: true, + constant.ChannelCloudflare: true, + constant.ChannelTypeAzure: true, + constant.ChannelTypeVolcEngine: true, + constant.ChannelTypeOllama: true, + constant.ChannelTypeXai: true, + constant.ChannelTypeDeepSeek: true, + constant.ChannelTypeBaiduV2: true, + constant.ChannelTypeZhipu_v4: true, + constant.ChannelTypeAli: true, + constant.ChannelTypeSubmodel: true, + constant.ChannelTypeCodex: true, + constant.ChannelTypeMoonshot: true, + constant.ChannelTypeMiniMax: true, + constant.ChannelTypeSiliconFlow: true, } func GenRelayInfoWs(c *gin.Context, ws *websocket.Conn) *RelayInfo {