Skip to content

fix: 保留 Chat Completions 转换中的 encrypted_content - #1749

Open
wengchengjian wants to merge 1 commit into
BigPizzaV3:mainfrom
wengchengjian:fix/encrypted-content-subagent
Open

fix: 保留 Chat Completions 转换中的 encrypted_content#1749
wengchengjian wants to merge 1 commit into
BigPizzaV3:mainfrom
wengchengjian:fix/encrypted-content-subagent

Conversation

@wengchengjian

Copy link
Copy Markdown

摘要

  • Responses 转 Chat Completions 时保留 Codex 的 encrypted_content 内容
  • 将非空加密任务文本作为普通用户文本输出,子代理不再只收到空 Payload:
  • 新增回归测试,覆盖真实 Codex agent_message 中空 input_text + encrypted_content 的结构

根因

responses_content_to_chat_content 只处理:

  • input_text
  • output_text
  • text
  • refusal
  • input_image

Codex 多代理消息把真实任务放在 encrypted_content。当 relay 使用 Chat Completions 协议时该字段被丢弃,子代理只收到:

Message Type: NEW_TASK
Task name: /root/probe_none
Sender: /root
Payload:

改动

  • crates/codex-plus-core/src/protocol_proxy.rs:转换非空 encrypted_content 为文本
  • crates/codex-plus-core/tests/encrypted_content_subagent.rs:新增回归测试

验证

  • cargo test -p codex-plus-core --test encrypted_content_subagent:1 通过
  • cargo test -p codex-plus-core --test protocol_proxy:48 通过
  • cargo fmt --all:通过
  • 变更行无新增 Clippy 警告

Windows 本地 1.2.44 构建实测:

  • 子代理探针返回 PROBE-FIX-5C41
  • 第二个探针返回 PROBE-FIX-9F77 并正确报告任务名
  • 子代理成功抓取 GitHub Trending Top 10

范围

本 PR 只修复 Chat Completions 转换路径。第三方 Responses 直连透传时忽略 encrypted_content 的情况不在本次范围。

关联:#1706

@BigPizzaV3

Copy link
Copy Markdown
Owner

维护者审查:这里对 encrypted_content 的转换语义不正确,暂不建议合并。

encrypted_content 是 Responses 推理项中的 opaque 加密状态,调用方只能原样保存并在后续 Responses 请求中按原结构回传;它不是可以展示或拼进用户消息的自然语言文本。当前实现却将其转换成 {"type":"text","text": value},Chat Completions 上游最终会把密文 token 当作普通提示词接收,既不能恢复推理状态,也会污染上下文并额外消耗 token。

新增测试没有覆盖真实契约:它把中文明文 请回显标记... 放进名为 encrypted_content 的字段,再断言明文进入消息,所以只能证明“任意字符串会被复制”,不能证明真实 opaque encrypted content 被正确处理。

建议:

  1. Responses -> Responses 路径保留完整 reasoning item 结构并原样透传。
  2. 转到不支持该状态的 Chat Completions 方言时,不要把密文降级为 text;应明确丢弃,或由供应商能力开关决定是否支持对应结构。
  3. 用形似真实 opaque payload 的值补回归测试,并断言它不会出现在普通 messages[].content 文本中。

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.

2 participants