v0.5.14 — 静默失败清剿 + 分角色模型 + 决策绩效统计
从 v0.4.0 到 v0.5.14 的一次集中修复与增强,全部经过九轮独立代码审计(33 条发现、32 条实测为真)。
修复的静默失败(用户看不出来、但结论已被污染的那类)
- #90 mootdx 反复降级、永不恢复 —— 选服务器只做 TCP 探测是假阳性:实测大量服务器「TCP 握手成功、通达信协议立刻被 RST」,程序挑中后钉进单例,之后每次取数都失败降级且永不重选。现改为必须真取到一根 K 线才采用,失败即弃用重选;候选表从 10 台扩到 38 台、TCP 预筛并发化,全表不可用时报错耗时从 170s 降到 27s;探测不再覆写用户的 mootdx 配置。
- #91 报告输出到一半结束 —— 撞的是输出上限而非上下文。新增
max_tokens配置项,截断时明确告警(覆盖 Anthropic / OpenAI Chat / OpenAI Responses / Gemini 四种形状——openai是默认 provider 且走 Responses API,漏掉它等于告警永不触发)。 - #89 接 Kimi 报 401 —— README 教用户设
ANTHROPIC_AUTH_TOKEN,而本项目从不读该变量。已改正文档,并在缺端点时启动即报错。 - 未来函数 —— AST 扫描 15 个数据接口,发现 3 个收了
curr_date却完全没用:历史日期分析会拿到今天的数据,而报告里完全看不出来。已做时点截断或明确告警;日期判定改用 A 股市场时区(主机在海外时会误判)。 - 非 A 股代码防护 —— 港股
00700/ 美股AAPL曾被当 A 股查询,返回「近30日未上龙虎榜」这类看起来完全正常的空报告。现全部 vendor 方法统一拦截。 - 计费护栏失效 ——
ClaudeSDKError在可选依赖缺失时被占位成Exception,让「订阅凭据失效不得降级到计费 provider」这条护栏彻底失效。 - 裸跑 CLI 被打断 —— 加子命令让 Typer 切换成命令组模式,
tradingagents直接报Missing command,而文档全是裸跑写法。
新增
- 分角色模型
role_llms(#39,可选) —— 给单个角色指定另一家模型,典型用法是让多空辩手用不同厂商:同一个模型分饰两角容易自我附和。默认空表 = 行为完全不变。 - 决策绩效统计
tradingagents performance(#61) —— 读已结算的决策算方向正确率 / alpha / 评级区分度,零 LLM 调用。含「样本 <20 条自动标注为噪音」「明确写明这不是回测」等防误读设计。 - 情绪分析师改为数据驱动 —— 从只有
get_news补上资金流 / 量价 / 强势股榜,并强制报出「资金面与消息面是否背离」。
测试
干净 clone 跑 pytest 从 11 red 变为 369 passed / 13 skipped / 0 failed。
完整清单见 CHANGELOG.md。