Skip to content

[Bug] v0.1.8 中 --version 仍显示 0.1.7,导致误提示有新版本 #156

Description

@chenmofei

问题描述

已安装 v0.1.8,但 vibe-trading --version 显示 0.1.7,且每次运行都提示“有新版本可用,请升级”,形成死循环。

复现步骤

pip install vibe-trading-ai==0.1.8
vibe-trading --version
# 预期输出: 0.1.8
# 实际输出: 0.1.7

验证实际安装版本无误:

pip show vibe-trading-ai | grep Version   # → 0.1.8 ✅

原因定位

v0.1.8 发布时,pyproject.tomlversion 已正确改为 "0.1.8",但 agent/cli.py 中硬编码的 _VERSION = "0.1.7" 忘了同步更新。--version 和升级检测都读取的是这个硬编码常量,而非包元数据。

具体表现:

  • pyproject.toml → version = "0.1.8"(正确)
  • ✅ dist-info 元数据 → 0.1.8(正确)
  • ✅ 依赖已更新(akshare、ccxt、langsmith、mcp 等均为新版)
  • agent/cli.py_VERSION = "0.1.7"(漏改)

main 分支现状

5月21日的 CLI 重构已将单文件 agent/cli.py 拆分为 agent/cli/ 包,并引入 cli/_version.py,通过 importlib.metadata("vibe-trading-ai") 动态读取版本号。但 fallback 常量仍然硬编码了 "0.1.8",下次发布仍然可能漏改。

建议修复方案

_version.py 的 fallback 直接从 pyproject.toml 读取,彻底消除硬编码:

except PackageNotFoundError:
    from pathlib import Path
    import tomllib
    _pyproject = Path(__file__).resolve().parents[2] / "pyproject.toml"
    __version__ = tomllib.loads(_pyproject.read_text())["project"]["version"]

这样 pyproject.toml 是唯一版本号出处,无论走 importlib.metadata 还是 fallback 都不会不同步。tomllib 是 Python 3.11 标准库,无需额外依赖。

影响

  1. --version 输出版本号错误,用户无法确认实际安装版本
  2. 升级检测误判,即使已是最新版仍反复提示升级
  3. 对通过 ClawHub 等渠道安装的用户尤其困扰

环境

  • 安装方式:uv tool install vibe-trading-aipip install 同样可复现)
  • 包版本:0.1.8(dist-info 正确)
  • Python:3.11

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions