AI 提供商体系
OpenCowork 的 provider 抽象、协议支持和内置预设。
AI 提供商体系 / API Providers
OpenCowork 的 provider 层位于 src/renderer/src/lib/api/,它把不同供应商的 API 差异收敛到统一的调用模型里。
运行时适配器 / Runtime adapters
应用启动时会注册 5 个运行时 adapter:
anthropicopenai-chatopenai-responsesopenai-imagesgemini
这 5 个 adapter 负责真正的请求、流式输出和图像生成事件。
内置预设 / Built-in presets
src/renderer/src/stores/providers/ 下维护了 24 个内置 provider preset,覆盖:
- Anthropic / Claude
- OpenAI / Azure OpenAI
- Google / Gemini
- Ollama
- DeepSeek
- Qwen
- Moonshot
- MiniMax
- Baidu / ERNIE
- SiliconFlow
- Gitee AI
- Codex OAuth
- Copilot OAuth
- Xiaomi
- BigModel
- LongCat
- Routin AI
- OpenRouter
其中很多 preset 本质上是 OpenAI-compatible,只是默认 Base URL、认证方式或模型集合不同。
统一模型 / Unified model config
模型配置通常包含这些信息:
| 字段 | 作用 |
|---|---|
id / name | 模型标识和显示名 |
category | chat 或 image |
vision | 是否支持图片输入 |
thinking | 是否支持思考流 |
reasoning | 是否支持推理模型 |
baseUrl | 自定义 API 地址 |
apiKey | 认证凭据 |
input/output price | 费用估算 |
流式事件 / Stream events
provider 层会把 API 响应转成统一的流事件,例如:
text_deltathinking_deltathinking_encryptedtool_call_starttool_call_deltatool_call_endimage_generatedimage_errormessage_endrequest_debug
这些事件再被 Agent Loop 消费,最终驱动 UI。
图像生成 / Image generation
图像模型只有在 category = image 时才会被图像插件识别。换句话说:
- provider 负责提供模型
- app plugin 决定是否把这个模型暴露成
ImageGenerate
OpenAI-compatible 规则 / Compatibility rule
只要一个服务兼容 OpenAI Chat Completions API,就可以通过 openai-chat 协议接入。必要时只改:
- Base URL
- API Key
- 模型名
这也是为什么很多第三方模型都能直接进入 OpenCowork。
你在代码里会看到什么 / What to look for in code
src/renderer/src/lib/api/index.ts:运行时 adapter 注册入口src/renderer/src/stores/providers/:内置 provider presetsrc/renderer/src/lib/api/types.ts:统一消息、流事件、usage 类型src/renderer/src/lib/api/provider.ts:具体 provider 创建与发送逻辑