这是什么
千手大师把所有大模型接入统一为「流适配器」模式:每个兼容层负责把第三方 API 的请求与流式响应 转换成内部格式,上游的查询引擎、工具调用与消息渲染完全无感。因此支持一个供应商的门槛很低—— 接口兼容即可用。
| provider | 类型 | 接入方式 |
|---|---|---|
firstParty |
默认 | 千手 / Anthropic 直接端点 |
openai |
兼容层 | 任意 OpenAI Chat Completions 协议端点(Ollama / DeepSeek / vLLM / One API 等) |
gemini |
兼容层 | Google Gemini 原生 REST / SSE |
grok |
兼容层 | xAI Grok API(OpenAI 协议,独立 base URL 与密钥) |
bedrock |
云平台 | AWS Bedrock(仅环境变量控制) |
vertex |
云平台 | Google Vertex AI(仅环境变量控制) |
foundry |
云平台 | Microsoft Foundry(仅环境变量控制) |
provider 选择优先级(高到低):
settings.json 的 modelType 参数
> QS_USE_BEDROCK / QS_USE_VERTEX / QS_USE_FOUNDRY
> QS_USE_OPENAI / QS_USE_GEMINI / QS_USE_GROK
> 默认 firstParty
/login 向导与 /provider 命令最终都会写入用户设置的
modelType 与 env 字段;云平台 provider 例外,
它们只由环境变量控制,不会写入 modelType。
前置条件
- 已安装千手大师(
qsdashi,英文别名qs-master)。 - 目标供应商的 API key(以及自建端点时的 base URL)。
- 如需写入
settings.json持久生效,确保对用户配置目录有写权限。 - 环境变量方式生效时,需在启动
qsdashi的同一 shell 中导出。
启用与切换
有三种方式,可任选:
1用 /login 向导配置
在会话中输入 /login,选择登录方式,填 base URL / API key / 各档模型。
Anthropic Compatible # 自建 Anthropic 协议端点 → modelType: anthropic
OpenAI Compatible # Ollama / DeepSeek / vLLM / One API → modelType: openai
China LLM Providers # DeepSeek / Zhipu GLM / Qwen / MiMo → modelType: openai
ChatGPT account # ChatGPT 订阅账号
Gemini API # Google Gemini → modelType: gemini
Claude account # Claude 订阅
Anthropic Console # Console 账户按量计费
3rd-party platform # Bedrock / Foundry / Vertex
2用 /provider 切换当前 provider
别名 /api。持久化写入 settings.json 的 modelType。
/provider # 显示当前 provider
/provider openai # 切换到 OpenAI 兼容层
/provider unset # 清除 modelType 与所有 QS_USE_* 变量,回退到环境变量
3直接用环境变量
不做任何设置改动,启动时读取。适合容器 / CI 场景。
QS_USE_OPENAI=1 \
OPENAI_BASE_URL=http://localhost:11434/v1 \
OPENAI_API_KEY=ollama \
OPENAI_MODEL=qwen3-coder \
qsdashi
配置
OpenAI 兼容层(QS_USE_OPENAI=1 启用)
| 环境变量 | 必填 | 说明 |
|---|---|---|
QS_USE_OPENAI | 是 | 启用 OpenAI 兼容层 |
OPENAI_API_KEY | 是 | 端点 API key(本地无鉴权可填占位值) |
OPENAI_BASE_URL | 建议 | 端点 base URL,如 http://localhost:11434/v1 |
OPENAI_MODEL | 否 | 覆盖所有模型映射 |
OPENAI_DEFAULT_{FAMILY}_MODEL | 否 | 按 family(HAIKU / SONNET / OPUS)映射 |
OPENAI_ENABLE_THINKING | 否 | 1 强制开启思考模式,0 强制关闭 |
OPENAI_MAX_TOKENS | 否 | 覆盖最大输出 token(适合小上下文本地模型) |
OPENAI_ORG_ID / OPENAI_PROJECT_ID | 否 | 组织 / 项目 ID |
OPENAI_AUTH_MODE=chatgpt | 否 | 使用 ChatGPT 订阅鉴权而非 API key |
模型映射优先级:OPENAI_MODEL > OPENAI_DEFAULT_{FAMILY}_MODEL > QS_DEFAULT_{FAMILY}_MODEL(向后兼容) > 内置默认映射表 > 原样透传。
思考模式在以下情况自动开启:设置 OPENAI_ENABLE_THINKING=1,
或模型名包含 deepseek / mimo(大小写不敏感)。
设置 OPENAI_ENABLE_THINKING=0/false/no/off 可强制关闭(优先级最高)。
开启后请求体会同时带 thinking: {type:"enabled"}、enable_thinking: true
与 chat_template_kwargs 三种格式,端点各取所需,忽略其余。
Gemini 兼容层(QS_USE_GEMINI=1 启用)
| 环境变量 | 必填 | 说明 |
|---|---|---|
QS_USE_GEMINI | 是 | 启用 Gemini 兼容层 |
GEMINI_API_KEY | 是 | 通过 x-goog-api-key 头发送 |
GEMINI_BASE_URL | 否 | 默认 https://generativelanguage.googleapis.com/v1beta |
GEMINI_MODEL | 否 | 直接指定模型,覆盖一切映射 |
GEMINI_DEFAULT_{FAMILY}_MODEL | 否 | 按 family 映射(HAIKU / SONNET / OPUS) |
QS_DEFAULT_{FAMILY}_MODEL | 否 | 向后兼容的按 family 映射 |
模型映射优先级:GEMINI_MODEL > GEMINI_DEFAULT_{FAMILY}_MODEL > QS_DEFAULT_{FAMILY}_MODEL > 原样。若模型名能识别出 family(含 sonnet / opus / haiku)但以上都未配置,会直接抛出错误。
Grok 兼容层(QS_USE_GROK=1 启用)
| 环境变量 | 必填 | 说明 |
|---|---|---|
QS_USE_GROK | 是 | 启用 Grok 兼容层 |
GROK_API_KEY / XAI_API_KEY | 是 | 两者任一 |
GROK_BASE_URL | 否 | 默认 https://api.x.ai/v1 |
GROK_MODEL | 否 | 覆盖所有模型映射 |
GROK_DEFAULT_{FAMILY}_MODEL | 否 | 按 family 映射 |
GROK_MODEL_MAP | 否 | JSON 字符串,按 family 覆盖映射 |
云平台 provider(仅环境变量控制)
| 环境变量 | 对应 provider |
|---|---|
QS_USE_BEDROCK | AWS Bedrock |
QS_USE_VERTEX | Google Vertex AI |
QS_USE_FOUNDRY | Microsoft Foundry |
provider 注册表(providers.json)
src/services/providerRegistry/ 提供了文件化的 provider 配置机制:
从 ~/.claude/providers.json 读取一个 ProviderConfig 数组并校验,
与内置默认项按 id 合并(用户项覆盖同名默认项)。内置默认项为
cerebras、groq、qwen、deepseek。
switchProvider(id) 会计算激活某个 OpenAI 兼容 provider 所需的环境变量
(QS_USE_OPENAI=1、OPENAI_BASE_URL、OPENAI_MODEL),
但它不修改 process.env,需要用户自行写入 shell 配置。
常用命令与参数
| 命令 | 参数 | 行为 |
|---|---|---|
/login |
无 | 打开登录向导,选择登录方式并填写 base URL / API key / 各档模型 |
/provider |
无 | 显示当前 API provider |
/provider |
anthropic / openai / gemini / grok |
写入 settings.json 的 modelType,并清理冲突的 QS_USE_* 变量 |
/provider |
bedrock / vertex / foundry |
只设置对应 QS_USE_* 环境变量,不改 settings.json |
/provider |
unset |
清空 modelType 与所有 QS_USE_* 变量,回退到环境变量 |
别名:/api 等价于 /provider。有效值集合为 anthropic, openai, gemini, grok, bedrock, vertex, foundry, unset。
切到 openai 时会检查 OPENAI_API_KEY 与 OPENAI_BASE_URL;
切到 grok 检查 GROK_API_KEY 或 XAI_API_KEY;
切到 gemini 检查 GEMINI_API_KEY。
缺失时仍会切换,并在返回信息中给出 warning,提示通过 /login 或环境变量补齐。
实战示例
接入本地 Ollama(OpenAI 兼容):
QS_USE_OPENAI=1 \
OPENAI_BASE_URL=http://localhost:11434/v1 \
OPENAI_API_KEY=ollama \
OPENAI_MODEL=qwen3-coder \
qsdashi
接入 DeepSeek,并显式开启思考模式:
QS_USE_OPENAI=1 \
OPENAI_BASE_URL=https://api.deepseek.com/v1 \
OPENAI_API_KEY=sk-your-deepseek-key \
OPENAI_MODEL=deepseek-reasoner \
OPENAI_ENABLE_THINKING=1 \
qsdashi
用 settings.json 持久配置 Gemini:
{
"modelType": "gemini",
"env": {
"GEMINI_API_KEY": "your-key",
"GEMINI_DEFAULT_SONNET_MODEL": "gemini-2.5-flash",
"GEMINI_DEFAULT_OPUS_MODEL": "gemini-2.5-pro"
}
}
在会话中查看与切换 provider:
/provider
# Current API provider: firstParty
/provider openai
# API provider set to openai.
常见问题排错
provider 已切换成功,但当前环境缺少 OPENAI_API_KEY 或
OPENAI_BASE_URL。可通过 /login 选择 OpenAI Compatible 写入配置,
或在 shell 中导出后重启。
当请求的模型名能识别出 family(sonnet / opus / haiku),但
GEMINI_MODEL 与该 family 对应的 GEMINI_DEFAULT_*_MODEL /
QS_DEFAULT_*_MODEL 都未配置时会抛错。
直接用 GEMINI_MODEL 指定,或补齐 family 映射即可。
需要设置 GROK_API_KEY 或 XAI_API_KEY。
未设置时 /provider grok 会切换但给出 warning。
当同时存在 QS_API_KEY 与 OpenAI 兼容模式时,注册表会给出警告:
QS_API_KEY 用于 Anthropic 工作区端点,而 OpenAI 兼容模式会把
/v1/messages 路由到第三方。二者是不同平面,请确认是否为有意配置。
OpenAI 客户端实例会被缓存,环境变量变更后需要重启会话才会重建。
switchProvider 也明确不修改当前进程的 process.env,
其返回的 export 语句需写入 shell profile 后重启。
自动检测仅匹配模型名含 deepseek 或 mimo 的情形;
Grok 被刻意排除(其推理模型自动推理,不需要 thinking 请求参数)。
其他模型需要 OPENAI_ENABLE_THINKING=1 显式开启。