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 。
亮点与局限
亮点
- 反事实 probe 是真正的因果干预:不是改 embedding 看相似度,而是改 skill 文本看任务能不能跑通;这是从相关性到因果性的一次方法学升级。
- 贝叶斯平滑 + 高召回候选图:把"宁可错杀一千"留给候选图阶段,把"不可误放"留给反事实阶段;两阶段分工清晰。
- 12/12 第一 + 宏平均大幅提升:在 6 个 backbone × 2 benchmark 上全胜,说明方法不挑模型,跨架构可迁移。
- 离线构造、在线透明:不污染下游 agent 的 policy,纯基础设施层升级——这一属性对企业级部署至关重要。
- 保留可解释结构:定性结果显示校准后的边确实抓住了 prerequisites / verification routines / completion steps 等可命名的工作流角色,便于做 agent 行为审计。
局限
- ⚠️ 反事实 probe 的成本:每条候选边都要做 remove / substitute / reorder 三类 probe,规模上去后成本可观;abstract 没给离线构建时间与算力账。
- ⚠️ 先验与阈值的脆弱性:Beta 平滑的 $\alpha, \beta$ 与 state-filter 的 $\tau$ 是 hyper-parameter,对不同 domain 需重新调;跨域迁移成本未量化。
- ⚠️ 6 backbone 名称未公开:abstract 没列具体模型名,是出于 review 盲审还是技术原因?复现性受限。
- state-filter 假设强:把任务 state 当作"能用于 BFS 条件扩展"的显式表示;很多 agent 任务的 state 是隐式的(藏在 context 里),如何对齐?abstract 未明。
- 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)
实际系统怎么用
接入路径(从简单到生产级):
-
轻量接入(直接调用库)
bash pip install caskg # 假设已发包;目前代码在 GitHub,需 git clone若未发包:git clone https://github.com/ZhiyuanLi218/Caskg && pip install -e ./ -
离线建图(以企业内部 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) ```
- 在线检索(嵌入 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 方可填入生产配置。