完善配置密钥治理与启动校验

- 为 configuration.py 增加环境变量占位符解析、配置归一化、脱敏快照与启动校验\n- 在 main.py 启动阶段接入配置校验日志,并在致命缺项时阻止进程继续启动\n- 新增 config.example.yaml,并将默认 config.yaml 改为安全占位模板,移除仓库内明文敏感信息\n- 调整 docker-entrypoint.sh 与文档,统一说明配置复制、环境变量注入与当前优化进展
This commit is contained in:
liuwei
2026-04-30 15:44:53 +08:00
parent cb99e94493
commit c6d72cbb69
8 changed files with 672 additions and 117 deletions

View File

@@ -126,28 +126,49 @@ sudo apt-get install -y fonts-noto-color-emoji fonts-noto-cjk fonts-wqy-microhei
### 1. 配置文件
配置文件位于 `config.yaml`包含以下主要配置项
推荐先复制 `config.example.yaml` 为 `config.yaml`再通过环境变量注入敏感信息
```bash
# Linux / Mac
cp config.example.yaml config.yaml
export ABOT_DB_PASSWORD="你的数据库密码"
export ABOT_LLM_DIFY_WORKFLOW_CHAT_API_KEY="你的 Dify Key"
# Windows PowerShell
Copy-Item config.example.yaml config.yaml
$env:ABOT_DB_PASSWORD="你的数据库密码"
$env:ABOT_LLM_DIFY_WORKFLOW_CHAT_API_KEY="你的 Dify Key"
```
`config.yaml` 现已支持 `${ENV_NAME}` / `${ENV_NAME:默认值}` 两种写法:
- `${ABOT_DB_PASSWORD}`:必须由环境变量提供,否则启动时报错
- `${ABOT_DB_HOST:127.0.0.1}`:若环境变量缺失,则回退默认值
启动时系统会自动执行配置完整性检查,并在日志中输出脱敏后的配置快照。包含以下主要配置项:
#### 数据库配置
```yaml
db_config:
pool_name: "wechat_boot_pool"
pool_size: 10
host: "your-db-host"
user: "your-db-user"
password: "your-db-password"
database: "message_archive"
charset: "utf8mb4"
pool_name: "${ABOT_DB_POOL_NAME:wechat_boot_pool}"
pool_size: "${ABOT_DB_POOL_SIZE:10}"
host: "${ABOT_DB_HOST:127.0.0.1}"
port: "${ABOT_DB_PORT:3306}"
user: "${ABOT_DB_USER:root}"
password: "${ABOT_DB_PASSWORD}"
database: "${ABOT_DB_NAME:message_archive}"
charset: "${ABOT_DB_CHARSET:utf8mb4}"
```
#### Redis配置
```yaml
redis_config:
host: "your-redis-host"
port: 6379
db: 0
host: "${ABOT_REDIS_HOST:127.0.0.1}"
port: "${ABOT_REDIS_PORT:6379}"
password: "${ABOT_REDIS_PASSWORD:}"
db: "${ABOT_REDIS_DB:0}"
decode_responses: true
```
#### ipad 客户端配置
@@ -272,9 +293,9 @@ abot/
### 开发规范
- 遵循PEP 8编码规范
- 添加适当的注释
- 编写单元测试
- 更新文档
- 添加适当的中文注释
- 优先补齐文档与人工验证步骤
- 敏感配置优先使用环境变量注入
## ⚠️ 注意事项
@@ -342,4 +363,4 @@ python -m pip install --upgrade pip
## 🙏 致谢
感谢所有为本项目做出贡献的开发者。
感谢所有为本项目做出贡献的开发者。