Train efficient planners for long-horizon agent tasks using homologous consensus filtering to generate synthetic plans from strong LLMs and rule-based RL with executor capability rewards. Reduces training cost by 8x while maintaining state-of-the-art performance.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add ADu2021/skillXiv --skill eaglet-planner --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Eaglet Planner?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/adu2021-eaglet-planner)More formats (shields.io, HTML) on the badges page.
---
name: eaglet-planner
title: "A Goal Without a Plan Is Just a Wish: Efficient Global Planner Training for Long-Horizon Agent Tasks"
version: 0.0.2
engine: skillxiv-v0.0.2-claude-opus-4.6
license: MIT
url: "https://arxiv.org/abs/2510.05608"
keywords: [planning, long-horizon, reinforcement-learning, agent-training, executor-capability]
description: "Train efficient planners for long-horizon agent tasks using homologous consensus filtering to generate synthetic plans from strong LLMs and rule-based RL with executor capability rewards. Reduces training cost by 8x while maintaining state-of-the-art performance."
---
# EAGLET: Efficient Planner Training via Synthetic Plan Generation
Long-horizon agent planning requires expensive manual annotation or extensive RL training. EAGLET generates synthetic high-quality plans from advanced LLMs without manual labeling, then refines them with specialized RL using executor feedback signals.
Core insight: strong planning comes from both good initial plans and learning from execution signals. By bootstrapping from LLM-generated plans and using executor capability as reward signal, you achieve sample-efficient training at 8x lower cost than traditional RL.
## Core Concept
**Homologous Consensus Filtering**: Generate multiple candidate plans from a strong LLM and keep only those with high consensus across samples. This automatically filters out hallucinated or low-quality plans without human annotation.
**Executor Capability Gain Reward**: Reward signal based on whether executing the plan reveals new agent capabilities, not just whether tasks succeed. Encourages plans that push agent boundaries.
## Architecture Overview
- **Plan Synthesizer**: Advanced LLM (GPT-4/Claude) generates diverse candidate plans
- **Consensus Filter**: Scores plans by agreement across multiple samples and baseline quality
- **Executor Simulator**: Simulates plan execution to estimate feasibility
- **RL Trainer**: Refines planner with capability-gain rewards
## Implementation Steps
**Stage 1: Synthetic Plan Generation with Consensus Filtering**
Generate plans from strong LLM and filter by consensus:
```python
def generate_consensus_plans(task, num_candidates=10, strong_llm='gpt-4'):
"""
Generate diverse plans and keep only consensus-agreed ones.
Args:
task: description of agent task
num_candidates: how many plan samples to generate
strong_llm: which model to use for generation
Returns:
filtered_plans: high-confidence plans
"""
# Generate diverse candidates
candidates = []
for i in range(num_candidates):
temperature = 0.8 # Encourage diversity
prompt = f"""
For the task: {task}
Generate a detailed step-by-step plan.
Consider:
- Necessary preconditions
- High-level milestones
- Dependency ordering
- Executor constraints
"""
plan = strong_llm.generate(
prompt,
temperature=temperature,
max_tokens=1024
)
candidates.append(plan)
# Compute consensus scores
consensus_scores = compute_plan_similarity(candidates)
# Filter high-consensus plans
threshold = np.percentile(consensus_scores, 40) # Keep top 60%
filtered_plans = [
candidates[i] for i in range(len(candidates))
if consensus_scores[i] >= threshold
]
return filtered_plans
def compute_plan_similarity(plans):
"""
Score plans by how similar they are to other plans.
High similarity = high confidence.
"""
scores = []
for i, plan_i in enumerate(plans):
# Extract key steps from plan
steps_i = extract_plan_steps(plan_i)
similarities = []
for j, plan_j in enumerate(plans):
if i != j:
steps_j = extract_plan_steps(plan_j)
sim = compute_step_similarity(steps_i, steps_j)
similarities.append(sim)
# Score = average similarity to other plans
scores.append(np.mean(similarities))
return scores
```
**Stage 2: Cold Start Fine-tuning**
Use filtered plans to bootstrap the agent planner:
```python
def cold_start_finetuning(
planner_model,
filtered_plans,
task_descriptions,
num_epochs=3
):
"""
Initial fine-tuning on high-quality synthetic plans.
Acts as warm start before RL refinement.
"""
optimizer = torch.optim.AdamW(
planner_model.parameters(),
lr=5e-5
)
for epoch in range(num_epochs):
for task, plan in zip(task_descriptions, filtered_plans):
# Tokenize task and plan
task_tokens = tokenize(task)
plan_tokens = tokenize(plan)
# Teacher forcing: model learns to generate plan given task
logits = planner_model(task_tokens)
# Compute cross-entropy loss
loss = F.cross_entropy(
logits.view(-1, vocab_size),
plan_tokens.view(-1)
)
optimizer.zero_grad()
loss.backward()
optimizer.step()
return planner_model
```
**Stage 3: Executor Capability Reward Training**
Refine planner using execution feedback:
```python
def rl_training_with_capability_reward(
planner_model,
executor_agent,
task_distribution,
num_steps=5000
):
"""
Train planner with rewards based on executor learning progress.
Capability gain = new skills discovered through plan execution.
"""
optimizer = torch.optim.AdamW(
planner_model.parameters(),
lr=1e-5
)
# Track executor capabilities
initial_skills = executor_agent.get_skill_set()
for step in range(num_steps):
# Sample task
task = sample_from(task_distribution)
# Generate plan
plan = planner_model.generate(
task,
max_length=512,
temperature=0.7
)
# Execute plan
execution_result = executor_agent.execute_plan(plan, task)
# Compute rewards
success_reward = 1.0 if execution_result['success'] else 0.0
# Capability gain: what new skills were used?
skills_used = execution_result['skills_used']
new_skills = skills_used - initial_skills
capability_reward = len(new_skills) * 0.5
# Total reward: success + exploration bonus
total_reward = success_reward + capability_reward
# Policy gradient update
log_prob = compute_log_probability(planner_model, plan)
loss = -(log_prob * total_reward)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Update skill tracking
if new_skills:
initial_skills.update(new_skills)
```
## Practical Guidance
**When to Use EAGLET:**
- Long-horizon tasks (10+ steps) with limited labeled plan data
- When you have access to strong LLM for synthetic plan generation
- Tasks where executor capability is measurable/observable
**When NOT to Use:**
- Short tasks (1-3 steps) where manual annotation is simple
- Domain without clear skill/capability progression
- Executors where capability feedback is hard to define
**Plan Generation Tips:**
| Strategy | Best For | Tradeoff |
|----------|----------|----------|
| High temperature (0.9-1.0) | Diverse candidates | More filtering needed |
| Low temperature (0.5-0.6) | Focused candidates | Less coverage of solution space |
| Consensus threshold 40% | Inclusive filtering | More noisy plans included |
| Consensus threshold 60% | Strict filtering | Fewer plans, higher quality |
**Common Pitfalls:**
- Generating too few candidates (reduce diversity benefits)
- Consensus score overly permissive (include bad plans)
- Executor capability too strict (hard to satisfy)
- Not tracking skill progression (lose learning signal)
## Reference
Based on the research at: https://arxiv.org/abs/2510.05608
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!