[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"doc-\u002Fzh-Hans\u002Fcmtx\u002Fuser-guide\u002FCFG-001-configuration-reference\u002F":3},"\u003Ch1 id=\"cfg-001%3A-%E9%85%8D%E7%BD%AE%E5%8F%82%E8%80%83\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#cfg-001%3A-%E9%85%8D%E7%BD%AE%E5%8F%82%E8%80%83\">#\u003C\u002Fa> CFG-001: 配置参考\u003C\u002Fh1>\n\u003Cblockquote>\n\u003Cp>本文档是 CMTX 配置的唯一事实源。所有应用层文档（CLI、VS Code、MCP Server）的配置部分均引用本文档。\n后续新增环境变量或配置字段只需修改此处 + 对应代码实现。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"1.-%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.-%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\">#\u003C\u002Fa> 1. 环境变量\u003C\u002Fh2>\n\u003Cp>凭证优先从 YAML 配置文件中读取，未配置时回退到环境变量。\u003C\u002Fp>\n\u003Ch3 id=\"1.1.-%E9%98%BF%E9%87%8C%E4%BA%91-oss\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.1.-%E9%98%BF%E9%87%8C%E4%BA%91-oss\">#\u003C\u002Fa> 1.1. 阿里云 OSS\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>变量名\u003C\u002Fth>\n\u003Cth>必填\u003C\u002Fth>\n\u003Cth>默认值\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_ALIYUN_ACCESS_KEY_ID\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>是\u003C\u002Ftd>\n\u003Ctd>-\u003C\u002Ftd>\n\u003Ctd>RAM 用户 AccessKey ID\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_ALIYUN_ACCESS_KEY_SECRET\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>是\u003C\u002Ftd>\n\u003Ctd>-\u003C\u002Ftd>\n\u003Ctd>RAM 用户 AccessKey Secret\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_ALIYUN_BUCKET\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>是\u003C\u002Ftd>\n\u003Ctd>-\u003C\u002Ftd>\n\u003Ctd>OSS Bucket 名称\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_ALIYUN_REGION\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>否\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>oss-cn-hangzhou\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>OSS 地域\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"1.2.-%E8%85%BE%E8%AE%AF%E4%BA%91-cos\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.2.-%E8%85%BE%E8%AE%AF%E4%BA%91-cos\">#\u003C\u002Fa> 1.2. 腾讯云 COS\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>变量名\u003C\u002Fth>\n\u003Cth>必填\u003C\u002Fth>\n\u003Cth>默认值\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_TENCENT_SECRET_ID\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>是\u003C\u002Ftd>\n\u003Ctd>-\u003C\u002Ftd>\n\u003Ctd>云 API SecretId\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_TENCENT_SECRET_KEY\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>是\u003C\u002Ftd>\n\u003Ctd>-\u003C\u002Ftd>\n\u003Ctd>云 API SecretKey\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_TENCENT_BUCKET\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>是\u003C\u002Ftd>\n\u003Ctd>-\u003C\u002Ftd>\n\u003Ctd>COS Bucket（格式 \u003Ccode>bucketname-appid\u003C\u002Fcode>）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_TENCENT_REGION\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>否\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>ap-guangzhou\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>COS 地域\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"1.3.-ai-provider\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.3.-ai-provider\">#\u003C\u002Fa> 1.3. AI Provider\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>变量名\u003C\u002Fth>\n\u003Cth>必填\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_DEEPSEEK_API_KEY\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>否\u003C\u002Ftd>\n\u003Ctd>DeepSeek API Key（\u003Ccode>ai.models.*.provider: deepseek\u003C\u002Fcode> 时使用）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_QWEN_API_KEY\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>否\u003C\u002Ftd>\n\u003Ctd>阿里云 Qwen API Key（\u003Ccode>ai.models.*.provider: alibaba\u003C\u002Fcode> 时使用）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"1.4.-fbe-%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.4.-fbe-%E5%8A%A0%E5%AF%86%E5%AF%86%E9%92%A5\">#\u003C\u002Fa> 1.4. FBE 加密密钥\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>变量名\u003C\u002Fth>\n\u003Cth>必填\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CMTX_FBE_KEY\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>否\u003C\u002Ftd>\n\u003Ctd>ID 生成时的 FPE 加密密钥（\u003Ccode>frontmatter-id.ff1.encryptionKey\u003C\u002Fcode> 默认值）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"2.-%E5%87%AD%E8%AF%81%E8%A7%A3%E6%9E%90%E6%B5%81%E7%A8%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.-%E5%87%AD%E8%AF%81%E8%A7%A3%E6%9E%90%E6%B5%81%E7%A8%8B\">#\u003C\u002Fa> 2. 凭证解析流程\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>1. config.accessKeyId \u002F config.secretId（YAML 配置文件中的值）\n2. CMTX_ALIYUN_ACCESS_KEY_ID \u002F CMTX_TENCENT_SECRET_ID（环境变量）\n3. 内置默认值（region 等）\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>当三个字段（key\u002Fsecret\u002Fbucket）任一缺失时报错。\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>注意\u003C\u002Fstrong>: 配置项 \u003Ccode>upload\u003C\u002Fcode>、\u003Ccode>resize\u003C\u002Fcode> 已废弃并从顶层移除，其配置迁移至 \u003Ccode>rules.upload-images\u003C\u002Fcode> 和 \u003Ccode>rules.resize-image\u003C\u002Fcode> 下。\u003Ccode>upload.delete\u003C\u002Fcode> 配置项已移除。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"3.-yaml-%E9%85%8D%E7%BD%AE%E5%8F%82%E8%80%83\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.-yaml-%E9%85%8D%E7%BD%AE%E5%8F%82%E8%80%83\">#\u003C\u002Fa> 3. YAML 配置参考\u003C\u002Fh2>\n\u003Cblockquote>\n\u003Cp>以下 YAML 展示每个 section 内部的默认值。顶级可选 section（\u003Ccode>presignedUrls\u003C\u002Fcode>、\u003Ccode>rules\u003C\u002Fcode>、\u003Ccode>presets\u003C\u002Fcode>）整块不配置时对应功能关闭。\n运行 \u003Ccode>cmtx config init\u003C\u002Fcode> 生成的模板仅包含必要配置，不在此模板中的字段不会丢失默认行为。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cpre data-lang=\"yaml\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># yaml-language-server: $schema=.\u002Fconfig.schema.json\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">version\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">v2\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                       # 配置版本（当前为 v2）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 存储池（必需）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">storages\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  default\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                        \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 存储 ID，可自定义；rules.upload-images.useStorage 引用此 ID\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    adapter\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">aliyun-oss\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">           # aliyun-oss | tencent-cos\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    provider\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">aliyun-oss\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">          # 可选，存储提供商提示\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    config\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      region\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">oss-cn-hangzhou\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">     # 地域（如 oss-cn-hangzhou、ap-guangzhou）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      bucket\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"${CMTX_ALIYUN_BUCKET}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">          # Bucket 名称；支持环境变量引用\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      accessKeyId\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"${CMTX_ALIYUN_ACCESS_KEY_ID}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      accessKeySecret\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"${CMTX_ALIYUN_ACCESS_KEY_SECRET}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 预签名 URL 配置（可选，整块不配置则禁用预签名功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 各子字段仅在 presignedUrls 存在时生效\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">presignedUrls\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  expire\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">600\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                     # 签名过期时间，单位秒\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  maxRetryCount\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">3\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 签名失败时最大重试次数\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  imageFormat\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">all\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 处理的图片格式范围：markdown | html | all\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  domains\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                        \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 需要签名处理的域名列表\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A\">domain\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">example.com\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">         # 域名，默认 example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      useStorage\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">default\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">         # 引用 storages 中的配置（必填）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      forceHttps\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">           # 强制使用 HTTPS 生成预签名 URL\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># AI 配置（可选，整块不配置则 AI 功能禁用）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">ai\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  models\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    deepseek-v4-flash\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:              \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 自定义模型 ID，rule 中通过 useModel 引用\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      provider\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">deepseek\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">            # deepseek | alibaba | openai-compatible\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      model\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">deepseek-v4-flash\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">      # 实际模型名称\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      apiKey\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"${CMTX_DEEPSEEK_API_KEY}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"> # 支持环境变量引用\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      baseURL\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 可选，自定义 API 端点（OpenAI 兼容模式）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      timeout\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">30000\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 可选，超时（毫秒）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      maxRetries\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">3\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                 # 可选，重试次数\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  defaultModel\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">deepseek-v4-flash\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">   # 可选，不指定时 rule 必须显式指定 useModel\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 全局 Rules 默认参数（可选，整块不配置则所有 rule 使用代码内置默认值）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 当 preset 中某个 rule 未指定 config 时，使用此处的默认值\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">rules\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 文本处理\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  strip-frontmatter\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {}           \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 移除 YAML frontmatter\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  promote-headings\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    levels\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                     # 提升 N 级标题（H2->H1, H3->H2）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  text-replace\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    match\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                     # 正则匹配模式\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    replace\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 替换文本，支持 $1 捕获组\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    flags\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"gm\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 正则标志：g(全局) m(多行) i(忽略大小写)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 图片处理\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  convert-images\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    convertToHtml\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">          # true=Markdown 转 HTML img 标签；false=反向转换\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 图片上传（可选，整块不配置则禁用上传功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  upload-images\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    imageFormat\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">markdown\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">         # 输出格式：markdown | html\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    concurrency\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">5\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 并发上传数\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    namingTemplate\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"{timestamp}-{name}.{ext}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">  # 远程文件命名模板\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    auto\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 是否自动上传（监听文件变更）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    conflictStrategy\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">skip\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">        # 冲突策略：skip（跳过，保留远程）| overwrite（覆盖为本地）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    useStorage\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">default\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">           # 引用 storages 中的哪个存储配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    prefix\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                    # 远程路径前缀，如 blog\u002Fimages\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    domain\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                    # 自定义域名（可选），上传后 URL 替换为此域名，如 cdn.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    replace\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                      \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 字段替换模板（上传后修改图片引用属性）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      fields\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">        src\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"{cloudSrc}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">         # 替换图片路径的模板\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">        alt\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"{originalAlt}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">      # 替换 alt 文本的模板\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 图片缩放（可选，整块不配置则禁用缩放功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  resize-image\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    widths\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">360\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">480\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">640\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">800\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">960\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1200\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]   \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 可用缩放宽度列表（v0.5 起从 availableWidths 重命名）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # 服务器端缩放域名配置（可选）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # 匹配域名时通过 URL 参数让 OSS\u002FCOS 返回缩放后图片，不匹配时使用客户端 img 属性缩放\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # provider: aliyun-oss | tencent-cos\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # 参考文档：\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    #   阿里云 OSS 图片缩放: &#x3C;https:\u002F\u002Fhelp.aliyun.com\u002Fzh\u002Foss\u002Fuser-guide\u002Fresize-images-4>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    #   腾讯云 COS 图片缩放: &#x3C;https:\u002F\u002Fcloud.tencent.com\u002Fdocument\u002Fproduct\u002F460\u002F36540>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # domains:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    #   - domain: bucket.oss-cn-hangzhou.aliyuncs.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    #     provider: aliyun-oss\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 图片压缩（可选，整块不配置则禁用压缩功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 需要安装 sharp: pnpm add sharp\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # CLI 独立使用: cmtx image compress .\u002Fimages\u002F --quality 80\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 上传时自动压缩: 上传流水线会读取此配置，在上传前自动压缩图片\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  compress-image\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    quality\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">80\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 压缩质量 1-100\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    format\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">original\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">              # 输出格式：original（保持原格式）| jpeg | png | webp | avif\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    preserveMetadata\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">       # 是否保留 EXIF 元数据（false=去除，可减小体积）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 章节编号\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  add-section-numbers\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    minLevel\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">2\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 起始标题等级\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    maxLevel\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">6\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 最大标题等级\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    startLevel\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">2\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                 # 起始层级\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    separator\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\".\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 编号分隔符（如 \"1.1.\"）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  remove-section-numbers\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {}      \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 移除章节编号\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # Metadata \u002F Frontmatter\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  frontmatter-title\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    headingLevel\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">1\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">               # 提取指定级别的标题到 frontmatter.title\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  frontmatter-date\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    fieldName\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">date\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">               # 日期字段名\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  frontmatter-updated\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    fieldName\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">updated\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">            # 更新日期字段名\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  frontmatter-id\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    template\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"{counter_global}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">  # ID 生成模板：{counter_&#x3C;id>} \u002F {ff1} \u002F {sha256_N} \u002F {md5_N} \u002F {sha1_N} \u002F {uuid}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    fieldName\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"id\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">              # ID 写入 frontmatter 的字段名\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    prefix\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 最终 ID 前缀，追加到渲染结果头部\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    counter\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                     \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># counter 格式配置，key 为 counter id\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      global\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">        length\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">6\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # ID 位数（默认 6）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">        radix\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">36\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 进制 2-36（默认 36）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    ff1\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                         \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 仅 template 含 {ff1} 时生效\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      useCounter\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"global\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">       # 引用的 counter id\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      encryptionKey\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">          # FPE 加密密钥\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      withChecksum\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">        # 是否添加 Luhn 校验码\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      length\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">6\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                  # 输出长度（默认继承 counter 配置）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      radix\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">36\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                  # 进制 2-36（默认继承 counter 配置）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # Frontmatter slug\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 注意: transform 策略通过 [^a-z0-9-] 过滤字符，\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # CJK（中文等非 ASCII 字符）会被完全删除而非转拼音。\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 如需处理中文标题，请使用 ai 策略或后续扩展支持。\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  frontmatter-slug\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    strategy\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">transform\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">            # transform | extract | ai\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    transform\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                     \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># strategy=transform 时生效\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      fromField\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">title\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">             # 源字段\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      separator\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"-\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">               # 分隔符\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      lowercase\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">true\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">              # 转为小写\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      maxLength\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">80\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 最大长度\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    extract\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                       \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># strategy=extract 时生效\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      fromField\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">title\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">             # 直接复制到 slug 的源字段\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    ai\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                            \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># strategy=ai 时生效\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      useModel\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">deepseek-v4-flash\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">  # AI 模型 ID（需在 ai.models 中配置）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # Frontmatter 字段映射\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  frontmatter-map\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    mappings\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                      \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 字段映射列表\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A\">from\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">title\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">               # 源字段\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">        to\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">heading\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">              # 目标字段\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A\">from\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">date\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">        to\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">created_at\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    add\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">true\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                     # 是否添加缺失的字段\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # Frontmatter 验证\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  frontmatter-validate\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    required\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: []                  \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 必填字段列表\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    types\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {}                     \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 字段类型校验\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 文案纠正\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  autocorrect\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    configPath\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\".autocorrectrc\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    strict\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 图片下载（可选，整块不配置则禁用下载功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  download-images\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    useStorage\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">default\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">           # 引用 storages 中的哪个存储配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    namingTemplate\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"{name}.{ext}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"> # 本地保存命名模板\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    concurrency\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">5\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 并发下载数\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    overwrite\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">              # 是否覆盖已存在文件\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # domains:                  # 多源存储映射（可选）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    #   - domain: example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    #     useStorage: default\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 清理未被引用的图片（可选，整块不配置则禁用清理功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 扫描 baseDirectory 下所有未被 Markdown 引用的 orphan 图片，批量清理\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  cleanup-images\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    strategy\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">trash\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 删除策略：trash | move | hard-delete\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    force\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 强制删除（跳过引用检查）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    trashDir\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # move 策略目标目录（可选，默认系统回收站）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    baseDirectory\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">              # 可选，默认应用层根目录\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">                                   # 绝对路径 \u002Fpath\u002Fto\u002Fworkspace\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">                                   # 相对路径 .\u002Fimages（相对于应用层根目录）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 指定图片安全删除（可选，整块不配置则禁用删除功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 指定图片路径 → 安全检查（引用检测）→ 安全删除，支持批量\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  delete-image\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    strategy\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">trash\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 删除策略：trash | move | hard-delete\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    removeFromMarkdown\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">true\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">       # 从引用该图片的 Markdown 中移除标记\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    force\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 强制删除（跳过引用检查）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    trashDir\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # move 策略目标目录（可选，默认系统回收站）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 图片转移（可选，整块不配置则禁用转移功能）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 用于跨存储复制\u002F移动图片（如从私有存储转到 CDN 存储）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  transfer-images\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    targetStorage\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 目标存储配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      useStorage\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">default\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">         # 引用 storages 中的配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">      domain\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                  # 自定义域名（可选），转移后 URL 替换为此域名\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    sourceStorages\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:               \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 源存储列表（可选，多源匹配）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">      # - domain: old-cdn.example.com  # 源 URL 域名（用于匹配）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">      #   useStorage: source-1          # 引用 storages 中的配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    namingTemplate\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"{name}.{ext}\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"> # 目标存储命名模板\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    prefix\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                    # 目标存储路径前缀\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    deleteSource\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">           # 是否删除源文件（true=移动，false=复制）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    concurrency\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">5\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                # 并发传输数\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    maxConcurrentDownloads\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">5\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">     # 下载并发控制（可选）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    tempDir\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">                   # 临时目录（可选，默认系统临时目录）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    overwrite\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">              # 是否覆盖目标文件（可选）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Presets（可选，整块不配置则无预设流程可用）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Preset 是有序的 Rule 列表，用于一次运行多个处理步骤\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 格式：可以直接写 rule ID 列表，也可以带自定义配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># ============================\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">presets\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 简单列表格式\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  blog\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    - \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">strip-frontmatter\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    - \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">promote-headings\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    - \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">add-section-numbers\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    - \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">upload-images\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  # 带自定义配置的格式\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">  custom-example\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    name\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"Custom Example\"\u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\">          # Preset 名称\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">    steps\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:                          \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># 规则步骤列表\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A\">id\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">text-replace\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">        config\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">          match\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'TODO:\\s*(.+)'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">          replace\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'[TODO] $1'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A\">          flags\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"gm\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">      - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A\">id\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">upload-images\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"4.-%E9%85%8D%E7%BD%AE%E6%A8%A1%E6%9D%BF\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.-%E9%85%8D%E7%BD%AE%E6%A8%A1%E6%9D%BF\">#\u003C\u002Fa> 4. 配置模板\u003C\u002Fh2>\n\u003Cp>运行 \u003Ccode>cmtx config init\u003C\u002Fcode> 可生成初始配置文件。模板只包含必要配置，完整字段参考本文档。\u003C\u002Fp>\n\u003Ch2 id=\"5.-%E7%BB%B4%E6%8A%A4%E6%8C%87%E5%8D%97\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.-%E7%BB%B4%E6%8A%A4%E6%8C%87%E5%8D%97\">#\u003C\u002Fa> 5. 维护指南\u003C\u002Fh2>\n\u003Ch3 id=\"5.1.-%E9%85%8D%E7%BD%AE%E5%91%BD%E5%90%8D%E7%BA%A6%E5%AE%9A\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.1.-%E9%85%8D%E7%BD%AE%E5%91%BD%E5%90%8D%E7%BA%A6%E5%AE%9A\">#\u003C\u002Fa> 5.1. 配置命名约定\u003C\u002Fh3>\n\u003Cp>配置文件采用分层命名约定：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>层级\u003C\u002Fth>\n\u003Cth>风格\u003C\u002Fth>\n\u003Cth>示例\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>顶级 section key\u003C\u002Ftd>\n\u003Ctd>camelCase\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>storages\u003C\u002Fcode>, \u003Ccode>presignedUrls\u003C\u002Fcode>, \u003Ccode>defaultModel\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Rule ID（\u003Ccode>rules\u003C\u002Fcode> 下的 key）\u003C\u002Ftd>\n\u003Ctd>kebab-case\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>upload-images\u003C\u002Fcode>, \u003Ccode>resize-image\u003C\u002Fcode>, \u003Ccode>add-section-numbers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Rule 内嵌字段\u003C\u002Ftd>\n\u003Ctd>camelCase\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>namingTemplate\u003C\u002Fcode>, \u003Ccode>conflictStrategy\u003C\u002Fcode>, \u003Ccode>useStorage\u003C\u002Fcode>, \u003Ccode>convertToHtml\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>TypeScript 接口字段\u003C\u002Ftd>\n\u003Ctd>camelCase（与 YAML 字段同名）\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>namingTemplate\u003C\u002Fcode>, \u003Ccode>conflictStrategy\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>设计原则\u003C\u002Fstrong>：结构字段用 camelCase（映射 TypeScript 接口），Rule ID 用 kebab-case（面向用户的 YAML 标识符，可读性好）。Rule ID 由代码硬编码（\u003Ccode>rule.id\u003C\u002Fcode>），用户不可自定义。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>新增 Rule 时\u003C\u002Fstrong>：Rule ID 必须 kebab-case，对应 TypeScript 类型名保持同词序的 PascalCase（如 \u003Ccode>compress-image\u003C\u002Fcode> → \u003Ccode>CompressImageOptions\u003C\u002Fcode>）。\u003C\u002Fp>\n\u003Ch3 id=\"5.2.-%E6%96%B0%E5%A2%9E%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.2.-%E6%96%B0%E5%A2%9E%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\">#\u003C\u002Fa> 5.2. 新增环境变量\u003C\u002Fh3>\n\u003Col>\n\u003Cli>在 \u003Ccode>packages\u002Fstorage\u002Fsrc\u002Fcredentials.ts\u003C\u002Fcode> 中添加读取逻辑\u003C\u002Fli>\n\u003Cli>在本文档的环境变量表中添加条目\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>无需修改任何应用层文档（CLI \u002F VS Code \u002F MCP）。\u003C\u002Fp>\n\u003Ch3 id=\"5.3.-%E6%96%B0%E5%A2%9E-yaml-%E9%85%8D%E7%BD%AE%E5%AD%97%E6%AE%B5\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.3.-%E6%96%B0%E5%A2%9E-yaml-%E9%85%8D%E7%BD%AE%E5%AD%97%E6%AE%B5\">#\u003C\u002Fa> 5.3. 新增 YAML 配置字段\u003C\u002Fh3>\n\u003Col>\n\u003Cli>在 \u003Ccode>packages\u002Fasset\u002Fsrc\u002Fconfig\u002Ftypes.ts\u003C\u002Fcode> 中添加类型定义和 \u003Ccode>DEFAULT_CONFIG\u003C\u002Fcode> 默认值\u003C\u002Fli>\n\u003Cli>在本文档的 YAML 参考部分添加带注释的字段\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>无需修改任何应用层文档。\u003C\u002Fp>\n",1786290224233]