模型与 Provider
DuoDuoCode 把模型来源抽象为 Provider。云端与本地共用一套接口,切换模型不需要改代码。
查看可用模型
duoduocode models # 列出全部可用模型
duoduocode models ollama # 只看某个 Provider 的模型
指定默认模型
配置文件中:
{
"model": "deepseek/deepseek-chat",
"small_model": "ollama/qwen2.5-coder:7b"
}
格式为 provider/model。small_model 用于生成会话标题、压缩上下文等轻量任务,指定一个便宜的小模型可以显著省钱。
运行时临时切换(TUI 内按 <leader>m,桌面端按 mod+')也能选模型。
本地推理框架
本地框架无需 API Key,DuoDuoCode 启动时会扫描下列默认端口,命中即自动加载该框架的模型列表:
| 框架 | 默认地址 |
|---|---|
| Ollama | http://localhost:11434/v1 |
| LM Studio | http://localhost:1234/v1 |
| llama.cpp | http://localhost:8080/v1 |
| vLLM | http://localhost:8000/v1 |
| LMDeploy | http://localhost:23333/v1 |
| SGLang | http://localhost:30000/v1 |
| MLX | http://localhost:8080/v1 |
| TGI | http://localhost:8080/v1 |
模型通过各框架的 /v1/models 接口发现,因此任何暴露 OpenAI 兼容端点的推理服务都能接入。
如果你想让扫描覆盖更多端口(例如局域网共享的 GPU 机器),可在配置中扩展扫描端口:
{
"provider": {
"ollama": {
"options": {
"baseURL": "http://192.168.1.50:11434/v1"
}
}
}
}
云端 Provider
除内置的 DeepSeek 外,任何 OpenAI 兼容接口都能通过配置接入。API Key 的读取按以下顺序:
- 环境变量 —— 最高优先级。每个 Provider 声明自己读取哪些变量名(如
DEEPSEEK_API_KEY)。 - 登录凭据 —— 通过
duoduocode providers login写入的auth.json(位于数据目录)。 - 配置文件 ——
provider.<id>.options.apiKey,支持{env:VAR}插值。
用这条命令查看当前哪些凭据已生效:
duoduocode providers list
交互式登录:
duoduocode providers login # 按提示选择 Provider 并填入 Key
duoduocode providers logout # 清除凭据
接入自定义 Provider
{
"provider": {
"my-gateway": {
"npm": "@ai-sdk/openai-compatible",
"name": "My Gateway",
"env": ["MY_GATEWAY_KEY"],
"options": {
"baseURL": "https://gateway.example.com/v1",
"apiKey": "{env:MY_GATEWAY_KEY}"
}
}
}
}
字段说明:
| 字段 | 说明 |
|---|---|
env | 该 Provider 依次尝试读取的环境变量名列表 |
options.baseURL | OpenAI 兼容端点地址 |
options.apiKey | 密钥,建议用 {env:...} 插值而非明文 |
options.timeout | 请求超时(毫秒) |
options.chunkTimeout | 流式分块超时(毫秒) |
设置后即可用 my-gateway/<model-id> 引用该 Provider 下的模型。
启停 Provider
只想启用某几个 Provider(白名单,设置后其余全部不加载):
{
"enabled_providers": ["deepseek", "ollama"]
}
或者屏蔽个别 Provider(黑名单):
{
"disabled_providers": ["copilot"]
}
两者可同时使用:先按白名单筛选,再剔除黑名单中的项。
常见问题
本地模型没有被发现
确认推理服务已启动,并且监听在默认端口上(见上表)。若使用非默认端口,需在配置中显式指定 baseURL。
想让代码完全不出本机
只使用本地推理框架,不配置任何云端 Provider,并配合 disabled_providers 屏蔽云端来源。此时所有请求都发往本机或局域网。
模型列表是快照还是会实时拉取
两者都有:内置 DeepSeek 的模型列表随版本附带,本地框架则在启动时实时探测 /v1/models。你也可以用 DUODUO_MODELS_URL 或 DUODUO_MODELS_PATH 指定自有的模型列表来源。