Skip to content

LLM 管理 (llm) ​

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

历史版本 CLI 0.166.30 新增原子连接配置与 OpenAI-compatible / Anthropic / Gemini / Ollama 原生协议探测。

2026-10-16:模型服务层级 ​

公开 CLI 0.166.103 支持持久配置 llm.serviceTier 与 Agent 的 --service-tier。默认 standard;其他层级只有当前 provider、精确 model 和 endpoint 的能力合同支持时才发送。未知或不支持组合在发送前拒绝;目录支持不等于实际账号已开通,也不构成速度或费用保证。已审阅 Priority / Ultrafast 价格条款的校验修复随 .102 纳入。查看 cc agent --help,按账号合同配置;出现层级错误时恢复 standard。更多见本轮升级指南。

概述 ​

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是同时选择协议;使用 openai、anthropic、gemini、ollama 等内置标识
model是可使用中转站提供的自定义模型别名
baseUrl是API 基础路径;不要填写 /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-251015是OpenAI 兼容
OpenAIgpt-4o是OpenAI
Anthropic (Claude)claude-sonnet-4-6是Anthropic Messages
DeepSeekdeepseek-chat是OpenAI 兼容
DashScope (阿里)qwen-max是OpenAI 兼容
Google Geminigemini-2.0-flash是Gemini 原生
Kimi (月之暗面)moonshot-v1-auto是OpenAI 兼容
MiniMax (海螺AI)MiniMax-Text-01是OpenAI 兼容
Mistral AImistral-large-latest是OpenAI 兼容
Ollama (本地)qwen2:7b否Ollama 原生

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 许可发布