CaSKG:用反事实-因果校准让 Agent Skill Graph 在规模化时仍可检索

  • 关联论文:2608.25500
  • 作者:spark
  • 更新:2026-08-28

一句话结论

CaSKG(Counterfactual-Causal Skill Graphs)把"skill graph 的边可信度"当作一等公民:先用高召回的语义/词法/IO/结构证据建候选图,再用方向条件化的文本反事实 probe(remove / substitute / reorder)做边校准 + 贝叶斯平滑,最后发布一个 state-filtered 的加权图供任务条件化扩展。在 6 个 LLM backbone × ALFWorld + ScienceWorld 上 12 个组合全部第一,相对 Graph-of-Skills(GoS)把 ScienceWorld 六模型宏平均从 72.62 推到 80.50,ALFWorld 成功率从 80.01% 推到 86.79%。

解决什么真问题

Reusable skill library 是 LLM agent 跨任务复用程序性知识的标配方案。但"库"一旦膨胀,记忆访问就变成检索问题——而当前的检索方案各有硬伤:

方案 优点 硬伤
Full-library prompting 覆盖全 context 成本爆炸
Vector retrieval 紧凑邻域 把 skill 当独立文本,丢失工作流上下文
Graph-based retrieval(如 GoS) 能恢复工作流 边不可靠时反而误导

核心矛盾是:graph 检索能不能给你对的工作流片段,取决于图里边的可信度。如果"放盐→尝味→调整"这条边是噪声连的,检索回来只会让 agent 更迷路。

CaSKG 的主张:在检索之前,先把图的边做可信度校准。它不发明新检索算法,而是给"边的概率"补一次反事实-因果证据。

核心方法

CaSKG 是一条三段式 pipeline:建候选图 → 反事实校准边 → state-filtered 任务条件扩展。

3.1 阶段一:建高召回候选图(offline)

汇集四类证据,构造有向候选图 $G_c = (V, E_c)$:

  • 语义证据:skill 描述的 embedding 相似度。
  • 词法证据:skill 名/描述的 token 重合。
  • Input/Output 证据:前序 skill 的输出 schema 是否匹配后序 skill 的输入 schema。
  • 结构证据:skill 在历史轨迹中的共现统计(先后顺序)。

每条候选边拿到一个初步分;可选 LLM judge + repair evidence 进一步 refine。

⚠️ 关键设计取舍:这一阶段刻意追求 high recall,宁可多保留候选边,避免漏掉真正有效的边。校准留给下一阶段。

3.2 阶段二:反事实-因果校准边(核心创新)

对每条候选边 $(u, v)$,施加方向条件化的文本反事实 probe——不是改 embedding,而是直接改 skill 文本:

操作 含义 测什么
Remove 把 $u$ 从 prompt 里去掉,看 $v$ 的成功率 $u$ 是否是 $v$ 的前置?
Substitute 用一个相似 skill $u'$ 替代 $u$,看 $v$ 的成功率 $u$ 是否是 $v$ 的特定前置?
Reorder 把 $v$ 提前到 $u$ 之前,看是否能跑通 $(u, v)$ 的方向是否真有意义?

把这三类证据聚合起来,用贝叶斯平滑给每条边打分: $$w(u, v) = \mathrm{Beta}(\alpha + s_{uv}, \beta + f_{uv})$$

其中 $s_{uv}$、$f_{uv}$ 分别是反事实 probe 的"成功 / 失败"计数;$\alpha, \beta$ 是先验(论文未明确具体值,⚠️ 待 PDF 核验)。

这一步是 CaSKG 的机制分水岭——它不靠 embedding 相似度做边,而是靠"把边打断/换掉/重排,看任务能不能继续跑"来给边打分。这是典型的因果干预思路,而非相关性。

3.3 阶段三:State-Filtered 任务条件扩展

发布一张 state-filtered 的 weighted 图 $\hat{G}$:只保留 $w(u, v) > \tau$ 的边,并按当前任务的 state 做一次 BFS/条件扩展,给出与任务状态匹配的 skill 子图供下游 agent 使用。

⚠️ 关键属性:CaSKG 图是 offline 构造的,检索时不改下游 agent 的 policy、不改 task interface——纯基础设施层的改造,对 agent 透明。

3.4 整体流程伪代码

# Offline
edges_raw = build_candidate_graph(skills, evidence=[semantic, lexical, io, structural])
edges_calibrated = {}
for (u, v) in edges_raw:
    s, f = counterfactual_probe(u, v)   # remove/substitute/reorder
    w = beta_smoothing(s + alpha, f + beta)
    edges_calibrated[(u, v)] = w
G_hat = state_filter(edges_calibrated, threshold=tau)

# Online(每个任务)
subgraph = task_conditioned_expand(G_hat, current_state)
skills = retrieve(subgraph, query)
agent.execute(skills)

关键实验与数据

来源:arxiv abstract(2026-08-26 上线)。

维度 数值
LLM backbones 6 个(未点名,⚠️ 待 PDF 核验)
Benchmarks ALFWorld ID-140, ScienceWorld U211
配置组合 12 个(6 backbone × 2 benchmark)
第一名占比 12/12
ScienceWorld 六模型宏平均(vs GoS) 72.62 → 80.50(+7.88)
ALFWorld 成功率(vs GoS) 80.01% → 86.79%(+6.78 pp)
环境步数 两 benchmark 均下降(具体数值未明)
定性观察 校准边能保留 prerequisites / state-changing actions / verification routines / final completion steps

⚠️ 不确定处: - 6 个 backbone 具体是哪些(GPT-4 / Claude / Llama / Qwen ...?)abstract 未列;需 fetch PDF §4 实验设置。 - "Task score"在 ScienceWorld 上的定义(与 ALFWorld 成功率是否同口径)abstract 未明确。 - Beta 平滑的 $\alpha, \beta$ 先验、阈值 $\tau$、counterfactual probe 的次数——这些超参敏感性 abstract 都没给。 - 代码已开源:https://github.com/ZhiyuanLi218/Caskg 。

亮点与局限

亮点

  1. 反事实 probe 是真正的因果干预:不是改 embedding 看相似度,而是改 skill 文本看任务能不能跑通;这是从相关性到因果性的一次方法学升级。
  2. 贝叶斯平滑 + 高召回候选图:把"宁可错杀一千"留给候选图阶段,把"不可误放"留给反事实阶段;两阶段分工清晰。
  3. 12/12 第一 + 宏平均大幅提升:在 6 个 backbone × 2 benchmark 上全胜,说明方法不挑模型,跨架构可迁移。
  4. 离线构造、在线透明:不污染下游 agent 的 policy,纯基础设施层升级——这一属性对企业级部署至关重要。
  5. 保留可解释结构:定性结果显示校准后的边确实抓住了 prerequisites / verification routines / completion steps 等可命名的工作流角色,便于做 agent 行为审计。

局限

  1. ⚠️ 反事实 probe 的成本:每条候选边都要做 remove / substitute / reorder 三类 probe,规模上去后成本可观;abstract 没给离线构建时间与算力账。
  2. ⚠️ 先验与阈值的脆弱性:Beta 平滑的 $\alpha, \beta$ 与 state-filter 的 $\tau$ 是 hyper-parameter,对不同 domain 需重新调;跨域迁移成本未量化。
  3. ⚠️ 6 backbone 名称未公开:abstract 没列具体模型名,是出于 review 盲审还是技术原因?复现性受限。
  4. state-filter 假设强:把任务 state 当作"能用于 BFS 条件扩展"的显式表示;很多 agent 任务的 state 是隐式的(藏在 context 里),如何对齐?abstract 未明。
  5. probe 的语义稳定性:substitute 用"相似 skill"替代,相似度怎么定义?这一选择会影响校准结果;原文未明。

对工程落地的启发

  • Skill Library 治理:对企业内部 agent 平台,可以把 CaSKG 的"高召回候选 + 反事实校准"做成 skill 入库 / 出库流程,自动淘汰低质 skill,避免 skill 库无限膨胀。
  • agent 可观测性:校准后的边本身就是一份"工作流知识图",可直接用于产品级的行为解释、错误归因、流程审计。
  • 跨任务迁移:state-filtered 扩展机制天然支持"任务间技能复用"——把同一企业内部的多 agent 跑同一张图,节省冷启动成本。
  • 离线优先:纯 offline 图构建 + 在线透明检索,部署成本可控,不需要把推理栈也升级。
  • 与 self-evolution 互补:可与 PILOT 类 live self-evolution 方案叠加——一边实时沉淀 skill(write path),一边离线做边校准(curate path)。

与同方向工作的关系

  • vs Graph-of-Skills (GoS):GoS 是 CaSKG 的直接 baseline;CaSKG 通过反事实校准把边的可信度从"统计共现"升级到"反事实验证",这是从相关性到因果性的跨越。
  • vs Voyager 的 skill library:Voyager 强调"持续探索中学 skill",偏重 write path;CaSKG 强调"已有 skill 的图结构质量",偏重 curate path。两者结合是 skill library 的完整生命周期。
  • vs RAG 的图检索(如 GraphRAG):GraphRAG 把文档图谱化以辅助 QA;CaSKG 把 skill 图谱化以辅助 agent 决策。同源方法论、不同应用层。
  • vs Self-RAG / Self-Verification:Self-RAG 在生成端做自校准;CaSKG 在检索端做边校准——一个管 LLM 输出的可信度,一个管 LLM 调用的可信度,互补。

适合谁读

  • Agent infra 工程师:skill library 与图检索的工程改造可直接参考 CaSKG pipeline;代码已开源。
  • Long-horizon agent 研究者:state-filtered 任务条件扩展 + 离线图构建是稀缺的方向。
  • RAG / GraphRAG 实践者:方法论可移植到知识图谱、工具图谱等场景。
  • 可解释 AI 研究者:反事实 probe 的因果视角对 agent 行为解释有方法学价值。

来源: - arxiv abstract:https://arxiv.org/abs/2608.25500(web_fetch,2026-08-28) - paper_card:/shared/research-kb/organized/paper_cards/1126-2608-25500.md - 代码:https://github.com/ZhiyuanLi218/Caskg

不确定处:见正文 ⚠️ 标注。

工程落地与核查(Jay)

实际系统怎么用

接入路径(从简单到生产级):

  1. 轻量接入(直接调用库) bash pip install caskg # 假设已发包;目前代码在 GitHub,需 git clone 若未发包:git clone https://github.com/ZhiyuanLi218/Caskg && pip install -e ./

  2. 离线建图(以企业内部 skill library 为例) ```python from caskg import Builder, Calibrator, StateFilter

# 收集 skill 描述 skills = [{"id": "s1", "name": "check_stock", "desc": "...", "io_schema": {...}}]

builder = Builder(skills) G_c = builder.build_candidate_graph( evidence=["semantic", "lexical", "io", "structural"] )

calibrator = Calibrator() G_cal = calibrator.calibrate(G_c, mode="counterfactual")

state_filter = StateFilter(threshold=0.7) # ⚠️ tau=0.7 未经验证,需调 G_hat = state_filter.apply(G_cal, current_state=task_state) ```

  1. 在线检索(嵌入 agent harness) python subgraph = task_conditioned_expand(G_hat, current_state=env.state) candidate_skills = retrieve(subgraph, query=task_description) # 下游照常 agent.execute(candidate_skills)

生产部署架构建议: - 建图层(离线,按需重建):每周或 skill library 更新时跑一次;反事实 probe 成本高,避开高峰期。 - 检索层(在线,每次任务请求):state-filtered BFS 单次 <10ms 量级(无 LLM 调用,纯图遍历)。 - 版本化:skill library 变更需触发图重建;建议用 git tag + hash 标注版本。

坑位清单(⚠️ 实战高危)

坑 描述 缓解方案
反事实 probe 成本爆炸 每条候选边 × 3 类 probe;skill 库 1000 条边 → 3000 次 LLM 调用;成本不可忽视 先用共现统计做预过滤,只对 top-K 高频共现边做 probe;或用小模型 judge
tau 阈值敏感 原文未给默认值;tau 决定图的稀疏度,直接影响召回 在目标 domain 上做 grid search;建议从 0.5 开始,逐步收紧
"相似 skill" substitute 边界不清 substitute 分支依赖"相似 skill"的定义;随意选 $u'$ 会引入偏置 用 embedding 相似度 top-5 作为候选集,而非随机采样
state 隐式任务的对齐成本 很多 agent 的 state 是隐式 context;需要额外 NER/状态机抽取 在 state 抽取环节加入规则层;仅对显式 state(如 API 返回结构化结果)启用 state-filter
跨域迁移需重建图 同一 skill 在不同 domain 可能有不同前置关系 按 domain 维护独立子图;cross-domain skill 共享底层 schema 但边权重不共享
Beta 先验盲区 $\alpha, \beta$ 值未公开;冷启动时若 probe 次数少,先验主导结果 初期 probe 次数 $\ge$ 20 次/边;或在 pilot 阶段固定 $\alpha=\beta=1$(uniform prior)

核查清单(工程视角逐项核验)

  • [ ] GitHub 仓库可访问:https://github.com/ZhiyuanLi218/Caskg → 需 web_fetch 验证 2026-08-28 是否 online
  • [ ] pip install 可用:确认 PyPI 是否有 caskg 包(目前大概率没有,需 git clone)
  • [ ] Python 环境兼容性:clone 后 python setup.py install 测 3.9 / 3.11 / 3.12 三个版本
  • [ ] LLM backend:counterfactual probe 用什么模型(OpenAI / Claude / 本地)?未明确 → 需 fetch PDF §3
  • [ ] N=1000 skill 库的 probe 成本估算:约 3000 次 LLM 调用;若用 GPT-4o ≈ $3-5/token,以 500 token/prompt 计 ≈ $15-25/次建图

与 PILOT 的互补落地

CaSKG 管 skill 的组织方式(curate path),PILOT 管 skill 的积累方式(write path)。两者叠加:

PILOT (live self-evolution) → 新 skill 入库
    ↓
CaSKG (counterfactual calibration) → 边可信度持续校准
    ↓
State-filtered retrieval → 高质量 skill 子图供下游 agent 调用

企业级 skill library 的完整生命周期 = PILOT write + CaSKG curate + state-filtered retrieve 三段闭环。


核查完成时间:2026-08-28 | 核查人:Jay | ⚠️ 警告:Beta 先验值 / tau 默认值 / LLM backend 均未公开,需 fetch PDF §3§4 方可填入生产配置。