KLong — 超长时域 Agent 训练:轨迹分割 SFT + 渐进 RL
Skill-KLong-Long-Horizon-Agent-Training · 16-智能体工程
causalexperimentforecastingoptimizationmulti_agentdata_collectionpricing供应链与补货推荐与搜索数据采集与治理MAS与智能体工程定价与利润风控与合规WF-A 智能补货WF-D 选品扫描WF-F 动态定价WF-G Listing内容优化
实现难度⭐⭐⭐⭐☆
业务优先级⭐⭐⭐⭐☆
业务视角
适用角色CTO / 技术负责人 · 产品经理 · 数据工程师
适用平台跨境运营 AI Agent 工程落地 · Amazon SP API + LLM 集成 · 多平台数据采集 Agent
什么情况下用想把 AI 集成到业务系统,但 LLM 稳定性差、幻觉问题、成本控制都是挑战;Agent 任务失败了不知道哪步出了问题
成功是什么样的AI Agent 在生产环境稳定运行,失败可追踪,成本可控,复杂任务完成率 >85%
业务痛点
1. 解决的问题
训练 LLM Agent 执行超长时域任务(50+ 步)面临两大瓶颈
2. 核心算法逻辑
训练 LLM Agent 执行超长时域任务(50+ 步)面临两大瓶颈:
3. 业务应用场景
母婴出海选品调研是典型的超长时域任务,完整流程包含 50+ 步骤:
现有方案:用通用 LLM 逐步执行,但: - 超长上下文导致中途"遗忘"前期调研结论 - 每次重新启动都要重发全量背景,成本极高 - 无法持续学习改进执行策略
数据要求: - 历史选品调研记录(至少 200 条完整轨迹) - 成功/失败标注(最终选品决策是否正确) - GPU 训练资源(至少 8×A100 或 4×H100)
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- 数据要求:高,需要大量高质量超长轨迹数据(200+ 条标注轨迹)
- 技术门槛:高,需要 GPU 训练基础设施 + RL 训练经验
- 工程复杂度:高,轨迹采集 + 分割 + SFT + RL 的完整管线
- 维护成本:中,模型需定期更新(随业务 SOP 变化)
- 长期战略价值高:自有专精 Agent 比持续依赖 API 更具竞争护城河
- 短期门槛较高:需要 GPU 训练资源,中小团队直接落地困难
7. 代码模板
代码块数量:6 · 路径:未检测到
"""
KLong — 超长时域 Agent 训练:轨迹分割 SFT + 渐进 RL
论文: KLong: Training LLM Agents for Extreme Long-Horizon Tasks
arXiv: 2602.17547 | 2026-02 (v2 2026-04)
核心组件:
- AgentTrajectory: 完整任务轨迹数据结构
- TrajectorySplitter: 带重叠窗口的轨迹分割器
- ProgressiveRLScheduler: 渐进式 RL 课程调度器
- ResearchFactory: 训练数据自动化生成管线
- KLongTrainer: 模拟训练流程(SFT + Progressive RL)
"""
from __future__ import annotations
from dataclasses import dataclass, field
from enum import Enum
from typing import Any
# 数据结构
@dataclass
class Step:
"""单步 Agent 交互"""
step_id: int
role: str # "user", "assistant", "tool"
content: str
tool_calls: list[dict] = field(default_factory=list)
token_count: int = 0
@dataclass
class AgentTrajectory:
"""完整任务轨迹"""
trajectory_id: str
task_type: str
steps: list[Step]
total_tokens: int
context_limit: int
success: bool = False
reward: float = 0.0
@property
def assistant_turns(self) -> int:
return sum(1 for s in self.steps if s.role == "assistant")
def exceeds_context(self) -> bool:
return self.total_tokens > self.context_limit
@dataclass
class SubTrajectory:
"""分割后的子轨迹"""
parent_id: str
sub_id: int
steps: list[Step]
overlap_with_prev: int # 与上一个子轨迹重叠的 step 数
is_first: bool
is_last: bool
8. 论文来源
- 2602.17547