{ "Kestrel": { "Endpoints": { "Http": { "Url": "http://localhost:5667", "Protocols": "Http1AndHttp2" } }, "Limits": { "MaxRequestBodySize": 104857600 } }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "Middleware": { "Host": "192.168.1.154", "_doc": "统一中间件地址。切换环境只改这一处(或环境变量 Middleware__Host)。连接串里的 {INFRA_HOST} 启动时自动替换为本值。可选值:本地NUC=192.168.1.154 / 广州tx-vm=114.132.44.45 / 新加坡=43.134.235.58" }, "ConnectionStrings": { "Default": "Host={INFRA_HOST};Port=15432;Username=rag;Password=REPLACE_IN_SECRETS", "MongoDb": "mongodb://appuser:REPLACE_IN_SECRETS@{INFRA_HOST}:17017/im_system?authSource=app", "Redis": "{INFRA_HOST}:16379,password=REPLACE_IN_SECRETS,abortConnect=false" }, "DatabaseNames": { "Rag": "rag", "File": "file_system", "Im": "im_system", "Workflow": "workflow", "Platform": "platform", "Monitoring": "monitoring" }, "Platform": { "BootstrapAdmin": { "Enabled": false, "Username": "admin", "Email": "admin@rag.local", "Password": "" } }, "RabbitMq": { "Host": "{INFRA_HOST}", "Port": 25672, "Username": "rag", "Password": "REPLACE_IN_SECRETS" }, "S3": { "Endpoint": "http://{INFRA_HOST}:39200", "AccessKey": "REPLACE_IN_SECRETS", "SecretKey": "REPLACE_IN_SECRETS", "Region": "us-east-1" }, "KkFileView": { "BaseUrl": "http://localhost:8012" }, "Jwt": { "RequireHttps": false, "SigningKey": "REPLACE_IN_SECRETS_MIN_32_CHARS", "Issuer": "http://localhost:5211", "Audience": "rag-frontend", "AccessTokenMinutes": 240, "RefreshTokenDays": 7 }, "Cookie": { "Secure": false }, "FileService": { "BaseUrl": "http://localhost:8080", "Bucket": "build-flow" }, "OpenTelemetry": { "OtlpEndpoint": "http://localhost:4316" }, "Ai": { "BaseUrl": "http://localhost:1234/v1", "ApiKey": "REPLACE_IN_SECRETS", "ChatModel": "qwen/qwen3.6-27b", "EmbeddingModel": "text-embedding-embeddinggemma-300m", "DefaultInstructions": "你是 BuildFlow AI 助手。普通对话直接回答;当消息明确包含知识库上下文时,优先基于上下文回答。不要输出“作为RAG知识库助手”等身份开场、Markdown标题或推理过程;不要因为普通对话没有上下文就要求用户补充资料。", "MaxTokens": 2000, "Temperature": 0.7 }, "Rag": { "Chat": { "MaxContextMessages": 50, "MaxContextTokens": 8000, "CacheTtlMinutes": 60 }, "Obsidian": { "AllowedRoots": [], "MaxFiles": 10000, "MaxFileBytes": 10485760, "MaxTotalBytes": 536870912 } }, "File": { "SizeVerification": { "PollIntervalSeconds": 60, "StartupDelaySeconds": 15, "BatchSize": 100, "MaxConcurrency": 4 } }, "Workflow": { "Jobs": { "Timer": { "PollIntervalSeconds": 5, "StartupDelaySeconds": 5, "BatchSize": 20, "LeaseSeconds": 60, "MaxAttempts": 5, "RetryDelaySeconds": 30 }, "Import": { "PollIntervalSeconds": 5, "StartupDelaySeconds": 5, "BatchSize": 5, "LeaseSeconds": 300, "MaxAttempts": 5, "RowsPerBatch": 200 } } }, "Monitoring": { "Scheduler": { "PollIntervalSeconds": 60, "StartupDelaySeconds": 15, "MaxConcurrentSystems": 3 } } }