- 接入 AG-UI 运行投影、Turn 时间线和审批隔离 - 增加 Agent Skill 冻结绑定与运行时消费闭环 - 增加受控工作区、内置工具和私有 Artifact 生命周期
393 lines
11 KiB
YAML
393 lines
11 KiB
YAML
server:
|
||
port: 8111
|
||
address: 0.0.0.0
|
||
shutdown: graceful
|
||
# 启用HTTP响应压缩
|
||
compression:
|
||
enabled: true
|
||
servlet:
|
||
encoding:
|
||
enabled: true
|
||
charset: UTF-8 # 必须设置 UTF-8,避免 WebFlux 流式返回(AI 场景)会乱码问题
|
||
force: true
|
||
tomcat:
|
||
# Public API 单次最多 200 个文件,额外为 metadata 与表单边界预留 Part。
|
||
max-part-count: 205
|
||
|
||
spring:
|
||
profiles:
|
||
active: dev
|
||
lifecycle:
|
||
timeout-per-shutdown-phase: 30s
|
||
datasource:
|
||
#注意:useInformationSchema=true 是必须的,用于支持 MyBatis-Flex 正确读取表注释。
|
||
url: jdbc:mysql://127.0.0.1:33306/easyflow?useInformationSchema=true&characterEncoding=utf-8
|
||
username: root
|
||
password: root
|
||
hikari:
|
||
maximum-pool-size: 12
|
||
minimum-idle: 2
|
||
connection-timeout: 5000
|
||
validation-timeout: 3000
|
||
idle-timeout: 600000
|
||
max-lifetime: 1800000
|
||
flyway:
|
||
enabled: true
|
||
locations: classpath:db/migration/mysql
|
||
baseline-on-migrate: false
|
||
validate-on-migrate: true
|
||
clean-disabled: true
|
||
data:
|
||
redis:
|
||
host: 127.0.0.1
|
||
port: 36379
|
||
database: 0
|
||
password: ${REDIS_PASSWORD:123456}
|
||
timeout: 5s
|
||
servlet:
|
||
multipart:
|
||
max-file-size: 100MB
|
||
# Public API 业务上限为 200 MiB,为 metadata 与 multipart 边界预留空间。
|
||
max-request-size: 220MB
|
||
web:
|
||
resources:
|
||
# 示例:windows【file: C:\easyflow\attachment】 linux【file: /www/easyflow/attachment】
|
||
static-locations: file:/Users/slience/postgraduate/easyflow/attachment
|
||
mvc:
|
||
pathmatch:
|
||
matching-strategy: ant_path_matcher
|
||
# 静态资源路径,用于访问本地文件
|
||
# !!! 注意,这里要和下面的 easyflow.storage.local.prefix 后面的路径 /attachment 保持一致!
|
||
static-path-pattern: /attachment/**
|
||
# quartz 相关配置
|
||
quartz:
|
||
startup-delay: 1
|
||
job-store-type: jdbc
|
||
jdbc:
|
||
platform: mysql
|
||
initialize-schema: never
|
||
properties:
|
||
org:
|
||
quartz:
|
||
scheduler:
|
||
instanceName: easyflowScheduler
|
||
instanceId: AUTO
|
||
jobStore:
|
||
misfireThreshold: 1000
|
||
isClustered: true
|
||
clusterCheckinInterval: 15000
|
||
# 如果数据库大小写敏感,可将ddl里的相关表名改为大写
|
||
tablePrefix: TB_QRTZ_
|
||
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
|
||
threadPool:
|
||
threadCount: 8
|
||
threadPriority: 5
|
||
threads:
|
||
virtual:
|
||
enabled: true
|
||
|
||
easyflow:
|
||
log-record:
|
||
# 普通只读请求不写操作日志;需要审计的读取接口使用 @LogRecord 显式标注
|
||
record-read-actions: false
|
||
retention:
|
||
enabled: true
|
||
days: 90
|
||
batch-size: 5000
|
||
max-batches: 20
|
||
cron: "0 30 2 * * *"
|
||
security:
|
||
account:
|
||
default-reset-password: "!QAZ2wsx"
|
||
multi-login: false
|
||
license:
|
||
location: classpath:easyflow.lic
|
||
chat:
|
||
# SSE 超时时间(毫秒),默认 10 分钟,可按需调整
|
||
sse-timeout-ms: 600000
|
||
cache:
|
||
session-list-ttl: 300s
|
||
session-summary-ttl: 600s
|
||
session-tail-ttl: 1800s
|
||
tail-size: 50
|
||
sync:
|
||
#是否启用分析数据同步,启用分析数据库后,此处应同步开启
|
||
enabled: true
|
||
batch-size: 500
|
||
fixed-delay: 30000
|
||
repair-lookback-days: 3
|
||
retention-months: 3
|
||
mq:
|
||
enabled: true
|
||
type: redis
|
||
redis:
|
||
database: 1
|
||
stream-prefix: easyflow:mq
|
||
consumer-instance-id: ${EASYFLOW_INSTANCE_ID:${HOSTNAME:${random.uuid}}}
|
||
chat-persist-shard-count: 4
|
||
consumer-batch-size: 200
|
||
consumer-block-timeout: 2000ms
|
||
pending-claim-idle: 60000ms
|
||
consumer-failure-initial-backoff: 1s
|
||
consumer-failure-max-backoff: 30s
|
||
consumer-failure-log-interval: 60s
|
||
max-retry: 16
|
||
consumer-executor:
|
||
core-size: 16
|
||
max-size: 32
|
||
queue-capacity: 64
|
||
keep-alive-seconds: 60
|
||
pool:
|
||
max-active: 12
|
||
max-idle: 8
|
||
min-idle: 1
|
||
analytical-db:
|
||
# 是否启用分析数据库
|
||
enabled: true
|
||
url: jdbc:clickhouse://110.42.53.158:38123/easyflow_dev?jdbc_ignore_unsupported_values=true&socket_timeout=30000&compress=false&ssl=false
|
||
username: easyflow
|
||
password: 123456
|
||
driver-class-name: com.clickhouse.jdbc.ClickHouseDriver
|
||
pool:
|
||
max-pool-size: 10
|
||
min-idle: 1
|
||
connection-timeout: 5000
|
||
validation-timeout: 3000
|
||
idle-timeout: 600000
|
||
max-lifetime: 1800000
|
||
flyway:
|
||
analytical-db:
|
||
locations: classpath:db/migration/analyticaldb
|
||
table: flyway_schema_history_analytical_db
|
||
baseline-on-migrate: false
|
||
validate-on-migrate: true
|
||
# 语音播放、识别服务(阿里云)
|
||
audio:
|
||
type: aliAudioService
|
||
ali:
|
||
access-key-id: xxx
|
||
access-key-secret: xxx
|
||
app-key: xxx
|
||
voice: siyue
|
||
agent:
|
||
workspace:
|
||
root: ./agent-workspaces
|
||
max-total-size: 512MB
|
||
max-single-file-size: 100MB
|
||
max-file-count: 2000
|
||
max-read-size: 2MB
|
||
retention: 24h
|
||
cleanup-interval: 30m
|
||
shell:
|
||
default-timeout: 60s
|
||
max-timeout: 300s
|
||
max-command-length: 4096
|
||
max-output-size: 1MB
|
||
max-concurrent-per-instance: 2
|
||
runtime:
|
||
instance-id: ${EASYFLOW_INSTANCE_ID:${HOSTNAME:${random.uuid}}}
|
||
route-ttl: 24h
|
||
command-topic-prefix: easyflow:agent-runtime-command
|
||
command-result-timeout: 5s
|
||
command-result-ttl: 5m
|
||
media:
|
||
platform: minio-agent-media
|
||
max-image-count: 5
|
||
max-image-bytes: 10485760
|
||
max-image-pixels: 40000000
|
||
upload-ttl: 24h
|
||
composer-draft-ttl: 24h
|
||
cleanup-interval: 10m
|
||
login:
|
||
# 放行接口路径
|
||
excludes: /api/v1/auth/**, /static/**, /userCenter/auth/**, /userCenter/public/**
|
||
dev-bypass:
|
||
enabled: true
|
||
account: admin
|
||
loopback-only: true
|
||
storage:
|
||
# local / xFileStorage
|
||
type: xFileStorage
|
||
# 本地文件存储配置(兼容保留,可作为回退)
|
||
local:
|
||
# 示例:windows【C:\easyflow\attachment】 linux【/www/easyflow/attachment】
|
||
root: /Users/slience/postgraduate/easyflow/attachment
|
||
# 后端接口地址,用于拼接完整 url
|
||
prefix: http://localhost:8111/attachment
|
||
ai:
|
||
rag:
|
||
health:
|
||
cache-ttl: 5s
|
||
document-import:
|
||
bulk:
|
||
max-file-count: 2000
|
||
max-total-size: 1GB
|
||
max-file-size: 100MB
|
||
upload-concurrency: 3
|
||
parse-max-running: 2
|
||
split-max-running: 2
|
||
index-max-running: 2
|
||
per-batch-parse-max-running: 2
|
||
pending-dispatch-batch-size: 100
|
||
pending-dispatch-interval: 2s
|
||
pending-redispatch-delay: 5s
|
||
pending-timeout: 24h
|
||
parse-submit-timeout: 120s
|
||
interruption-timeout: 10m
|
||
max-task-attempts: 3
|
||
status-broadcast-channel: easyflow:document-import:status
|
||
parse-monitor:
|
||
fixed-delay: 10000
|
||
initial-delay: 10000
|
||
batch-size: 10
|
||
thread-pool:
|
||
sse:
|
||
core-size: 4
|
||
max-size: 16
|
||
queue-capacity: 2000
|
||
keep-alive-seconds: 30
|
||
allow-core-thread-timeout: true
|
||
document-import:
|
||
core-size: 2
|
||
max-size: 4
|
||
queue-capacity: 200
|
||
keep-alive-seconds: 60
|
||
allow-core-thread-timeout: true
|
||
scheduler:
|
||
pool-size: 4
|
||
|
||
# xFileStorage存储文件配置
|
||
# 文档:https://x-file-storage.xuyanwu.cn/
|
||
dromara:
|
||
x-file-storage:
|
||
default-platform: minio-1
|
||
minio:
|
||
- platform: minio-1
|
||
enable-storage: true
|
||
access-key: easyflowadmin
|
||
secret-key: easyflowadmin123
|
||
end-point: http://127.0.0.1:39000
|
||
bucket-name: easyflow
|
||
# minio 对象对外访问链接
|
||
domain: http://127.0.0.1:39000/easyflow/
|
||
base-path: attachment
|
||
- platform: minio-agent-media
|
||
enable-storage: true
|
||
access-key: easyflowadmin
|
||
secret-key: easyflowadmin123
|
||
end-point: http://127.0.0.1:39000
|
||
bucket-name: easyflow-agent-media
|
||
base-path: agent-chat
|
||
- platform: minio-agent-artifacts
|
||
enable-storage: true
|
||
access-key: easyflowadmin
|
||
secret-key: easyflowadmin123
|
||
end-point: http://127.0.0.1:39000
|
||
bucket-name: easyflow-agent-artifacts
|
||
base-path: published
|
||
|
||
# easy-agents 文档解析统一配置
|
||
easy-agents:
|
||
document:
|
||
ocr:
|
||
provider: mineru
|
||
mineru:
|
||
# 统一文档解析桥接层直接复用 easy-agents 的 provider 配置,不在 easyflow 再复制一套配置体系
|
||
base-url: https://ontoweb.wust.edu.cn/mineru-api
|
||
submit-timeout-ms: 120000
|
||
default-lang-list:
|
||
- ch
|
||
|
||
# 自定义节点相关配置
|
||
node:
|
||
# 文件内容提取节点,默认使用简单文档读取器,可自行实现 ReadDocService
|
||
reader: 'defaultReader'
|
||
# gitee 文档读取的实现,需要配置gitee的appKey
|
||
gitee:
|
||
appKey: 'xxx'
|
||
# 搜索引擎节点 - 目前只支持博查搜索
|
||
bochaai:
|
||
apiKey: 'xxx'
|
||
code-engine:
|
||
python:
|
||
enabled: true
|
||
command: python3
|
||
timeout-ms: 5000
|
||
max-output-bytes: 262144
|
||
working-dir: /tmp
|
||
|
||
jetcache:
|
||
# 缓存类型,可选值:local/remote/both CacheConfig 类初始化
|
||
cacheType: remote
|
||
statIntervalMinutes: 15
|
||
areaInCacheName: false
|
||
local:
|
||
default:
|
||
type: linkedhashmap
|
||
keyConvertor: fastjson
|
||
remote:
|
||
default:
|
||
type: redis
|
||
keyConvertor: fastjson2
|
||
broadcastChannel: easyflow-cache
|
||
valueEncoder: java
|
||
valueDecoder: bean:easyFlowJetCacheValueDecoder
|
||
poolConfig:
|
||
minIdle: 1
|
||
maxIdle: 12
|
||
maxTotal: 32
|
||
host: ${spring.data.redis.host}
|
||
port: ${spring.data.redis.port}
|
||
password: ${spring.data.redis.password}
|
||
database: ${spring.data.redis.database}
|
||
|
||
# 多路召回搜索引擎配置
|
||
rag:
|
||
# 搜索引擎选择,lucene/ES
|
||
engine: lucene
|
||
# 向量数据库配置
|
||
milvus:
|
||
uri: http://127.0.0.1:39530
|
||
databaseName: default
|
||
token:
|
||
username: easyflowadmin
|
||
password: easyflowadmin123
|
||
autoCreateCollection: true
|
||
# 搜索引擎配置
|
||
searcher:
|
||
lucene:
|
||
indexDirPath: /Users/slience/data/easyflow/luceneKnowledge
|
||
elastic:
|
||
host: http://127.0.0.1:39200
|
||
userName: elastic
|
||
password: elastic
|
||
indexName: easyflow
|
||
|
||
logging:
|
||
file:
|
||
path: .logs/
|
||
name: easyflow.log
|
||
level:
|
||
root: info
|
||
tech.easyflow.ai: debug
|
||
io.agentscope.core.model.OpenAIClient: debug
|
||
|
||
# 行为验证码配置
|
||
captcha:
|
||
# 初始化默认资源
|
||
init-default-resource: true
|
||
# 开启二次验证
|
||
secondary:
|
||
enabled: true
|
||
|
||
management:
|
||
endpoint:
|
||
health:
|
||
probes:
|
||
enabled: true
|
||
show-details: always
|
||
endpoints:
|
||
web:
|
||
exposure:
|
||
include: health,info
|