添加provider工厂和Ollama支持

- 实现ProviderFactory用于构建不同类型的provider适配器
- 添加EnvironmentCredentialResolver用于解析环境变量中的凭证
- 实现OllamaProvider支持本地模型调用
- 实现OpenAICompatibleProvider支持OpenAI兼容接口
- 在AgentRuntime中添加对ProviderError的处理
- 更新Message结构体添加tool_calls字段
- 实现provider配置的增删改查API端点
- 添加provider注册表的replace方法
- 添加HTTP基础类和工具参数解码功能
- 更新依赖添加httpx库
- 添加相关单元测试验证provider适配器功能
```
This commit is contained in:
2026-08-27 14:16:57 +08:00
parent b71984d951
commit 1741f7b1aa
18 changed files with 794 additions and 20 deletions
+47 -2
View File
@@ -53,7 +53,7 @@ Router 只负责 HTTP/SSE 与错误转换,不实现 Agent、Tool 或 Provider
- 文件系统和 API Key 明文读取:由 Rust Host 提供;
- Skill、Plugin 生命周期:后续在 Extension Core 中实现。
## 开发 Provider
## Provider
默认注册离线 Provider
@@ -84,6 +84,50 @@ streaming
`POST /api/chat` 返回 ModelEvent SSE。
另外已经实现以下可配置 Adapter:
```text
openai_chat / openai_compatible
ollama
```
创建 Ollama Provider
```json
{
"provider_type": "ollama",
"name": "Local Ollama",
"base_url": "http://127.0.0.1:11434",
"default_model": "qwen3:latest"
}
```
创建 OpenAI-Compatible Provider
```json
{
"provider_type": "openai_compatible",
"name": "OpenAI Compatible",
"base_url": "https://api.openai.com/v1",
"default_model": "<model>",
"credential_id": "openai-main"
}
```
凭证 ID `openai-main` 对应 Sidecar 进程中的临时环境变量 `AINOTE_CREDENTIAL_OPENAI_MAIN`。环境变量由 Rust Host 从 Stronghold 读取后注入,不写入 Provider Config、日志或前端 Store。
Provider 配置生命周期接口已经可用:
```text
GET /api/providers
POST /api/providers
GET /api/providers/{provider_id}
PATCH /api/providers/{provider_id}
DELETE /api/providers/{provider_id}
GET /api/providers/{provider_id}/models
POST /api/providers/test
```
## Agent Run
创建普通 Agent Run
@@ -199,7 +243,8 @@ tasks.list
## 当前限制与下一步
- Provider 目前只有完全离线的 Mock 实现;下一步实现 OpenAI-Compatible 与 Ollama Adapter
- 已实现 Mock、OpenAI-Compatible Chat Completions 与 Ollama AdapterOpenAI Responses 和 Anthropic Messages 尚未实现
- Provider 配置暂存内存,后续通过 Repository 接入 SQLite。
- Run/Trace 暂存内存;下一步抽象 Repository 并接入 SQLite。
- Permission 已有核心等待/恢复机制,前端确认 UI 尚未联调。
- Note/RAG Tool 等待对应模块 Service 接入。
+2 -1
View File
@@ -153,7 +153,8 @@ RunCancelled
## 当前实现状态
- Chat、Agent Run、Agent Events、Tool 列表、Provider 列表、模型列表和连接测试已经接入 AI Core。
- Chat、Agent Run、Agent Events、Tool 列表、Provider 配置生命周期、模型列表和连接测试已经接入 AI Core。
- Provider Adapter 当前包含 Mock、OpenAI-Compatible Chat Completions 和 Ollama。
- 默认提供 `mock/mock-1` 离线 Provider,以及 `system.echo``math.add` 开发 Tool。
- Notes、Search、Skills、Plugins、Tasks、Media、Index 等尚未接入业务服务的接口继续返回空结果、`idle``501`
- 需要尚未接入的数据库、文件或扩展 Runtime 的操作统一返回 `501`