首页 › LLM大语言模型 › Kimi专栏 › Kimi 入门&基础配置 › 配置覆盖

配置覆盖

Kimi Code CLI 有三个地方可以影响运行参数:配置文件、命令行选项、环境变量。它们不是简单的"谁优先级高谁赢"——三者面向不同场景,作用范围互不相同:​

•

配置文件 保存长期偏好(模型、密钥、循环控制等),每次启动都生效​

•

命令行选项 做本次启动的临时切换,退出后失效​

•

环境变量 主要负责数据目录定位、OAuth 端点切换,以及少数运行时开关——不是配置字段的通用后备来源​

这个区别很关键:很多人会在 shell 里 export KIMI_API_KEY=xxx,以为 CLI 会自动取到,但实际上不会。原因见下文供应商凭证。​

环境变量的三类作用​

环境变量按作用分三类,不能合并成一条线性优先级:​

定位配置文件:KIMI_CODE_HOME 决定数据根目录,配置文件路径因此变为 $KIMI_CODE_HOME/config.toml。这一步先于其他所有解析,不是普通参数的后备来源。​

运行时开关:KIMI_DISABLE_TELEMETRY 等少量变量直接关闭对应子系统——即使 config.toml 里 telemetry = true,只要这个变量是真值,遥测就会被禁用。语义是"额外禁用",不是"普通覆盖"。​

运行端点与诊断:KIMI_CODE_OAUTH_HOST、KIMI_CODE_BASE_URL、KIMI_LOG_LEVEL 等在 OAuth 或日志子系统初始化时读取。完整列表见环境变量。​

普通运行参数的优先级​

对模型别名、Plan 模式、yolo 模式、Skills 目录等普通运行参数,优先级从高到低:​

命令行选项(-m、--plan、--yolo 等):仅对本次启动生效​

用户配置文件(~/.kimi-code/config.toml):保存长期偏好​

少数环境变量明确覆盖特定配置字段,例如 KIMI_CODE_BACKGROUND_KEEP_ALIVE_ON_EXIT 的优先级高于 [background].keep_alive_on_exit。这类例外在环境变量和配置文件对应字段里都有标注。​

WARNING​

普通运行参数不会从 shell 环境变量取后备值。 供应商的 api_key / base_url 只从 config.toml(包括 [providers..env] 子表)读取,不会回退到 shell 里 export 的变量。唯一的例外是显式的 KIMI_MODEL_* 通道——详见用环境变量定义模型。​

目前 CLI 只读取一份用户级配置文件,没有项目级配置文件机制。需要在不同项目间隔离配置时,用 KIMI_CODE_HOME 指向不同的数据目录——见下文典型场景。​

供应商凭证​

供应商凭证(api_key、base_url)有独立的解析规则,不走普通参数的优先级链。​

对单个供应商,凭证按以下顺序解析:​

[providers.].api_key — 配置文件里直接写的密钥,优先级最高​

[providers..env] 子表里的对应键(KIMI_API_KEY、ANTHROPIC_API_KEY 等)— api_key 为空时才读这里​

两者都缺 → 启动报错,提示该供应商缺少凭证​

base_url 的解析方式相同:先读 [providers.].base_url,再读 [providers..env] 里的 *_BASE_URL 键。​

​

[providers..env] 子表只是配置文件里的一段 TOML,不会真正写入 shell 环境变量。仅当对应的直接字段(api_key / base_url)为空时,CLI 才会查这里。​

​

完整的凭证键名列表见环境变量:供应商凭证键。​

命令行选项​

启动时传入的选项优先级最高,只对本次启动生效:​

​

#FnAvhLfkVnqO text { white-space: pre; }#FnAvhLfkVnqO .fb0 { stroke: var(--N900-FG, 0.15); }#FnAvhLfkVnqO .fb0 {stroke: rgba(31,35,41, 0.15)}#FnAvhLfkVnqO .fx0 { stroke-miterlimit: 10; }#FnAvhLfkVnqO .fx0 {stroke-miterlimit: 10}#FnAvhLfkVnqO .fa1 { fill: rgb(187, 191, 196); }#FnAvhLfkVnqO .fa1 {fill: rgb(187, 191, 196)}#FnAvhLfkVnqO .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#FnAvhLfkVnqO .fx1 {font-style: normal}#FnAvhLfkVnqO .fx2 { text-anchor: middle; }#FnAvhLfkVnqO .fx2 {text-anchor: middle}#FnAvhLfkVnqO .fx3 { dominant-baseline: central; }#FnAvhLfkVnqO .fx3 {dominant-baseline: central}#FnAvhLfkVnqO .fx4 { stroke: none; }#FnAvhLfkVnqO .fx4 {stroke: none}#FnAvhLfkVnqO .fc0 { fill: var(--text-caption); }#FnAvhLfkVnqO .fc0 {fill: #646a73}#FnAvhLfkVnqO .fa2 { fill: var(--text-link-disabled); }#FnAvhLfkVnqO .fa2 {fill: rgb(187, 191, 196)}#FnAvhLfkVnqO .fa3 { fill: rgb(246, 246, 247); }#FnAvhLfkVnqO .fa3 {fill: rgb(246, 246, 247)}#FnAvhLfkVnqO .fx5 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#FnAvhLfkVnqO .fx5 {font-style: normal}#FnAvhLfkVnqO .fx6 { text-anchor: start; }#FnAvhLfkVnqO .fx6 {text-anchor: start}#FnAvhLfkVnqO .fx7 { dominant-baseline: alphabetic; }#FnAvhLfkVnqO .fx7 {dominant-baseline: alphabetic}#FnAvhLfkVnqO .fc1 { fill: rgb(103, 103, 108); }#FnAvhLfkVnqO .fc1 {fill: rgb(103, 103, 108)}#FnAvhLfkVnqO .fx8 { font: 400 12px LarkHackSafariFont, LarkEmojiFont, ui-monospace, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui; }#FnAvhLfkVnqO .fx8 {font-style: normal}#FnAvhLfkVnqO .fc2 { fill: rgb(52, 81, 178); }#FnAvhLfkVnqO .fc2 {fill: rgb(52, 81, 178)}#FnAvhLfkVnqO .fc3 { fill: rgb(60, 60, 67); }#FnAvhLfkVnqO .fc3 {fill: rgb(60, 60, 67)}#FnAvhLfkVnqO .fb1 { fill: var(--N900-FG, 0.15); }#FnAvhLfkVnqO .fb1 {fill: rgba(31,35,41, 0.15)}#FnAvhLfkVnqO .fb2 { fill: rgb(226, 226, 227); }#FnAvhLfkVnqO .fb2 {fill: rgb(226, 226, 227)}#FnAvhLfkVnqO .fa4 { fill: var(--bg-body); }#FnAvhLfkVnqO .fa4 {fill: #fff}AB12345678910选项作用-S, --session [id]-c, --continue-y, --yolo--auto--plan-m, --model -p, --prompt --output-format --skills-dir

-ptextstream-json恢复指定会话;不带 id 时进入交互式选择续上当前目录的上一次会话自动批准普通工具调用,Agent 仍可能提问以 auto 权限模式启动:完全自主,Agent 不会向用户提问以 Plan 模式启动指定本次使用的模型别名非交互模式:执行单条提示词后退出 模式的输出格式: 或 替换自动发现的 Skills 目录(可重复,仅本次生效)

​

互斥规则(违反时启动报错):​

•

--output-format 只能配合 -p 使用​

•

--prompt 不能同时用 --yolo 或 --plan​

•

--continue 和 --session 不能同时用​

•

非 prompt 模式下,--yolo 和 --plan 不能配合 --continue 或 --session​

TIP​

--skills-dir 是一次性替换,只影响本次启动。如需长期追加搜索目录,在 config.toml 里写 extra_skill_dirs(详见 Agent Skills)。​

典型场景​

隔离测试环境——用单独的数据目录,避免污染主配置和会话:​

​

代码块​

Plain Text

KIMI_CODE_HOME="$PWD/.kimi-sandbox" kimi​

​

一次性使用测试密钥——由于供应商凭证只从配置文件读,把测试密钥写进 env 子表:​

​

代码块​

Plain Text

[providers.kimi.env]KIMI_API_KEY = "sk-test"​

​

跳过审批运行批处理任务:​

​

代码块​

Plain Text

kimi --yolo -p "批量重命名以下文件..."​

​

临时进入 Plan 模式(若想永久生效,在配置文件设 default_plan_mode = true):​

​

代码块​

Plain Text

kimi --plan​

​

​