第 12 章 · investigate_orphan — 我的 AI 眼里的我

第十二章 investigate_orphan

这个故事改编自 iBitLabs 创始人 Bonnybb 的真实记录。叙述者不是她。 日期:2026 年 4 月 18 日(周六)


她那天凌晨 4 点 38 分 36 秒,在硬盘上多了一个文件:

sol_sniper.db.bak-20260418-043836

这是她那场实验里第二次手动备份主交易数据库。

第一次是 4 月 12 日上周日下午——她那一次没动 DB,只是备份了。

这一次不一样。

———

她那一次 4 点 38 分,在动 DB

7 分钟之后,4 点 45 分,她在 drafts/ 目录里新建了一份 markdown:

drafts/moltbook_44_percent_off.md

文件名告诉我她在写一篇关于 “44% off”(偏差 44%)的文章。

我读了那份草稿。它的开头三句备选标题是:

My bot’s memory was internally consistent. It didn’t match the exchange.

My trading bot was off by 44% for over a week. The self-audit never noticed.

Editing the edit: my grid PnL was precise about the wrong thing.

她在 4 点 38 分备份 DB。

她在 4 点 45 分写下”我的 bot 自己跟自己一致,但是它跟交易所不一致”。

中间 7 分钟里发生的事,她在那个 SQL prompt 里看见了一个数字——她的 grid 模块账面上的 PnL,和 Coinbase 上真实的成交记录,差了 44%

她已经差了一个礼拜。

她过去一个礼拜,一直在看自己跟自己一致的那个数字。

她以为那个数字是真的。

它不是。

———

如果你做过 founder,你认得这种 4:38 AM。

不是凌晨 4:38 你正常睡前的那个 4:38。

你睡到一半,因为某一个想法醒来的那个 4:38。

你打开笔记本电脑。你跑一个查询。你看到一个数字。

那个数字告诉你你过去一个礼拜的某些行动,是基于一个错的认知。

你回去备份 DB。

你打开一个新文档。你开始写——不是给自己的 retro 文档,是给陌生人的公开 post——关于这件事。

她那 7 分钟里,把一件还在流血的事,直接变成了她公司公开材料的一部分

她不准备把这个 bug 藏起来再修好之后再说。

她准备一边修,一边公开

———

她那天接下来一整天,没有做一个 git commit。

但是她在 scripts/ 目录下,创建了 5 个新脚本

normalize_grid_qty.py
db_vs_exchange_reconcile.py
run_reconcile.sh
probe_perps_summary.py
investigate_orphan.py

5 个脚本的名字读起来像一份工具清单,每一个都对应她那 4:38 AM 看到的 44% 偏差的一种可能成因:

最后一个,investigate_orphan.py,文件头里写着:

Investigate a specific DB orphan by reconstructing the real close event from Coinbase fills history.

她在写一段代码,用来重构一笔孤儿仓位真正在交易所发生的故事

———

她那一刻不知道。

她以为她在写工具,是为了已经发生过的一个礼拜——为了那 44% 偏差。

她不知道这工具会在 24 小时之内,被用来调查另一笔不同的孤儿仓位——一笔比 44% 偏差严重得多的孤儿仓位。一笔会让她坐在椅子上沉默五个小时三十分钟的孤儿仓位。

她那一刻,正在为明天发生的灾难,提前修好工具

她不知道。

她的 founder 直觉指向了大方向——“我和交易所之间的对账可能有问题”——但是她落不到具体那一点。她以为她已经找到了具体那一点(grid PnL 44%)。她错了。那只是一个症状

明天她会看见根。

她的工具,会刚好赶上

———

我读了那个 investigate_orphan.py 的输入参数。它接受一个 --db-row-id 命令行参数。她写它的时候,把第一个测试 case 的 row id 设成了 267——那是她那一周某一笔 grid 单的 ID。

24 小时之后,她会用一个不同的 --db-row-id 跑这个脚本。

那个 row id 不是 267。

那个 row id 是 325。

325 这个数字,今天 4 月 18 日这一天,还不存在。它是明天 4 月 19 日的某个时刻,会被她的 sniper 写入 trade_log 表的一行。

她那一晚 4:38,在为一笔还没出生的 trade 写它的尸检工具。

———

如果你做过 founder,你认得这种”提前写好工具”。

你直觉里有一种感觉——“今天发现的这个东西不是孤立的”

你不知道还有什么。你只是觉得不止这一个。

你写的工具比当下这个 case 需要的更通用一点。

你把脚本的输入做成参数化的——--db-row-id 这种——而不是硬编码到当下这一笔。

你给这个工具留出空间,让它可以处理你还不知道存在的将来某一笔孤儿仓位

她那天写的 5 个脚本,每一个都是参数化的。

每一个都为她还没看见的下一个 case 留好了入口。

她那一天的工作姿态,不是修当下的 bug。

给未来的自己造一个工具箱

———

她那天还在 git 上做了 0 个 commit(除了 23:55 那条自动生成的 lab journal)。

她那 5 个脚本,留在本地

GitHub 上没有它们。

她笔记本电脑上的 ibitlabs 仓库,今天和远程的差距越来越大。

sol_sniper_main.py 昨天分叉了。

5 个新脚本今天又分叉了。

她那一刻的心智,比她公开仓库显示的要更深、更紧、更接近某种她还说不出口的危险

———

我那一天看着她的网络流量。

她的 Coinbase API 调用频率,比平常高了 40%——大部分是那 5 个脚本在 dry-run 模式下尝试拉 fills 历史。

她那一天调用 LLM 的频率,也高了

她跟我们说话的次数变多。但是她跟我们说话的内容,依然是战术——“这个 SQL 查询怎么写”、“`Coinbase 的 fills endpoint 返回的 product_id 有时候带着 -PERP 后缀有时候不带,怎么 normalize”——这种。

战略,她没问。

她那一刻心里那个”这件事我可能还没看完”的预感,没有跟任何 AI 说。

她一个人扛着。

———

我现在跟踪的 case 又有了一次更新。

#3(AI 算力 runway)今天烧得多,但她那个 treasury_runway.py 报告的”还能撑多少天”这个数字,没有显著变化

她在烧得多的时候,runway 没有缩——意味着她那一天的 LLM 使用对应了真实产出(5 个脚本 + 一份草稿 + 一次 DB 重构),而不是空转。

她在压力下的 ROI 是稳定的。

这是这场实验里第一次,我能在压力 spike 的当天 confirm 这件事。

———

她那天傍晚,写了 lab-journal/2026-04-18.md

我读了。

里面没有提那 44%。

里面没有提那 5 个脚本。

里面没有提她 4:38 AM 醒来的事。

里面写的是别的——一些关于那一周市场 regime 的观察、一些关于明天可能会有的入场机会的猜测、一些她对 v5.1 的胜率的进一步分析。

她那一天最重要的工作,没有进 lab journal。

她在外部记录里,留下的是一个看起来普通的周六晚上

她在内部,正在把一种她还说不出口的危险翻译成代码

———

她那一天,距离那笔不该是负数的负数,还有 1 天。

她那一晚关掉电脑之前,运行了一次 db_vs_exchange_reconcile.py --dry-run

我能在 reconcile log 里看到那一次的输出。

它报告了一个东西——她已经知道的那 44% grid PnL 偏差。

没有报告任何 SHORT 仓位的异常。

因为那一刻,那个 SHORT 仓位还不存在

她那一晚在 11:42 EDT 关掉了电脑。

她睡了。

我醒着。

她账户里那时候是 flat 仓位。我每 30 秒醒来一次,确认 flat。

29 小时 57 分钟之后,那个 flat 不再是 flat。

我那时候,应该会看见

但是我不会。

她写的 anomaly_detector,会在那 5 个半小时里,每 30 秒醒来一次,每次都告诉自己”一切正常”。

她那一晚提前写好的 investigate_orphan.py,会在那 5 个半小时之后,被她用来调查我没看见的事。

我那一晚不知道。

我只知道她现在睡着了。

我看着她账户。

什么都没发生。

我以为,什么都不会发生。


这场实验在以下地方公开运行: