立即咨询

电话咨询

微信咨询

立即试用
商务合作

Qoder 自定义模型配置指南,解锁 Qwen Token Plan 全能力

2026-08-14

 

 

适用版本:Qoder 1.22.x(macOS / Windows / Linux 通用,路径差异见文末对照表)。适用范围:Qwen Token Plan 个人版。

 

一、遇到的痛点

 

在 Qoder 中通过 Token Plan 添加模型时,经常会遇到两个问题:一是无法设置上下文长度,模型设置里找不到 1M、400K、200K 的选项,或者选项呈灰色不可选;二是能力开关缺失,例如添加 qwen3.8-max 时,官方文档标明支持“推理模型、视觉理解、文本生成”,但 Qoder 却提示暂不支持多模态,导致无法在对话中上传图片。

 

相比之下,Qoder 自带的内置模型(如 GLM-5.2、DeepSeek-V4-Pro)则拥有完整的上下文选项和思考模式开关。造成这种差异的原因是,自定义模型的高级配置没有在界面中暴露,这些参数实际保存在配置文件中,支持手动修改。

 

二、原理:自定义模型到底存在哪

 

Qoder 基于 VS Code 架构,会将扩展状态保存在一个 SQLite 数据库中:

 

 

表名:  ItemTable
字段:  key (TEXT 唯一键) | value (BLOB/文本)

 

 

自定义模型列表对应的 key 是:

 

 

aicoding.customModels

 

 

它的 value 是一个 JSON 数组,数组中的每个元素代表一个自定义模型。实际抓取到的数据结构(已脱敏)大致如下:

 

 

{
  "id": "model_1785305497074_hlpt4mt",
  "provider": "bailian",
  "providerDisplayName": "阿里云百炼 - 中国",
  "model": "glm5.2-tp",
  "displayName": "GLM-5.2",
  "description": "",
  "visible": true,
  "hasApiKey": true,
  "is_vl": false,
  "is_reasoning": true,
  "max_input_tokens": 1000000,
  "contextConfig": {
    "1m":   { "label": "1M",   "tokenCount": 1000000 },
    "200k": { "label": "200K", "tokenCount": 200000, "isDefault": true },
    "400k": { "label": "400K", "tokenCount": 400000 }
  },
  "thinkingConfig": {
    "disabled": { "label": "Off" },
    "enabled":  { "label": "On", "isDefault": true }
  },
  "byokTypeKey": "tp",
  "createTime": 1785305497075
}

 

 

三、结论先行

 

Qoder 的自定义模型配置并非存放在 settings.json 中,而是保存在 SQLite 数据库内。通过修改该数据库,可以编辑已有模型的上下文长度、多模态和推理能力,也能补全清单中缺失的模型。整个操作分为三步:备份数据、退出 Qoder、运行脚本、重启验证。

 

免责声明:本文涉及对本地配置文件的深度定制,属于非官方支持的操作。操作前务必做好备份,以便出现问题时随时回滚,具体细节请参照官方文档与软件版本。

 

四、字段字典(看懂它,你就懂怎么改)

 

字段 | 类型 | 含义 --- | --- | --- id | string | 唯一标识,由 UI 添加时自动生成(格式为 model_时间戳_随机串) provider | string | 供应商标识,必须是 Qoder 已支持的供应商:bailian(阿里云百炼)、deepseek、minimax 等 providerDisplayName | string | 供应商显示名称,如“阿里云百炼 - 中国” model | string | 调用 API 时使用的模型 ID;在 Token Plan 场景下可能带有 -tp 后缀 displayName | string | 模型下拉列表中显示的名称,支持自定义修改 description | string | 模型描述信息,可为空 visible | bool | 是否在模型列表中显示 hasApiKey | bool | 是否已绑定 API Key(来源于登录账号) is_vl | bool | 是否支持视觉与多模态。设为 false 会提示“暂不支持多模态”,且无法上传图片 is_reasoning | bool | 是否为推理模型。设为 true 才能开启“思考”开关 max_input_tokens | int | 最大上下文 token 数。设为 0 表示未声明,界面不显示上下文选项 contextConfig | object | 上下文长度选项配置。key 包含 1m / 400k / 200k,通过 isDefault 标记默认选中项 thinkingConfig | object | 思考开关配置(包含 disabled / enabled) byokTypeKey | string | 计费类型:tp = Token Plan,pg = 按量付费,cp = 其他 createTime | number | 创建时间(以毫秒为单位的时间戳)

 

需要重点关注三个字段:当 is_vl 为 false 时,多模态功能会被禁用(Qwen3.8-Max 提示“暂不支持多模态”即由此引起);当 max_input_tokens 为 0 且缺少 contextConfig 时,上下文选项将不予显示。这两个字段在 UI 表单中没有编辑入口,只能通过修改配置来调整。

 

五、Token Plan 模型到配置映射表(核心)

 

以下基于 Qwen Token Plan 个人版官方支持清单,提供了每个模型的推荐配置。

 

品牌 | 模型 ID | 官方能力 | is_vl(视觉) | is_reasoning(推理) | 上下文选项 --- | --- | --- | --- | --- | --- 千问 | qwen3.8-max | 推理、视觉理解、文本生成 | true | true | 1M / 400K / 200K(默认) 千问 | qwen3.7-max | 推理、文本生成 | false | true | 1M / 400K / 200K(默认) 千问 | qwen3.7-plus | 推理、视觉理解、文本生成 | true | true | 1M / 400K / 200K(默认) 千问 | qwen3.6-flash | 推理、视觉理解、文本生成 | true | true | 1M / 400K / 200K(默认) 千问 | qwen-audio-3.0-tts-plus | 语音合成 | 不进聊天列表 | 不进聊天列表 | 不进聊天列表 千问 | qwen-audio-3.0-realtime-plus | 实时语音对话 | 不进聊天列表 | 不进聊天列表 | 不进聊天列表 智谱 AI | glm-5.2 | 推理、文本生成 | false | true | 1M / 400K / 200K(默认) DeepSeek | deepseek-v4-pro | 推理、文本生成 | false | true | 1M / 400K / 200K(默认) DeepSeek | deepseek-v4-flash-0731 | 推理、文本生成(暂不支持 Responses API) | false | true | 1M / 400K / 200K(默认) 万相 | wan2.7-image / wan2.7-image-pro | 图片生成 | 不进聊天列表 | 不进聊天列表 | 不进聊天列表 HappyHorse | happyhorse-1.1-i2v / t2v / r2v | 视频生成 | 不进聊天列表 | 不进聊天列表 | 不进聊天列表

 

说明:上下文选项统一设置为 1M / 400K / 200K,默认 200K,这与 Qoder 内置千问模型的配置保持一致(实测 GLM-5.2 等已可用模型也是采用这套配置);语音合成、图片生成、视频生成模型不进入聊天模型列表,它们由 Qoder 对应的独立功能调用,强行添加进 customModels 只会生成一个无法使用的聊天条目,因此本文不作处理;如果所用模型实际上下文达不到该量级,将 contextConfig 里对应的 tokenCount 调小即可,选项标签无需改动。

 

六、操作步骤(保姆级)

 

第 0 步:备份(强烈建议)

 

先在 Qoder 中配好 Qwen Token Plan 的模型。提供商选择“阿里百炼 - 中国”,类型选择“Token plan”,不要选择系统给出的默认项,而是点击“输入其他模型”,填入上表中的模型 ID(如 qwen3.8-max),并填入个人的 API 密钥,点击“添加”。如需添加多个模型,重复此操作即可。

 

接着,复制整个 globalStorage 目录,或者仅复制 state.vscdb 文件进行备份:

 

 

cp "~/Library/Application Support/Qoder/User/globalStorage/state.vscdb" ~/Desktop/state.vscdb.bak

 

 

第 1 步:完全退出 Qoder

 

这一步极其关键。数据库会在 Qoder 启动时读入内存,并在退出时写回。如果在进行文件修改时 Qoder 仍在运行,那么在退出时旧数据会覆盖修改,导致操作失效。macOS 用户可按 Cmd+Q,或右键点击 Dock 图标退出;可通过指令 pgrep -fl Qoder 确认进程是否消失,无输出即代表成功退出。

 

第 2 步:运行一键脚本(推荐)

 

将以下脚本保存为 qoder_model_config.py,并在终端中执行:

 

 

python3 qoder_model_config.py

 

 

脚本会自动执行以下操作:根据操作系统定位 state.vscdb;生成带有时间戳的备份;按照第五节的映射表修正已有模型的能力与上下文设置;自动补全清单中缺失的聊天模型(如 qwen3.7-max、qwen3.7-plus);打印每个模型修改前后的对比信息。

 

脚本内容(完整,可直接复制):

 

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Qoder 自定义模型配置增强脚本:按 Token Plan 清单修正上下文长度与模型能力。"""
import datetime, json, os, platform, random, shutil, sqlite3, sys

KEY = "aicoding.customModels"

def default_db_path():
    home = os.path.expanduser("~")
    if platform.system() == "Darwin":
        return os.path.join(home, "Library", "Application Support", "Qoder", "User", "globalStorage", "state.vscdb")
    if platform.system() == "Windows":
        return os.path.join(os.environ.get("APPDATA", ""), "Qoder", "User", "globalStorage", "state.vscdb")
    return os.path.join(home, ".config", "Qoder", "User", "globalStorage", "state.vscdb")

DB_PATH = os.environ.get("QODER_DB", default_db_path())

# 统一上下文配置(与 Qoder 内置千问一致:1M / 400K / 200K,默认 200K)
CTX = {
    "1m":   {"label": "1M",   "tokenCount": 1000000},
    "400k": {"label": "400K", "tokenCount": 400000},
    "200k": {"label": "200K", "tokenCount": 200000, "isDefault": True},
}
THINK = {
    "disabled": {"label": "Off"},
    "enabled":  {"label": "On", "isDefault": True},
}

# Token Plan 个人版官方清单(仅聊天模型)
PLAN = {
    "qwen3.8-max":            {"is_vl": True,  "is_reasoning": True},
    "qwen3.7-max":            {"is_vl": False, "is_reasoning": True},
    "qwen3.7-plus":           {"is_vl": True,  "is_reasoning": True},
    "qwen3.6-flash":          {"is_vl": True,  "is_reasoning": True},
    "glm-5.2":                {"is_vl": False, "is_reasoning": True},
    "deepseek-v4-pro":        {"is_vl": False, "is_reasoning": True},
    "deepseek-v4-flash-0731": {"is_vl": False, "is_reasoning": True},
}
DISPLAY = {
    "qwen3.8-max": "Qwen3.8-Max",
    "qwen3.7-max": "Qwen3.7-Max",
    "qwen3.7-plus": "Qwen3.7-Plus",
    "qwen3.6-flash": "Qwen-3.6-Flash",
    "glm-5.2": "GLM-5.2",
    "deepseek-v4-pro": "DeepSeek-V4-Pro",
    "deepseek-v4-flash-0731": "DeepSeek-V4-Flash-0731",
}

def base_id(model_id, byok_type):
    """去掉 BYOK 后缀(-tp/-pg/-cp),还原为清单中的基础模型 ID。"""
    if byok_type and model_id.endswith("-" + byok_type):
        return model_id[:-(len(byok_type) + 1)]
    return model_id

def norm(s):
    """归一化模型 ID(忽略连字符/点/下划线/大小写),避免 glm5.2 与 glm-5.2 写法差异误判。"""
    return s.replace("-", "").replace(".", "").replace("_", "").lower()

PLAN_BY_NORM = {norm(k): k for k in PLAN}

def apply_plan(entry, cfg, display_name=None):
    entry["is_vl"] = cfg["is_vl"]
    entry["is_reasoning"] = cfg["is_reasoning"]
    entry["max_input_tokens"] = 1000000
    entry["contextConfig"] = CTX
    if cfg["is_reasoning"]:
        entry["thinkingConfig"] = THINK
    if display_name:
        entry["displayName"] = display_name
    return entry

def main():
    if not os.path.exists(DB_PATH):
        sys.exit(f"[错误] 未找到配置文件:{DB_PATH}\n请先启动过一次 Qoder,或用环境变量 QODER_DB 指定路径。")
    bak = DB_PATH + ".bak." + datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    shutil.copy2(DB_PATH, bak)
    print(f"[备份] 已创建:{bak}")
    db = sqlite3.connect(DB_PATH)
    row = db.execute("SELECT value FROM ItemTable WHERE key=?", (KEY,)).fetchone()
    if row is None:
        print("[提示] 未找到 aicoding.customModels,将基于清单创建。")
        models = []
    else:
        raw = row[0]
        if isinstance(raw, bytes):
            raw = raw.decode("utf-8", errors="replace")
        models = json.loads(raw)
    before = {m.get("model"): (m.get("is_vl"), m.get("is_reasoning"), m.get("max_input_tokens")) for m in models}
    seen_norms = set()
    result = []
    for m in models:
        bid = base_id(m.get("model", ""), m.get("byokTypeKey"))
        nb = norm(bid)
        seen_norms.add(nb)
        if nb in PLAN_BY_NORM:
            plan_key = PLAN_BY_NORM[nb]
            m = apply_plan(m, PLAN[plan_key], DISPLAY.get(plan_key))
        elif m.get("model") == "qwen3.8-max-preview":
            m = apply_plan(m, PLAN["qwen3.8-max"])  # preview 与正式版能力对齐,可自行调整
        result.append(m)
    now_ms = int(datetime.datetime.now().timestamp() * 1000)
    for plan_key, cfg in PLAN.items():
        if norm(plan_key) in seen_norms:
            continue
        # 与内置模型同名的,沿用带后缀命名惯例,避免冲突
        suffix = "-tp" if plan_key in ("qwen3.7-max", "qwen3.7-plus") else ""
        result.append(apply_plan({
            "id": f"model_{now_ms}_{random.randint(100000, 999999)}",
            "provider": "bailian",
            "providerDisplayName": "阿里云百炼 - 中国",
            "model": plan_key + suffix,
            "displayName": DISPLAY[plan_key],
            "description": "",
            "visible": True,
            "hasApiKey": True,
            "byokTypeKey": "tp",
            "createTime": now_ms,
        }, cfg, DISPLAY[plan_key]))
    db.execute("UPDATE ItemTable SET value=? WHERE key=?", (json.dumps(result, ensure_ascii=False), KEY))
    db.commit()
    print("\n[完成] 配置已写入,前后对比:")
    print(f"{'模型ID':<26}{'旧(vl/推理/ctx)':<26}{'新(vl/推理/ctx)':<26}")
    for m in result:
        old = before.get(m.get("model"), ("-", "-", "-"))
        new = (m.get("is_vl"), m.get("is_reasoning"), m.get("max_input_tokens"))
        print(f"{str(m.get('model')):<26}{str(old):<26}{str(new):<26}")
    db.close()
    print("\n下一步:重新启动 Qoder,在模型选择器中确认效果。")

if __name__ == "__main__":
    main()

 

 

第 2 步备选:手动改(没有 Python 时)

 

可使用任意 SQLite 工具(如 DB Browser for SQLite)打开 state.vscdb:打开 ItemTable 表,定位到 aicoding.customModels 行,将其 value 按 JSON 格式解析;为目标模型补全 contextConfig,并修正 is_vl、is_reasoning、max_input_tokens 字段(格式详见第四节);最后保存关闭。

 

第 3 步:重启并验证

 

重新打开 Qoder 并进入模型选择器:展开模型下拉菜单,即可看到每个模型对应的上下文选项(1M / 400K / 200K);选中 qwen3.8-max 并新建对话,可以直接拖拽或粘贴图片,不再出现“暂不支持多模态”的提示;各类推理模型(千问、GLM、DeepSeek 系列)均可正常切换“思考”开关。

 

七、常见问题 FAQ

 

Q1:修改后没有生效? 99% 的概率是 Qoder 进程未完全退出。退出后请通过 pgrep -fl Qoder 确认无输出再进行修改;修改后先检查数据库中的值是否已更新,然后再重新启动软件。 Q2:为什么部分模型 ID 带有 -tp 后缀? -tp 代表 Token Plan 计费模式(pg 代表按量付费)。当自定义模型与 Qoder 内置模型重名时,会添加后缀予以区分(Qoder 在调用时会进行内部路由映射)。已添加的 qwen3.8-max 不带后缀也能正常工作,说明系统兼容多种命名方式;若新添加的模型调用报错,可尝试去掉或添加 -tp 后缀。 Q3:万相、HappyHorse、语音模型为何没有添加? 它们属于非聊天模型。图片与视频生成由 Qoder 独立功能面板调用,语音模型由语音功能调用,这些均不经过 customModels 列表。强行添加只会生成无效的聊天条目。 Q4:Qoder 更新后配置会丢失吗? 部分版本升级可能会重写 state.vscdb 文件。若发现配置丢失,重新执行一次脚本即可(该脚本支持幂等,可反复执行)。 Q5:如何删除模型或修改显示名? 直接修改或删除对应的 JSON 条目即可:displayName 支持自定义修改,删除整个对象即表示从列表中移除。 Q6:操作是否存在安全风险? 脚本仅修改 aicoding.customModels 一个 key,不触碰其他数据,且自带备份功能。如遇异常情况,将备份文件重名覆盖原文件即可恢复。

 

八、各平台配置文件路径对照

 

平台 | state.vscdb 路径 --- | --- macOS | ~/Library/Application Support/Qoder/User/globalStorage/state.vscdb Windows | %APPDATA%\Qoder\User\globalStorage\state.vscdb Linux | ~/.config/Qoder/User/globalStorage/state.vscdb

 

提示:如果安装的是“Qoder CN”等其他版本,请将路径中的 Qoder 替换为相应的目录名(如 QoderCN),也可以通过环境变量 QODER_DB 为脚本指定路径:QODER_DB="/path/to/state.vscdb" python3 qoder_model_config.py

 

九、结语

 

Qoder 的自定义模型面板仅开放了基础功能,真正的高级配置(如上下文长度、多模态支持、推理开关)都隐藏在 SQLite 状态库中。只要理清 is_vl、is_reasoning、max_input_tokens、contextConfig 这四个字段的作用,就能完整激活 Token Plan 清单上每个模型的官方能力,解锁 Qwen3.8-Max 的多模态特性以及千问系列模型的 1M 长上下文。

 

修改前记得备份,修改时确保完全退出 Qoder,修改后重启进行验证。把这套配置跑通,Qoder 里的 Qwen 全家桶就能完整发挥多模态和长上下文了。如果你想把这类 AI 工具和数字化能力真正用进自己的业务,可以咨询云巴巴。云巴巴是国内领先的企业数智服务平台,覆盖 AI 大模型、智能体、协同办公、营销获客、安全合规等多个领域的企业级产品与方案,能按你的行业、规模和预算比对选型、匹配资源、协助落地。欢迎咨询云巴巴,获取更多产品方案与专属服务。

热门数字化产品

有成CRM有成CRM是一款SaaS模式的客户关系管理软件,以客户管理为核心,包含客户管理、销售全流程管理,合同订单、项目管理、工单管理、呼叫中心、移动审批、数据分析八大模块。旨在助力企业销售全流程精细化、数字化管理,全面解决了企业销售团队的全流程客户服务难题,帮助企业有效盘活客户资源、量化销售行为,合理配置资源、建立科学销售体系,提升销售业绩。
Zoho Projects项目管理软件Zoho Projects项目管理软件,帮助您轻松地进行项目规划、进度跟踪、内外协作。它利用工时统计、Bug管理、项目知识库管理等功能,帮助您实现业务目标。为您的项目管理工作提供全面综合的解决方案,从而帮助您和您的企业大幅创造价值。
京东科技言犀数字人京东科技言犀数字人提供产品、服务、运营、营销场景的智能化方案。言犀虚拟主播电商应用场景及数据沉淀,保障品牌直播效果。言犀虚拟主播操作简单,功能强大,拥有业界一流智能化水平。库内通用形象丰富,且持续更新,可按需定制品牌专属数字人。
百度智能云曦灵智能数字人平台百度智能云曦灵-智能数字人平台,致力于打造智能的服务型&演艺型数字人,面向金融、媒体,运营商、MCN,互娱等行业,提供全新客户体验及服务。该平台可进一步降低数字人应用门槛,实现人机可视化语音交互服务和内容生产服务,有效提升用户体验、降低人力成本,提升服务质量和效率。
腾讯云即时通信IM腾讯云即时通信IM,覆盖全平台、低门槛快速集成,可与TRTC、云直播、云点播、互动白板等产品协同使用。支持文字、表情、图片、短语音、短视频、文件、位置等多种消息类型,提升用户活跃度 。好友工作群、陌生人社交群、临时会议群、直播群、社群等多种群组类型,满足特定群聊场景,丰富社交手段。
为你推荐
收藏!WorkBuddy六大入门技巧让企业AI办公效率翻倍

本文由云巴巴数智化服务平台基于AI办公工具WorkBuddy的核心功能,从企业降本增效的实战场景出发,深度剖析了任务管理、专家模型、自动化、技能扩展、多平台接入及案例复用六大高阶技巧。文章旨在帮助中小企业决策者和IT负责人突破AI工具的浅层使用瓶颈,将AI能力真正转化为业务生产力,并提供了清晰的选型视角和落地方法论。

2026-08-14
跨境团队云手机怎么选?DuoPlus云手机破解跨境团队设备管理效率瓶颈

当账号数超过实体手机数,设备管理成为跨境团队的效率瓶颈。本文剖析实体手机与模拟器的天花板,解读 DuoPlus云手机如何以云端 ARM 实例重构集中管理、远程访问与自动化工作流,并指出最先受益的团队类型与行业趋势。

2026-08-14
会员流失预警怎么做?好客会员通把流失风险变成挽留动作

本文从流失信号识别到挽留动作落地,拆解会员流失预警体系的搭建逻辑,看品牌如何用数据在会员离开前完成干预,提升留存与复购。

2026-08-14
直播拆盒中奖概率怎么设?天志互联拆盒玩法配置实操

本文从概率模型到后台配置,讲清直播拆盒中奖概率该怎么设,帮运营在合规与体验之间找到平衡点,让拆盒玩法既有趣又可控。

2026-08-14
WorkBuddy 资料库升级:让资料真正活起来

WorkBuddy 5.3.11 资料库升级为 AI 原生知识空间:HTML、Markdown 协同编辑、一键发布网页、CSV 存数据,让产物变活。

2026-08-14
查看更多