Skip to content

fix(desktop): 发送时应用模型选择,保留 Codex 原生上下文 - #4011

Merged
MagicLizi merged 7 commits into
mainfrom
dash/fix-codex-switch-on-send
Sep 7, 2026
Merged

fix(desktop): 发送时应用模型选择,保留 Codex 原生上下文#4011
MagicLizi merged 7 commits into
mainfrom
dash/fix-codex-switch-on-send

Conversation

@dashhuang

@dashhuang dashhuang commented Sep 6, 2026

Copy link
Copy Markdown
Member

这次改了什么

摘要

在同一个任务里从 OpenAI 订阅的 Codex 切到 Cindy AI Codex,原先会立即尝试 fork 并改写原生历史;带 ordinal / history_base 的历史会被安全检查拒绝,继而提前触发摘要交接。

现在选模型只记录“下条消息”的选择,真正发送时才应用最终来源、模型与推理设置。同为 Codex 时按新来源 resume 原线程;切走又切回不会提前整理历史。确实需要缩窗整理时,也推迟到发送边界;用户发送即同意必要整理,不再二次弹窗。只切换模型不授权整理。

实测还发现 OpenAI HTTP 回退返回有效 SSE、却缺少 Content-Type,被代理误报 502。本次补上严格的 SSE 前缀识别,仅在响应头缺失且正文满足事件流格式时补齐类型。

变更类型

  • fix 缺陷修复
  • feat 新功能
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:用户反馈 Codex 跨模型来源切换立即出现“整理上下文后继续”。
  • 本 PR 包含:复用已有 pending registry 与发送锁;同引擎选择延后应用;失败保留选择并阻止误发旧模型;移除切换时的 Codex fork;压缩密文明确不兼容时沿用既有恢复;自动回退与 Agent 调参尊重待发送选择;HTTP SSE 响应头兼容;错误横幅的切换订阅并重试识别待发送选择,由原重试发送链消费。
  • 明确不包含:模型目录或窗口大小调整、原生 rollout 索引改写、SSH / Orca 切换策略变更、数据库迁移。
  • 用户可见变化:选模型时显示下条消息的选择,当前回复继续;以发送时的最终选择为准。
  • 是否存在 breaking change:无。设备互联沿用既有意图投影,不新增 wire 字段。

UI 变化

复用现有模型选择器和“下条消息”提示,调整触发时机;无新增布局或样式。Mobile 同引擎选择显示“下条 · 模型”及待应用来源的图标,跨引擎选择保留原切换提示;补齐五种语言。macOS 开发版通过真实 Renderer 选择器、输入框与发送按钮验证(CDP 驱动),并只读核对测试任务数据库和原生 rollout。

  • 引用的设计规范:docs/design-rules/DESIGN.md §4「Select & Dropdown」、§2「Layer System (Light & Dark)」;保留现有控件及语义颜色,不新增视觉样式。

怎么验证的

自动验证

  • pnpm test:unit:related:Mobile、代理与其余受影响工作区通过;同步最新主干 e17d32d7f 后,Desktop 32809 项通过,剩余 9 个失败已在相同基线的干净工作区再次独立复现(46 项通过)。
  • pnpm --filter desktop --filter @cindy/anthropic-compat-proxy --filter @cindy/maker-core run --if-present typecheck:通过;maker-core 无独立 typecheck script。
  • 代理整包单测:439 例通过,含实际 HTTP strip/retry、压缩密文错误分类、缺失响应头的 SSE,以及 JSON / HTML / 心跳拒绝用例。
  • 切换与运行时接线定向复验:95 例通过。
  • 通过 Git skill runner 完整运行 pnpm test:unit:Mobile、maker-core、代理及其余适用工作区通过;Desktop 32650 通过 / 9 个已复现基线失败。首轮相关门禁 Desktop 为 32651 通过 / 同样 9 个基线失败;内部 no-op 边界的 95 例定向复验通过。

基线失败:claudeOrphanReaper 5 例、codexAuthIsolatedSandbox 3 例、usageHistory 的 Pi SuperGrok 估价 1 例;同一测试基线独立运行这三个文件为 9 失败 / 46 通过。未修改这些测试或实现。

补充定向核对:从实际源码执行 3 种默认/显式来源重选与 2 种手机宿主 effort/Fast 更新分支,全部通过;包括显式默认来源 null 和 Fast=false。仅行为分支验证,不代表手机实机测试。

  • Mobile 补充检查:pnpm --filter mobile typecheckpnpm check:i18npnpm check:i18n-glossary 通过;从实际组件源码执行空闲、同引擎、跨引擎、断开来源、默认来源五种标签/图标投影,全部通过。五种语言新增 key 一致;本轮根相关门禁仍为 Desktop 32801 通过 / 9 个相同基线失败。

  • 订阅恢复补充验证:modelWindowConfirmation.test.ts 8 项通过,覆盖明确等待发送、被覆盖意图和旧式 deferred 拒绝;实际恢复组件源码的 3 种结果路径通过(等待发送不提前落库、已应用先落库、被覆盖不重试)。Desktop 类型检查通过。本轮未新增实机验证。

  • 自动回退补充验证:新增 6 项待发送意图交错/接线测试;连同 iOS 模拟器界面定向复验共 52 项通过,Desktop 类型检查通过。本轮根相关门禁 Desktop 32809 通过 / 同样 9 项已复现基线失败,其余受影响工作区通过。旧 HEAD Windows 2/2 的唯一失败为未改动的 IOSSimulatorTabBody 测试 20 秒超时,下一 HEAD CI 继续验证,未混入无关改动。

手工验证

macOS,隔离开发工作区 cindy-fix-codex-switch-on-send,Global 服务,已登录真实账号,Codex 原生版本 0.153.0,最终开发版构建身份 419d2ed;专用测试任务,不使用原任务做写入测试。

  1. OpenAI GPT-6 Astra 记住测试代号;选 Cindy AI GPT-5.6 Sol,未发送时持久模型和线程不变,无整理记录。
  2. 选回 OpenAI 再发送,正确返回代号,仍使用原线程。
  3. 真正向 Cindy AI Sol 发送,正确返回代号;原生 rollout 新 turn 的模型为 openai/gpt-5.6-sol
  4. 当前回复生成期间选择另一来源,当前回复完成后仍保留待应用选择,下一次发送才生效。
  5. 修复缺失响应头导致的 502 后,再完整往返 OpenAI → Cindy AI → OpenAI,两边均成功返回原代号;真实 HTTP 密文剥除重试成功,原生线程 ID 全程保持一致。

未执行的验证

未做 Windows、Mobile / 多控制端、Light 模式实机目检,未构造真实长历史压缩密文不兼容账号场景;后者由代理真实 HTTP 用例和既有恢复编排回归测试覆盖。Codex 当前没有对外暴露手动 compact 入口,因此没有将 /compact 当成已完成的实测。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:模型选择与原生线程恢复时序

自动操作与用户选择的边界(收敛检查点)

不变量:用户已接受的待发送选择只能被更新的用户选择、明确取消/任务清理或实际发送消费;自动回退、Agent 调参及延迟应用不能清掉它。

状态 owner 沿用 Main 的 agentSwitchPending;runtime generation 负责让旧自动请求失效,既有 per-session 发送锁串行化提交。统一 canApplyAutomaticRuntimeSelection 判据同时检查用户意图与 generation,同引擎入口及跨引擎 fallback 共用;未新增锁或持久化。

顺序/状态 预期结果
用户先选,自动请求随后读取当前 generation 自动操作让位,保留选择
自动操作查候选/等锁期间用户选择 锁内重新检查后让位
自动操作先持锁提交,用户随后选择 提交先完成,新选择保留到发送
用户选择后取消或发送消费,旧请求迟到 generation 拒绝旧请求,新的自动请求按当前状态判断
查询/切换失败、重复回调、旧延迟应用 不清用户意图;既有版本及 owner 检查继续生效
无用户意图且版本匹配 按既有回退和 Agent 调参流程应用

审计了正常提交与失败后的运行态保留两处清理:同引擎均在共用判据之后;跨引擎 fallback 的切换与接受 runtime 状态现在在同一把已有锁内完成。真实 fallback 源码执行测试覆盖交错顺序和失败保留,并核对同引擎入口复用同一判据。

SSE 识别与转换顺序(收敛检查点)

不变量:先完成既有有效性门控并确定最终 MIME,再构造响应适配器,最后提交成功响应头。commitStreamResponse 是唯一构造与提交 owner,适配器最多创建一次;沿用原有有界缓冲和终态清理,没有新增解析器或状态机制。

事件 / 状态 结果
显式 SSE 或缺类型但完整有效的 SSE 适配器拿到最终 MIME 后构造,成功后才提交响应头
非流式 JSON 沿用立即适配与提交路径
无效、空或截断的流 返回结构化错误,不创建适配器
适配器构造抛错 提交成功响应头前返回 response_transform_unavailable 502
已提交后的异步 flush 或转换错误 沿用转换器跟踪及失败关闭路径
有效流到达前客户端取消 不创建适配器;既有请求结束回调释放适配状态

验证:代理整包 439 项及类型检查通过,新增有/无 MIME 的分块 SSE、构造失败用例,并断言既有 8 种无效流不进入适配器。另用实际代理与实际 Codex exec custom/function 适配器运行 loopback HTTP 验证:缺 Content-Type 的上游 function 事件成功还原为 custom tool 事件。此验证不代表新增真实账号或实机验证。本轮根相关门禁 Desktop 32809 通过 / 同样 9 项已复现基线失败,其余受影响工作区通过。

旧 HEAD 54b0c90d2 Windows 1/2 的失败是未改动的 Feishu outboundFile Unicode 目录链测试 5 秒超时;该文件在本机 9 项复验通过,等待本次新 HEAD 的 Windows CI,未将本机结果当成 Windows 已验证。

影响与回滚

  • 影响范围:普通本机任务选模及设备互联对这些任务的控制;Codex 来源切换;代理流式响应验证。保持 Renderer 身份检查和原生历史索引保护。
  • 状态边界:选择只覆盖待应用意图;发送串行应用;准备失败保留意图并停止此次发送;取消与较新意图不被旧结果误清。内部跨引擎恢复保留原有同引擎 no-op。
  • 压缩恢复仅由明确的不可剥除压缩密文拒绝触发,保留有产出 / 工具副作用禁止自动重放及单消息最多一次恢复限制。普通密文错误、网络错误不会因此升级为摘要交接。
  • 故障半径:单任务 / 单请求;不重连 relay 或关闭其它 peer,不改设备互联的重试 / teardown 逻辑。多 peer 实机未测。
  • 回滚 / 降级方式:回退本提交;无 schema、持久意图或 rollout 格式迁移。待应用意图沿用内存 registry,应用重启后需重新选择。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s
  • UI 改动已注明设计规范章节
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

@dashhuang
dashhuang requested a review from a team as a code owner September 6, 2026 12:10
@greptile-apps

greptile-apps Bot commented Sep 6, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 将本机普通任务的同引擎模型与来源选择改为待发送意图,在下一次真实发送持锁时应用;Codex 跨来源继续复用原生线程,并为不可兼容的压缩密文增加明确错误分类。同时,代理会为缺失响应类型但看似 SSE 的成功响应补齐 Content-Type

  • 复用 pending registry,将同引擎模型、来源、effort 与 Fast 设置延迟到发送边界。
  • 移除 Codex 跨凭证切换时的线程 fork 和历史改写。
  • 对不可剥除的 compaction 密文拒绝返回稳定错误码,接入既有恢复流程。
  • 为无 Content-Type 的流式响应增加 SSE 推断,但当前推断会放行未形成完整事件的响应。

Confidence Score: 4/5

暂不建议合并,因为无 MIME 流式响应可能在尚未形成完整 SSE 事件时被作为成功响应提交。

新增的 SSE 推断只验证 data:/event: 字段前缀,随后立即写出 200 和事件流类型;若上游在首字段行后干净结束或返回以该前缀开头的错误文本,原有无效流门控无法再生成 502,客户端会收到无法派发事件的伪成功流。

Files Needing Attention: packages/anthropic-compat-proxy/src/server.ts

Important Files Changed

Filename Overview
apps/desktop/src/main/maker-ipc/register.ts 接入同引擎待发送意图、发送锁内应用模型设置,并移除 Codex provider thread relink/fork 流程。
apps/desktop/src/main/maker-ipc/sessionAgentSwitchHandler.ts 扩展 pending switch registry,使同引擎选择在发送时应用,并以 CAS 方式避免清除较新的选择。
apps/desktop/src/renderer/components/new-chat/ChatInput.tsx 将本机受支持会话的模型和 provider 选择统一投影为 agent-switch intent。
packages/anthropic-compat-proxy/src/server.ts 增加压缩密文终态分类及无 MIME SSE 推断;后者在完整 SSE 事件出现前过早提交响应。
packages/anthropic-compat-proxy/src/transform.ts 仅在已无可剥除密文且仍保留 compaction 密文时生成稳定的不兼容错误码。
packages/maker-core/src/agents/shared/remote-compact-encrypted-error.ts 将代理证明的压缩密文不兼容错误纳入既有 compact 恢复判定。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[用户选择模型或来源] --> B[校验并写入 pending intent]
  B --> C{用户发送下一条消息}
  C -->|否| B
  C -->|是| D[获取 session 发送锁]
  D --> E[应用最终 route / effort / Fast]
  E --> F{目标窗口需要整理}
  F -->|是| G[执行 context rebuild / handoff]
  F -->|否| H[沿用原生线程]
  G --> I[清除已消费 intent]
  H --> I
  I --> J[按最终选择发送消息]
Loading
Prompt To Fix All With AI
### Issue 1
packages/anthropic-compat-proxy/src/server.ts:1640-1642
**SSE 响应过早提交**

缺少 `Content-Type` 的响应只要开头出现 `data:``event:` 就会立即提交为 SSE,但此时尚未确认一个以空行结束的完整事件。例如,上游干净结束于 `data: upstream timeout`,或在首个字段行后截断时,SSE 客户端不会派发事件,而代理已经返回 200,无法再通过原有门控转换为结构化 502。请至少等到完整 SSE 事件边界后再提交,并确保前缀解析能正确处理跨 chunk 的内容。

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "fix(desktop): 在发送时应用模型选择并复用 Codex 原生线程" | Re-trigger Greptile

Comment thread packages/anthropic-compat-proxy/src/server.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 419d2edb79

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/main/maker-ipc/register.ts
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-06T22:49:50.212867Z 9451dfc New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) labels Sep 6, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

@dashhuang 👋 这个 PR 还有 2 条 review conversation 没 resolve(packages/anthropic-compat-proxy/src/server.ts / apps/desktop/src/main/maker-ipc/register.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@dashhuang
dashhuang force-pushed the dash/fix-codex-switch-on-send branch from 419d2ed to b4206cd Compare September 6, 2026 12:34

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b4206cd85f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/main/maker-ipc/register.ts
Comment thread apps/desktop/src/renderer/components/new-chat/ChatInput.tsx Outdated
@MagicLizi MagicLizi removed the status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) label Sep 6, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(apps/desktop/src/renderer/components/new-chat/ChatInput.tsx)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范

@MagicLizi

Copy link
Copy Markdown
Contributor

@dashhuang 👋 这个 PR 还有 3 条 review conversation 没 resolve(apps/desktop/src/main/maker-ipc/register.ts / apps/desktop/src/renderer/components/new-chat/ChatInput.tsx),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
@dashhuang
dashhuang force-pushed the dash/fix-codex-switch-on-send branch from b4206cd to 855d9b7 Compare September 6, 2026 21:02

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 855d9b79b1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/main/maker-ipc/register.ts
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
@MagicLizi MagicLizi added the status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) label Sep 6, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d49209025f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/main/maker-ipc/register.ts
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e74c551cfe

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/main/maker-ipc/register.ts
@MagicLizi

Copy link
Copy Markdown
Contributor

@dashhuang 👋 这个 PR 还有 1 条 review conversation 没 resolve(apps/desktop/src/main/maker-ipc/register.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@MagicLizi MagicLizi added status:ci-failed CI 失败(review-pr 自动维护,仅展示) and removed status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) labels Sep 6, 2026
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 54b0c90d24

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/anthropic-compat-proxy/src/server.ts
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) touches:security 改动碰到安全边界(review-pr 自动维护,仅展示) and removed status:ci-failed CI 失败(review-pr 自动维护,仅展示) status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) labels Sep 6, 2026

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

代码重审通过:当前 head 未发现 P0/P1,全部 conversation 已 resolve。发送时才应用选模、Codex 跨来源 resume 原线程、压缩密文分类与 SSE MIME 补齐均在描述范围内。

@MagicLizi
MagicLizi merged commit 9134458 into main Sep 7, 2026
19 of 20 checks passed
@MagicLizi
MagicLizi deleted the dash/fix-codex-switch-on-send branch September 7, 2026 00:00
@MagicLizi

Copy link
Copy Markdown
Contributor

合了。发送才落地选模、跨来源还走原 Codex 线程,这两件事终于对上用户手感了——谢谢把 pending 和 resume 拆清楚。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) touches:security 改动碰到安全边界(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants