配置加载与环境管理
配置加载与环境管理
基础服务连接和部署环境配置由启动工程持有,产品默认值随业务模块发布。模块配置由 ModuleConfigEnvPostProcessor 加载。
配置位置
blade-service/blade-api/src/main/resources/
application.yml
application-{profile}.yml
blade-core/blade-ai-business/src/main/resources/
blade-module/blade-ai-business/
application.yml
override.yml模块目录名使用 artifactId。加载器还支持 application-{profile}.yml 作为环境默认值层,按已激活 profile 的顺序加载。
优先级
由高到低依次为:
- 命令行参数、JVM 系统属性和环境变量。
- 模块
override.yml覆盖层。 - 宿主配置文件及其导入内容。
- 模块
application.yml与环境默认值。
覆盖层用于产品必须改变、且宿主配置文件已经显式定义的键。默认值层让部署方按常规配置覆盖。多个模块在同一层为同一个键提供不同值时,加载器报告冲突并停止启动。
当前产品配置
| 配置键 | 模块值 | 用途 |
|---|---|---|
server.tomcat.max-part-header-size | 2KB | 知识资料上传等分片请求的单头部上限 |
logging.level.io.github.guoshiqiufeng.dify.support.impl.dto | error | Dify SDK 事件日志级别 |
blade.api.crypto.enabled | 覆盖层 true | 启用凭证接口的报文加密 |
SPI 的 Boot 适配模块还提供 spring.task.execution.mode: force 默认值。引擎配置默认值在对应 @ConfigurationProperties 类中定义,见下节。
AI 业务配置项
AI 业务配置统一使用 blade-ai 前缀,默认值写在各配置类中,模块配置文件不覆盖。需要调整时,在 blade-api 的 application-{profile}.yml、环境变量或启动参数中设置。键名按 Spring Boot 宽松绑定书写,document-max-mb 与 documentMaxMb 等效。
blade-ai:
studio:
fonts-dir: /blade/fonts
flow:
http:
allow-internal: true创作工坊 blade-ai.studio
| 键 | 默认值 | 作用 |
|---|---|---|
ffmpeg | ffmpeg | ffmpeg 可执行文件。启动时探测一次,不可用时关闭视频合成与音频拼接能力 |
ffprobe | ffprobe | ffprobe 可执行文件,用于读取媒体时长与音轨信息 |
inline-media | false | 供应商读取素材时,缺省提供带有效期的预签名地址;对象存储不对公网开放时设为 true,改为内联 base64 |
presign-expires | 3600 | 预签名地址有效期,单位秒 |
document-max-mb | 50 | 文档类素材的上传上限,单位 MB |
media-max-mb | 200 | 媒体类素材的上传上限,单位 MB |
import-max-mb | 4096 | 分片上传导入音视频(会议录像、长录音)的总大小上限,单位 MB |
task-queue-capacity | 100 | 异步任务队列容量,排满后拒绝新任务 |
task-pool-size | 空 | 任务线程数,为空时取处理器数且不少于 4 |
user-concurrent-tasks | 0 | 每个用户同时执行的任务上限,超出的任务排队等待;0 为不限 |
tenant-concurrent-tasks | 0 | 每个租户同时执行的任务上限,超出的任务排队等待;0 为不限 |
fonts-dir | 空 | 字幕烧录使用的字体目录,放入与工坊画布同款的完整字体文件(思源黑体、思源宋体、霞鹜文楷、得意黑);为空时按系统字体配置选择字体 |
aigc-producer | BladeX | 写入成片隐式标识的服务提供者名称或编码,按部署方的备案信息填写 |
知识分段 blade-ai.knowledge.segment
| 键 | 默认值 | 作用 |
|---|---|---|
default-type | semantic | 请求未指定分段方式时使用的策略;表格与 JSON 固定按结构分段 |
log-enabled | true | 是否输出分段过程日志 |
segment-length | 800 | 默认每段最大长度 |
input-length | 20000 | 大模型语义分段的输入长度上限,超出时改用回退分段 |
llm.enabled | true | 是否启用大模型语义分段,关闭时改用回退分段 |
llm.model-name | deepseek-flash | 大模型语义分段调用的对话模型标识,需为模型目录中已登记的对话模型 |
llm.temperature | 0.2 | 采样温度,取值 0–2 |
llm.max-tokens | 4000 | 单次生成的 token 上限 |
llm.model-max-chunk-size | 4000 | 单次送入大模型的最大字符数,超出时分块处理 |
MCP blade-ai.mcp
| 键 | 默认值 | 作用 |
|---|---|---|
log | true | 是否记录 MCP 客户端的请求与响应日志 |
stdio-enabled | false | 是否允许 STDIO 接入。STDIO 服务以登记的命令在服务端主机上启动进程;开启后仍只有管理员可以登记 |
HTTP 节点 blade-ai.flow.http
| 键 | 默认值 | 作用 |
|---|---|---|
allow-internal | false | 是否允许 HTTP 节点访问回环、内网与链路本地地址。私有化部署需要调用内网集成服务时开启 |
微信渠道 blade-ai.wechat
| 键 | 默认值 | 作用 |
|---|---|---|
gateway-url | https://ilinkai.weixin.qq.com | 微信机器人协议基座地址 |
link-version | 2.4.8 | 渠道版本号,与微信当前认可的插件版本保持一致 |
bot-agent | BladeX-AI/2.0 | 渠道客户端标识,用于微信侧观测 |
long-poll-seconds | 35 | 长轮询接口的等待秒数 |
api-timeout-seconds | 15 | 普通接口的超时秒数 |
scan-timeout-seconds | 600 | 一次扫码过程的总时限,超时后需重新发起 |
qr-refresh-limit | 4 | 一次扫码过程允许申请二维码的总次数,二维码过期后自动续申请 |
pull-retry-min-seconds | 3 | 拉取消息失败后的首次退避秒数,之后按指数增长 |
pull-retry-max-seconds | 60 | 拉取消息失败退避的上限秒数 |
brain-base-url | 空 | 平台调用流程 OpenAI 兼容接口的基座地址,为空时指向本机服务端口 |
brain-timeout-seconds | 300 | 调用流程接口的响应超时秒数 |
segment-limit | 4000 | 单条微信文本的最大字符数,超出时分段发送 |
token-retry-minutes | 60 | 令牌校验失败后暂停拉取的分钟数,暂停后自动重试 |
token-retry-limit | 2 | 连续令牌校验失败达到该次数后判定绑定失效 |
history-turns | 10 | 携带给流程的历史轮次 |
session-idle-minutes | 120 | 会话空闲超过该分钟数后自动开启新会话 |
owner-seconds | 120 | 绑定归属键的有效秒数,须大于一次长轮询加最长重试退避 |
reset-commands | /新会话、/reset | 触发新会话的指令 |
内容安全 blade-ai.sensitive
| 键 | 默认值 | 作用 |
|---|---|---|
fallback-message | 您发送的内容包含敏感信息,已被系统拦截 | 租户平台策略未填写拦截提示语时使用 |
资源授权 blade-ai.acl
| 键 | 默认值 | 作用 |
|---|---|---|
enabled | true | 资源授权总开关。关闭后不再按资源授权过滤列表和校验操作,租户内资源对成员全部开放,用于异常时临时回退 |
admin-roles | admin、administrator | 租户管理员角色别名,登录角色命中任一即在本租户内拥有全部资源权限 |
部署覆盖
例如调整上传分片头部大小,使用环境变量或启动参数覆盖模块值:
SERVER_TOMCAT_MAX_PART_HEADER_SIZE=4KBjava -Dserver.tomcat.max-part-header-size=4KB -jar blade-api.jarblade.api.crypto.enabled 已由模块覆盖层设为 true,普通 yml 中同名配置不能改变最终结果。凭证接口沿用前后端一致的报文加密配置。
模块配置不承载 spring.config.*、spring.profiles.* 或跨模块追加的列表配置。路由、接口放行与产品鉴权按实际注解和配置机制组织。
源码定位:blade-system-spi/.../env/ModuleConfigEnvPostProcessor.java、AI 业务模块配置目录;AI 业务配置类为 StudioProperties、SegmentProperties、McpProperties、FlowHttpProperties、WechatLinkProperties、SensitiveProperties 与 AclProperties。
