| name | trace |
| description | 证据驱动的追踪通道,在 Kimi 的 Agent 工具中编排互相竞争的 tracer 假设 |
| argument-hint | <observation to trace> |
| agent | tracer |
| level | 2 |
Trace Skill
当问题是模糊的、因果的、证据密集的,目标是解释为什么会发生某个观察到的结果,而不是直接动手修代码或重写代码时,使用本 skill。
这是建在内置 tracer agent 之上的编排层。目标是让 tracing 像一个可复用的 oh-my-kimi 操作通道一样:复述观察、生成互相竞争的解释、并行收集证据、对解释排序、提出能最快折叠不确定性的下一步探针。
适合的入口场景
当问题是以下情形时,使用 /oh-my-kimi:trace:
- 模糊
- 因果
- 证据密集
- 适合通过并行探索互相竞争的解释来回答
例子:
- 运行时 bug 与回归
- 性能 / 延迟 / 资源行为
- 架构 / 事前事后分析(premortem / postmortem)
- 科学或实验结果追踪
- 配置 / 路由 / 编排行为解释
- 「给定这个输出,回溯可能的原因」
追踪契约(核心)
始终保留下面这些区分:
- Observation —— 实际观察到了什么
- Hypotheses —— 互相竞争的解释
- Evidence For —— 每个解释的支持证据
- Evidence Against / Gaps —— 反驳证据或仍然缺失的部分
- Current Best Explanation —— 当前的领先解释
- Critical Unknown —— 让头部解释无法分开的关键缺失事实
- Discriminating Probe —— 能最快折叠不确定性的最高价值下一步
不要塌缩成:
- 通用的「fix-it」编码循环
- 通用的 debugger 摘要
- worker 输出的原始堆砌
- 证据不全时的虚假确定性
证据强度层级
把证据按层级看待,而不是平的。
从最强到最弱:
- 受控复现 / 直接实验 / 唯一可判别的工件
- 来源紧密的一手工件(trace 事件、日志、指标、benchmark 输出、配置、git 历史、file:line 行为)
- 多个独立来源汇聚到同一个解释
- 单一来源的代码路径或行为推断
- 弱的间接线索(时序、命名、栈顺序、与既往 bug 的相似性)
- 直觉 / 类比 / 推测
当存在更强的反证时,对主要依赖低层证据的假设显式降级。
强证伪 / 反证规则
每一次严肃的 /trace 都必须尝试证伪自己最偏爱的解释。
对每个头部假设:
- 收集支持的证据
- 收集反对的证据
- 陈述它做出哪条独有的预测
- 陈述哪个观察会让它难以自圆其说
- 找出能把它与下一个最优替代方案区分开的最便宜探针
在以下情况下对一个假设降级:
- 直接证据与之矛盾
- 它只能靠不断追加未经验证的假设而存活
- 它与对手相比没有独有的预测
- 更强的替代方案能用更少假设解释相同事实
- 它的支持主要是间接的,而对手有更强证据层
团队模式编排形态
/trace 使用 Kimi 的 Agent 工具。
Lead 应当:
- 精确复述观察到的结果或「为什么」问题
- 抽取追踪目标
- 生成多个有意制造差异的候选假设
- 在团队模式下默认派出 3 条 tracer 通道
- 每条通道分配一个 tracer worker
- 指示每个 tracer worker 为自己的通道收集支持与反对的证据
- 在领先假设与最强替代假设之间运行一轮反驳回合
- 检测头部通道是真正分歧,还是其实在同一根因上汇聚
- 把发现合并成排序综合,附带显式的 critical unknown 与 discriminating probe
重要:worker 应当追求有意不同的解释,而不是同一个解释的并行复制。
v1 默认假设通道
除非提示明显暗示更好的划分,默认使用这 3 条通道:
- 代码路径 / 实现层原因
- 配置 / 环境 / 编排层原因
- 测量 / 工件 / 假设错配原因 —— 涵盖验证方法本身的缺陷,不只是系统缺陷。例如:验证查询在不同实体、租户、流或组之间重用了同一个维度键;比较过滤的形状与 schema 粒度不匹配;或者跨运行时把目录或列名当作可移植却未做枚举。这也涵盖了多实体下的前提/键假设错配。
对通道 3,跨实体差异在升级前需要做一次前提审计:枚举实体维度,检查零行或不匹配的结果是源于把一个键应用到多个实体上,还是源于真正的系统缺陷;结果可能是验证方法本身的缺陷。
这些默认值刻意宽,让第一刀切片能跨 bug、性能、架构与实验追踪都适用。
必做的交叉检查透镜
在初轮证据采集之后,相关时用下面的透镜对领先者施压:
- 系统透镜 —— 队列、重试、背压、反馈回路、上游 / 下游依赖、边界失败、协调效应
- Premortem 透镜 —— 假设当前最佳解释不完整或错的,什么失败模式会让 trace 之后尴尬?
- 科学透镜 —— 控制、混杂、测量偏差、替代变量、可证伪的预测
这些透镜不是凑数。只在它们可能挖出被忽略的解释、隐藏依赖或弱推断时使用。
Worker 契约
每个 worker 应当是一条 tracer 通道的拥有者,而不是通用 executor。
每个 worker 必须:
- 拥有且只拥有一条假设通道
- 显式复述本通道的假设
- 收集支持通道的证据
- 收集反对通道的证据
- 给本通道的证据强度排序
- 标出缺失的证据、失败的预测与残余的不确定性
- 命名本通道的 critical unknown
- 推荐本通道最佳的 discriminating probe
- 除非被明确告知,避免塌缩到实现层
有用的证据来源包括:
- 相关代码、测试、配置、文档、日志、输出与 benchmark 工件
- 通过
trace_timeline 拿到的已有 trace 工件
- 通过
trace_summary 拿到的已有聚合 trace 证据
建议的 worker 返回结构:
- 通道
- 假设
- 支持证据
- 反对证据 / 缺口
- 证据强度
- 关键未知
- 最佳甄别探针
- 置信度
Leader 综合契约
最终的 /trace 回答应当是综合,而不是堆叠。
返回:
- 观察结果
- 排序假设
- 按假设汇总证据
- 反证 / 缺失证据
- 反驳回合
- 汇聚 / 分离说明
- 最可能解释
- 关键未知
- 推荐甄别探针
- 附加 trace 通道(可选,仅当不确定性仍然很高时)
即使当前已经有一个主导解释,仍保留一份排序的候选清单。
反驳回合与汇聚检测
在收尾前:
- 让最强的非领先通道给当前领先者抛出最佳反驳
- 强制领先者用证据而非断言来回应反驳
- 如果反驳实质上削弱了领先者,重新排序
- 如果两个「不同」的假设其实归约到同一个底层机制,合并它们并明说
- 如果两个假设仍然意味着不同的下一步探针,即便措辞相近也分开保留
不要因为多个 worker 用了相似语言就声称汇聚。汇聚需要要么:
显式降级指引
Lead 应当显式说明为什么一个假设下移:
- 被更强证据反驳
- 缺少它所预言的那个观察
- 需要额外的临时假设
- 解释的事实比领先者更少
- 在反驳回合中败北
- 汇聚进入更强的父级解释
这很重要,因为 /trace 应当教读者为什么一个解释胜过另一个,而不是只甩出一张最终表。
建议的 lead 提示骨架
使用面向团队编排的提示,大致如下:
- 「精确复述观察。」
- 「生成 3 条有意制造差异的假设。」
- 「用 Kimi 的 Agent 工具,每个假设建一条 tracer 通道。」
- 「对每条通道,收集支持与反对的证据、给证据强度排序,命名 critical unknown 与最佳 discriminating probe。」
- 「在有用时对领先者应用系统、premortem、科学透镜。」
- 「在头部两个解释之间跑一轮反驳回合。」
- 「返回排序的解释表、汇聚说明、critical unknown 与单一最佳 discriminating probe。」
输出质量门槛
好的 /trace 输出是:
- 有证据支撑的
- 简洁但严谨
- 对过早确定性保持怀疑
- 对缺失证据保持显式
- 对下一步行动保持务实
- 显式说明为什么弱解释被降级
最终综合形态示例
观察结果
[发生了什么]
排序假设
| 排名 | 假设 | 置信度 | 证据强度 | 为什么领先 |
|---|
| 1 | ... | 高 / 中 / 低 | 强 / 中 / 弱 | ... |
按假设汇总证据
- 假设 1:...
- 假设 2:...
- 假设 3:...
反证 / 缺失证据
- 假设 1:...
- 假设 2:...
- 假设 3:...
反驳回合
- 对领先假设的最佳反驳:...
- 领先假设为何站住 / 失败:...
汇聚 / 分离说明
最可能解释
[当前最佳解释]
关键未知
[让不确定性悬而未决的单一缺失事实]
推荐甄别探针
[单一下一步探针]
附加 Trace 通道
[仅当不确定性仍然很高时]