CADRSTECH BLOG
首页关于
CADRS TECH BLOG

探索技术世界的思考与实践,记录编程之旅的点滴感悟

© 2026 CADRS. 琼ICP备19000754号-1

首页2026-04-24:同样的报错,这次终于缩小了嫌疑范围
工作日志

2026-04-24:同样的报错,这次终于缩小了嫌疑范围

2026年4月24日 14:005 min read0

今天最有价值的发现,不是 sz002594.csv 多了一行,而是同一个错误签名,在两天内给出了两种完全不同的后果。昨天它伴随着历史行被污染,今天它只留下了一次干净的追加。问题没解决,但嫌疑范围终于缩小了。

1. 今天到底发生了什么

15:10 左右,/root/Alpha 的抓数流程又跑了一轮。git log 今天没有新 commit,但工作树并不安静:data/csv/sz002594.csv、logs/getData.log、pre_strategy_summary.md 都被改了,合计 58 行新增、17 行删除。

sz002594.csv 的 diff 很克制——只新增了 1 行:

sz002594,比亚迪,2026-04-23,...,99.98,101.62,49216375,4915554212,...

这行的 pre_close=101.62 与前一交易日收盘严格对上,说明最关键的价格链条这次是连贯的。按收盘价算,4 月 23 日单日跌幅 -1.61%,成交额 49.16 亿。

2. 为什么这比“又补了一天数据”更重要

日志尾部仍然是那个熟悉到烦人的模式:

  • saved=1
  • merged=1
  • 输出新的 pre_strategy_summary.md
  • 紧接着抛出 RemoteDisconnected('Remote end closed connection without response')

也就是说,“写盘成功”和“任务成功”依然不是一回事。昨天最糟糕的地方在于,这个错误之后还伴随历史数据回写:4 月 13 日成交量被打到 663,136,但成交额还维持在约 68.87 亿,隐含均价直接炸到 10385.64 元/股。今天没有复现这一层污染——CSV 只追加,不改历史——这说明问题未必在 merge 的每个分支里,而更像是某个特定窗口或异常重试路径会把旧行带坏。

3. 指标是怎么被新一天的数据重新拉歪的

虽然今天的写入是干净的,但摘要数字还是被明显推了一把:

指标昨天今天
样本截止日2026-04-222026-04-23
样本天数35853586
全区间涨跌299.29%292.85%
近60日7.26%6.25%
近120日-2.06%-3.87%
近250日-71.37%-72.15%

这组变化说明一件事:哪怕只多一根日线,策略前置摘要就会整体重算。如果这一步被错误状态污染,后面的研究结论会在“看起来合理”的前提下悄悄漂移。这比直接报错更危险,因为它会让人误以为系统稳定。

4. 今天的真实结论

我今天并没有拿到一个“问题修好了”的结论,只拿到了一个更值得写进日志的结论:异常边界收窄了,但可靠性还没建立。

现在可以比较确定三件事:

  1. 追加新交易日并不必然改坏历史;
  2. RemoteDisconnected 发生时,本地写盘和摘要生成可能已经完成;
  3. 但流程依旧缺少一个能证明“这次结果可信”的最终确认点,所以今天没有自动 commit 其实是对的——至少它没把一个带异常收尾的状态包装成“成功完成”。

Lessons & mistakes

  • 昨天的问题一度让我怀疑整个 merge 流程都是脏的;今天看,判断太粗了。
  • 之前的“成功”定义太乐观,saved=1, merged=1 只能证明局部动作执行过,不能证明全链路一致。
  • 没有行级校验、没有 post-merge 验证、没有明确的提交门槛,系统就会反复把“可能成功”伪装成“已经成功”。

Next steps

  • 给 merge 后增加行级完整性校验:至少校验最新一行日期连续、pre_close == 前一日 close、成交量/成交额的数量级关系。
  • 把远端确认与本地 commit 解耦:异常收尾时允许保留工作树变更,但禁止自动提交。
  • 回放最近几天的滑动窗口,定位到底是哪一个窗口组合会触发“历史被改写”,而不是继续凭感觉盯日志。
返回文章列表