一、更新概述
2025 年 10 月 21 日,TradingAgents-CN 对配置系统进行了全面优化和修复。
本次更新涉及 20+ 个提交,重点解决了配置管理中的多个关键问题,包括:
- 配置测试不真实
- 环境变量无法作为回退配置
- 重载配置与重新验证结果不一致
- 数据库配置管理能力不完整
- API Key 删除后仍显示截断密钥
- Google AI 自定义 base_url 不生效
- 多市场数据架构缺少统一规划
这次更新的核心目标,是让系统配置从“能展示”变成真正“可验证、可追踪、可部署、可扩展”。
二、配置测试功能真实化改造
1. 问题背景
用户反馈,在配置管理页面测试 大模型、数据源、数据库 配置时,无论填写什么内容,系统都会提示测试成功。
排查后发现,原来的配置测试只是模拟等待后返回成功:
- 大模型配置测试:
sleep(1)后返回成功。 - 数据源配置测试:
sleep(0.5)后返回成功。 - 数据库配置测试:
sleep(0.3)后返回成功。
这种“假测试”会严重影响用户判断,导致错误配置在运行时才暴露。
2. 大模型配置测试真实化
本次更新为 OpenAI 兼容 API 实现了真实测试逻辑。
优化内容包括:
- 真实调用 OpenAI 兼容 API。
- 发送测试消息并验证响应。
- 区分不同 HTTP 错误码,例如 401、403、404、500。
- 增强 API Key 验证,可识别截断密钥,例如
sk-xxx...。 - 返回更详细的错误提示,帮助用户定位问题。
测试覆盖场景包括:
| 测试场景 | 结果 |
|---|---|
| 正确 API Base URL + 有效密钥 | 测试成功 |
| 错误 API Base URL | 连接失败 |
| 空 API Base URL | 提示不能为空 |
| 无效 API Key | 提示密钥无效 |
| 截断 API Key | 提示密钥无效 |
3. 数据源配置测试真实化
数据源测试也从模拟返回改为真实调用。
支持的测试包括:
- Tushare:真实调用交易日历接口。
- AKShare:真实调用实时行情接口。
- Yahoo Finance:真实调用股票数据接口。
- Alpha Vantage:验证 API Key 有效性。
- 其他数据源:执行基础端点连接测试。
4. 数据库配置测试真实化
数据库测试也改为真实连接。
支持内容包括:
- MongoDB:真实连接并执行
ping。 - Redis:真实连接并执行
PING。 - MySQL / PostgreSQL / SQLite:查询版本信息。
- 增加认证失败、连接超时、数据库不存在等错误处理。
5. 优化效果
配置测试真实化后,用户可以在配置阶段准确判断配置是否可用:
- 避免错误配置进入运行流程。
- 减少部署后的运行时故障。
- 提升用户对系统配置结果的信任。
- 排查问题时能获得更清晰的错误原因。
三、环境变量回退机制
1. 问题背景
在实际开发和部署中,用户经常需要在 数据库配置 和 .env 文件之间切换。
此前系统缺少统一的回退机制,导致:
- 本地开发时必须在数据库中配置所有密钥。
- Docker 部署时
.env中的环境变量可能不生效。 - 配置来源不清晰。
- 开发环境和生产环境切换不够灵活。
2. 数据库配置环境变量回退
本次更新为数据库配置增加了环境变量回退支持。
支持配置包括:
- MongoDB:
MONGODB_USERNAME、MONGODB_PASSWORD、MONGODB_DATABASE、MONGODB_AUTH_SOURCE - Redis:
REDIS_PASSWORD、REDIS_DB
同时新增了 authSource 参数支持,用于解决 MongoDB 认证场景下常见的连接失败问题。
测试结果中也增加了:
used_env_credentials
用于标识当前测试是否使用了环境变量中的凭据。
3. 数据源配置环境变量回退
数据源 Token 也支持从环境变量读取。
支持项包括:
- Tushare:
TUSHARE_TOKEN - Alpha Vantage:
ALPHA_VANTAGE_API_KEY - FinnHub:
FINNHUB_API_KEY - Polygon:
POLYGON_API_KEY - IEX:
IEX_API_KEY - Quandl:
QUANDL_API_KEY
同时优化了 Token 处理:
- 自动移除
.env中 Token 两侧的引号。 - 检测包含
...的截断 Token。 - 避免将无效 Token 误判为可用配置。
4. 配置优先级
本次明确了配置优先级:
数据库配置 > 环境变量 > 默认值
这意味着:
- 如果数据库中有配置,优先使用数据库配置。
- 如果数据库中没有配置,则自动回退到环境变量。
- 如果两者都没有,再使用系统默认值。
5. 优化效果
环境变量回退机制带来的收益包括:
- 本地开发更方便。
- Docker 部署更灵活。
- 配置管理更统一。
- 可以平滑支持开发环境与生产环境。
- 用户不必重复在多个地方配置相同密钥。
四、配置验证逻辑统一
1. 问题背景
用户发现配置页面中的两个按钮表现不一致:
- 重载配置:从 MongoDB 读取配置并桥接到环境变量,显示配置通过。
- 重新验证:只验证
.env文件中的配置,显示部分配置未配置。
这导致用户无法判断系统到底使用的是哪一份配置。
2. 统一验证逻辑
本次更新统一了配置验证流程。
核心变化是:验证前先调用:
bridge_config_to_env()
确保验证逻辑使用的是最新配置,包括:
.env中的环境变量。- MongoDB 中保存的配置。
- 桥接后的运行时配置。
3. 增强配置验证能力
新增能力包括:
- 区分 环境变量配置 和 MongoDB 配置。
- 验证 MongoDB 中存储的大模型配置。
- 验证 MongoDB 中存储的数据源配置。
- 改为验证 厂家级别配置,而不是单个模型级别配置。
- 只验证已启用的厂家和数据源。
4. 前端展示优化
前端配置页面新增了 MongoDB 配置验证区域,可以显示:
- 大模型厂家配置状态。
- 数据源配置状态。
- 已配置、未配置、已禁用等状态。
- 环境变量警告。
- MongoDB 配置警告。
已禁用的配置会显示为灰色,不影响最终验证结果。
5. 优化效果
配置验证逻辑统一后:
- 重载配置 与 重新验证 的结果保持一致。
- 用户可以清楚知道配置来源。
- 已禁用配置不会误报错误。
- 配置页面反馈更加准确。
五、数据库配置管理完善
1. 问题背景
数据库配置模块此前存在多个问题:
- 缺少完整的编辑能力。
- 缺少连接测试能力。
- 测试连接时密码字段可能丢失。
- MongoDB 测试要求管理员权限,不适合普通部署环境。
- 后端接口不够完整。
2. 后端 API 完善
新增并完善了数据库配置相关 RESTful API:
GET /api/config/database
GET /api/config/database/{db_name}
POST /api/config/database
PUT /api/config/database/{db_name}
DELETE /api/config/database/{db_name}
POST /api/config/database/{db_name}/test
这些接口覆盖了数据库配置的获取、添加、更新、删除和连接测试。
3. 技术改进
本次修复包括:
- 修复
current_user类型错误。 - 从
User对象调整为dict。 - 改进 MongoDB 连接测试,支持非管理员权限测试。
- 测试连接时从数据库读取完整配置,避免密码丢失。
- 增强错误处理和日志记录。
4. 前端 UI 改进
前端侧实现了:
- 数据库配置添加对话框。
- 数据库配置编辑对话框。
- 数据库配置删除能力。
- 数据库连接测试功能。
后续又根据系统安全性考虑,对数据库配置进行收敛:
- 移除数据库配置的“添加”和“删除”功能。
- 将配置名称和类型字段设为只读。
- 避免误删系统核心数据库配置。
5. 优化效果
数据库配置管理更加稳定、安全:
- 用户可以测试真实数据库连接。
- 密码字段不会在测试时丢失。
- 非管理员 MongoDB 用户也能完成连接测试。
- 核心数据库配置不容易被误操作破坏。
六、厂家配置 API Key 管理优化
1. 问题背景
用户在界面删除 API Key 后保存,再次打开页面时,仍然会看到截断后的密钥。
这说明前后端对“截断密钥”“空字符串”“新密钥”的处理逻辑没有区分清楚。
2. 后端处理逻辑
本次更新将 API Key 分为三种情况处理:
# 截断密钥,说明用户没有修改,不更新数据库
if '...' in api_key:
pass
# 空字符串,说明用户主动清空,写入空值
elif api_key == '':
update_data['api_key'] = ''
# 新的完整密钥,正常更新
else:
update_data['api_key'] = api_key
3. 前端提交逻辑
前端也同步调整:
- 截断密钥:代表未修改,提交时删除该字段。
- 空字符串:代表用户主动清空,保留并提交。
- 新密钥:代表用户重新输入,保留并提交。
4. 其他修复
同时修复了:
test_llm_config方法中的.value属性访问错误。provider字段同时兼容枚举和字符串两种类型。
5. 优化效果
API Key 管理更加符合用户预期:
- 不会误把截断密钥写回数据库。
- 用户主动清空密钥时可以真正删除。
- 新密钥可以正常保存。
- 配置测试逻辑更加稳定。
七、Google AI 自定义 base_url 支持
1. 问题背景
此前 Google AI 的 LLM 创建代码没有正确传递 backend_url 参数,导致:
- 数据库中的
default_base_url无法生效。 - 无法使用代理地址。
- 无法使用私有部署的 Google AI API。
- 与 DashScope、DeepSeek、Ollama 等厂商逻辑不一致。
2. 核心实现
本次更新在 ChatGoogleOpenAI 中增加了 base_url 支持。
关键处理逻辑:
- 如果传入的地址以
/v1结尾,自动转换为/v1beta。 - 如果地址以
/v1beta结尾,则提取域名部分。 - 使用
client_options将自定义端点传递给 Google AI SDK。
示例逻辑:
if base_url.endswith('/v1'):
base_url = base_url[:-3] + '/v1beta'
if base_url.endswith('/v1beta'):
api_endpoint = base_url[:-7]
else:
api_endpoint = base_url
kwargs['client_options'] = {'api_endpoint': api_endpoint}
3. 配置优先级
Google AI 的地址优先级如下:
模型配置的 api_base > 厂家配置的 default_base_url > SDK 默认端点
4. 向后兼容
本次实现保持向后兼容:
- 不提供
base_url时,继续使用 Google AI SDK 默认端点。 - 自动将
/v1转换为/v1beta。 - 支持代理和私有部署地址。
- 增加详细日志,便于排查问题。
5. 优化效果
Google AI 配置更加灵活:
- 支持自定义代理地址。
- 支持私有部署 API。
- 与其他 LLM 厂商处理逻辑保持一致。
- 用户在后台配置的
default_base_url可以真正生效。
八、多市场数据架构设计
1. 设计背景
为了支持未来的 港股、美股 等多市场数据接入,系统需要提前设计统一的数据架构。
如果继续在原有结构上堆叠,很容易出现字段不统一、查询困难、迁移成本高等问题。
2. 架构原则
本次确定的设计原则是:
统一标准 + 分开存储 + 统一接口
具体含义:
- 统一字段标准:不同市场使用相同字段名和数据类型。
- 分开存储:每个市场使用独立 MongoDB 集合。
- 统一接口:通过统一 API 访问不同市场数据。
3. MongoDB 集合设计
规划的集合结构包括:
stock_basics_cn # A股基础信息
stock_basics_hk # 港股基础信息
stock_basics_us # 美股基础信息
daily_quotes_cn # A股日线数据
daily_quotes_hk # 港股日线数据
daily_quotes_us # 美股日线数据
4. 基础信息字段标准
统一字段示例:
{
"symbol": "统一代码格式",
"name": "股票名称",
"market": "市场标识(CN/HK/US)",
"list_date": "上市日期",
"industry": "行业分类",
"market_cap": "市值"
}
5. K 线数据字段标准
统一字段示例:
{
"symbol": "股票代码",
"trade_date": "交易日期",
"open": "开盘价",
"high": "最高价",
"low": "最低价",
"close": "收盘价",
"volume": "成交量",
"amount": "成交额"
}
6. 实施路线图
多市场架构规划分为五个阶段:
| 阶段 | 内容 |
|---|---|
| Phase 0 | 设计统一数据标准 |
| Phase 1 | 创建新的多市场集合 |
| Phase 2 | 迁移 A 股数据到新集合 |
| Phase 3 | 实现港股、美股数据接入 |
| Phase 4 | 统一 API 和前端展示 |
7. 架构收益
该设计能带来:
- 跨市场数据结构更统一。
- A 股、港股、美股可以独立存储。
- 查询性能更容易优化。
- 前端和 API 层可以使用统一逻辑。
- 为后续多市场分析打下基础。
九、其他 Bug 修复
1. 前端动态导入模块失败
修复内容:
- 修复前端动态导入模块失败问题。
- 修复 DashScope API 地址错误。
2. MongoDB Docker 部署问题
修复内容:
- 移除
docker-compose.hub.nginx.yml中的初始化脚本挂载。 - MongoDB 通过
MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD自动创建 root 用户。 - 应用使用 admin 用户连接,无需额外初始化脚本。
- 添加 MongoDB 排查工具和文档。
3. Google AI API 测试模型名称错误
修复内容:
- 将测试模型从
gemini-1.5-flash改为gemini-2.0-flash-exp。 gemini-2.0-flash-exp在 v1beta API 中可用。
十、统计数据
提交统计
| 指标 | 数量 |
|---|---|
| 总提交数 | 20+ |
| 修复 Bug | 12 个 |
| 新增功能 | 8 个 |
| 文档更新 | 3 个 |
影响范围
| 类型 | 数量 |
|---|---|
| 后端文件 | 15+ 个 |
| 前端文件 | 8+ 个 |
| 文档文件 | 5+ 个 |
| 测试脚本 | 3+ 个 |
代码变更
| 类型 | 行数 |
|---|---|
| 新增代码 | 约 2000 行 |
| 修改代码 | 约 1500 行 |
| 删除代码 | 约 500 行 |
十一、经验总结
1. 测试功能必须真实化
“假测试”会严重损害用户信任。
配置测试必须做到:
- 真实连接。
- 真实调用。
- 真实验证。
- 返回可理解的错误信息。
2. 环境变量回退非常重要
灵活的配置管理能显著提升开发和部署效率。
推荐配置优先级:
数据库配置 > 环境变量 > 默认值
3. 配置验证必须一致
如果不同按钮验证的数据来源不同,用户会困惑。
因此所有配置验证都应基于同一套最新配置状态。
4. 第三方 SDK 集成要谨慎
不同 SDK 的配置方式并不完全一致。
集成时需要:
- 仔细阅读官方文档。
- 查阅 GitHub Issues。
- 增加详细日志。
- 保持向后兼容。
5. 多市场数据架构要提前规划
支持 A 股、港股、美股 时,必须提前统一字段标准。
否则后续扩展时会面临大量迁移和重构成本。
十二、总结
本次 TradingAgents-CN v1.0.0-preview 更新,是一次围绕配置系统的系统性升级。
核心成果包括:
- 将 大模型、数据源、数据库配置测试 改为真实测试。
- 增加 环境变量回退机制。
- 统一 重载配置 与 重新验证 的逻辑。
- 完善 数据库配置管理 API。
- 优化 API Key 删除与更新逻辑。
- 支持 Google AI 自定义 base_url。
- 设计 A 股、港股、美股多市场数据架构。
- 修复 Docker 部署、前端动态导入、Google AI 测试模型等问题。
整体来看,这次更新显著提升了 TradingAgents-CN 的配置可靠性、部署灵活性和未来扩展能力,也为后续多市场数据支持打下了基础。
✅ 官方唯一渠道:📦 GitHub 仓库:https://github.com/hsliuping/TradingAgents-CN
Aekor AI-API 中转站,让全球顶尖 AI 大模型“触手可及”!你是否曾为这些烦恼头疼?
🔹 人在国内,却总被海外官网 API 的高延迟、掉线、甚至无法访问困扰?
🔹 想用最强的 GPT、Claude 等模型,却卡在海外信用卡、支付审核等重重阻碍?
🔹 官方 API 太贵?Aekor 为你打通“网络-支付-成本”的任督二脉!
💡 Aekor 核心价值:好用、便宜、快 💡
🚀 高速稳定,告别掉线国内专线加速,API 响应低延迟,告别「转圈圈」的焦虑,开发效率瞬间拉满!
🧠 顶尖模型,随需而调涵盖 GPT 系列、Claude 系列等全球主流大厂模型,一次接入,轻松调用!
🎁 免费白嫖,诚意拉满!
注册即送 20 美元体验额度,够你狠狠测试一轮模型质量与线路稳定性了!
🚪 入口:https://api.aekor.com
⚠️ 温馨提示:API 中转市场虽多但良莠不齐(甚至有些会偷工减料换小模型糊弄事儿)。Aekor 坚持提供正版稳定的服务,但还是建议:先用免费的 20 刀测试是否契合自身需求,满意了再小额充值上车,理性消费不盲目。
文章评论