文档
推荐给好友,福利领不停!好友同步开通最高 1000 万词元额度 · 后续消费分佣最高 30%。
+50万 Token生成链接

配置 (settings.json)

CrabCode 的 JSON 配置文件,控制权限、环境变量、hooks、模型、插件等。

是什么

settings.json 决定 CrabCode 在当前用户/项目下的行为。按以下层级加载,后者覆盖前者

  1. 用户级~/.crabcode/settings.json
  2. 项目级<repo>/.crabcode/settings.json(提交到 git,团队共享)
  3. 本地级<repo>/.crabcode/settings.local.json(不提交,个人覆盖)
  4. 托管/策略级:企业管理员下发,优先级最高

Windows 上用户级路径为 %USERPROFILE%\.crabcode\settings.json。 设置 CRABCODE_CONFIG_DIR 环境变量可改用户级根(默认 ~/.crabcode)。

settings.json 与运行时全局状态(~/.crabcode.json,例如 theme、登录信息、统计计数)是两个不同的文件。本页面只讲 settings.json

何时会看到这个文档

  • /config 命令的"了解更多"链接
  • 启动时 settings.json 字段校验失败的提示
  • 安装某些 skill 或 plugin 后引导你加配置

字段总览

json
{
  "$schema": "https://json.schemastore.org/crabcode-settings.json",
  "permissions": {
    "defaultMode": "default",
    "allow": ["Bash(npm test:*)"],
    "deny": ["Bash(rm -rf:*)"],
    "ask":  ["WebFetch"],
    "additionalDirectories": ["~/code/sibling-repo"]
  },
  "env": {
    "DEBUG": "true",
    "ACOSMI_BASE_URL": "https://api-staging.acosmi.com"
  },
  "hooks": {
    "PreToolUse": [{ "matcher": "Bash", "hooks": [/* ... */] }]
  },
  "model": "deepseek-v4-flash",
  "smallModel": "qwen3.6-plus",
  "outputStyle": "default",
  "cleanupPeriodDays": 30
}
{
  "$schema": "https://json.schemastore.org/crabcode-settings.json",
  "permissions": {
    "defaultMode": "default",
    "allow": ["Bash(npm test:*)"],
    "deny": ["Bash(rm -rf:*)"],
    "ask":  ["WebFetch"],
    "additionalDirectories": ["~/code/sibling-repo"]
  },
  "env": {
    "DEBUG": "true",
    "ACOSMI_BASE_URL": "https://api-staging.acosmi.com"
  },
  "hooks": {
    "PreToolUse": [{ "matcher": "Bash", "hooks": [/* ... */] }]
  },
  "model": "deepseek-v4-flash",
  "smallModel": "qwen3.6-plus",
  "outputStyle": "default",
  "cleanupPeriodDays": 30
}

字段矩阵

下方表格按分组列出主要字段、类型与默认值。完整字段以 schema 校验为准(带上 $schema 行后大多数编辑器有补全)。

权限与目录

字段类型默认说明
permissions.defaultModeenum: default / acceptEdits / plan / bypassPermissions / dontAskdefault启动时默认权限模式,详见 iam
permissions.allowstring[]允许规则数组,如 Bash(npm test:*)
permissions.denystring[]拒绝规则数组(优先级最高)
permissions.askstring[]始终弹确认的规则数组
permissions.additionalDirectoriesstring[]工作目录白名单之外可访问的目录
permissions.disableBypassPermissionsMode"disable"禁用 bypassPermissions 模式(通常托管)

模型

字段类型默认说明
modelstringdeepseek-v4-flash主对话模型 ID
smallModelstringqwen3.6-plus用于 token 估算 / 压缩 / hooks / 搜索的轻量模型
alwaysThinkingEnabledbooleantrue在支持的模型上自动启用 thinking
effortLevelenum: low / medium / high持久化思考档位
fastModebooleanfalse启用 fast mode
fastModePerSessionOptInbooleanfalsefast mode 不跨会话保持
showThinkingSummariesbooleanfalse在记录视图(Ctrl+O)显示 thinking 摘要

环境变量

字段类型默认说明
envrecord[string,string]注入到 CrabCode 进程的环境变量;详见下方「env 覆盖矩阵」
apiKeyHelperstring输出鉴权值的脚本路径(stdout 即 token)
awsCredentialExport / awsAuthRefreshstringAWS 凭据导出/刷新脚本
gcpAuthRefreshstringGCP 凭据刷新命令
otelHeadersHelperstringOpenTelemetry header 输出脚本

Hooks 与状态栏

字段类型默认说明
hooksobject工具执行前后的 shell hook,详见 hooks
disableAllHooksbooleanfalse完全禁用 hooks 与 statusLine
statusLine&#123; type: "command", command, padding? &#125;自定义状态栏命令
allowedHttpHookUrlsstring[]HTTP hooks 允许的 URL 模式
httpHookAllowedEnvVarsstring[]HTTP hooks 可注入到请求 header 的环境变量名

MCP 与插件

字段类型默认说明
enableAllProjectMcpServersbooleanfalse自动批准本项目所有 .mcp.json 中的 MCP server
enabledMcpjsonServersstring[].mcp.json server 白名单
disabledMcpjsonServersstring[].mcp.json server 黑名单
enabledPluginsrecord[plugin-id@marketplace-id, bool/array]启用的插件清单
extraKnownMarketplacesrecord[string, object]项目额外注册的 marketplace 源
pluginConfigsrecord[string, object]单插件配置,按 plugin@marketplace 索引

Git / 工作树 / 编辑器集成

字段类型默认说明
includeCoAuthoredBybooleantruecommit 是否带 Co-Authored-By(已废弃,推荐用 attribution
attribution.commitstring自定义 commit attribution 文本(空字符串 = 不展示)
attribution.prstring自定义 PR 描述 attribution 文本
includeGitInstructionsbooleantrue在 system prompt 中注入 commit / PR 工作流指引
worktree.symlinkDirectoriesstring[]git worktree 创建时从主仓 symlink 的目录(如 node_modules
worktree.sparsePathsstring[]在大单仓中只 sparse-checkout 这些目录
defaultShellenum: bash / powershellbash输入框 ! 命令的默认 shell
respectGitignorebooleantrue文件选择器是否遵循 .gitignore

外观与体验

字段类型默认说明
outputStylestringdefault助手回复风格,配合 /output-style
languagestring偏好语言(如 "japanese" / "spanish"
syntaxHighlightingDisabledbooleanfalse关闭 diff 的语法高亮
prefersReducedMotionbooleanfalse减少动画(spinner shimmer、闪烁等)
spinnerTipsEnabledbooleantruespinner 是否展示提示
spinnerVerbs&#123; mode: "append" / "replace", verbs: string[] &#125;自定义 spinner 动词
spinnerTipsOverride&#123; excludeDefault?: bool, tips: string[] &#125;覆盖 spinner 提示
terminalTitleFromRenamebooleantrue/rename 是否同步更新终端标签页标题

持久化与会话

字段类型默认说明
cleanupPeriodDaysint ≥ 030聊天记录保留天数;设 0 完全关闭持久化
autoMemoryEnabledboolean是否启用 auto-memory(项目记忆)
autoMemoryDirectorystring~/.crabcode/projects/[sanitized-cwd]/memory/auto-memory 存储路径(可用 ~/ 前缀)
autoDreamEnabledboolean是否启用后台记忆合并(auto-dream)
crabcodeMdExcludesstring[]排除加载的 CRABCODE.md glob 模式

自动更新与本地搜索

字段类型默认说明
autoUpdatesChannelenum: latest / stablelatest自动更新通道
minimumVersionstring锁定最低版本,防止 stable 切换时降级
webSearch.providerenum: ali / bocha本地搜索 provider(启用后由本地 API key 代替 OAuth)
webSearch.ali.apiKey / endpoint / modelstring阿里云 DashScope 搜索配置
webSearch.bocha.apiKey / endpointstringBocha 搜索配置

自定义模型 provider

字段类型默认说明
customModel.providerstring (enum)provider 类型;可选值参 /login → "自定义模型配置" 流程提示
customModel.baseUrlstring (URL)API base URL(如 https://api.example.com/v1
customModel.apiKey / apiKeyHandlestringAPI key(明文或安全存储句柄,二选一)
customModel.modelsrecord[alias, ModelDef]模型定义,含 id / contextWindow / maxOutputTokens / supportsThinking

企业策略字段

托管 settings.json(policy 级)专属字段,优先级最高、组员无法覆盖

字段类型说明
availableModelsstring[]限定可选模型;接受 family 别名 / 版本前缀 / 完整模型 ID。空数组表示只允许默认模型
modelOverridesrecord[string, string]acosmi 规范模型 ID → provider 特定 ID 的映射(如 Bedrock inference profile ARN)
allowManagedHooksOnlyboolean仅运行托管 hooks;用户/项目/本地 hooks 全忽略
allowManagedPermissionRulesOnlyboolean仅采用托管下发的 allow/deny/ask 规则
allowManagedMcpServersOnlybooleanallowedMcpServers 只从托管读取(deniedMcpServers 仍合并)
allowedMcpServersobject[]MCP server 白名单(serverName / serverCommand / serverUrl 三选一)
deniedMcpServersobject[]MCP server 黑名单(高于白名单)
strictPluginOnlyCustomizationboolean / ("skills" / "agents" / "hooks" / "mcp")[]锁定指定 surface 只允许通过 plugin 自定义
strictKnownMarketplacesobject[]marketplace 源严格白名单(下载前校验)
blockedMarketplacesobject[]marketplace 源黑名单(下载前校验)
forceLoginMethodenum: acosmi / console强制登录方式
forceLoginOrgUUIDstringOAuth 登录使用的组织 UUID
pluginTrustMessagestring插件信任提示中追加的自定义文案
companyAnnouncementsstring[]启动时随机展示一条的企业公告
skipWebFetchPreflightboolean跳过 WebFetch 黑名单预检(限受限网络环境)
sshConfigsobject[]远程环境 SSH 连接预配置

env 覆盖矩阵

env 字段里能放哪些变量是有边界的。下表为常用项:

变量用途
ACOSMI_BASE_URLAcosmi 网关地址(自托管 / staging)
ACOSMI_API_KEY / ACOSMI_AUTH_TOKENAcosmi 直连鉴权
ACOSMI_MODEL主模型默认值(与 model 字段等价,env 优先)
ACOSMI_DEFAULT_MODEL / ACOSMI_DEFAULT_FAST_MODE_MODEL / ACOSMI_DEFAULT_MAX_EFFORT_MODEL默认 / fast 档 / 最大档对应模型
ACOSMI_SMALL_FAST_MODELsmallModel 默认值
CRABCODE_USE_BEDROCK=1走 Amazon Bedrock 第三方 provider
CRABCODE_USE_VERTEX=1走 Google Vertex AI 第三方 provider
CRABCODE_USE_FOUNDRY=1走 Microsoft Foundry 第三方 provider
ACOSMI_BEDROCK_BASE_URL / ACOSMI_VERTEX_BASE_URL / ACOSMI_FOUNDRY_BASE_URL各 provider 自定义 base URL
VERTEX_REGION_[model-id]单模型 Vertex 区域路由(前缀匹配)
BASH_DEFAULT_TIMEOUT_MS / BASH_MAX_TIMEOUT_MS / BASH_MAX_OUTPUT_LENGTHBash 工具默认/最大超时与输出长度
MCP_TIMEOUT / MCP_TOOL_TIMEOUT / MAX_MCP_OUTPUT_TOKENSMCP 启动 / 工具调用超时;MCP 单次输出上限
CRABCODE_MAX_OUTPUT_TOKENS模型输出 token 上限
MAX_THINKING_TOKENSthinking 预算上限
CRABCODE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1Bash 工具保留项目 cwd(不跟着 cd 漂移)
CRABCODE_DISABLE_NONESSENTIAL_TRAFFIC=1关闭非必要遥测/分析请求
CRABCODE_DISABLE_TERMINAL_TITLE=1禁止改写终端窗口标题
CRABCODE_IDE_SKIP_AUTO_INSTALL=1跳过 IDE 自动安装提示
DISABLE_BUG_COMMAND=1禁用 /bug
DISABLE_FEEDBACK_COMMAND=1禁用 /feedback
DISABLE_TELEMETRY=1关闭遥测上报
DISABLE_ERROR_REPORTING=1关闭错误上报
DISABLE_AUTOUPDATER=1禁用自动更新
DISABLE_COST_WARNINGS=1关闭费用告警弹窗

出于安全考虑,重定向类ACOSMI_BASE_URL 等)、信任根证书类NODE_TLS_REJECT_UNAUTHORIZEDNODE_EXTRA_CA_CERTS)、项目切换类(API key / token)通过远程托管设置注入时会额外弹安全对话框,本机用户级 settings.json 写入不受此限。

限制与注意

  • JSON 严格模式:不允许注释,不允许尾逗号
  • 三层合并:本地级(settings.local.json)最适合个人调试,不会污染团队配置
  • env 不会被 export:只在 CrabCode 进程内生效,不会影响外面的 shell
  • 未知字段会保留:升级 schema 时旧字段不会被静默删除,但不参与校验
  • 加载顺序:用户级 → 项目级 → 本地级 → 托管级;同名字段后者覆盖前者;数组类字段按字段语义合并
  • 企业策略字段只在托管 settings.json 中生效:在个人 settings.jsonallowManagedHooksOnly 之类不会生效

相关