问题描述
已安装 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.toml 的 version 已正确改为 "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 标准库,无需额外依赖。
影响
--version 输出版本号错误,用户无法确认实际安装版本
- 升级检测误判,即使已是最新版仍反复提示升级
- 对通过 ClawHub 等渠道安装的用户尤其困扰
环境
- 安装方式:
uv tool install vibe-trading-ai(pip install 同样可复现)
- 包版本:0.1.8(dist-info 正确)
- Python:3.11
问题描述
已安装 v0.1.8,但
vibe-trading --version显示 0.1.7,且每次运行都提示“有新版本可用,请升级”,形成死循环。复现步骤
验证实际安装版本无误:
原因定位
v0.1.8 发布时,
pyproject.toml的version已正确改为"0.1.8",但agent/cli.py中硬编码的_VERSION = "0.1.7"忘了同步更新。--version和升级检测都读取的是这个硬编码常量,而非包元数据。具体表现:
pyproject.toml→ version = "0.1.8"(正确)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读取,彻底消除硬编码:这样
pyproject.toml是唯一版本号出处,无论走importlib.metadata还是 fallback 都不会不同步。tomllib是 Python 3.11 标准库,无需额外依赖。影响
--version输出版本号错误,用户无法确认实际安装版本环境
uv tool install vibe-trading-ai(pip install同样可复现)