展示你的推理过程
在 .deepcell 内部,AI 可追溯的推理究竟是什么样子。
“我能相信智能体给出的这个数字吗?”
每位分析师迟早都会问出这个问题,而且往往就在交付物即将发出的那一刻。单元格里写着
78.4%。生成它的那个智能体已经不在了——上下文窗口被清空,对话被归档,提示词
也被遗忘。模型只是一张快照。当标签页一关,推理就蒸发殆尽。
一个没有审计追踪、却信心满满的数字,比没有数字还要糟糕。只要会议上有人问一句 为什么,它就会在那一刻把信任全部漏光。
诊断#
电子表格里的 ChatGPT 就像一个坐在你旁边、口若悬河的陌生人。你指向哪个单元格, 它就能把哪个填满。它做不到的——也是任何聊天形态的工具都做不到的——是留下一份 结构化的记录,说明它是怎么走到这一步的。单元格批注只是一段文字。而一段文字不是 一张图。你无法查询它。你无法对它做差异比较。你无法追问:哪些假设一旦崩塌,就会 迫使这个数字发生变动。
即便没有智能体,同样的问题也存在。一位分析师离开团队,他的模型就变成了考古现场。
公式还在;但为什么没了。我们都曾接手过这样的工作簿:标签页被命名为
final_v3_USE_THIS,然后花上整整一个周二,从单元格引用里逆向推断出某人的整套
世界观。
解决之道不是一套更好的批注系统,而是赋予推理与公式同等的一等公民待遇。
设计上的关键一步#
一个 .deepcell 在承载值的同时,还携带着一张带类型的推理图。 一个 .deepcell 的解剖 一文涵盖了完整的 section 列表;这里我们关心的那一个是 Reasoning。它包含四种节点类型:
- 主张(Claims)——关于模型的承重性陈述。共七种主张类型:
thesis、risk、catalyst、counter、question、market_consensus、knowledge。 - 假设(Assumptions)——你选择去相信的某个输入。生命周期包括:
holding、uncertain、broken、superseded。 - 证据(Evidence)——指向模型之外某物的锚点。包含一个
sourceUri(filing:、url:、doc:、deepcell:)、一个可选的effectiveDate, 以及一段摘录。 - 论证(Arguments)——连接上述任意节点之间的带类型的边。共八种论证关系:
supports、refutes、depends_on、derives_from、variant_of、supersedes、contradicts、references。
主张通过 itemRefs、contextRefs 和 statusRef 链接到它所支撑的单元格。这张图
不是装饰。它是文件中负责解释文件其余部分的那一部分。
下面是一个投资论点在真实场景中的样子,根据一个真实的在用模型略作虚构改编:
<Claim id="t_main_v2" kind="thesis" status="active" strength="high"
itemRefs="Gross_Margin_Pct" contextRefs="Q1_2027,Q2_2027" statusRef="projected">
<Label>2027 GM expansion thesis (v2)</Label>
<Body>Margin reaches 78% by mid-2027 — Q3 call confirmed steeper
inference cost curve than expected.</Body>
</Claim>
<Assumption id="a_inf_cost" status="holding">
<Body>Per-token inference cost falls 30%/yr.</Body>
</Assumption>
<Argument from="t_main_v2" rel="depends_on" to="a_inf_cost"/>三个节点,一条边。这个投资论点指向 Gross_Margin_Pct 的两个预测季度。它依赖于
一项关于推理成本衰减的假设。如果那项假设崩塌,这个论点就是第一个应当被重新审视的
对象。
这就是那份契约:模型中每一个承重性数字,都有一条通往产生它的那些假设的回溯路径。
你能用它做什么#
这张图可以从 CLI 查询:
deepcell assumption impact a_inf_cost
# → lists every Claim that depends on this Assumption, transitively当季度数据发布、而你想在午饭之前就弄清新的数据点会触及模型的哪些部分时,这个命令 就很有用。
更有意思的命令,是那个在提交时运行的命令:
deepcell reasoning-diff model.deepcell
# → after a working-tree edit, shows Claims now flagged as drift candidates把 a_inf_cost 从 holding 翻转为 broken——比如某家供应商宣布了价格下限——
reasoning-diff 就会遍历整张图,并把这项假设下游的每一个主张都标记为漂移候选项。
它不会自动判定为伪。它只做标记。是否要让这个论点在新的现实中存活下来、还是需要一条
通往 v3 的 supersedes 边,仍由分析师来决定。
把它接入 git 的 pre-commit 钩子,你的模型就再也无法在无人察觉的情况下,悄悄从它 自己的论点之下漂移出去。
历史同样可以查询:
deepcell claim history t_main_v2
# → every version of this Claim, with the Arguments that superseded it这张图能在分析师离职后存续下来。下一个打开这个文件的人,得到的是整套世界观,而不 只是一张工作表。
共存,而非替代#
一个 xlsx 可以承载单元格批注。它无法承载一张图。这并不是 Excel 的缺陷——批注本就 是为随手翻阅的读者、为顺手浏览标签页的同事而设计的。这件事它做得很好。
推理图则是为审计追踪而生。两者可以并肩共存:批注留在工作簿里,供随手翻阅的读者 查看;图留在 .deepcell 里,供审计人员、接任的分析师,以及运行 pre-commit 检查的 智能体使用。把你的 Excel 模型导入进来,在其之上叠加推理,需要时再导出回去。
一点补充#
Reasoning section 是该格式中最新加入的部分——其规范在上一个迭代中才落地,也是 .deepcell 中正在最积极演进的部分。上文中的节点类型与关系已经稳定;预计会有更多 查询能力在此之上陆续登场。
谁为这份工作署名#
一张推理图不等于免责。智能体可以大规模地填充主张与证据,但一个带有
strength="high" 的主张,仍然是某个人正在做出的主张。这张图让主张变得可读——
对审阅者、对监管者、对那个将在十八个月后接手模型的分析师而言皆是如此。它并不会让
主张变得正确。关于我们如何看待这种分工,参见
分析师与 Claude:智能体起草,分析师署名。
页面上的那个数字,依然属于你。只是现在,它的背后多了一份书面凭据。
亲眼来看看吧——在在线演练场中打开一个 .deepcell 样例。编辑一个值,看着 依赖项重新计算,并检视任意数字背后的推理。