Skip to content

LLM 管理 (llm)

Headless 命令 — 不依赖桌面 GUI,直接使用核心包运行。适用于服务器、CI/CD、容器化等无桌面环境。

当前公开版本:CLI 0.166.30。本版新增原子连接配置与 OpenAI-compatible / Anthropic / Gemini / Ollama 原生协议探测。

概述

llm 命令用于管理大语言模型的提供商、模型和连通性,内置支持 10 个 LLM 提供商(含火山引擎、OpenAI、Anthropic、DeepSeek 等)。提供模型列表查看、API 连通性测试、提供商动态切换等功能,Agent 模式下还支持根据任务类型智能选择最佳模型。

0.166.30:原子保存自定义连接

cc llm configure 只从 stdin 接收最大 32 KiB JSON,在同一把锁和原子 rename 中保存 endpoint 与 credential。API Key 不进入 argv;目标 provider 或 Base URL 改变时,必须提供该目标自己的密钥,旧站点密钥不会被复用。

bash
# Bash / zsh:真实使用时从安全输入或 secret manager 生成 JSON
printf '%s' '{"provider":"anthropic","model":"claude-sonnet-4-6","baseUrl":"https://api.anthropic.com/v1","apiKey":"REPLACE_ME"}' \
  | cc llm configure

cc llm test
powershell
# PowerShell 7:密钥输入不回显,也不作为命令行参数
$apiKey = Read-Host "API Key" -MaskInput
@{
  provider = "openai"
  model = "gpt-4o"
  baseUrl = "https://api.openai.com/v1"
  apiKey = $apiKey
} | ConvertTo-Json -Compress | cc llm configure
Remove-Variable apiKey

cc llm test
字段必填说明
provider同时选择协议;使用 openaianthropicgeminiollama 等内置标识
model可使用中转站提供的自定义模型别名
baseUrlAPI 基础路径;不要填写 /chat/completions/messages/api/generate
visionModel图片输入使用的模型;留空复用文本模型/默认值
apiKey云端模型是切换 endpoint 时必须提供新 key;Ollama 可省略
allowHttp远程 HTTP 是只有明确为 true 才允许非 loopback HTTP;生产建议 HTTPS

--storage auto|keychain|file 控制秘密存储方式,默认 auto。URL 不允许内嵌用户名/密码、query 或 fragment。

核心特性

  • 🔌 10 个提供商: Volcengine(豆包)、OpenAI、Anthropic、DeepSeek、DashScope、Gemini、Kimi(月之暗面)、MiniMax(海螺AI)、Mistral、Ollama + 3 种中转站
  • 🧪 连通性测试: 一键验证 API 可用性
  • 📋 模型列表: 查看本地已安装的 Ollama 模型
  • 🔄 动态切换: 运行时切换提供商和模型
  • 🧠 智能模型选择: 根据任务类型自动推荐最佳模型

系统架构

llm 命令 → llm.js (Commander) → llm-providers.js

                     ┌────────────────┼────────────────┐
                     ▼                ▼                ▼
                  models           test            providers
                     │                │                │
                     ▼                ▼                ▼
               Ollama API      发送测试消息      配置读取
               GET /api/tags   验证 API Key     config.json

task-model-selector.js ── 任务类型检测 → 模型推荐

                     ┌─────┼─────┐─────┐─────┐─────┐
                     ▼     ▼     ▼     ▼     ▼     ▼
                   chat  code reasoning fast translate creative

命令参考

bash
chainlesschain llm models               # 列出已安装的Ollama模型
chainlesschain llm models --json        # JSON格式输出
chainlesschain llm configure            # 从 stdin JSON 原子保存连接
chainlesschain llm test                 # 测试Ollama连通性
chainlesschain llm test --provider openai --api-key sk-...
chainlesschain llm test --provider volcengine --api-key ark-...
chainlesschain llm providers            # 列出所有提供商
chainlesschain llm providers --json     # JSON格式输出
chainlesschain llm switch <provider>    # 切换默认提供商

子命令说明

models

列出本地 Ollama 已安装的模型信息。

bash
chainlesschain llm models
chainlesschain llm models --json

test

测试 LLM 提供商连通性,发送一条简单消息验证 API 是否可用。

0.166.30 会按 provider 使用原生 wire protocol:OpenAI-compatible 使用 /chat/completions,Anthropic 使用 /messages,Gemini 使用 :generateContent,Ollama 使用 /api/generate。请求拒绝 redirect,20 秒超时,并要求响应包含非空模型文本。该检查会产生一次真实模型调用,可能产生少量费用。

bash
chainlesschain llm test                                           # 测试默认提供商 (Ollama)
chainlesschain llm test --provider openai --api-key sk-...        # 测试 OpenAI
chainlesschain llm test --provider volcengine --api-key ark-...   # 测试 Volcengine (豆包)
chainlesschain llm test --provider deepseek --api-key sk-...      # 测试 DeepSeek

providers

列出所有内置和自定义 LLM 提供商。

bash
chainlesschain llm providers            # 表格格式
chainlesschain llm providers --json     # JSON 格式

支持的 LLM 提供商

提供商默认模型需要 API KeyAPI 格式
Volcengine (豆包)doubao-seed-1-6-251015OpenAI 兼容
OpenAIgpt-4oOpenAI
Anthropic (Claude)claude-sonnet-4-6Anthropic Messages
DeepSeekdeepseek-chatOpenAI 兼容
DashScope (阿里)qwen-maxOpenAI 兼容
Google Geminigemini-2.0-flashGemini 原生
Kimi (月之暗面)moonshot-v1-autoOpenAI 兼容
MiniMax (海螺AI)MiniMax-Text-01OpenAI 兼容
Mistral AImistral-large-latestOpenAI 兼容
Ollama (本地)qwen2:7bOllama 原生

Volcengine (豆包) 模型列表

模型 ID适用场景说明
doubao-seed-1-6-251015通用/推理Seed 1.6 旗舰模型
doubao-seed-1-6-flash-250828日常对话快速响应,成本低
doubao-seed-1-6-lite-251015快速查询轻量版,延迟最低
doubao-seed-code代码编程专用代码生成模型

智能模型选择 (Task Model Selector)

Agent 模式自动根据用户消息检测任务类型,选择最佳模型:

任务类型检测关键词Volcengine 推荐模型
日常对话普通问候、闲聊doubao-seed-1-6-flash-250828
代码任务code, debug, function, 代码, 编程doubao-seed-code
复杂推理analyze, step by step, 分析, 推理doubao-seed-1-6-251015
快速响应quick, brief, 简短, 一句话doubao-seed-1-6-lite-251015
翻译任务translate, 翻译, 英译中doubao-seed-1-6-251015
创意写作story, poem, essay, 写文章, 创作doubao-seed-1-6-251015

Agent 模式下自动切换示例:

you> 写一个Python排序函数
[auto] 代码任务 → doubao-seed-code
ai>  def bubble_sort(arr): ...

配置参考

bash
# llm models
--json                         # JSON 输出(本地 Ollama 列表)

# llm test
--provider <name>              # 10 种:volcengine/openai/anthropic/deepseek/
                               #        dashscope/gemini/moonshot/minimax/mistral/ollama
--api-key <key>                # 临时覆盖 config 中的 API Key

# llm providers
--json

# llm switch <provider>        # 切换默认提供商(写入 config.json)

# 配置文件
# ~/.chainlesschain/config.json   LLM 非秘密配置(provider / model / baseUrl 等)
# API Key 按 --storage 写入 keychain 或受保护文件;不要直接编辑/复制
# 环境变量优先级高于 config.json

性能指标

操作目标实际状态
models 列表(Ollama API)< 500ms~250ms
test 单次往返(云端 LLM)< 3s~1.8s
providers 读取配置< 100ms~40ms
switch 写入配置< 150ms~60ms
任务类型智能检测< 50ms~15ms

测试覆盖率

✅ llm.test.js  - 覆盖 CLI 主要路径
  ├── 参数解析
  ├── 正常路径
  ├── 错误处理
  └── JSON 输出

关键文件

文件职责
packages/cli/src/commands/llm.jsllm 命令主入口(providers / switch / test / models)
packages/cli/src/lib/llm-providers.js10 个 LLM 提供商定义、连通性测试、模型列表
packages/cli/src/lib/task-model-selector.jsAgent 模式任务类型检测 + 智能模型推荐
packages/cli/__tests__/unit/llm-providers.test.jsProviders 核心单元测试
packages/cli/__tests__/integration/llm-provider-workflow.test.jsLLM 提供商端到端工作流集成测试

环境变量

变量名提供商说明
VOLCENGINE_API_KEYVolcengine (豆包)火山引擎 API Key
OPENAI_API_KEYOpenAIOpenAI API Key
ANTHROPIC_API_KEYAnthropicAnthropic API Key
DEEPSEEK_API_KEYDeepSeekDeepSeek API Key
DASHSCOPE_API_KEYDashScope阿里 DashScope API Key
GEMINI_API_KEYGoogle GeminiGemini API Key
MOONSHOT_API_KEYKimi (月之暗面)Moonshot API Key
MINIMAX_API_KEYMiniMax (海螺AI)MiniMax API Key
MISTRAL_API_KEYMistral AIMistral API Key

安全考虑

  • 优先使用 cc llm configure 和默认 --storage auto;API Key 不进入 argv,系统 keychain 可用时优先使用 keychain
  • 若管理员明确选择 --storage file,必须限制运行目录和配置文件权限,不要把配置纳入 Git、日志或明文备份
  • 使用 Ollama 本地模型时无需 API Key,数据不出设备
  • test 命令发送固定的简短测试消息,不包含项目内容,但会触发一次真实模型调用

使用示例

场景 1:查看本地模型

bash
chainlesschain llm models
chainlesschain llm models --json

列出本地 Ollama 已安装的模型及大小信息,JSON 格式输出便于脚本处理。

场景 2:测试不同提供商连通性

bash
chainlesschain llm test
chainlesschain llm test --provider openai --api-key sk-xxx
chainlesschain llm test --provider volcengine --api-key ark-xxx
chainlesschain llm test --provider deepseek --api-key sk-xxx

逐个测试各 LLM 提供商的 API 连通性,确保配置正确后再开始对话。

场景 3:使用火山引擎 (豆包) 对话

bash
# 设置环境变量
export VOLCENGINE_API_KEY=ark-xxx

# 单次提问
chainlesschain ask "什么是机器学习?" --provider volcengine

# 交互式聊天
chainlesschain chat --provider volcengine --model doubao-seed-1-6-flash-250828

# Agent 模式(自动选择最佳模型)
chainlesschain agent --provider volcengine

场景 4:切换默认提供商

bash
chainlesschain llm switch volcengine
chainlesschain llm test

切换默认 LLM 提供商为火山引擎,测试连通性。

故障排查

问题解决方案
models 返回空列表确认 Ollama 已启动且已拉取模型:ollama list
test 连接超时检查 OLLAMA_HOST 环境变量(默认 http://localhost:11434
自定义提供商报错检查协议与 baseUrl;填写 API 基础路径,不要填写完整调用端点
切换地址提示需要 Key新 endpoint 不复用旧密钥;重新输入该站点自己的 API Key
HTTP 地址被拒绝改用 HTTPS;仅受信远程环境可显式设置 allowHttp: true
火山引擎认证失败检查 VOLCENGINE_API_KEY 是否正确设置
模型自动选择不生效仅在 Agent 模式 (chainlesschain agent) 下生效

相关文档

基于 MIT 许可发布