mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-10-24 01:58:23 +08:00
12 KiB
12 KiB
Provider 模型能力 taxonomy 进度
2026-04-22
目标
- 把本地模式、用户自管云端 Provider、OEM 云端目录的模型能力语义收成一套轻量 taxonomy
- 明确区分
对话 / 视觉理解 / 图片生成 / 音频 / Embedding,避免继续把llm / vlm / multimodal混成一类 - 支持 OpenAI relay / OEM 映射模型,例如
gpt-images-2 - 保持设置页与 Provider 目录页轻量,不走复杂“模型广场”路线
已完成
- Rust 模型注册表与请求解析链已补齐统一字段:
task_familiesinput_modalitiesoutput_modalitiesruntime_featuresdeployment_sourcemanagement_planecanonical_model_idprovider_model_idalias_source
- 前端能力推断已统一到
inferModelCapabilities.ts:gpt-images-2被识别为image_generationvision_understanding与image_generation明确分离- 旧
capabilities只作为 compat fallback
- Provider 模型目录 UI 已改成轻量能力筛选:
- 保留按能力筛选,不引入复杂模型广场
- 已区分
本地 / 云端 / OEM 云端 - 只有
relay / oem别名才展示“实际映射”
- 图片生成选择链已切到统一 taxonomy:
- 图片 Provider 只会保留真正支持
image_generation的模型 - 避免把视觉理解模型混进生图候选
- 图片 Provider 只会保留真正支持
- 媒体服务设置页已收口到统一“服务模型”骨架:
- 设置导航与首页快捷入口已从“媒体服务”统一改名为“服务模型”
- 服务模型页已对齐参考产品的总页结构,不再只保留图片 / 视频 / 语音三块
- 新增通用助理模型设置:
- 话题自动命名
- AI 图片话题命名
- 消息内容翻译
- 会话历史压缩
- 助理信息生成
- 输入自动补全
- 提示词重写
- 资源库提词重写
- 新增统一设置区块:
- 语音识别服务
- 自动结束语音识别
- OpenAI 语音合成模型
- OpenAI 语音识别模型
- AI 图片默认数量
- 图片 / 视频 / 语音统一为
默认 Provider + 默认模型 + 自动回退 - 图片默认数量已改为更接近参考页的
滑杆 + 可直接输入数字简化交互 - 旧图片出图参数面与旧语音调参面已从 current 设置主路径删除
- 旧实验室
VoiceSettings入口已清退,不再保留双轨 UI
- OEM 云端模型目录已收口到统一 schema:
oemCloudControlPlane.ts允许服务端直接下发 taxonomy 字段oemCloudModelMetadata.ts负责把 OEM 模型目录归一为 metadata-like 结构- OEM 设置页优先消费 taxonomy,
abilities只做兜底
- OEM fallback 能力别名已统一:
llm -> chatvlm / multimodal / omni -> vision_understandingimage_generation / text_to_image -> image_generation
- 已补回归并通过:
- OEM 模型协议解析
- OEM taxonomy helper
- Provider 模型目录别名展示
- OEM 设置页 taxonomy 优先级
- 图片生成筛选链
- 媒体服务设置页定向回归:
src/lib/imageGeneration.test.tssrc/lib/serviceModels.test.tssrc/lib/api/appConfig.test.tssrc/components/settings-v2/agent/media-services/index.test.tsxsrc/components/settings-v2/agent/image-gen/index.test.tsxsrc/components/settings-v2/agent/video-gen/index.test.tsxsrc/components/settings-v2/agent/voice/index.test.tsxsrc/components/settings-v2/system/experimental/index.test.tsx- 服务模型总页新增断言覆盖:
- 输入自动补全开关持久化
- 自动结束语音识别持久化
- 资源库自定义提示词持久化
- 默认图片数量持久化
- Rust 配置 roundtrip:
cargo test -p lime-core test_workspace_preferences_supports_service_models_roundtrip
- GUI 冒烟:
npm run verify:gui-smoke
npm run governance:legacy-report
- 已额外确认:
isImageProvider("lime-hub", "openai", ["gpt-images-2"]) === true
- 当前未完成的环境校验:
npm run verify:local当前被仓库中其他改动阻塞:src/lib/sceneapp/product.ts:2070src/lib/sceneapp/product.ts:2101- 错误为
SceneAppScorecardViewModel.aggregate缺失 - 属于当前脏工作区里的 sceneapp 主线类型问题,不是本次服务模型页改动引入
当前边界
current- 本地 / 云端 / OEM 模型目录共享同一套轻量 taxonomy 语义
- OEM 云端目录支持直接下发 taxonomy,也支持旧
abilities兼容 - UI 只做轻量筛选和标签展示,不做复杂模型广场
- 媒体服务设置只保留服务模型级默认项,不再继续扩展旧细项调参面
compat- OEM
abilities: string[] - OEM
upstreamMapping - 旧
capabilities布尔字段
- OEM
deadsrc/components/voice/VoiceSettings.tsx- 实验室里的旧语音输入设置面
not in scope- 把 OEM 云端目录完全同步进本地自定义模型持久化
- 引入独立模型 marketplace / 多维排序 / 高复杂过滤器
下一刀
- 推动 OEM 服务端稳定下发 taxonomy 字段,逐步减少前端对
abilities的兼容推断依赖。 - 评估是否需要把 OEM 模型目录同步到
useOemLimeHubProviderSync.ts的本地缓存面;若做,优先保持单一事实源,不新增第二套目录结构。 - 若后续把 OEM 云端服务模型接入媒体服务设置,优先复用当前服务模型骨架,只扩展选项数据源与来源标签,不新增第二套设置页。
- 若后续出现视频、文档理解、实时语音等新能力,再在现有 taxonomy 上小步扩展,不回退到“模糊模型类型”。
2026-04-23
继续收口
- 桌宠能力偏好页已统一回共享模型选择链:
MediaPreferenceSection -> SettingModelSelectorField -> ModelSelector- 不再继续保留旧
providerLabel/providerValue/modelLabel/modelValue参数面
- 桌宠通用模型区块已显式走
general主题筛选,避免把明显非对话模型混进 quick action 候选 - 桌宠通用 / TTS 区块都已按当前 consumer 能力做 Provider 过滤:
- 只展示当前桌宠 quick action / TTS 能真正消费的 Provider
- 继续兼容后续本地、自管云与 OEM taxonomy 扩展
@配音的定向回归已补:- 显式 mock 全局
media_defaults.voice - 断言
service_scene_run中携带preferred_provider_idpreferred_model_idallow_fallback
- 当
preferred_provider_id + preferred_model_id同时存在时,当前发送链会把它们转成真实providerOverride / modelOverride - 当只声明
preferred_provider_id、未显式选模型时,不会误把当前会话模型硬塞给新 Provider
- 显式 mock 全局
- 桌宠设置相关回归已补:
CompanionCapabilityPreferencesCard.test.tsxproviders/index.test.tsx- 两处都断言当前页复用了统一
ModelSelector组件,而不是另一套独立选择器
本轮校验事实
- 已通过:
npx vitest run "src/components/agent/chat/workspace/useWorkspaceSendActions.test.tsx"- 结果:
90个测试通过
- 已通过:
npx vitest run "src/components/settings-v2/agent/providers/CompanionCapabilityPreferencesCard.test.tsx" "src/components/settings-v2/agent/providers/index.test.tsx"- 结果:
15个测试通过
- 已通过:
cargo test -p lime-core test_workspace_preferences_supports_companion_defaults_roundtripcargo test -p lime-core test_workspace_preferences_supports_service_models_roundtrip
- 未完成:
cargo test -p lime ...在编译lime主 crate 链接阶段被环境阻塞- 具体错误:
No space left on device - 当前磁盘余量:
1.4Gi
2026-04-23 继续收口(第二刀)
- Rust
request_model_resolution已开始真正消费service_scene_launch里的首选服务偏好:- 当前若回合 metadata 同时声明
preferred_provider_id + preferred_model_id - 且前端本轮没有显式
provider_preference / model_preference - 后端会直接基于该 scene launch 偏好解析
provider_config
- 当前若回合 metadata 同时声明
service_scene_launch.allow_fallback已接入后端解析策略:false:首选 provider/model 不可解析时直接报错,不再静默回退会话默认true:首选 provider/model 失效时,允许继续回退到会话当前 provider/model
- 当前只声明
preferred_provider_id、未声明preferred_model_id时:- 后端不会把它误当成完整首选模型偏好
- 仍沿用现有显式请求 / 会话恢复链,避免跨 Provider 误绑模型
- “服务模型”页已进一步简化:
输入自动补全助理当前已收口为只展示启停开关- 不再暴露尚未接入 current 执行面的模型选择 UI
- 这样继续保持“能用的配置必须真生效;没接上的不假装可配”
2026-04-23 继续收口(第三刀)
- 桌宠设置页已删除未接入 current 执行面的
桌宠语音播报偏好区块:- 当前 Rust
companion_service只真实消费companion_defaults.general companion_defaults.tts之前只有设置页写入,没有 quick action / voice chat / 播报执行链 consumer- 因此 current UI 只保留
桌宠通用模型,继续复用共享ModelSelector
- 当前 Rust
- 桌宠偏好保存逻辑同步收口:
- 保存
桌宠通用模型时不再继续保留旧的companion_defaults.tts假设置 - 让桌宠页和实际执行面重新回到单一事实源
- 保存
2026-04-23 继续收口(第四刀)
VoiceSettings已从“只配语音生成任务模型”补齐为当前真实语音主链设置页:- 语音输入启停
- 主快捷键
- 翻译模式快捷键
- 麦克风设备
- 交互音效
- AI 润色开关
- 润色 / 翻译共用模型选择
- 默认润色指令
- 翻译模式指令
- 指令管理
- 配音 / TTS 任务默认模型
- 新语音设置页继续复用统一模型选择链:
SettingModelSelectorField -> ModelSelector- 不再继续使用旧
PolishModelSelector作为另一套模型入口
- 新增语音设置都已接到 current consumer:
processor.polish_provider / polish_model已真实透传到本地网关请求头X-Provider-Idtranslate_instruction_id与指令删除后的回退逻辑已收口,避免保存失效指令引用selected_device_id / sound_enabled / enabled / shortcut / translate_shortcut继续直连当前语音输入链
- dead
Config.voice已彻底删除:- 前端
appConfigTypes不再暴露旧voice面 - Rust
Config不再保留旧voice字段与导出 - 相关旧测试 mock 与假配置项已同步清理
- 前端
本轮新增校验
- 已通过:
npx vitest run "src/components/settings-v2/agent/media-services/index.test.tsx"- 结果:
5个测试通过
- 已通过:
npx vitest run "src/components/settings-v2/agent/voice/index.test.tsx" "src/components/settings-v2/agent/media-services/index.test.tsx" "src/lib/api/appConfig.test.ts"- 结果:
18个测试通过
- 已通过:
cargo test --manifest-path "src-tauri/Cargo.toml" service_scene_model_preference- 结果:新增
2个 Rust 定向测试通过
- 已通过:
cargo test --manifest-path "src-tauri/Cargo.toml" -p lime-core test_voice_input_config_defaultcargo test --manifest-path "src-tauri/Cargo.toml" -p lime-services --lib- 结果:
lime-core定向测试通过,lime-services174个测试通过
- 已通过:
npx vitest run "src/components/settings-v2/agent/providers/CompanionCapabilityPreferencesCard.test.tsx" "src/components/settings-v2/agent/providers/index.test.tsx"- 结果:
15个测试通过
- 当前环境事实:
- 磁盘余量已恢复到约
76GiB - 默认
target目录偶发被并行cargo run占锁;不是本轮代码错误
- 磁盘余量已恢复到约
下一刀
- 先清出足够磁盘空间,再补
lime主 crate 的 Rust 定向测试,确认runtime_turn / service_scene_launch / prompt_context全链编译通过。 - 若桌宠语音播报进入 current 执行链,优先复用这次已经统一好的
companion_defaults.tts,不要再新增第二套语音偏好入口。