Skip to content

feat(desktop): 支持分别配置任务命名与推荐指令模型 - #3307

Merged
DavidShenXD merged 10 commits into
mainfrom
cindy/cheerful-liskov
Aug 24, 2026
Merged

feat(desktop): 支持分别配置任务命名与推荐指令模型#3307
DavidShenXD merged 10 commits into
mainfrom
cindy/cheerful-liskov

Conversation

@DavidShenXD

Copy link
Copy Markdown
Collaborator

这次改了什么

摘要

在「设置 → 个性化」新增「辅助模型」配置,让用户可以分别选择自动任务命名和聊天输入框推荐指令所使用的模型。

自动命名改为通用能力,不再绑定 Claude Code:Claude Code、Codex、Pi、IM 任务及手动重新命名都走统一的辅助模型路由。用户显式选择模型后,系统严格使用对应的 provider / agent / model;路由不可用时直接失败,不静默切换到其它提供方。未配置时保持原有自动选择行为。

变更类型

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

范围

  • 关联 Issue / 需求:Issue 3293(由 PR Watch 提交器附加引用)
  • 本 PR 包含:Desktop 设置 UI、owner-scoped 原子持久化、可信 Renderer IPC、精确辅助模型路由、自动命名与推荐指令接入、五种语言文案和回归测试
  • 明确不包含:服务端改动、Mobile 设置入口、模型提供方配置流程变更
  • 用户可见变化:「设置 → 个性化」新增两个相互独立的辅助模型选择器;自动任务命名扩展为通用能力
  • 是否存在 breaking change:无

UI 变化

  • Windows Desktop:新增「辅助模型」设置区,分别显示自动任务命名和聊天输入框推荐指令的当前模型;已在隔离 dev 沙盒目检 Light / Dark 两种模式
  • 引用的设计规范:
    • docs/design-rules/DESIGN.md §4 Inputs & Forms:复用现有模型选择器与表单交互
    • docs/design-rules/DESIGN.md §5 Spacing System:沿用设置页既有间距和布局层级
    • docs/design-rules/DESIGN.md §10 Light / Dark Dual-Mode Delivery Gate:颜色全部使用语义 token,并完成双模式实机目检
    • docs/design-rules/DESIGN.md §11 Voice & Content:说明文案保持简洁,并同步五种语言

怎么验证的

自动验证

pnpm test:unit:related
结果:通过(Desktop related tests,31 个相关测试文件)

pnpm --filter desktop run --if-present typecheck
结果:通过

pnpm check:i18n
结果:通过(仅有仓库既有 warning)

pnpm check:i18n-glossary
结果:通过(仅有仓库既有 proposed 术语 warning)

pnpm --filter desktop exec eslint src/main/maker-ipc/promptPrediction.ts src/main/maker-ipc/__tests__/promptPredictionRevision.test.ts
结果:通过

pnpm check:dco
结果:通过,当前提交 author / committer / Signed-off-by 一致

pnpm --filter desktop lint
结果:未通过;仓库当前基线为 412 errors / 5 warnings。最终修正涉及的推荐路由及其回归测试已单独通过 ESLint,仓库规定的提交门禁均已通过

手工验证

  • Windows Desktop,Global 区域,使用 --isolated=@worktree 启动隔离 dev 沙盒并通过真实 UI 跳过登录
  • 复用本机 ChatGPT 登录,主任务模型选择 GPT-5.6-Luna;自动任务命名选择 GPT-5.6-Sol;推荐指令选择 GPT-5.6-Terra
  • 刷新设置页后,两个选择独立持久化且互不覆盖
  • 新建 Codex 任务后,主回复正确完成,任务自动命名为「辅助模型路由黑盒测试」
  • 第四轮回复完成后出现推荐指令;按 Tab 后推荐内容准确写入编辑器
  • 分别切换 Light / Dark 模式目检设置区布局、层级和对比度

未执行的验证

  • 未在 macOS / Linux 上做实机目检;实现复用 Desktop 跨平台 Renderer 与语义 token
  • 未等待 GitHub CI;Draft PR 创建后由远端门禁继续验证

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:辅助模型路由与本地偏好持久化

影响与回滚

  • 影响范围:Desktop 的任务自动命名、手动 AI 重新命名、IM 自动命名、输入框推荐指令及「个性化」设置页
  • 回滚 / 降级方式:回滚本提交即可;新增配置文件为可选 owner-scoped 偏好,不涉及数据库 migration,未配置时始终保留历史行为
  • 精确模型不可用时 fail closed,不会静默换 provider;用户可在设置中恢复为「自动选择」
  • 存量插件影响:无

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档(本次无需新增独立文档,设置说明与 i18n 已同步)
  • 已确认测试结果或说明未执行原因

关联 Issue

Signed-off-by: david <david@xd.com>
Signed-off-by: DavidShen <david@xd.com>
@DavidShenXD

Copy link
Copy Markdown
Collaborator Author

反馈已处理

已处理:

  • 定位 Windows 单元测试失败:真正失败的是与本 PR 功能改动无关的 packages/device-link 确认 ACK 重试时序用例,聚合门禁仅随 shard 失败。
  • 在本机复现了“首次通过、第二次超时”,确认是 Windows 短计时器合并下测试窗口过窄,并非 Desktop 功能回归。

变更:

  • 测试改用生产默认的有界确认重试次数常量,保留原有 ACK 数量上限和 request 代际断言。
  • 未修改运行时代码、wire protocol、恢复算法或移动端原生配置。

验证:

  • 失败用例连续运行 20 次:全部通过。
  • pnpm test:unit:related:通过。
  • pnpm --filter desktop run --if-present typecheck:通过。
  • pnpm test:unit:全仓通过。
  • pnpm check:dco:通过。

备注:

  • 修正提交 f40152fad 已推送;新一轮 CI 已触发,当前未等待其完成。
  • 不涉及移动端冷更,不会自行合并 PR。

Signed-off-by: DavidShen <david@xd.com>
@DavidShenXD

Copy link
Copy Markdown
Collaborator Author

已处理本轮 Windows 单测失败并推送修复 6293bc318

根因:测试在首个业务帧完成后统计所有携带 linkRequestId 的 ACK,把业务帧触发的累计 ACK 也误算成独立确认重试;Windows runner 的 timer 调度使该合法竞态暴露为 6 > 5。

修复:在发送首个可靠业务帧前截取并断言独立确认重试,按“首包已丢弃,送达数不超过总尝试次数减一”校验;业务累计 ACK 不再进入该计数。

本地验证:

  • 定向用例连续 30 轮通过
  • pnpm test:unit:related 通过
  • pnpm test:unit 全量通过
  • pnpm check:dco 通过
  • git diff --check 通过

已推送到 cindy/cheerful-liskov,未合并 PR。新的自动检查已由推送触发或正在排队,本次不等待其完成。

Signed-off-by: DavidShen <david@xd.com>
Signed-off-by: DavidShen <david@xd.com>
Signed-off-by: DavidShen <david@xd.com>
Signed-off-by: DavidShen <david@xd.com>
@DavidShenXD
DavidShenXD marked this pull request as ready for review August 24, 2026 10:44
@DavidShenXD
DavidShenXD requested a review from a team as a code owner August 24, 2026 10:44

@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: 77f9802b73

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/shared/catalogModelPin.ts Outdated
Comment thread apps/desktop/src/main/utility-model/textOneshotPinOptions.ts Outdated
Signed-off-by: DavidShen <david@xd.com>
@DavidShenXD

Copy link
Copy Markdown
Collaborator Author

反馈已处理

已处理:

  • 定位到 Windows unit tests (2/2) 的唯一失败:插件发布确认配额测试错误地假设两个并发确认的注册顺序固定;汇总 Windows unit tests 因此跟随失败。

变更:

  • 先等待第一个确认注册后再启动第二个任务,保证测试操作与目标传输对应。
  • 接受确认后只等待离开确认阶段,避免把配额断言耦合到后续哈希和 prepare 的耗时。

验证:

  • orchestrator.test.ts 连续运行 8 次,全部通过(每次 26 个测试)。
  • pnpm test:unit:related:通过(Desktop related 34)。
  • pnpm --filter desktop run --if-present typecheck:通过。
  • pnpm check:dco:通过。

备注:

  • 仅修改测试,不涉及运行时代码、插件协议、存量插件数据或移动端冷更。
  • 已 push commit f8b4f8fe9;未等待新一轮 GitHub Actions 完成。

@greptile-apps

greptile-apps Bot commented Aug 24, 2026

Copy link
Copy Markdown

Greptile Summary

本 PR 为 Desktop 新增可分别配置的任务命名模型与推荐指令模型,并将任务命名统一接入辅助模型路由。

  • 新增 owner-scoped 的辅助模型设置持久化、可信 Renderer IPC 与 preload/shared 契约
  • 新增精确 provider / agent / model 路由,显式选择失败时不再静默切换提供方
  • 将统一路由接入自动命名、手动重新命名、IM 命名和推荐指令
  • 在个性化设置中新增两个独立模型选择器,并同步五种语言及回归测试

Confidence Score: 5/5

当前没有仍需阻止合并的已确认故障,PR 看起来可以安全合并。

未发现仍然存在的阻塞性故障。

Important Files Changed

Filename Overview
apps/desktop/src/main/utility-model/auxiliary-model-settings-store.ts 新增 owner-scoped 辅助模型偏好存储,并通过共享原子设置文件机制保存两个独立字段。
apps/desktop/src/main/utility-model/oneShotCandidates.ts 扩展一次性文本请求能力,以支持固定 provider、agent 与 model 的精确路由及发送前复核。
apps/desktop/src/main/maker-host/auxiliary-title-one-shot.ts 新增统一任务命名入口;自动模式保留历史行为,显式模式严格使用所选模型并 fail closed。
apps/desktop/src/main/maker-ipc/promptPrediction.ts 推荐指令生成接入独立辅助模型配置,同时保留会话修订、停止状态和发送前有效性检查。
apps/desktop/src/main/maker-ipc/auxiliary-model-settings.ts 新增可信 IPC 边界、运行期 payload 校验,以及可用和已保存但暂不可用模型的列表构建。
apps/desktop/src/renderer/components/settings/AuxiliaryModelSection.tsx 在个性化设置中提供两个相互独立的辅助模型选择器及加载、保存和错误状态。
apps/desktop/src/preload/preload.ts 为主 Renderer 暴露窄化的辅助模型设置读取与更新接口。
apps/desktop/src/shared/auxiliaryModelSettings.ts 定义 Main、Preload 与 Renderer 共用的辅助模型设置和选项数据契约。

Sequence Diagram

sequenceDiagram
    participant U as 用户
    participant R as 设置界面
    participant P as Preload
    participant M as Main IPC
    participant S as Owner-scoped 设置存储
    participant A as 辅助模型路由
    participant V as 模型 Provider
    U->>R: 分别选择命名/推荐模型
    R->>P: 提交 catalog pin
    P->>M: 调用受限 IPC
    M->>M: 校验 sender、payload 与可路由模型
    M->>S: 原子保存当前 owner 的选择
    S-->>M: 返回最新设置
    M-->>R: 返回设置与可用模型列表
    R->>A: 后续触发命名或推荐
    A->>S: 读取对应的独立选择
    A->>A: 固定 provider/agent/model 并复核选择
    A->>V: 发送精确模型请求
    V-->>A: 返回结果或失败
    A-->>R: 返回标题/推荐;显式路由失败时不切换 Provider
Loading

Reviews (3): Last reviewed commit: "fix(desktop): 禁用推荐指令模型的短预算推理" | Re-trigger Greptile

@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: f8b4f8fe98

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/main/maker-host/auxiliary-title-one-shot.ts
Comment thread apps/desktop/src/main/maker-host/auxiliary-title-one-shot.ts
Comment thread apps/desktop/src/main/im/shared/fbotTitle.ts Outdated
Signed-off-by: DavidShen <david@xd.com>
@DavidShenXD

Copy link
Copy Markdown
Collaborator Author

反馈已处理

已处理:

  • 保留 IM 标题请求开始时的显式路由快照,设置在请求中途变化时仍保持 fail closed。
  • 为短标题请求关闭原生思考,并为 Responses 路由使用最低推理强度。
  • 为显式 Codex 标题请求补充仅输出短标题的 instructions。
  • 从辅助模型列表、声明解析和执行路径中排除 retired 模型。
  • 对目录钉的 provider ID 段进行 URI 编码,兼容运行期 custom:xai。
  • 稳定 Linux PI 前台子代理测试夹具的启动信号,消除停止监听尚未安装时的竞态;verify 的失败由该 Linux 单测分片连带触发。

变更:

  • 修正辅助标题 fallback、显式标题请求体、目录模型准入与目录钉编解码,并补齐回归测试。
  • 仅调整 PI 测试夹具的 readiness 时机,未修改 PI 运行时行为。

验证:

  • pnpm test:unit:related:通过(desktop、@cindy/maker-core 相关单测)。
  • pnpm --filter desktop run --if-present typecheck:通过。
  • pnpm --filter @cindy/maker-core run --if-present typecheck:通过。
  • 4 个 Desktop 定向测试文件:86 项通过。
  • pnpm check:dco:通过。

备注:

  • Linux 专属竞态用例在当前 Windows 工作区按定义跳过;修复已推送为 df5f8da,新一轮 GitHub 自动检查未等待。

@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: df5f8dadca

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/desktop/src/main/maker-ipc/promptPrediction.ts
@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:large-diff 改动量较大(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) labels Aug 24, 2026
Signed-off-by: DavidShen <david@xd.com>
@DavidShenXD

Copy link
Copy Markdown
Collaborator Author

反馈已处理

已处理:

  • 为显式选择的推荐指令模型禁用短预算内的原生推理,避免 DeepSeek 等思考模型耗尽 96-token 预算后没有正文。

变更:

  • 推荐指令的显式模型请求增加 disableReasoning: true
  • 更新显式推荐路由回归测试,锁定禁用推理参数。

验证:

  • pnpm --filter desktop exec vitest run src/main/maker-ipc/__tests__/promptPredictionRevision.test.ts --reporter=dot:7 项通过。
  • pnpm --filter desktop run --if-present typecheck:通过。
  • pnpm test:unit:related:desktop 与 @cindy/maker-core 相关单测通过。
  • pnpm check:dco:通过。

备注:

  • 修复已推送为 f5eaed6;按要求未等待新一轮 GitHub 自动检查完成。

@DavidShenXD
DavidShenXD merged commit 42c49df into main Aug 24, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:large-diff 改动量较大(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants