Aekor

Aekor
专注于用户阅读体验的响应式博客主题
  1. 首页
  2. TradingAgents-CN
  3. 正文

TradingAgents-CN 项目优化:Windows 安装器与基本面分析增强(11-1至11-4)

2025-11-04 26347点热度 0人点赞 0条评论

一、升级概览

2025 年 11 月 1 日至 4 日,TradingAgents-CN 完成了一次重要的 跨平台部署 和 基本面分析功能增强 工作。

本次更新通过 22 个提交,实现了 Windows 绿色版便携打包、Windows 安装器、基本面分析总市值数据补充、端口冲突自动检测、LLM 配置热更新、多平台打包支持 等关键功能。

这些改进显著降低了系统使用门槛,也提升了 跨平台兼容性、数据完整性和用户部署体验。

核心改进

  • Windows 绿色版打包:一键启动,无需安装,开箱即用。
  • Windows 安装器:提供标准化安装流程,支持快捷方式和卸载。
  • 基本面分析增强:添加 总市值数据,完善估值指标体系。
  • 端口冲突检测:自动检测并清理占用端口的进程。
  • LLM 配置优化:修复 API Key 更新后不生效 的问题。
  • 多平台打包支持:支持 Windows、Linux、macOS、ARM 等多平台。
  • 数据说明文档完善:补充基本面分析数据结构说明和快速参考。

二、Windows 绿色版便携打包

2.1 问题背景

相关提交:

  • 97201de:添加 Windows 绿色版便携打包 支持。
  • d67167c:打包优化,支持多平台打包。
  • e0ce2bf:排除部分调试目录。
  • 928e108:更新 .gitignore,排除构建产物和临时文件。

许多 Windows 用户希望有一个 免安装、开箱即用 的版本,避免手动安装 Python、MongoDB、Redis 等依赖。

此前存在几个痛点:

  • 安装复杂:需要安装 Python、MongoDB、Redis,并配置环境变量。
  • 环境污染:依赖安装到系统目录,卸载不干净。
  • 便携性差:无法放在 U 盘运行,也不方便迁移到其他电脑。
  • 多版本共存困难:不同版本之间容易互相影响。

2.2 解决方案

本次新增 Windows 绿色版打包脚本,用于自动打包完整运行环境。

# scripts/package_windows_portable.py
class WindowsPortablePackager:
    def package(self):
        """执行打包流程"""
        self._create_directory_structure()
        self._package_python_runtime()
        self._package_dependencies()
        self._package_mongodb()
        self._package_redis()
        self._package_application()
        self._package_frontend()
        self._create_startup_scripts()
        self._generate_config_files()
        self._create_zip_archive()

打包内容包括:

  • Python 嵌入式运行时
  • MongoDB 便携版
  • Redis 便携版
  • 后端应用代码
  • 前端构建产物
  • 启动脚本
  • 停止脚本
  • 默认配置文件
  • 日志与数据目录

2.3 启动脚本

绿色版会生成 start.bat,用于一键启动所有服务。

启动流程包括:

  1. 检查端口占用。
  2. 启动 MongoDB。
  3. 启动 Redis。
  4. 启动后端 FastAPI。
  5. 启动前端服务。
  6. 自动打开浏览器访问系统。

同时生成 stop.bat,用于停止 Python、MongoDB、Redis 等进程。

2.4 .gitignore 优化

为了避免构建产物和运行时数据进入仓库,本次同步优化了 .gitignore。

# 构建产物
dist/
build/
*.egg-info/

# 运行时数据
runtime/
data/mongodb/
data/redis/

# 调试目录
__pycache__/
*.pyc
.pytest_cache/
.coverage

# 临时文件
*.tmp
*.log
*.pid

2.5 实现效果

  • 一键启动,无需安装。
  • 所有依赖打包在一起。
  • 支持 U 盘运行。
  • 多版本可以共存。
  • 卸载只需删除文件夹。
  • 更适合普通 Windows 用户快速体验。

三、Windows 安装器

3.1 问题背景

相关提交:

  • 6c841fa:添加 Windows 安装器脚本。

除了绿色版,部分用户也希望有标准安装程序,提供更接近桌面软件的使用体验。

典型需求包括:

  • 标准安装向导。
  • 注册到系统程序列表。
  • 支持完整卸载。
  • 创建桌面快捷方式。
  • 添加到开始菜单。
  • 后续支持开机自启和系统集成。

3.2 NSIS 安装脚本

本次新增基于 NSIS 的 Windows 安装器脚本。

Name "TradingAgents-CN"
OutFile "TradingAgents-CN-Setup.exe"
InstallDir "$PROGRAMFILES64\TradingAgents-CN"
RequestExecutionLevel admin

安装器会完成:

  • 复制绿色版文件到安装目录。
  • 创建开始菜单快捷方式。
  • 创建桌面快捷方式。
  • 写入卸载程序。
  • 注册到 Windows 程序列表。

卸载时会:

  • 执行停止服务脚本。
  • 删除安装目录。
  • 删除桌面和开始菜单快捷方式。
  • 清理注册表卸载信息。

3.3 安装器构建脚本

新增 scripts/build_installer.py,用于自动构建安装包。

def build_installer():
    """构建 Windows 安装器"""
    nsis_path = Path(r"C:\Program Files (x86)\NSIS\makensis.exe")

    if not nsis_path.exists():
        print("未找到 NSIS,请先安装 NSIS")
        sys.exit(1)

    portable_dir = Path("dist/windows-portable")
    if not portable_dir.exists():
        print("未找到便携版,请先运行 package_windows_portable.py")
        sys.exit(1)

    subprocess.run([str(nsis_path), "scripts/windows_installer.nsi"])

3.4 实现效果

  • 提供标准 Windows 安装程序。
  • 自动创建快捷方式。
  • 注册到系统程序列表。
  • 支持完整卸载。
  • 用户体验更加专业。

四、基本面分析总市值数据补充

4.1 问题背景

相关提交:

  • 564b1d6:在 基本面分析 中添加总市值数据。
  • 39205bc:添加 combined_data 日志,提升调试可见性。
  • e67d839:补充基本面数据说明。

此前基本面分析报告中缺少 总市值 这一关键估值指标。

这会带来几个问题:

  • 估值分析不完整,只包含 PE、PB、PS 等相对估值指标。
  • 缺少绝对估值指标,无法判断公司规模。
  • LLM 无法基于市值判断大盘股、中盘股或小盘股。
  • 提交给大模型的数据不够透明,调试困难。

4.2 总市值数据获取策略

系统新增多层降级策略,优先从实时指标中获取总市值。

# 从 realtime_metrics 提取总市值
if realtime_metrics:
    market_cap = realtime_metrics.get('market_cap')
    if market_cap is not None and market_cap > 0:
        is_realtime = realtime_metrics.get('is_realtime', False)
        realtime_tag = " (实时)" if is_realtime else ""
        metrics["total_mv"] = f"{market_cap:.2f}亿元{realtime_tag}"

如果实时数据不可用,则从 stock_basic_info 获取。

if "total_mv" not in metrics:
    total_mv_static = latest_indicators.get('total_mv')
    if total_mv_static is not None and total_mv_static > 0:
        metrics["total_mv"] = f"{total_mv_static:.2f}亿元"

如果仍不可用,则从 money_cap 换算。

money_cap = latest_indicators.get('money_cap')
if money_cap is not None and money_cap > 0:
    total_mv_yi = money_cap / 10000
    metrics["total_mv"] = f"{total_mv_yi:.2f}亿元"

4.3 报告模板补充总市值

基本面报告模板中新增 总市值 字段。

report_basic = f"""
## 核心财务指标
- **总市值**: {financial_estimates.get('total_mv','N/A')}
- **市盈率(PE)**: {financial_estimates.get('pe','N/A')}
- **市盈率TTM(PE_TTM)**: {financial_estimates.get('pe_ttm','N/A')}
- **市净率(PB)**: {financial_estimates.get('pb','N/A')}
- **净资产收益率(ROE)**: {financial_estimates.get('roe','N/A')}
- **资产负债率**: {financial_estimates.get('debt_ratio','N/A')}
"""

标准版和详细版报告中,也将总市值纳入估值指标。

report_standard = f"""
### 估值指标
- **总市值**: {financial_estimates.get('total_mv','N/A')}
- **市盈率(PE)**: {financial_estimates.get('pe','N/A')}
- **市盈率TTM(PE_TTM)**: {financial_estimates.get('pe_ttm','N/A')}
- **市净率(PB)**: {financial_estimates.get('pb','N/A')}
- **市销率(PS)**: {financial_estimates.get('ps','N/A')}
- **股息收益率**: {financial_estimates.get('dividend_yield','N/A')}
"""

4.4 combined_data 日志

为提升调试可见性,基本面分析师新增完整数据日志。

logger.info(f"[基本面分析师] 统一工具返回完整数据:\n{combined_data}")

这样可以清楚看到提交给大模型的完整基本面数据,便于排查字段缺失或数据异常。

4.5 文档补充

新增两份数据说明文档:

  • docs/analysis/combined_data_structure_analysis.md:详细数据结构分析。
  • docs/analysis/combined_data_quick_reference.md:快速参考指南。

4.6 实现效果

  • 基本面报告包含总市值数据。
  • 大模型可以基于市值进行公司规模分析。
  • 支持多层降级策略,数据获取更可靠。
  • 日志更完整,调试更方便。
  • 基本面数据结构文档更清晰。

五、端口冲突自动检测

5.1 问题背景

相关提交:

  • e047d57:添加 端口冲突检测和自动清理功能。

用户启动服务时,经常遇到端口被占用问题。

常见冲突端口包括:

  • 8000:后端服务。
  • 3000:前端服务。
  • 27017:MongoDB。
  • 6379:Redis。

此前用户需要手动查找占用进程并结束,操作复杂,也容易误操作。

5.2 端口检测脚本

新增 scripts/check_ports.py,用于检测端口占用并显示占用进程。

def check_port(port: int) -> tuple[bool, str]:
    """检查端口是否被占用"""
    for conn in psutil.net_connections():
        if conn.laddr.port == port and conn.status == 'LISTEN':
            process = psutil.Process(conn.pid)
            process_info = f"{process.name()} (PID: {conn.pid})"
            return True, process_info

    return False, ""

同时支持自动结束占用端口的进程。

def kill_process_on_port(port: int) -> bool:
    """结束占用指定端口的进程"""
    for conn in psutil.net_connections():
        if conn.laddr.port == port and conn.status == 'LISTEN':
            process = psutil.Process(conn.pid)
            process.terminate()
            process.wait(timeout=5)
            return True

    return False

5.3 集成到启动脚本

启动脚本中会先执行端口检查。

echo [1/5] 检查端口占用...
python scripts/check_ports.py
if errorlevel 1 (
    echo 端口检查失败,请解决端口占用问题后重试
    pause
    exit /b 1
)

5.4 实现效果

  • 自动检测端口占用。
  • 显示占用进程信息。
  • 支持一键清理占用进程。
  • 提供友好提示。
  • 提升启动成功率。

六、LLM 配置优化

6.1 问题背景

相关提交:

  • 3ddfb80:修复大模型 API Key 更新后不生效 的问题。
  • 49d238f:改进错误提示用户友好性。

此前用户在 Web 后台更新 LLM API Key 后,系统仍然可能使用旧配置,需要重启服务才能生效。

同时,错误提示偏技术化,用户不容易理解如何解决。

6.2 API Key 热更新

系统新增 API Key 缓存与定时刷新机制。

class LLMAdapter:
    def __init__(self):
        self._api_key_cache = None
        self._cache_time = None
        self._cache_ttl = 60

    def get_api_key(self) -> str:
        """获取 API Key,支持热更新"""
        now = time.time()

        if self._api_key_cache and self._cache_time:
            if now - self._cache_time < self._cache_ttl:
                return self._api_key_cache

        api_key = self._load_api_key_from_db()

        self._api_key_cache = api_key
        self._cache_time = now

        return api_key

6.3 用户友好错误提示

新增用户友好异常类。

class UserFriendlyException(Exception):
    """用户友好的异常类"""

    def __init__(self, message: str, suggestion: str = None):
        self.message = message
        self.suggestion = suggestion
        super().__init__(message)

    def to_dict(self) -> dict:
        result = {"error": self.message}
        if self.suggestion:
            result["suggestion"] = self.suggestion
        return result

使用示例:

raise UserFriendlyException(
    message="API Key 无效或已过期",
    suggestion="请在系统设置中更新您的 API Key"
)

6.4 实现效果

  • API Key 更新后 60 秒内自动生效。
  • 无需重启服务。
  • 错误提示更友好。
  • 提供明确解决建议。

七、其他优化

7.1 数据源禁用修复

相关提交:

  • 4e849df:修复某些情况下数据源禁用后的问题。
  • bd842fc:修复数据源优先级和股票筛选功能。

改进内容:

  • 修复数据源禁用后仍然被使用的问题。
  • 优化数据源优先级逻辑。
  • 改进股票筛选功能。

7.2 时区和性能优化

相关提交:

  • b1dde42:修复时区标识和数据同步性能问题。

改进内容:

  • 修复时区标识不一致问题。
  • 优化数据同步性能。
  • 减少不必要的数据库查询。

7.3 前端优化

相关提交:

  • fcd1b59:修复前端 API 调用和界面优化。

改进内容:

  • 修复前端 API 调用问题。
  • 优化界面交互。
  • 改进错误处理。

7.4 多平台打包

相关提交:

  • 8777623:ARM 镜像配置调整。
  • d67167c:打包优化,支持多平台打包。

改进内容:

  • 支持 ARM 架构。
  • 优化 Docker 镜像。
  • 支持 Windows、Linux、macOS 等多平台打包。

7.5 依赖管理

相关提交:

  • 1162072:更新依赖锁定文件和测试代码。
  • 4a78396:添加 runtime/ 到 .gitignore。
  • 860879c:添加 venv/ 到 .gitignore。
  • d5c0773:添加 vendors/ 到 .gitignore。

改进内容:

  • 更新依赖版本。
  • 优化 .gitignore。
  • 排除运行时数据和构建产物。

八、影响范围

8.1 打包脚本

文件说明
scripts/package_windows_portable.pyWindows 绿色版打包
scripts/build_installer.pyWindows 安装器构建
scripts/windows_installer.nsiNSIS 安装脚本
scripts/check_ports.py端口冲突检测
scripts/check_ports.batWindows 批处理版本

8.2 核心代码

文件说明
tradingagents/dataflows/optimized_china_data.py添加总市值数据
tradingagents/agents/analysts/fundamentals_analyst.py添加 combined_data 日志
tradingagents/llm/llm_adapter.pyAPI Key 热更新
app/core/exceptions.py用户友好异常
app/services/data_sources/base.py数据源禁用修复
app/routers/stocks.py前端 API 优化
app/core/config.py时区配置
app/services/historical_data_service.py性能优化

8.3 文档

文件说明
docs/analysis/combined_data_structure_analysis.md数据结构分析
docs/analysis/combined_data_quick_reference.md快速参考
docs/blog/2025-11-01-to-11-04-windows-installer-and-fundamental-analysis-enhancements.md本次更新文档

8.4 配置文件

文件说明
.gitignore排除构建产物和运行时数据
requirements.txt更新依赖
Dockerfile多平台支持

九、验证方法

9.1 Windows 绿色版验证

# 1. 运行打包脚本
python scripts/package_windows_portable.py

# 2. 检查输出目录
dir dist\windows-portable

# 3. 测试启动
cd dist\windows-portable
start.bat

# 4. 访问前端
# http://localhost:3000

9.2 Windows 安装器验证

# 1. 构建安装器
python scripts/build_installer.py

# 2. 运行安装程序
TradingAgents-CN-Setup.exe

验证内容:

  • 桌面快捷方式是否创建。
  • 开始菜单是否创建。
  • 程序列表是否注册。
  • 控制面板卸载是否正常。

9.3 总市值数据验证

curl -X POST http://localhost:8000/api/analysis/fundamental \
  -H "Content-Type: application/json" \
  -d '{"symbol": "000001"}'

检查返回结果中是否包含 总市值 字段。

查看日志:

tail -f logs/app.log | grep "总市值"

9.4 端口冲突检测验证

# 1. 占用测试端口
python -m http.server 8000

# 2. 运行检测脚本
python scripts/check_ports.py

# 3. 选择自动清理
# 输入 y 确认

# 4. 验证端口已释放
netstat -ano | findstr "8000"

9.5 LLM 配置热更新验证

# 1. 在 Web 后台更新 API Key
# 2. 等待 60 秒
# 3. 触发 LLM 调用

curl -X POST http://localhost:8000/api/analysis/news \
  -H "Content-Type: application/json" \
  -d '{"symbol": "000001"}'

# 4. 检查日志
tail -f logs/app.log | grep "API Key"

十、升级指引

10.1 更新代码

git pull origin v1.0.0-preview
pip install -r requirements.txt

10.2 重启服务

Docker 部署:

docker-compose down
docker-compose up -d

本地部署:

停止当前服务后重新启动。

10.3 验证升级

curl http://localhost:8000/health

curl -X POST http://localhost:8000/api/analysis/fundamental \
  -H "Content-Type: application/json" \
  -d '{"symbol": "000001"}'

十一、相关提交

完整 22 个提交记录如下:

提交说明日期
d67167c打包优化,支持多平台打包2025-10-31
8777623ARM 镜像配置调整2025-10-31
49d238f改进错误提示用户友好性2025-11-01
3ddfb80修复大模型 API Key 更新后不生效问题2025-11-01
d5c0773添加 vendors 到 .gitignore2025-11-01
860879c添加 venv 到 .gitignore2025-11-01
4a78396添加 runtime 到 .gitignore2025-11-01
4e849df修复数据源禁用后的问题2025-11-01
5dd32c9合并远程预览分支2025-11-02
928e108更新 .gitignore,排除构建产物和临时文件2025-11-03
3018b04修复 LLM 适配器 API Key 验证和传递问题2025-11-03
b1dde42修复时区标识和数据同步性能问题2025-11-03
bd842fc修复数据源优先级和股票筛选功能2025-11-03
fcd1b59前端 API 调用和界面优化2025-11-03
97201de添加 Windows 绿色版打包支持2025-11-03
1162072更新依赖锁定文件和测试代码2025-11-03
6c841fa添加 Windows 安装器脚本2025-11-03
e0ce2bf排除部分调试目录2025-11-03
e047d57添加端口冲突检测和自动清理功能2025-11-03
39205bc添加 combined_data 日志2025-11-04
564b1d6在基本面分析中添加总市值数据2025-11-04
e67d839基本面数据说明2025-11-04

十二、总结

本次更新通过 22 个提交,完成了 跨平台部署 和 基本面分析功能 的重要增强。

主要成果包括:

  • Windows 绿色版:一键启动、无需安装、开箱即用,支持 U 盘运行。
  • Windows 安装器:提供标准化安装流程和更专业的用户体验。
  • 基本面分析增强:添加 总市值数据,完善估值指标体系。
  • 端口冲突检测:自动检测并清理占用端口,提升启动成功率。
  • LLM 配置优化:API Key 更新后可在 60 秒内自动生效。
  • 多平台支持:支持 Windows、Linux、macOS 和 ARM 架构。
  • 文档完善:补充基本面数据结构说明和快速参考指南。

这些改进显著降低了 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 刀测试是否契合自身需求,满意了再小额充值上车,理性消费不盲目。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: API Key热更新 FastAPI LLM配置优化 MongoDB NSIS安装器 Redis TradingAgents-CN 基本面分析 数据源优先级 股票估值分析 股票分析平台
最后更新:2026-06-28

Aekor

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

使用AI教程

  • API报错解决方案
  • API 基础知识
  • API Key 获取

分类

  • Blog
  • TradingAgents-CN
  • 使用教程

COPYRIGHT © 2026 Aekor. ALL RIGHTS RESERVED.