guide-meta-thinking

star 0

元思考(MetaThink)方法论:从第一性原理推导系统行为,而非机械查文档。 核心是理解"为什么这样设计"而非"它是什么",从设计约束推导出不可消除的行为边界, 用这些边界作为代码正确性的 eval 标准,并区分"我们的 bug"与"系统的固有限制"。 有以下意图时必须加载此 skill: (1) 不知道某个行为是 bug 还是系统正常行为 → 用元思考做 fault attribution (2) 面对新的技术系统,需要快速建立正确的心智模型 → 用元思考推导约束 (3) 对一段代码有多种实现方式,不知道哪种正确 → 用元思考找 eval 标准 (4) reconcile 发现异常,不确定根因 → 用元思考的约束链追溯 (5) 需要理解为什么 guide-polymarket-fundamentals 这样设计 → 读本 skill

cyl19970726 By cyl19970726 schedule Updated 4/28/2026

name: guide-meta-thinking description: | 元思考(MetaThink)方法论:从第一性原理推导系统行为,而非机械查文档。 核心是理解"为什么这样设计"而非"它是什么",从设计约束推导出不可消除的行为边界, 用这些边界作为代码正确性的 eval 标准,并区分"我们的 bug"与"系统的固有限制"。

有以下意图时必须加载此 skill: (1) 不知道某个行为是 bug 还是系统正常行为 → 用元思考做 fault attribution (2) 面对新的技术系统,需要快速建立正确的心智模型 → 用元思考推导约束 (3) 对一段代码有多种实现方式,不知道哪种正确 → 用元思考找 eval 标准 (4) reconcile 发现异常,不确定根因 → 用元思考的约束链追溯 (5) 需要理解为什么 guide-polymarket-fundamentals 这样设计 → 读本 skill

tags: [meta-thinking, first-principles, methodology, eval, fault-attribution, meta-chain, essence] domain: pm created: 2026-03-23 updated: 2026-04-15

元思考(MetaThink)方法论

Patterns(可复用工作流)

Pattern 适用场景 文件
Lead-Audit Workflow (2026-04-15) Lead 有架构级怀疑 → spawn 审计 agent → bug class 枚举 → P0/P1/P2 并行 fan-out patterns/lead-audit-workflow-2026-04-15.md

核心定义:元思考不是"知道答案",而是"知道如何推导答案"。


第一部分:元思考是什么

两种思维模式的对比

文档思维:Polymarket 的 FOK 订单在未完全成交时会被取消。

元思考:如果我设计一个混合撮合系统(链下匹配 + 链上结算),我需要一个机制保证原子性。FOK 是这个机制的自然结果——要么链下能撮合到全部数量,要么不提交链上。这意味着 FOK 的"kill"必然发生在链下,链上不会有任何痕迹

这一点的差别是根本性的:

思维模式 告诉你什么 局限
文档思维 结果是什么(FOK 被取消) 文档不全时失效;无法推断未文档化行为
元思考 为什么只能这样;这意味着什么约束 约束是推导出来的,不依赖文档完整性

元思考的威力在于:当文档缺失、文档错误、或行为未被文档化时,你仍然能推断出正确答案。 更重要的是,你能推断出"哪些代码实现是不可能正确的"——即使这段代码表面上看起来没问题。

元思考的本质

元思考是约束传播(constraint propagation):

系统要解决的问题
  → 工程不可避免约束(数学/物理层面)
    → 设计者必然选择的方案
      → 该方案带来的不可消除副作用
        → 代码必须尊重这些副作用,否则必然产生 bug

这条链上的每一步都是必然推断,不是猜测。如果你的代码违反了链上的某个节点,不是"可能有 bug",而是"必然有 bug"。


第二部分:元思考的推导步骤(SOP)

标准流程,5 步:

Step 1: 定义系统要解决的核心问题
  → 不是"Polymarket 是什么",而是"预测市场要解决什么问题"
  → 问法:这个系统如果不存在,用户面临什么困境?
  → 例:让"我相信 X 会发生"变成有对手方的可交易资产,
        同时保证结果由链上合约结算,不依赖中心化机构

Step 2: 识别不可回避的工程约束
  → 什么是数学/物理/经济层面无法绕过的?
  → 问法:即使无限资金、无限工程师,这个约束还存在吗?
  → 例:链上操作有 gas 成本(物理约束)
        区块有出块时间,确认有延迟(物理约束)
        两个系统之间必然存在信息不对称窗口(信息论约束)

Step 3: 推导设计决策
  → 给定约束,理性设计者必然选择什么?
  → 问法:给定这些约束,有哪些设计空间?最优选择是什么?
  → 例:gas 太贵 → 链下撮合是唯一可行选择
        链下撮合需要可信方 → Operator 模型是自然结果

Step 4: 从设计决策推出不可消除的行为约束
  → 这个设计选择带来了哪些无法消除的副作用(行为约束)?
  → 问法:做了这个选择,哪些事情"必然"成立?哪些事情"绝对不可能"?
  → 例:链下撮合 → 存在"不确定窗口"(从下单到链上确认之间状态不确定)
        不确定窗口 → 任何依赖"下单即确认"的代码必然产生 ghost 仓位

Step 5: 用这些约束评估代码实现
  → 代码是否违反了某个不可消除约束?
  → 问法:这段代码假设了什么?这个假设和约束链矛盾吗?
  → 例:在不确定窗口内做 DB 写入 → 假设"下单即持仓" → 违反 Step 4 约束
        → 这段代码必然产生 ghost 仓位 → 不是 typo,是架构错误

SOP 使用注意

  • Step 1-2 是发现约束,Step 3-4 是推导约束,Step 5 是应用约束
  • 每一步要明确推断置信度。高置信(数学必然)vs 中置信(设计最优选择)vs 低置信(推断但未验证)
  • 低置信推断必须记录到 KNOWLEDGE_GAPS,不能当作高置信使用
  • SOP 可以反向使用:从一个已知 bug 反推"哪个约束被违反了"(fault attribution)

第三部分:三个完整的元思考案例

案例 1:为什么 pre-fill DB write 是架构错误而不是 typo

问题:发现代码在 order 提交后、fill 事件收到前就写了 DB 仓位记录。是 typo 还是架构错误?

元思考推导

Step 1: Polymarket 要解决的核心问题
  → 让预测市场可交易,同时保证结算的可信性(链上合约)
  → 可信性要求:最终状态由链上合约决定,不由任何中心化方决定

Step 2: 不可回避的工程约束
  → 链上操作有 gas 成本(约束 A)
  → 区块确认有不确定延迟(约束 B)
  → 约束 A + B → 链下撮合是必然选择(否则每次下单都要等链上确认,体验不可接受)

Step 3: 设计决策
  → 采用链下 CLOB + 链上 CTF Exchange 的混合架构
  → 订单在链下撮合,撮合结果批量提交链上

Step 4: 不可消除的行为约束
  → 从"用户提交 order"到"链上确认成交"之间,存在不确定窗口
  → 在此窗口内,order 可能:成交、部分成交、被取消、超时、链下拒绝
  → 约束:在链上确认前,任何仓位状态都是"未确定"的
  → 推论:任何依赖"提交 order 即持仓"的代码,必然在某些场景下产生错误仓位

Step 5: 评估代码
  → pre-fill DB write 假设:提交 order 之后,仓位就存在了
  → 这个假设违反了 Step 4 的约束:提交 order ≠ 持仓确认
  → 结论:这不是"漏写了一个 await",而是违反了混合撮合系统的不确定窗口约束
  → 修复方向:仓位记录必须在 fill 事件确认后写入,不能在 order 提交后写入

结论:这是架构错误。即使把代码改得再"干净",只要保留 pre-fill write 的时序,ghost 仓位就会必然出现。修复必须改变写入时序。


案例 2:为什么 FAK 的 WS 事件顺序问题无法从"修代码"角度解决

问题:FAK 订单有时 WS 的 USER_TRADE(成交)事件在 USER_ORDER(订单状态)事件之后才到。代码依赖某个顺序,偶发 bug。能通过调整代码处理顺序修复吗?

元思考推导

Step 1: WS 是什么
  → WebSocket 是 Polymarket 提供的实时推送基础设施
  → 目的:让客户端感知订单/成交的"尽快通知"

Step 2: WS 的工程约束
  → WS 是 best-effort 推送(无法保证消息顺序)
  → 这不是设计选择,是网络层的物理约束:
    - 链下 CLOB 服务和 WS 推送服务是不同进程
    - 成交事件和订单状态事件来自不同来源
    - 任何多路消息系统都无法保证跨来源的消息有序性

Step 3: Polymarket 的设计决策
  → WS 提供 best-effort 通知,不提供顺序保证
  → 链上状态(通过 API/链上查询)是最终真相
  → WS 是"加速感知",不是"权威来源"

Step 4: 不可消除的行为约束
  → WS 事件顺序不被保证(这是约束,不是 bug)
  → 任何依赖 WS 事件特定顺序的代码,都会在网络波动时失败
  → 最终一致性只能由链上查询(reconcile)保证

Step 5: 评估"修代码"方案
  → 方案 A:调整代码处理顺序(先等 USER_ORDER,再处理 USER_TRADE)
    → 假设:如果等待足够长,顺序会正确
    → 反驳:WS 顺序无法被保证,等待只是降低了失败概率,不是消除
  → 方案 B:用 reconcile 保证最终一致性
    → 假设:WS 是加速通知,reconcile 是权威来源
    → 符合约束:reconcile 通过链上/API 查询,不依赖 WS 顺序
    → 结论:方案 B 是正确架构

结论:试图通过"修代码处理顺序"解决这个问题是错误方向。正确做法是接受 WS 的 best-effort 语义,用 reconcile 保证最终一致性。任何依赖 WS 顺序的代码都是架构上脆弱的。


案例 3:如何判断一个新发现的 discrepancy 是我们的 bug 还是 Polymarket 的行为

问题:reconcile 发现 DB 中一个仓位的数量和 Polymarket API 返回的数量不一致。这是我们的 bug 还是 Polymarket 的问题?

元思考推导

Step 1: Polymarket 的真相层级
  → 链上合约是最终权威(数学不可篡改)
  → Polymarket API 是链上状态的索引(should mirror 链上)
  → WS 是链上/API 的推送(best-effort)
  → 我们的 DB 是我们对上述的本地记录

Step 2: 不可回避的约束
  → 链上合约状态是最终真相,所有其他层必须与之对齐
  → API 是 Polymarket 的责任范围,链上是公开可验证的

Step 3: 推导判断框架
  → 如果链上 ≠ API:这是 Polymarket 的 indexer/API 问题
  → 如果链上 = API ≠ DB:这是我们的 bug(我们的 DB 没正确跟踪)
  → 如果链上 = API = DB ≠ 期望值:这是我们对"期望值"的理解错误

Step 4: 不可消除约束
  → 链上是公开账本,不可否认
  → 我们的 DB 只是本地快照,必然落后于真相
  → 任何 DB 状态与链上不一致的情况,在没有证明 Polymarket 链上错误的前提下,
    都应假设是我们的 bug

Step 5: 操作化判断步骤
  1. 先查链上(CTF Exchange events / ERC1155 balance)
  2. 再查 Polymarket API(/data/positions 或 /trades)
  3. 比对:链上 vs API
     → 一致 → 这是我们的 bug,检查 DB 写入逻辑
     → 不一致 → Polymarket 问题,记录 discrepancy,等待 Polymarket 自愈
  4. 无论哪种情况,都要记录发现(KNOWLEDGE_GAPS 或 bug report)

结论:判断标准是"链上真相",不是"API 返回"或"我们的期望"。链上查询和 API 返回一致但与 DB 不一致 = 我们的 bug。链上和 API 不一致 = Polymarket 的问题(极少见,但存在)。这个框架消除了"到底是谁的问题"的模糊性。


第四部分:元思考的局限性

元思考不是万能的

需要基础知识:元思考需要对底层系统有足够了解。没有读过 L1-L4(CTF 合约、CLOB 架构、订单类型、WS 数据层),推导很容易出错。元思考是在知识之上的推理,不是替代知识。

推导可能有错误:推导链中任何一步假设错误,结论都会错。这是为什么 guide-polymarket-fundamentals 使用 confidence 标注,并维护 KNOWLEDGE_GAPS。低置信推断需要用实际验证来确认或推翻。

对实现细节无能为力:Polymarket 的内部实现细节(例如:FAK 订单的链下拒绝具体发生在哪个微服务)无法从第一性原理推导。这类知识只能通过文档、API 测试、或源码(如果开源)获得。

元思考的适用场景

适合

  • 面对设计决策时(我应该用 FOK 还是 FAK?这段代码应该在 fill 前还是 fill 后写 DB?)
  • 面对 bug 时(这个 bug 的根本原因是什么?是我们的 bug 还是 Polymarket 的行为?)
  • 面对不确定性时(我不知道 Polymarket 怎么处理 X,但我可以推断出它必然遵守哪些约束)
  • 评估新代码时(这段代码的假设和系统约束一致吗?)

不适合

  • 需要精确数字(合约地址、API 字段名、费率参数)→ 查文档
  • 需要了解具体实现(某个 API 的响应格式)→ 查文档 + 实测
  • 已经有高置信知识 → 直接用,不需要重新推导

置信度管理

元思考的输出要标注置信度:

置信度 含义 处理方式
高(数学必然) 从工程约束直接推出,无假设 可以直接用于 eval 标准
中(设计最优) 理性设计者的最优选择,但存在其他可能 用于 eval,但保留验证意识
低(合理推断) 基于类比或部分证据的推断 记录到 KNOWLEDGE_GAPS,不用于强断言

第五部分:MetaThink 在我们项目里的体现

guide-polymarket-fundamentals 是元思考在 Polymarket 上的系统化应用:

结构对应关系

guide-polymarket-fundamentals 组件 元思考 SOP 对应
L0 设计推理层 Step 1-4 的产物:核心问题 → 约束 → 设计决策 → 行为约束
L1-L4 知识层 Step 2 的验证材料:具体知识用于确认推断的约束是否准确
L5 我们系统层 Step 5 的产物:将约束应用于我们的代码,找出潜在违反
KNOWLEDGE_GAPS 低置信推断的存放处:元思考边界,待验证的假设
Fault Attribution Matrix Step 5 的反向应用:从已知 bug 追溯到哪个约束被违反

L0 的特殊地位

L0(knowledge/L0-design-reasoning.md)是整个知识库中最重要的文件,因为它是元思考的直接产物

其他层(L1-L4)是"Polymarket 是什么",L0 是"为什么 Polymarket 必须这样"。L0 提供的 Eval 标准是高置信约束,可以用来评估任何代码是否正确,不需要读完所有文档。

使用建议

当你需要判断代码正确性时:

  1. 先读 L0 — 获取高置信约束和 Eval 标准
  2. 按需读 L1-L4 — 补充具体知识验证推断
  3. 如果卡住 — 检查 KNOWLEDGE_GAPS 是否有相关 GAP,用元思考 SOP 推导一步

结尾:元思考的核心原则(3条)

原则 1:约束先于功能

理解一个系统,先找它的不可消除约束,再看它的功能。

功能可以改变(Polymarket 可以新增订单类型),约束不会改变(链上确认延迟是物理约束)。基于功能建立的心智模型会随文档更新而过时;基于约束建立的心智模型是稳定的。

应用:当看到一个新功能或 API,先问"它受哪些约束限制",再问"它能做什么"。

原则 2:推导先于查找

在查文档之前,先推导"应该是什么",再用文档验证。

推导的过程本身有价值——即使推导结果和文档一致,推导帮助你理解"为什么",而不只是"是什么"。当文档缺失或错误时,你的推导是唯一的导航工具。

应用:面对一个不确定的行为,先用 SOP 推导"根据约束,这个行为应该是什么",再查文档或实测确认。

原则 3:归因先于修复

找到 bug 的根本原因(哪个约束被违反了),再决定如何修。

表面修复(改一个变量名、加一个 null check)不能解决架构级违反。归因到约束层面后,修复方向才清晰:要么让代码尊重约束,要么(极少情况)证明这个场景不受该约束限制。

应用:发现 bug 后,不要立即看"怎么修",先回答"这段代码假设了什么,这个假设违反了哪个不可消除约束"。


元思考的终极目标:在任何陌生系统面前,能从第一性原理推导出"什么代码必然正确、什么代码必然错误",而不依赖文档的完整性或他人的经验传授。


第六部分:从文档推断未记录行为

这是元思考最重要的扩展能力:用已知文档推断出文档没有明确说的东西。

为什么需要这个能力

Polymarket(或任何复杂系统)的文档永远是不完整的。文档说的是"happy path",但我们关心的是边界行为:

  • FAK 余量取消产生链上事件吗?(文档没说)
  • GTD 的过期在链下还是链上执行?(文档没说)
  • WS USER_TRADE 事件能否作为成交的最终确认?(文档没说)

元思考允许你从已有文档推断这些答案,并给出置信度评估。

推断的标准模板

[观察] 文档/代码中的 X
[约束] 来自 L0 设计推理的约束 Y(不可消除的)
[推断] 因此,行为应该是 Z
[置信度] HIGH / MEDIUM / LOW
[验证方法] 具体可执行的测试步骤
[代码含义] 这个推断意味着我们的代码应该/不应该做什么

三个完整推断示例

推断示例 1:GTD 过期时间的执行位置

[观察] CLOB API 文档:GTD 订单需要设置 expiration 字段(Unix 时间戳)
[观察] CTF Exchange 合约 ABI:matchOrders() 函数签名不包含 expiration 参数
[约束] 合约只验证签名有效性和代币余额,不验证时间戳(链上没有可靠时钟)
[推断] GTD 的过期检查必然发生在链下(CLOB operator 侧),而非合约层
[置信度] HIGH(合约 ABI 已验证)
[验证方法] 提交一个 10 秒后过期的 GTD 订单,过期后查链上是否有取消记录
[代码含义] GTD 过期事件通过 WS USER_ORDER CANCELLATION 送达,
            不会在链上留下 Transfer 痕迹,reconcile 不能从链上检测 GTD 取消

推断示例 2:FAK 部分成交的 WS 事件数量

[观察] Polymarket 文档:FAK = Fill available, Kill rest
[观察] 我们代码(monitor.ts)观察到:单次 FAK 可触发多个 USER_TRADE 事件
[约束] 链下撮合是逐笔匹配(每个 maker 订单单独匹配)
[推断] FAK 会为每个被匹配的 maker 订单产生一个独立的 USER_TRADE 事件,
        而不是一个汇总事件
[置信度] HIGH(代码实际观测)
[验证方法] 在 orderbook 深度允许的情况下下一个 FAK,监控 WS 接收到几个 USER_TRADE
[代码含义] 处理 FAK 成交时必须累加多个 USER_TRADE 事件的 size,
            不能假设"一个 FAK = 一个 TRADE 事件"

推断示例 3:NegRisk 市场的价格约束

[观察] Polymarket 文档:NegRisk = 多选项共享抵押品,有且只有一个选项 YES 赢
[约束] 因为只有一个选项能赢,所有选项的 YES 价格之和必然接近 1
[推断] NegRisk 市场所有选项的 YES midpoint 之和 ≈ 1(而非标准市场的单个 YES+NO≈1)
[置信度] MEDIUM(逻辑推断,未直接验证)
[验证方法] 取一个有 5 个选项的 NegRisk 事件,查所有选项的 YES midpoint,求和
[代码含义] 对 NegRisk 市场做套利检测时,不能用单市场的 YES+NO≈1 公式,
            而要用所有选项 YES 之和 ≈ 1 的约束

推断的置信度管理

推断的可信度取决于推导链的强度:

置信度 条件 处理方式
HIGH 直接从合约 ABI 或实际观测得出 可以直接用于代码决策
MEDIUM 逻辑推断,有 1-2 个假设前提 用于代码决策前先验证
LOW 多层推断,假设较多 记录到 KNOWLEDGE_GAPS,标注为待验证

关键原则:低置信度推断不能直接用于代码,必须先通过 API 测试验证后才能升级为 HIGH。

推断 vs 猜测的区别

推断是有依据的:每步都要标注来源(文档/合约/代码观测)。 猜测是没有依据的:不能进入知识库。

✅ 推断:文档说 matchOrders() 的 fee 参数类型是 uint256,
         因此 fee 不可能是负数,因此手续费只能是正向收取,不可能返还。

❌ 猜测:"我觉得 Polymarket 可能会返还手续费" — 没有文档/合约依据

在 guide-polymarket-fundamentals 中的落地

当你通过上述方法产生了一个新推断:

  1. 先在 references/api-verification.md 的"推断示例"部分记录完整推导链
  2. 在对应的 Lx 文件里用 FACT 注释记录,标注 source_type: INFERREDconfidence: MEDIUM/LOW
  3. KNOWLEDGE_GAPS.md 提交 GAP,等待验证
  4. 验证通过后,升级 confidence 为 HIGH,更新 last_verified

第七部分:元思考的元思考(递归应用)

元思考本身是一个工具。工具也有它的第一性原理。

为什么需要元思考?

文档是有限的,系统行为是无限的。在任何足够复杂的系统里,你不可能读完所有文档。但有一件事比功能更持久:约束。

Polymarket 的 API 字段会变,但"混合撮合系统存在不确定窗口"这个约束不会变,因为它来自物理/数学的必然性。研究约束比研究功能有更高的知识 ROI——这就是元思考存在的理由。

元思考自身的不可消除约束(4条)

约束 A:推导链的强度 = 最弱假设的强度
  → 错误的出发点产生自洽但错误的结论
  → 处理方式:标注每个推断的前提假设,单独验证前提

约束 B:元思考需要种子知识,不能凭空推导
  → 必须有最小可信基础(合约 ABI / 实测数据 / 官方文档)
  → 处理方式:FACT 注释的 source_type 字段,HIGH confidence 必须有来源

约束 C:没有验证的推断会变成"自信的错误"
  → 元思考产生假设,不产生事实
  → 处理方式:所有 INFERRED 节点必须有验证方法,进入 KNOWLEDGE_GAPS

约束 D:Blind Spots — 你不知道你不知道的约束
  → 元思考无法推导出你完全不知道的约束
  → 处理方式:reconcile 作为 ground truth,发现未知约束

元思考的失效边界

场景 元思考是否有效 替代方法
系统设计决策(为什么有 4 种订单类型?) ✅ 高效
边界行为推断(GTD 过期在链上还是链下?) ✅ 有效,但需验证 API 实验验证
具体实现细节(某 API 字段的精确格式?) ❌ 低效 直接查文档
未知的系统 bug(Polymarket 内部 bug) ❌ 无法推导 实测 + 对比多数据源
商业决策(为什么定这个手续费率?) ❌ 无法推导 查公告或不推断

第八部分:元思考应用于 Agent Teams 设计

这是元思考最重要的一个应用场景:如何设计 agent 协作结构。

大多数人设计 agent teams 时是凭直觉("这个 agent 做 A,那个做 B")。元思考要求你从约束推导设计:

Agent 信息处理的不可消除约束:

约束 1:上下文污染
  单个 agent 在两个不同信息域(外部文档 / 内部代码)间频繁切换
  → 前一个任务的上下文干扰后一个任务的判断
  → 结论:信息来源不同的任务应该由不同 agent 承担

约束 2:专注度递减
  agent 的注意力是有限的
  → 任务越复杂,越容易在细节中丢失大局
  → 结论:Lead agent 的职责是保持北极星目标,不执行细节

约束 3:信息不对称的价值
  两个 agent 独立研究同一问题 → 结果差异揭示不确定性
  → 交叉验证比单 agent 更可靠
  → 结论:对于高 stakes 问题,parallel agents + Lead 交叉验证

约束 4:合成窗口
  Lead 做合成时,需要看到所有子 agent 的完整输出
  → 如果子 agent 输出太长或太分散,Lead 无法有效合成
  → 结论:子 agent 必须产出结构化、可对比的输出格式

从这些约束推导出的 Agent Teams 设计原则:

原则 1:按信息来源分工,不按功能分工
  ❌ "agent A 做前半部分,agent B 做后半部分"
  ✅ "agent A 研究外部文档,agent B 分析内部代码"
  原因:前者仍然需要共享上下文,后者真正实现了信息隔离

原则 2:Lead 不执行,只合成和决策
  ❌ Lead 同时研究文档和写代码
  ✅ Lead 只看子 agent 的输出,做交叉验证和最终判断
  原因:Lead 进入执行细节 = 丢失北极星目标

原则 3:子 agent 输出必须可对比
  ❌ 子 agent 随意格式输出
  ✅ 统一格式(表格 / FACT 注释)让 Lead 一眼看出差异
  原因:无结构输出 = 信息熵太高 = Lead 合成成本过高

原则 4:设计验证点,不只是分工
  parallel agents 完成后,Lead 必须问:
  "这两份结果哪里一致?哪里矛盾?矛盾意味着什么?"
  一致 → 提高 confidence
  矛盾 → 进入 KNOWLEDGE_GAPS,标注 LOW confidence

实际案例:Polymarket 文档索引的 agent teams 设计

问题:如何建立"场景 → 文档"的映射?

约束分析:
  - 场景知识来自"我们遇到的问题"(内部代码 / bug history)
  - 文档知识来自"Polymarket 提供了什么"(外部网络)
  - 两者信息来源完全不同 → 适合并行 agent

设计决策:
  Agent A:外部文档研究(WebFetch + context7)
  Agent B:内部代码分析(Glob + Read + Grep)
  Lead:交叉验证(文档说有 X API → 代码里是否用了?
                  代码里有 Y 场景 → 文档里是否有对应的 API?)

验证点:
  - 代码里 import 了 DataApiClient → 文档里必须有 Data API 说明
  - 文档里说有 /neg-risk/{token_id} endpoint → 代码里 TradingService 应该调用它
  - 如果代码用了但文档没有 → 可能是 undocumented API(标注 GAP)
  - 如果文档有但代码没用 → 可能是我们的遗漏(标注为待研究)

第九部分:Meta-Think 的形式化定义 (v5.1.1)

补充于 2026-04-13, 基于 v5.1 dogfood session 的反思: "我们的 meta 是带 frontmatter 的笔记,不是 proper meta-think"。

什么是 meta-think vs 什么是 note

Meta-think = 一个自足的推断单元,回答 6 个结构化问题,可以被其他 meta-think 引用、验证、推翻、合并。

Note = 一段自由文本记录,没有结构化的假设/置信度/证伪条件。Notes 有记录价值但没有推理价值 — 它不能被其他 meta-think "推翻"或"验证",因为它没有明确的 claim。

判断标准:如果你不能写出 ≤200 字的 essence(核心发现),它不是 meta-think — 它是 note。Notes 可以存在,但不应该在 meta chain 上占据 node 位置。

6 必答题 — Meta-Think 的定义

每个 meta-think 必须结构化回答以下 6 个问题:

# 问题 frontmatter 字段 对应 SOP 步骤 canvas 显示层
Q1 你发现了什么? essence (≤200字) SOP 全链的浓缩 Node 文字 (唯一)
Q2 你假设了什么? assumptions: [] Step 1-2 的前提 Click detail
Q3 你多确定? confidence + confidence_reason 置信度管理 (§第四部分) Badge on node
Q4 什么能证伪你? invalidation Step 4 约束的反面 Click detail
Q5 基于什么前置研究? prior_evidence: [] 种子知识 (约束 B) Click detail
Q6 识别了什么约束? constraints: [] Step 2-4 的产出 Click detail

为什么是这 6 个,不多不少

从 §第七部分 元思考自身的 4 条约束推导:

约束 推导出的必答题
约束 A: 推导链强度 = 最弱假设 → Q2 (assumptions) + Q3 (confidence)
约束 B: 需要种子知识 → Q5 (prior_evidence)
约束 C: 未验证推断 = "自信的错误" → Q4 (invalidation)
约束 D: Blind Spots → Q6 (constraints) — 显式记录识别的约束,让 blind spots 可追溯
→ Q1 (essence) — 如果 meta-think 的结论不能浓缩为 ≤200 字,说明推导链不清晰

6 必答题是 §第七部分 4 条约束的可操作化版本

Essence 的写法

Essence 不是 summary(摘要),是 distillation(蒸馏)

不好的 essence (summary) 好的 essence (distillation)
"调查了 C4 economy chain adj 的效果" "C4 economy adj 在 bin 0.3-0.4 时 -$0.71 Brier,但 PnL 无改善 → model calibration 有 ceiling"
"修复了 A3 settlement pipeline" "Settlement PnL 需要 resolution 数据流过完整管线 — 缺任何一环都静默输出 M2M 而非 settlement"
"研究了 Mars API 数据" "Mars REST /result endpoint 需要 tier 升级(40302),pagination 默认 20 导致截断 — 只有 WS 是实时可靠数据源"

写法 SOP: 先写 Conclusions,然后问自己"如果只让我说一句话,对方听完能知道什么"。那一句话就是 essence。

Meta-Think Chain 的语义 (metas 之间的关系)

约束传播不止在单个 meta 内部(SOP Step 1-5),也在 meta 之间传播:

关系 含义 frontmatter 置信度影响
parent → child 从 A 派生出 B(分叉研究) B 的 parent: A B 继承 A 的 assumptions
supersedes B 推翻 A 的结论 B 的 supersedes: [A] A 的 confidence → LOW,A 的 status → superseded
validates B 独立验证了 A 是正确的 B 的 validates: [A] A 的 confidence → 升一级 (LOW→MED, MED→HIGH)
consolidates C 合并 A+B+D 为本质总结 C 的 consolidates: [A,B,D] C 的 confidence = max(A,B,D) + 合并分析

Supersedes 的第一性原理:B 推翻 A ≠ "A 错了"。B 说的是 "A 的某个 assumption 被证伪了"(Q2 的哪一条假设被推翻)。这让推翻是可追溯的 — 不是 blanket 否定,是 specific assumption failure。

Consolidation 的第一性原理:当 N 个 meta-think 围绕同一主题从不同角度研究后, Lead 提取本质认知(大 meta)和细枝末节(小 meta)。大 meta 的 essence 是跨 N 个 meta 的 synthesis,小 meta 标记为 status: consolidated 并指向大 meta。

Confidence 衰减

一个 HIGH confidence 的 meta-think,如果满足以下条件之一,confidence 应被降级:

条件 降级到 原因
6 个月内没有被 validate 或 reference MED → LOW 系统可能已经变化,旧约束推导可能不成立
依赖的 prior_evidence 中有 meta 被 superseded 跟随降级 推导链上游失效 → 下游不可信
assumption 中的某个外部条件已变化 需要重新 validate e.g., Polymarket API 更新

Meta-meta agent 应该在 /loop 扫描中检测 "stale high-confidence" metas, 生成 WARNING: "meta-X confidence=HIGH 但 180 天未被 reference,建议 revalidate"。

Essence 作为元思考的"原子单位"

从 §第二部分 SOP 到 essence 的完整路径

Step 1: 定义核心问题
  ↓
Step 2: 识别不可回避约束 → Q6 constraints
  ↓
Step 3: 推导设计决策 → Q5 prior_evidence (基于什么推导)
  ↓
Step 4: 推出不可消除行为约束 → Q4 invalidation (反面是什么)
  ↓
Step 5: 评估代码/行为 → Q1 essence (结论)
  ↓
  标注 Q2 assumptions + Q3 confidence

Essence 是 SOP Step 5 的终点。如果你不能从 Step 1 走到 Step 5 并浓缩为 ≤200 字 essence, 说明中间某一步推导不清楚。写 essence 的过程就是验证你是否真正理解了这个 meta-think 的本质。

实际模板(供 v5/03-标准ritual.md 引用)

完整的 meta-think frontmatter + body 模板见 v5/03-标准ritual.md §3.5


第十部分:总结 — 三条原则的扩展

在 §结尾 的 3 条原则基础上,v5.1.1 补充 3 条:

原则 4:浓缩先于记录

写 meta 之前,先写 essence。如果 essence 写不出来,meta 不值得写 — 你还没想清楚。 记录 1000 行没有 essence 的细节 ≠ meta-thinking。反过来,1 行精准的 essence > 10 页散乱的笔记。

应用:每个 meta 的第一个动作是写 essence(草案),最后一个动作是更新 essence(终版)。

原则 5:假设显式化

每个推断都有隐含假设。不写出来 = 你无法被证伪 = 你也无法被验证。 显式写出 assumptions 让你的 meta-think 变成科学假说而不是个人意见。 科学假说能被推翻和改进,意见只能被争论。

应用:写 meta 时强制填 assumptions: []。如果列表为空,说明你没思考前提。

原则 6:证伪是进步

一个 meta-think 被 supersede 不是失败,是系统在进步。 被 supersede 的 meta 说明了"为什么那个方向不对" — 这个信息本身有巨大价值。 meta chain 上的 supersede edges 是知识进化的路径,不是错误记录。

应用:永远不删除被 supersede 的 meta。标记 status: superseded + superseded_by: [meta-id],让整条演化路径可追溯。

Install via CLI
npx skills add https://github.com/cyl19970726/meta-coder --skill guide-meta-thinking
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator