配置
文件位置
全局配置按平台存放:
| 平台 | 路径 |
|---|---|
| Linux | $XDG_CONFIG_HOME/duoduocode/config.json(回退 ~/.config/duoduocode/config.json) |
| macOS | ~/Library/Application Support/duoduocode/config.json |
| Windows | %APPDATA%\duoduocode\config.json |
项目级配置放在项目根目录,自当前目录向上查找到 worktree 根为止,文件名按以下顺序取第一个命中:
duoduo-ai.jsoncduoduo-ai.jsonduoduo.jsoncduoduo.json
项目级配置会覆盖全局配置,只对当前项目生效。
加载优先级
全局配置目录下可同时存在多个文件,后者覆盖前者:
config.json → duoduo-ai.json → duoduo-ai.jsonc
此外还有两个补充来源:
- 环境变量
DUODUO_CONFIG指向的额外配置文件 - 环境变量
DUODUO_CONFIG_DIR指定的额外配置目录(也可用~/.duoduo)
旧版的 TOML 格式配置文件会在首次加载时自动迁移为
config.json,并删除原文件。
配置格式
配置文件支持 JSONC(JSON with Comments)——可以写注释,也可以保留尾随逗号:
{
"$schema": "https://www.dd322.cn/code/config.json",
"model": "deepseek/deepseek-chat", // 默认模型
"theme": "tokyonight",
}
$schema 指向官方 JSON Schema,编辑器会据此提供字段补全与校验。DuoDuoCode 在首次加载时若发现没有 $schema,会自动补写。
变量插值
配置值中可使用插值,避免把密钥写进文件:
| 语法 | 含义 |
|---|---|
{env:VAR_NAME} | 读取环境变量 VAR_NAME |
{file:/path/to/file} | 读取文件内容(支持 ~ 展开) |
{
"provider": {
"my-gateway": {
"options": {
"apiKey": "{env:MY_GATEWAY_KEY}"
}
}
}
}
环境变量
所有环境变量统一使用 DUODUO_ 前缀。常用项:
| 变量 | 作用 |
|---|---|
DUODUO_CONFIG | 额外配置文件路径 |
DUODUO_CONFIG_DIR | 额外配置目录 |
DUODUO_CONFIG_CONTENT | 直接以字符串提供配置内容 |
DUODUO_DISABLE_PROJECT_CONFIG | 忽略项目级配置 |
DUODUO_DISABLE_DEFAULT_PLUGINS | 禁用默认插件 |
DUODUO_SERVER_USERNAME / DUODUO_SERVER_PASSWORD | serve 的基础认证 |
DUODUO_MODELS_URL / DUODUO_MODELS_PATH | 自定义模型列表来源 |
DUODUO_CLIENT | 标识客户端类型(cli / desktop / app) |
模型 API Key 也通过环境变量传入,具体变量名由各 Provider 声明,见模型与 Provider。
常用配置项
配置顶层字段较多,以下为最常用的部分(完整字段以 $schema 为准):
| 字段 | 说明 |
|---|---|
model | 默认模型,格式 provider/model |
small_model | 小模型,用于生成标题、压缩上下文等轻量任务 |
default_agent | 默认 Agent,非法值回退 build |
provider | 自定义 Provider 与模型覆盖 |
enabled_providers | Provider 白名单,设置后仅启用列表内的 |
disabled_providers | Provider 黑名单 |
agent | 各 Agent 的模型、提示词与权限配置 |
permission | 权限规则,控制 AI 能做什么 |
mcp | MCP 服务器配置 |
plugin | 插件列表 |
command | 自定义斜杠命令 |
instructions | 追加的项目指令文件或 glob |
snapshot | 是否记录文件快照(关闭后无法撤销/回滚) |
compaction | 上下文自动压缩策略 |
autoupdate | 自动更新:true / false / "notify" |
logLevel | DEBUG / INFO / WARN / ERROR |
tools | 单个工具的开关 |
lsp / formatter | LSP 与格式化器的开关和覆盖 |
experimental | 实验特性开关 |
示例:
{
"$schema": "https://www.dd322.cn/code/config.json",
"model": "anthropic/claude-sonnet-4",
"small_model": "deepseek/deepseek-chat",
"default_agent": "build",
"autoupdate": "notify",
"permission": {
"edit": "ask",
"bash": { "*": "ask", "git *": "allow" }
},
"mcp": {
"context7": {
"type": "local",
"command": ["npx", "-y", "@upstash/context7-mcp"],
"enabled": true
}
}
}
检查当前生效的配置
duoduocode debug config # 打印合并后的最终配置
duoduocode debug paths # 打印各目录的实际路径