- Store runtime selection as { provider?, model? } layers and resolve them per
field (conversation -> project -> global); drop the legacy auto provider.
- Migrate stored selections (database v49) and clear deleted profile ids.
- Re-resolve selections in Main per request and at queue dispatch.
- Add ProjectRuntimeSelector and a two-column RuntimeModelPicker; manage
link opens model connections; restore per-runtime default model tabs.
- Stop duplicating trusted instructions and history across OpenCode,
Continue and DeepSeek Harness runtimes.
- Document the layered design, global provider removal plan and planned
purpose-specific models.
116 lines
7.4 KiB
Markdown
116 lines
7.4 KiB
Markdown
# 模型连接请求定制进度
|
||
|
||
## 2026-09-29:执行方式与模型分层选择
|
||
|
||
设计见[执行方式与模型选择设计](./runtime-selection-design.md)。
|
||
|
||
### 已完成(未提交)
|
||
|
||
- 共享选择层契约、`resolveRuntimeChoice` 分层解析及失效回退;移除 `auto`。
|
||
- 数据库版本 49 迁移旧选择形状;连接删除后清理所有项目和会话的失效引用。
|
||
- Main 每次请求按会话层、项目层重新解析,不回写会话;排队输入在派发时重新解析。
|
||
- 项目设置 `ProjectRuntimeSelector`(本地、远程、通道共用),输入框两栏
|
||
`RuntimeModelPicker`;系统设置恢复各 Runtime 页签的默认模型选择。
|
||
- 选择器修复:模型列不再与底栏重叠,长名称单行截断;“管理模型连接…”直接打开模型连接分类。
|
||
|
||
### 已验证
|
||
|
||
- `npm run typecheck` 与相关文件 eslint 通过。
|
||
- Main、Shared、Daemon 测试集通过;`App.test.tsx` 与 `WorkspacePrimitives.test.tsx`
|
||
350 项中 349 项通过,唯一失败为既有不稳定用例“renders, saves and reloads OpenCode
|
||
answers across question rounds”,单独运行通过。
|
||
|
||
### 待办
|
||
|
||
- 在运行中的应用里目测两栏选择器(窄窗口、深色主题、长名称)。
|
||
- 移除全局 `provider`,见[设计第 6 节](./runtime-selection-design.md#6-全局-provider历史遗留待移除)。
|
||
- 用途模型,见[设计第 7 节](./runtime-selection-design.md#7-用途模型规划未实现)。
|
||
|
||
|
||
## 2026-09-27:窄容器协议显示
|
||
|
||
连接管理布局改用命名容器查询,不超过 `640px` 时列表和表单上下排列;移除原先仅在
|
||
窗口不超过 `720px` 时切换的规则。LLM、向量连接及角色编辑共用同一布局样式。
|
||
Windows Electron 验证覆盖 `680/720/721/740/960/1180px` 窗宽、短窗口、中英文及浅深
|
||
主题;另在 `1180px` 窗口中单独缩窄设置面板,确认布局由实际容器宽度决定。
|
||
协议文字完整、表单无横向溢出,原生 Tab 与方向键可选择并还原协议。没有保存配置或发送
|
||
模型请求。验证命令、截图说明和未测范围见
|
||
[窄容器布局修复记录](../../quality/responsive-controls-review-2026-09-27.md)。
|
||
|
||
## 2026-09-20:模型设置可用性修复
|
||
|
||
- 模型接口 URL 保存失败时按连接名称显示错误,URL 字段同步提供 `aria-invalid` 和就地
|
||
错误;共享契约同时拒绝空值、非 HTTP/HTTPS 地址和超长地址。
|
||
- 模型连接分类标题与 LLM、向量、重排、语音分段页签在模型内容滚动时共同固定;自定义
|
||
Header/Body 默认收纳在折叠的“高级设置”中,无效时自动展开。
|
||
- LLM 连接新增复制入口。复制保留当前草稿、请求定制和认证设置;已保存 API Key 由 Main
|
||
进程从加密凭据复制,不进入 Renderer 或错误信息。
|
||
- 已新增 SettingsPanel 与 RuntimeSettingsStore 回归覆盖;完整验证结果见后续条目。
|
||
|
||
## 2026-09-11:发布前固定模型说明修复
|
||
|
||
- 项目已保存固定 Runtime 模型时,恢复显示实际固定模型的帮助文字,保留简化后的菜单;
|
||
规则见 [会话与项目 Runtime 选择](./ui-design.md#会话与项目-runtime-选择)。
|
||
- `npm exec vitest run src/renderer/src/ProjectRuntimeSelector.test.tsx`:2 项通过,
|
||
覆盖中英文下 OpenCode、Continue、DeepSeek Harness 的固定选项及恢复跟随操作。
|
||
- `npm test`:343 个文件、3,911 项通过,66 项按平台或手工/真实服务条件跳过;
|
||
`npm run typecheck`、`npm run lint`、`npm run release:notes:verify` 通过。
|
||
- 本次新增修复仅影响 Renderer 帮助文字,未修改共享模型解析、Desktop-to-Agent 请求、
|
||
Agent 或 Runtime 启动实现;不需要单独远程修复。真实模型调用 0 次,未运行真实 Host
|
||
或桌面端到端模型会话。本地未构建或打包,发布候选生产构建由主分支 CI 验证。
|
||
|
||
## 2026-09-10:配置准确性修复
|
||
|
||
- 通道直连回退修复已按[技术设计第 8 节](./technical-design.md#8-通道直连模型选择修复)
|
||
实现;测试把修复结果交给现有 Main resolver,不仅断言返回对象。
|
||
- Harness 设置使用专用来源标签、关联帮助及 Main 直接从生产 resolver 派生的只读
|
||
`deepseekHarnessPlatformModel` 投影;准确区分完整管理员预置、兼容回退和无连接,
|
||
不再从通用环境凭据状态推断。投影不含地址、密钥或请求定制,也不写入设置文件。
|
||
- 无兼容连接时管理员来源仍可选择;未保存候选与实际已保存来源分别展示。UI 验证涵盖
|
||
中英文、兼容默认、首个兼容回退、管理员覆盖、部分环境回退、无连接、草稿预览和保存动作。
|
||
- 聚焦命令 `npx vitest run src/main/agent/runtime-selection-contracts.test.ts src/renderer/src/SettingsPanel.test.tsx`
|
||
对应的两个文件在本次五文件联合运行中全部通过,共 96 项。真实模型调用 0 次;
|
||
本次未运行全量测试、typecheck、lint 或真实 Harness 请求。
|
||
通道修复集成测试随后归入 Main 测试目录,避免 Shared/Web 类型项目导入主进程实现。
|
||
- 后续聚焦验证 `npx vitest run src/main/runtime-settings-store.test.ts src/renderer/src/SettingsPanel.test.tsx`
|
||
全部通过:2 文件、181 项。Store 覆盖完整、部分与旧环境变量、默认/首个兼容回退、
|
||
无连接、精确字段白名单、非持久化以及不改变所选来源。真实模型/Host 调用均为 0;
|
||
未运行全量测试、构建、typecheck 或 lint。
|
||
|
||
## 2026-09-03
|
||
|
||
### 已完成
|
||
|
||
- 模型连接设置、v20 → v21 迁移、公开与 resolved profile 已接入有界自定义 Header/Body。
|
||
- 设置页已提供两个 JSON 编辑器、就地校验、保存阻止、普通设置存储提示和 Runtime 支持范围。
|
||
- 直连连接测试、文本、工具、摘要和图像请求已统一采用 Runtime 优先的浅合并。
|
||
- Continue 1.5.47 已通过原生 `requestOptions.headers` 与 `extraBodyProperties` 接入两项配置。
|
||
- bundled OpenCode 已通过 Provider `options.headers` 接入 Header,并确认没有发送未支持的
|
||
自定义 Body。
|
||
- DeepSeek Harness 已通过控制协议 v3 把 Header 交给 Pi-AI Provider,没有接入未支持的
|
||
自定义 Body。
|
||
- Main 与 Agent 远程模型网关已接入 Prompt-scoped Header/Body;`runtime/acp` capability
|
||
已提升为 v5。
|
||
- 功能入口、支持矩阵、合并优先级、普通设置存储边界和协议版本已写入功能文档及双语
|
||
`FEATURES`。
|
||
|
||
### 已验证
|
||
|
||
- `npm run typecheck`
|
||
- `npm run lint`
|
||
- 20 个聚焦测试文件:527 项通过,4 项按环境跳过。
|
||
- 全量 `npm test`:326 个测试文件通过,8 个文件按环境跳过;3506 项通过,55 项跳过。
|
||
- bundled OpenCode 与 Continue 分别对 loopback Provider 验证 Chat Completions 和
|
||
Responses。4 项原生探针全部通过:两者都发送自定义 Header;Continue 发送自定义 Body;
|
||
OpenCode 不发送不支持的 Body。
|
||
- Main/Agent 远程网关测试验证了合并优先级、认证优先、profile digest 绑定和单次分发。
|
||
- 三路清理审查完成;已复用共享协议路径、Header 规范化、ACP capability 常量和 JSON
|
||
类型,并为 Renderer JSON 草稿增加解析前长度上限。
|
||
|
||
### 待验证
|
||
|
||
- 生产 `npm run build`。
|
||
- 最小真实模型 Header/Body 探针。
|
||
- DeepSeek Harness 真实 Provider Header 探针。
|
||
- 当前源码 Agent bundle 在共享 Linux x64 Host 上的受管远程模型请求。
|