01 · PAPER IN ONE PAGEBeike Language and Intelligence · arXiv:2601.21558v2 · first posted 2026-01-29

ASTRA 做了两座数据工厂:MCP graph 产 SFT trajectory,QA graph 产可执行 RL environment

54,885SFT trajectories
6,596RL environments
+17.2914B ACEBench overall
8.5 / 10博客作者个人兴趣程度

它把 cold start、在线 rollout、可执行 mock tool 和调用成本放进同一套训练方案。需要警惕的是:code-executable 只保证代码能跑,不保证 mock tool 对真实世界的描述正确。

来源:Abstract、Sections 1-3、Appendix A01 / 18
02 · PART 0read these terms literally

四个词先分清,否则很容易把 data filter、environment check 和 RL reward 混成一个 judge

MCP server

一组带 JSON schema 和文字说明的 tools。ASTRA 把同一 server 内的 tools 连成 graph。

Trajectory

user、assistant、tool call、tool output 和最终回答组成的一整段交互记录。

Environment

针对一个 QA decomposition 生成的 Python mock tools。每个训练样本彼此隔离。

Online RL

policy 在当前参数下实时 rollout,工具返回结果后继续决策,再用整条轨迹的 reward 更新。

本文的 multi-turn 主要是 Agent 与 tool 之间的交互。持续变化的 user dialogue 还没有进入训练,作者把它列为 future work。
来源:Sections 1、2.1.4、3.1、6
03 · MOTIVATIONwhy another tool-agent training pipeline

训练 tool agent 同时缺两样东西:可扩展的示范轨迹,以及能稳定给 reward 的多步环境

人工成本

人工写任务、tool implementation 与验证规则很慢,难以覆盖大量领域和长链调用。

模拟不等于可验证

让 LLM 直接扮演 environment 时,tool output、state transition 与 reward 都可能漂移。

单一训练阶段

SFT 缺在线反馈;pure RL 又受 base policy 能力限制,弱初始模型很难探索到有效轨迹。

ASTRA 的回答是两阶段:SFT 先建立调用习惯,随后在每个样本独立的 Python environment 里做 multi-turn online RL。

来源:Introduction
04 · SYSTEM MAPSFT branch and RL branch are not the same pipeline
ASTRA 两阶段数据与训练流程
根据 Sections 2-3 与 Figures 2-4 重绘
05 · SFT PIPELINEtool graph → task → rollout → seven scores
ASTRA 官方 SFT trajectory synthesis pipeline
原图:官方仓库 assets/sft-pipeline.png(Apache-2.0),对应论文 Figure 2
06 · SFT CONSTRUCTION1,585 servers · 19,036 tool documents · 41 domains

先限定同一 MCP server,再用 tool transition graph 扩展可能的调用链

1 · FILTER

至少 3 个 tool;说明可执行;schema 能转成 OpenAI function calling。

2 · GRAPH

LLM 先给 task + chain,连续调用形成有向边,再做 length-bounded random walk。

3 · VERIFY

检查后续参数能否由 query 或前面 tool output 支持,也检查 task-chain coherence。

4 · AUGMENT

chain-conditioned 与 server-only 两种 task;改写 diversity、complexity、persona。

5 · ROLLOUT

Qwen-Agent 调真实 MCP 或 stateful emulator;mock call 以 20% 概率注入失败。

54,885conversation samples
580,983messages
4.42tool calls / sample
来源:Sections 2.1.1-2.1.4;Appendix A.1.1
07 · TRAJECTORY FILTERLLM-judged quality, not a hidden executable test

七项分数做算术平均;公开实现遇到 judge 异常时会写入 1.0

QU

query understanding

QP

initial planning

TCU

理解上一条 tool response

TCP

据此安排下一步

TCS

tool call success rate

TC

调用是否必要、无重复

FA

final answer 相关且忠实

if isinstance(result, Exception):
    scores.append(1.0)
else:
    scores.append(result.get("score", 1.0))
这是 fail-open:judge API 失败或字段缺失,默认值反而是满分。论文没有报告多少样本触发了 safe score。
来源:Section 2.1.5;官方 reward.py 与 api_config.py,revision bdf6a46
08 · RL ENVIRONMENT SYNTHESISQA decomposition → executable Python tools
ASTRA 官方 QA-based environment synthesis pipeline
原图:官方仓库 assets/env.png(Apache-2.0),对应论文 Figure 3
09 · ENVIRONMENT CONSTRUCTIONthe checker proves executable self-consistency

每个非叶子 sub-question 被编成一个 Python tool;通过条件只是 stdout 包含目标 answer

QA GRAPH

生成 main QA 与带 dependency 的 sub-QA。

→
4 LLM CHECKS

dependency、atomicity、order、completeness。

→
TOOL SYNTHESIS

tool doc → 增加参数 → call statement → Python code。

→
SANDBOX

运行代码,检查 stdout;失败则重生成。

→
MERGE

同功能 sub-question 合并到一个带更多记录的 tool。

call_ans = get_code_sandbox_ans(final_code)
if call_ans["status"] == "Success":
    if q_a_pairs["answer"] in call_ans["run_result"]["stdout"]:
        is_success = True

这能证明生成代码对目标输入返回目标字符串。它没有外部 database 或真实 API 作为 oracle,也没有验证其他输入是否合理。

来源:Sections 2.2.2-2.2.4;官方 step_04_env_synthesis.py:L288-L295
10 · REAL RELEASED ROWASTRA-RL-1k · train row 0
ASTRA-RL 公开行李额度样本与公开实现不一致
根据 ASTRA-RL-1k train row 0 重绘;dataset revision dbc70e26
11 · TRAJECTORY REWARDcoverage and tool-call economy share one scalar

reward 只看命中了多少 sub-task,以及为此发了多少次 tool call

recall r = n̂ / n  precision p = n̂ / (c + ε)  reward = 2pr / (p + r)

4 / 4,调用 4 次

r = 1,p ≈ 1,F1 ≈ 1。每次调用都解决一个需要的 sub-task。

4 / 4,调用 6 次

r = 1,p ≈ 0.67,F1 ≈ 0.80。答案全了,但两次调用没有增加已解 sub-task。

3 / 4,调用 4 次

r = 0.75,p ≈ 0.75,F1 ≈ 0.75。公开 baggage row 的 payment mismatch 会落在这类边界附近。

示例忽略 ε 的极小修正。n̂ 如何由 sub-QA 命中判定,依赖合成环境的目标字符串。

来源:Section 3.2.2, Equations 29-31;公开样本用于第三个示意
12 · NEGATIVE TOOL CHOICEeasy, medium, and near-miss distractors

每题额外混入三档 irrelevant tools,逼 policy 学会“不要调用”

High similarity > 0.85

近似功能的 near-miss 最难排除。同 domain 候选会先被剔除,以免直接重复。

Medium 0.4-0.85

有部分语义重叠,但不能完成当前 sub-task。

Low similarity < 0.4

明显不相关,提供容易的负例。

论文的 ablation 只给训练曲线:不加 irrelevant tool 最差,随机加 5-9 个优于不加,但低于按相似度分档的完整方案。图中没有表格化终点数值,不应凭图估数。
来源:Section 3.2.2, Equations 24-28;Figure 6
13 · STABLE ONLINE RLfill the batch with groups that carry a gradient

同组 rollout reward 全相同时,GRPO advantage 变成 0;ASTRA 用 buffer 补齐有效样本

ROLLOUT GROUP

同一 query 采样 G 条 trajectory。

→
CHECK VARIANCE

Std(R) > δ 才算 valid,说明组内有可比较的好坏。

→
BUFFER

valid 超过 batch size 时,余下样本留到下一轮。

→
OPTIMIZE

每步凑够 n 个 learning-active samples 再更新。

论文设置

batch = mini-batch = 256,learning rate 2e-6;prompt 25,600 tokens,response 49,152 tokens,最多 32 turns。

目标函数细节

基于 GRPO,省去 KL regularizer 与 entropy bonus,并使用 batch-level token loss averaging。

来源:Sections 3.1-3.2.2;Figures 4-5;Equation 32
14 · EXTERNAL EVALUATIONthree agentic protocols, one reasoning check

三项 agentic benchmark 的重复次数、temperature 和 user simulator 并不相同

Benchmark测什么论文 protocol结果汇总
BFCL-v3 MT多轮 function calling,含 missing function / parameter / long contextvLLM,temperature 0.6四个子项平均为 overall
τ²-Benchagent 与 user simulator 共同控制状态排除 airline;GPT-5.1 user simulator;temperature 0;4 trials报告 pass^1
ACEBenchmulti-turn 与 multi-step tool useagent split 50 题;GPT-4.1 user simulator;temperature 0.6;重复 4 次mean accuracy
AIME 2024/2025非 agentic 数学推理保真temperature 0.6,top-p 0.95;top-k=20 与 -1 各 32 generations两个 pass-rate estimate 再平均

论文没有为 BFCL-MT 报告重复运行或置信区间;ACEBench 50 题即使重复 4 次,仍应谨慎解读小分差。

来源:Sections 3.3.1-3.3.2
15 · STAGE-WISE RESULTSbase → SFT → RL
Qwen3 14B 与 32B 在三项 agentic benchmark 上的阶段变化
根据论文 Table 2 重绘
16 · WHAT THE EXPERIMENTS SHOWlarge gains, incomplete causal isolation

RL 带来最稳定的三榜提升;SFT 有明显 cold-start 收益,也有局部退化

一致的 headline gain

14B:BFCL 44.50→58.13,τ² 44.55→57.70,ACE 51.67→68.96。32B:47.88→64.25,49.70→63.70,59.79→71.88。

SFT 不是单调改善

BFCL Missing Func:14B 39.50→25.50,32B 52.50→40.00;RL 才分别升到 56.00 与 65.50。

AIME 基本保留

两个 decoding 设置下,14B 平均几乎不变;32B 一个设置 -0.05,另一个 +1.00。

F1 reward ablation

recall-only 让 turns 快速增长后训练崩溃;precision-only 让 policy 过早停止,也在后期崩溃。F1 曲线保持稳定。

还不能归因到单一组件

最终系统同时改变 SFT data、RL environment、irrelevant tools、reward 与 batching。论文没有完整 factorial ablation。

来源:Tables 2-4;Figures 6-8;Section 4
17 · RELATED WORKwhere ASTRA actually sits

ASTRA 位于“轨迹合成”和“可执行环境扩展”两条路线的交叉点

路线代表工作主要对象ASTRA 的边界
大规模 tool trajectoryToolLLM、ToolACE、Toucan从 API / MCP inventory 生成调用数据ASTRA 也从 tool docs 起步,但加上同 server transition graph 与第二阶段 online RL。
多轮轨迹生成MAGNET、ToolACE-MT、APIGen-MTgraph、blueprint 或 simulated human-agent dialogueASTRA 的 SFT 分支接近这一类;RL 分支不用固定 golden tool sequence。
数据闭环与 text-to-trajectoryLoopTool、GEM针对 model weakness 迭代数据,或从文本抽取隐含流程ASTRA 的差别在于把 QA decomposition 进一步编译成 Python environment。
Environment scalingEnvScaler、AutoForge、AgentScaler、CuES、GenEnv自动构造 executable environment、validator、task 或 curriculum这是最接近的路线;ASTRA 的组合点是 SFT cold start + isolated QA-derived tools + online GRPO。
来源:Related Work, Sections 5.1-5.2
18 · TAKEAWAYSwhat to keep and what to verify again

值得复用的是训练系统的分层;最需要修的是 validation 的 fail-open 与公开样本一致性

论文已经给出

  • 一套自动生成 SFT trajectory 与 RL environment 的端到端 pipeline。
  • F1 reward 把 sub-task coverage 和 tool-call efficiency 放进同一个标量。
  • 14B / 32B 在三项 agentic benchmark 上都有大幅阶段性提升。
  • 代码公开到 pipeline 级别,并发布两个 1k 数据子集和模型。

仍需单独验证

  • answer-in-stdout 只能证明自洽,不能证明 mock tool 的外部真实性。
  • LLM judge 异常默认 1.0,可能让坏样本通过。
  • 公开 RL row 0 存在同名 tool collision 与目标输出不一致。
  • 公开仓库没有论文完整数据与 RL training scripts;实验也缺多 seed 和完整组件消融。
如果下一篇工作要沿这条路线推进,优先做 fail-closed validation、跨实现一致性测试,以及从 mock environment 到真实 API 的 held-out transfer。
来源:论文全文、官方仓库 bdf6a46、ASTRA-RL-1k dbc70e26