核心概念
AI 提供商体系
OpenCowork 的 API 提供商抽象层与协议支持。
AI 提供商体系 / API Providers
提供商层位于 src/renderer/src/lib/api/,抽象了不同 LLM API 的差异。
APIProvider 接口
interface APIProvider {
sendMessage(
messages: Message[],
config: ProviderConfig,
signal?: AbortSignal
): AsyncIterable<StreamEvent>
}支持的协议 / Protocols
| 协议 | 文件 | 适用提供商 |
|---|---|---|
anthropic | anthropic.ts | Claude 系列 |
openai-chat | openai-chat.ts | OpenAI、DeepSeek、Ollama 等 |
openai-responses | openai-responses.ts | OpenAI Responses API |
StreamEvent 类型
type StreamEvent =
| { type: 'text_delta'; delta: string }
| { type: 'thinking_delta'; delta: string }
| { type: 'tool_use_start'; id: string; name: string }
| { type: 'tool_use_delta'; id: string; delta: string }
| { type: 'tool_use_end'; id: string }
| { type: 'image_generated'; imageBlock: ImageBlock }
| { type: 'image_error'; imageError: { code: ImageErrorCode; message: string } }
| { type: 'message_stop'; usage: Usage }图像生成事件 / Image Events
当使用图像生成模型(如 DALL·E)时,流事件中会包含图像相关事件:
image_generated:图像生成成功,包含ImageBlock(base64 或 URL 格式)image_error:图像生成失败,错误码包括timeout、network、request_aborted、api_error、unknown
模型分类 / Model Categories
每个模型可以通过 category 字段标注用途:
| 分类 | 说明 |
|---|---|
chat | 聊天/对话模型(默认) |
image | 图像生成模型(如 DALL·E、Flux) |
speech | 语音模型 |
embedding | 向量嵌入模型 |
图像模型需将 category 设置为 image,才能被图像生成插件识别和使用。
提供商特性 / Features
每个提供商配置支持以下特性标志:
vision:是否支持图片输入thinking:是否支持扩展思考(Extended Thinking)reasoning:是否支持推理模式pricing:每百万 token 的输入/输出价格