🔍 发现的问题 / 原始需求描述
目前的 src/opencode_a2a_server/config.py 采用自定义属性解析,虽然轻量但在环境变量较多(数十个)时缺乏强类型校验和自动元数据支持。
🛠️ 详细实施方案
- 涉及文件:
src/opencode_a2a_server/config.py
- 核心逻辑:
- 引入
pydantic-settings 库。
- 定义
A2AServerSettings(BaseSettings) 类,映射所有 A2A_* 和 OPENCODE_* 环境变量。
- 提供字段校验(如
A2A_PORT 的取值范围、A2A_PUBLIC_URL 的格式校验)。
- 示例代码:
from pydantic_settings import BaseSettings, SettingsConfigDict
class A2AServerSettings(BaseSettings):
a2a_bearer_token: str
a2a_port: int = 8000
model_config = SettingsConfigDict(env_prefix='')
🧪 回归测试建议
- 验证环境变量在迁移前后加载默认值一致。
- 对比迁移后生成的 A2A 配置元数据与
docs/guide.md 是否一致。