更新时间:2026-09-10 GMT+08:00
分享

自定义模型

在码道CLI中,你可以通过配置JSON文件,来对接第三方大语言模型。

约束与限制

表1 约束与限制

限制类别

具体限制

API格式

仅支持OpenAI规范的Chat Completions格式Anthropic规范的Messages格式

调用工具

仅可由系统内置智能体、AgentTeam和自定义智能体调用,智能问答无法调用

积分消耗/Token消耗

用户调用自定义模型时,不会消耗华为云码道代码智能体套餐内的积分或Token。但是代码补全功能为降低推理延迟,采用专属内置模型提供服务,不支持自定义模型。

唯一性限制

相同模型提供商和模型ID的模型仅允许添加一次。

前提条件

  • 已将账号添加至企业成员中,并启用席位
  • 如果你购买的是华为云码道代码智能体企业版(新版套餐)/专业版(旧版套餐),请确保企业管理员已在控制台开启成员自定义模型权限,具体操作请参考配置企业自定义模型

自定义模型配置

在码道CLI中,通过配置文件对自定义模型进行管理。不支持使用命令创建、修改或删除自定义模型,所有配置均需手动编辑文件。

自定义模型配置文件及其存放路径:“~/.codeartsdoer/codearts_cli.json”,“~”表示当前用户的主目录,Windows下等同于“C:\Users\用户名\”,macOS下等同于“/Users/用户名/”,Linux下等同于“/home/用户名/”。如下操作以Windows操作系统为例。

配置文件以provider为顶层键,每个提供商ID对应一个配置块。

自定义模型配置文件完整的结构如下:

{
  "provider": {
    "<提供商ID>": {
      "name": "<提供商显示名称>",
      "npm": "<SDK包名>",
      "api": "<提供商API地址>",
      "env": ["<环境变量名>", ...],
      "whitelist": ["<模型ID>", ...],
      "blacklist": ["<模型ID>", ...],
      "options": {
        "apiKey": "<API密钥>",
        "baseURL": "<API基础地址>",
        "useFullUrl": false,
        "enterpriseUrl": "<企业版URL>",
        "setCacheKey": true,
        "timeout": 300000,
        "chunkTimeout": 60000
      },
      "models": {
        "<模型ID>": {
          "id": "<模型API标识>",
          "name": "<显示名称>",
          "family": "<模型家族>",
          "reasoning": true,
          "attachment": true,
          "temperature": true,
          "tool_call": true,
          "limit": { "context": 128000, "input": 120000, "output": 8000 },
          "cost": {
            "input": 3.0,
            "output": 15.0,
            "cache_read": 0.5,
            "cache_write": 2.0,
            "context_over_200k": {
              "input": 6.0,
              "output": 30.0,
              "cache_read": 1.0,
              "cache_write": 4.0
            }
          },
          "modalities": {
            "input": ["text", "image", "pdf"],
            "output": ["text"]
          },
          "headers": { "X-Custom-Header": "value" },
          "provider": { "npm": "<SDK包名>", "api": "<API地址>" },
          "variants": { ... }
        }
      }
    }
  }
}

apiKey是您的核心资产,请不要轻易外泄。当您配置apiKey后,重启TUI/CLI,系统会自动对apiKey进行加密,后续配置文件中展示的就是密文。

提供商ID是配置文件中的顶层键名,用于标识模型来源。常见提供商ID,如表2所示。您也可以使用任意自定义字符串作为提供商ID(如my-server),只要对应模型支持OpenAI兼容的API格式即可。

表2 常见提供商ID

提供商ID

说明

openai

OpenAI

deepseek

DeepSeek

glm

glm

kimi

kimi

表3 自定义模型配置文件参数说明

字段名

类型

必填

说明

provider.<提供商ID>.name

字符串

提供商的显示名称,缺省时使用提供商ID。

provider.<提供商ID>.npm

字符串

SDK包名,缺省时默认为@ai-sdk/openai-compatible。

provider.<提供商ID>.api

字符串

提供商的API URL,与options.baseURL功能类似。

provider.<提供商ID>.env

字符串数组

环境变量名列表,码道CLI会依次读取这些环境变量作为API密钥的回退来源。

provider.<提供商ID>.whitelist

字符串数组

模型白名单,仅列表中的模型会被加载(对内置提供商可用来过滤不需要的模型)。

provider.<提供商ID>.blacklist

字符串数组

模型黑名单,列表中的模型不会被加载。

provider.<提供商ID>.options.apiKey

字符串

API密钥。首次加载时明文密钥会自动加密为enc:v1:格式并写回配置文件。

provider.<提供商ID>.options.baseURL

字符串

API基础地址,如https://your-server.com/v1。

provider.<提供商ID>.options.useFullUrl

布尔值

是否使用完整URL地址,默认为false。

  • false:系统会根据你选择的模型类型,自动补全路径。OpenAI系列模型自动追加/chat/completions,Anthropic系列模型自动追加/messages
  • true:直接使用你填写的baseURL,不会自动补全路径。

provider.<提供商ID>.options.enterpriseUrl

字符串

GitHub Enterprise URL,仅用于Copilot提供商的企业版认证。

provider.<提供商ID>.options.setCacheKey

布尔值

是否启用promptCacheKey,默认为false。

provider.<提供商ID>.options.timeout

数字或false

请求超时时间,单位为毫秒,默认为300000(5分钟)。设置为false,可禁用超时。

provider.<提供商ID>.options.chunkTimeout

数字

SSE流式响应的块间超时时间,单位为毫秒。超过该时间未收到新数据块则中断请求。

provider.<提供商ID>.options.*

任意类型

options还支持任意额外字段(catchall),提供商的SDK实现可能读取这些自定义选项。

provider.<提供商ID>.models.<模型ID>.id

字符串

模型的API标识(实际发送给提供商的模型ID),缺省时使用配置键名。

provider.<提供商ID>.models.<模型ID>.name

字符串

码道CLI客户端显示的模型名称,缺省时使用配置键名。

provider.<提供商ID>.models.<模型ID>.family

字符串

模型家族名称(如gpt、claude),用于模型分组。

provider.<提供商ID>.models.<模型ID>.reasoning

布尔值

是否支持推理/思考能力。

provider.<提供商ID>.models.<模型ID>.attachment

布尔值

是否支持附件上传(图片、PDF等)。

provider.<提供商ID>.models.<模型ID>.temperature

布尔值

是否支持温度参数调节。

provider.<提供商ID>.models.<模型ID>.tool_call

布尔值

是否支持工具/函数调用,默认为true。

provider.<提供商ID>.models.<模型ID>.limit.context

数字

最大上下文窗口大小(Token)。

provider.<提供商ID>.models.<模型ID>.limit.input

数字

最大输入Token数。

provider.<提供商ID>.models.<模型ID>.limit.output

数字

最大输出Token数。

provider.<提供商ID>.models.<模型ID>.cost.input

数字

输入Token单价(每百万Token美元价格)。

provider.<提供商ID>.models.<模型ID>.cost.output

数字

输出Token单价。

provider.<提供商ID>.models.<模型ID>.cost.cache_read

数字

缓存读取单价。

provider.<提供商ID>.models.<模型ID>.cost.cache_write

数字

缓存写入单价。

provider.<提供商ID>.models.<模型ID>.cost.context_over_200k

对象

超过200K上下文时的替代定价,包含input、output、cache_read和cache_write。

provider.<提供商ID>.models.<模型ID>.modalities.input

字符串数组

输入支持的模态,包括text、audio、image、video、pdf。

provider.<提供商ID>.models.<模型ID>.modalities.output

字符串数组

输出支持的模态,包括text、audio、image、video、pdf。

provider.<提供商ID>.models.<模型ID>.headers

字符串键值对象

自定义HTTP请求头,随模型请求发送。

provider.<提供商ID>.models.<模型ID>.provider.npm

字符串

该模型使用的SDK包名,覆盖提供商级默认。

provider.<提供商ID>.models.<模型ID>.provider.api

字符串

该模型的API URL,覆盖提供商级默认。

provider.<提供商ID>.models.<模型ID>.variants

键值对象

变体配置。

如果你已在其他工具(如码道IDE、Visual Studio Code等)中完成模型自定义,可直接将对应的配置文件拷贝到码道CLI,快速复用已有模型配置。

  1. 获取已有模型配置文件codearts.json。

    • 码道IDE:%USERPROFILE%\.codeartsdoer\codearts-data
    • Visual Studio Code:%USERPROFILE%\.codeartsdoer\vscode-data
    • JetBrains(PyCharm/IntelliJ IDEA/WebStorm/CLion):%USERPROFILE%\.codeartsdoer\IntelliJIDEA2025.3.4,将IntelliJIDEA2025.3.4替换为你本机IDE的实际版本目录。

  2. 在码道CLI侧配置模型文件。

    1. 进入%USERPROFILE%/.codeartsdoer路径,找到并打开codearts_cli.json配置文件。
    2. 1中codearts.json文件中provider字段内容,拷贝到codearts_cli.json中,保存并退出。
      {
        "$schema": "https://opencode.ai/config.json",
        "lsp": false,
        "provider": {
          "MaaS": {
            "name": "MaaS",
            "npm": "@ai-sdk/openai-compatible",
            "options": {
              "apiKey": "enc:v3:aPrf8u1f5M******FdrnKFvwfQu1pcAJgg3r/3q2Vdz",
              "baseURL": "https://api.modelarts-maas.com/v2",
              "glm-5.2": {
                "sourceType": "provider",
                "providerType": "MaaS",
                "provider": "华为云MaaS",
                "modelId": "glm-5.2",
                "modelName": "GLM5.2",
                "modelType": "textConversation",
                "modelDesc": "智谱GLM-5.2模型,擅长中文理解与大规模知识推理,适合企业级应用",
                "displayEnabled": true,
                "isCustomModel": true,
                "maxTokens": 0,
                "truncateLength": 0,
                "inputLength": 0,
                "inputContextWindow": 184000,
                "outputContextWindow": 16000,
                "contextWindow": 200000,
                "createdAt": "2026-09-02T02:50:01.197Z",
                "updatedAt": "2026-09-02T02:50:01.197Z"
              }
            },
            "models": {
              "glm-5.2": {
                "id": "glm-5.2",
                "limit": {
                  "context": 200000,
                  "output": 16000
                }
              }
            }
          }
        }
      }

  3. 查看自定义模型是否添加成功。

    • 在CLI环境中执行以下命令,回显的模型列表中显示添加的模型,说明模型添加成功。
      codearts models
      图1 模型列表中显示添加的模型
    • 在TUI环境中输入如下斜杠命令,进入模型选择页面,显示添加的模型,说明模型添加成功。
      /models
      图2 选择模型页面显示添加的模型

自定义模型配置示例

以最小化配置为例,演示如何通过设置提供商IDAPI密钥来自定义模型。以Windows操作系统为例。

  1. 进入%USERPROFILE%/.codeartsdoer路径,找到并打开codearts_cli.json配置文件。
  2. 在codearts_cli.json配置文件中,增加provider内容,保存文件并退出。

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "deepseek": {
          "options": {
            "apiKey": "sk-***",
            "baseURL": "https://api.deepseek.com/v1"
          },
          "models": {
            "deepseek-chat": {
              "name": "DeepSeek Chat"
            },
            "deepseek-reasoner": {
              "name": "DeepSeek Reasoner",
              "reasoning": true
            }
          }
        }
      },
      "mcp": {},
      "lsp": false
    }

    其中,apiKey需要您到DeepSeek官网购买后填写。

  3. 查看自定义模型是否添加成功。

    • 在CLI环境中执行以下命令,回显的模型列表中显示添加的模型,说明自定义模型添加成功。
      codearts models
    • 在TUI环境中输入如下斜杠命令,进入模型选择页面。显示添加的模型,说明自定义模型添加成功。
      /models

指定运行模型

在码道CLI中,你可以通过指定特定模型来运行你的任务。如下命令中,provider为模型的供应商,model为模型的名称。

  • TUI开发环境
    • 启动TUI时,通过启动参数指定模型。
      codearts --model provider/model
      或使用短参数
      codearts -m provider/model
    • 进入TUI后,执行“/models”命令随时切换模型。
  • CLI开发环境
    codearts run --model provider/model "你的问题"

相关文档