Skip to content

fix(domestic): 兼容 Chat Completions developer 消息,修复上游 11128 - #15

Merged
hawklithm merged 2 commits into
mainfrom
fix/domestic-developer-role-compat
Oct 22, 2026
Merged

hawklithm merged 2 commits into
mainfrom
fix/domestic-developer-role-compat

Conversation

@hawklithm

Copy link
Copy Markdown
Owner

背景

DeepSeek Harness 等客户端可以通过 OpenAI Chat Completions 传入 developer 角色,但国内 CodeBuddy 上游 copilot.tencent.com 实测可能拒绝包含该角色的请求,返回 HTTP 400 / code 11128。

现有 responses_adapter.py 已在 Responses 协议转换时将 developer 映射为 system,但 /v1/chat/completions 直接进入 forward_chat,缺少这一兼容处理。

修复

  • 在 forward_chat 调用上游前,对国内官方网关的 developer 消息做 copy-on-write developer → system 转换。
  • 严格限制到 backend=domestic 且目标 hostname 为 copilot.tencent.com;不修改国际站或其他自定义上游。
  • 不合并、重排消息;保留 content、metadata、assistant/tool 调用历史及原客户端请求。
  • 在 --desensitize 之前转换角色,确保既有 harness 压缩与 system 脱敏按预期工作。
  • 只记录转换条数的 upstream_role_compat 诊断日志,不记录提示词内容。
  • 新增 role_compat.py、10 项专项测试,以及中英文 README 说明。

注意:旧网关没有独立的 system/developer 优先级;映射属于兼容处理,不声称与原生语义完全一致。

合并最新主干及冲突解决

本地原始提交:05a3712。从本地 92698b7 创建分支后,合入远端 main(28061d4,含 PR #7 和 #14);仅 __main__.py 的 import 区域出现冲突,已同时保留 forward_billing 与 role_compat,合并提交:68d44e5。

验证(Windows 本地)

  • 完整测试:210 passed, 1 skipped, 1 failed。唯一失败为先前存在的 test_backend_profiles.py::test_session_profiles_are_isolated_and_saved_with_metadata:Windows stat.S_IMODE 返回 0666,断言要求 POSIX 0600,与此次修改无关。
  • 排除该已知环境问题:210 passed, 1 skipped, 1 deselected。
  • test_developer_role_compat.py 与 test_checkin_proxy.py:37 passed。
  • git -c core.whitespace=cr-at-eol diff --check 通过,合并后工作区干净。
  • 此兼容逻辑在此前的独立临时代理上还完成过国内真实上游流式 A/B 验证,包含 developer 消息的请求返回 200 / SSE DONE;本次整合以 Mock 测试为主,未额外触发生产服务重启。

该 PR 仅包含上述 5 个文件的角色兼容修复;最新签到接口功能来自合入的 main,不在 PR diff 中。

@hawklithm
hawklithm merged commit b150de8 into main Oct 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant