Files
goodbuddy/docs/features/model-connections/progress.md
T
mesalogo 9c88ca20f3 feat: layer runtime and model selection across conversation, project and global
- 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.
2026-09-29 21:33:06 +08:00

116 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 模型连接请求定制进度
## 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 上的受管远程模型请求。