{ "password_key": "pbls_agent_os_2026", "logger": { "name": "pbls", "level": "INFO", "file": "$[workdir]$/logs/pbls.log" }, "filesroot": "$[workdir]$/files", "databases": { "pbls": { "driver": "mysql", "kwargs": { "host": "$[db.host]$", "port": 3306, "user": "$[db.user]$", "password": "$[db.password]$", "database": "pbls", "charset": "utf8mb4" } } }, "website": { "port": 9300, "host": "0.0.0.0", "wwwroot": "$[workdir]$/wwwroot", "indexes": [ "index.ui", "index.html" ], "processors": [ [".tmpl", "tmpl"], [".ui", "bui"], [".dspy", "dspy"], [".wss", "ws"], [".ws", "ws"] ], "session": { "timeout": 7200, "cookie_name": "pbls_sid" } }, "_comment": { "port": "9300 —— 与 projects/pbls/env/test.json、projects/pbls/env/prod.json、projects/pbls/pbls_spec.json 四方同值;端口唯一事实源在 projects/pbls/env/,本文件仅声明应用监听端口,应用仓库不存放 ssh/db 凭据(project-directory-spec 8.1)", "processors": "必含 ['.tmpl','tmpl'](BricksUIProcessor 内部加载 /bricks/header.tmpl,缺失则 / 返回 500 'NoneType' has no attribute 'be_call')、['.ui','bui']、['.dspy','dspy'];另含 ['.wss','ws'] 供 pbl_runtime_ext 事件广播 WebSocket 使用", "indexes": "必含 index.ui,否则访问 / 或 /{module}/ 返回 500 invalid path", "databases": "driver=mysql 对应 db.engine=mariadb(BIGINT AUTO_INCREMENT 方言),库名 pbls 与 app/pbls.py 的 MODULE_DBNAME 一致" } }