anomalyco / anomalyco/opencode
[Bug] ccswitch (opencode-go) 路由在流式响应中给每个 chunk 加列表前缀,导致重复项目符号
@MrMushrooooom is already working on this.
Since Jul 30, 2026.
- Dominant language
- TypeScript
- Stars
- 209k
- Forks
- 27.5k
- PR merge metrics
- PR metrics pending
Description
Description
在使用 ccswitch(opencode-go 的路由)作为 Anthropic/Claude Code 的代理时,流式响应的每个 chunk 被错误地当作独立的 Markdown 列表项并加上列表前缀(例如 “●”、“*”、“-” 等),导致终端显示为大量重复的项目符号。换回 DeepSeek/官方 API 一切正常,怀疑是 ccswitch 路由在把后端模型的流式响应转换为 Anthropic 格式时错误地拆分并在每个片段前注入了列表前缀。
预期行为:流式输出应为连续文本片段,客户端负责拼接,不应在每个 chunk 前注入 Markdown 列表前缀。
请修复 ccswitch/opencode-go 路由的流式转发逻辑,保证不修改后端原始文本 token 的前后拼接或不在 chunk 前加列表符号。
Plugins
ccswitch(opencode-go 路由) 代理 Anthropic/Claude Code 流式请求
OpenCode version
No response
Steps to reproduce
- 在环境中将 ANTHROPIC_BASE_URL 指向 ccswitch/opencode-go 路由(本地或部署的路由地址)。
- 通过该路由发送 Claude Code(或其他 Anthropic-compatible 模型)的流式请求。
- 在客户端(或终端)观察流式输出:每个 chunk 被单独作为一行/一项输出,且前面带有“●”或“*”等列表前缀,导致输出呈现为大量重复的列表项。
- 将同样的请求直接指向 DeepSeek/官方 API(不通过 ccswitch 路由),流式输出恢复正常(连续文本,没有额外的列表前缀)。
- 可选:在路由端或本地通过 curl -N 直接观测原始 SSE/chunk 内容,能看到每个 chunk 带有列表前缀(用于确认问题发生在路由/代理端)。
Screenshot and/or share link
示例原始 chunk(脱敏示例):
[RAW CHUNK] "● 你的\n"
[RAW CHUNK] "● API\n"
[RAW CHUNK] "● 代理在\n"
[RAW CHUNK] "● 把每个 token 片段作为独立列表项\n"
(实际捕获到的 chunk 会以类似方式在每条前面含有 • 或 * 等符号)
**你的
● API 代理在
● 流式输出时
● ,把每个小
● 片段错误地加
● 上了 *
● 前缀(
● markdown 列表语法
● ),导致终端把
● 每个片段渲染成一个
● ●
● 圆点。**
● 具体发生了什么:
● - 正常情况下:
● 文本是连续流畅
● 的一段话。
● - 你的情况
● :代理把每个
● chunk 都当成了
● 独立的列表项发送
● 屏的 `●
● `。
根本
● 原因:你的 `
● ANTHROPIC
● _BASE_URL`
● 指向 `12
● 7.0.
● 0.1:
● 1572
● 1`,这是个
● 第三方代理。它在
● 把后端模型(
● DeepSeek/Qwen
● 等)的
● 流式响应转换成
● Anthropic 格式
● 时,没有正确
● 拼接文本,而是
● 把每个 token
● 片段单独发出去
● ,还带上了
● 错误的 markdown 格式
● 前缀。
● 怎么修:
● 测试,确认是不是
● 代理的问题。
● 2. 调
● 代理设置——看你
● 用的是什么代理软件
● (one-api?
● new-api?),
● 关掉流式或
● 调大 chunk
● 缓冲。
3
● . 告诉我你
● 用的代理软件,
● 我帮你查具体
● 配置。
Operating System
windows 11
Terminal
cmd
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.