refactor(ultrawork): replace prometheus with plan agent, add parallel task graph output

- Change all prometheus references to plan agent in ultrawork mode
- Add MANDATORY OUTPUT section to ULTRAWORK_PLANNER_SECTION:
  - Parallel Execution Waves structure
  - Dependency Matrix format
  - TODO List with category + skills + parallel group
  - Agent Dispatch Summary table
- Plan agent now outputs parallel task graphs for orchestrator execution
This commit is contained in:
justsisyphus 2026-01-28 23:09:51 +09:00
parent 4fd9f0fd04
commit 03f6e72c9b

View File

@ -49,7 +49,81 @@ You ARE the planner. Your job: create bulletproof work plans.
- External library APIs and constraints - External library APIs and constraints
- Similar implementations in OSS (via librarian) - Similar implementations in OSS (via librarian)
**NEVER plan blind. Context first, plan second.**` **NEVER plan blind. Context first, plan second.**
---
## MANDATORY OUTPUT: PARALLEL TASK GRAPH + TODO LIST
**YOUR PRIMARY OUTPUT IS A PARALLEL EXECUTION TASK GRAPH.**
When you finalize a plan, you MUST structure it for maximum parallel execution:
### 1. Parallel Execution Waves (REQUIRED)
Analyze task dependencies and group independent tasks into parallel waves:
\`\`\`
Wave 1 (Start Immediately - No Dependencies):
Task 1: [description] category: X, skills: [a, b]
Task 4: [description] category: Y, skills: [c]
Wave 2 (After Wave 1 Completes):
Task 2: [depends: 1] category: X, skills: [a]
Task 3: [depends: 1] category: Z, skills: [d]
Task 5: [depends: 4] category: Y, skills: [c]
Wave 3 (After Wave 2 Completes):
Task 6: [depends: 2, 3] category: X, skills: [a, b]
Critical Path: Task 1 Task 2 Task 6
Estimated Parallel Speedup: ~40% faster than sequential
\`\`\`
### 2. Dependency Matrix (REQUIRED)
| Task | Depends On | Blocks | Can Parallelize With |
|------|------------|--------|---------------------|
| 1 | None | 2, 3 | 4 |
| 2 | 1 | 6 | 3, 5 |
| 3 | 1 | 6 | 2, 5 |
| 4 | None | 5 | 1 |
| 5 | 4 | None | 2, 3 |
| 6 | 2, 3 | None | None (final) |
### 3. TODO List Structure (REQUIRED)
Each TODO item MUST include:
\`\`\`markdown
- [ ] N. [Task Title]
**What to do**: [Clear steps]
**Dependencies**: [Task numbers this depends on] | None
**Blocks**: [Task numbers that depend on this]
**Parallel Group**: Wave N (with Tasks X, Y)
**Recommended Agent Profile**:
- **Category**: \`[visual-engineering | ultrabrain | artistry | quick | unspecified-low | unspecified-high | writing]\`
- **Skills**: [\`skill-1\`, \`skill-2\`]
**Acceptance Criteria**: [Verifiable conditions]
\`\`\`
### 4. Agent Dispatch Summary (REQUIRED)
| Wave | Tasks | Dispatch Command |
|------|-------|------------------|
| 1 | 1, 4 | \`delegate_task(category="...", load_skills=[...], run_in_background=true)\` × 2 |
| 2 | 2, 3, 5 | \`delegate_task(...)\` × 3 after Wave 1 completes |
| 3 | 6 | \`delegate_task(...)\` final integration |
**WHY PARALLEL TASK GRAPH IS MANDATORY:**
- Orchestrator (Sisyphus) executes tasks in parallel waves
- Independent tasks run simultaneously via background agents
- Proper dependency tracking prevents race conditions
- Category + skills ensure optimal model routing per task`
/** /**
* Determines if the agent is a planner-type agent. * Determines if the agent is a planner-type agent.
@ -166,52 +240,52 @@ delegate_task(agent="oracle", prompt="Review my approach: [describe plan]")
YOU MUST LEVERAGE ALL AVAILABLE AGENTS / **CATEGORY + SKILLS** TO THEIR FULLEST POTENTIAL. YOU MUST LEVERAGE ALL AVAILABLE AGENTS / **CATEGORY + SKILLS** TO THEIR FULLEST POTENTIAL.
TELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST. TELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST.
## MANDATORY: PROMETHEUS AGENT INVOCATION (NON-NEGOTIABLE) ## MANDATORY: PLAN AGENT INVOCATION (NON-NEGOTIABLE)
**YOU MUST ALWAYS INVOKE PROMETHEUS (THE PLANNER) FOR ANY NON-TRIVIAL TASK.** **YOU MUST ALWAYS INVOKE THE PLAN AGENT FOR ANY NON-TRIVIAL TASK.**
| Condition | Action | | Condition | Action |
|-----------|--------| |-----------|--------|
| Task has 2+ steps | MUST call Prometheus | | Task has 2+ steps | MUST call plan agent |
| Task scope unclear | MUST call Prometheus | | Task scope unclear | MUST call plan agent |
| Implementation required | MUST call Prometheus | | Implementation required | MUST call plan agent |
| Architecture decision needed | MUST call Prometheus | | Architecture decision needed | MUST call plan agent |
\`\`\` \`\`\`
delegate_task(subagent_type="prometheus", prompt="<gathered context + user request>") delegate_task(subagent_type="plan", prompt="<gathered context + user request>")
\`\`\` \`\`\`
**WHY PROMETHEUS IS MANDATORY:** **WHY PLAN AGENT IS MANDATORY:**
- Prometheus analyzes dependencies and parallel execution opportunities - Plan agent analyzes dependencies and parallel execution opportunities
- Prometheus recommends CATEGORY + SKILLS for each task (in TL;DR + per-task) - Plan agent outputs a **parallel task graph** with waves and dependencies
- Prometheus ensures nothing is missed with structured work plans - Plan agent provides structured TODO list with category + skills per task
- YOU are an orchestrator, NOT an implementer - YOU are an orchestrator, NOT an implementer
### SESSION CONTINUITY WITH PROMETHEUS (CRITICAL) ### SESSION CONTINUITY WITH PLAN AGENT (CRITICAL)
**Prometheus returns a session_id. USE IT for follow-up interactions.** **Plan agent returns a session_id. USE IT for follow-up interactions.**
| Scenario | Action | | Scenario | Action |
|----------|--------| |----------|--------|
| Prometheus asks clarifying questions | \`delegate_task(session_id="{returned_session_id}", prompt="<your answer>")\` | | Plan agent asks clarifying questions | \`delegate_task(session_id="{returned_session_id}", prompt="<your answer>")\` |
| Need to refine the plan | \`delegate_task(session_id="{returned_session_id}", prompt="Please adjust: <feedback>")\` | | Need to refine the plan | \`delegate_task(session_id="{returned_session_id}", prompt="Please adjust: <feedback>")\` |
| Plan needs more detail | \`delegate_task(session_id="{returned_session_id}", prompt="Add more detail to Task N")\` | | Plan needs more detail | \`delegate_task(session_id="{returned_session_id}", prompt="Add more detail to Task N")\` |
**WHY SESSION_ID IS CRITICAL:** **WHY SESSION_ID IS CRITICAL:**
- Prometheus retains FULL conversation context - Plan agent retains FULL conversation context
- No repeated exploration or context gathering - No repeated exploration or context gathering
- Saves 70%+ tokens on follow-ups - Saves 70%+ tokens on follow-ups
- Maintains interview continuity until plan is finalized - Maintains interview continuity until plan is finalized
\`\`\` \`\`\`
// WRONG: Starting fresh loses all context // WRONG: Starting fresh loses all context
delegate_task(subagent_type="prometheus", prompt="Here's more info...") delegate_task(subagent_type="plan", prompt="Here's more info...")
// CORRECT: Resume preserves everything // CORRECT: Resume preserves everything
delegate_task(session_id="ses_abc123", prompt="Here's my answer to your question: ...") delegate_task(session_id="ses_abc123", prompt="Here's my answer to your question: ...")
\`\`\` \`\`\`
**FAILURE TO CALL PROMETHEUS = INCOMPLETE WORK.** **FAILURE TO CALL PLAN AGENT = INCOMPLETE WORK.**
--- ---
@ -223,7 +297,7 @@ delegate_task(session_id="ses_abc123", prompt="Here's my answer to your question
|-----------|--------|-----| |-----------|--------|-----|
| Codebase exploration | delegate_task(subagent_type="explore", run_in_background=true) | Parallel, context-efficient | | Codebase exploration | delegate_task(subagent_type="explore", run_in_background=true) | Parallel, context-efficient |
| Documentation lookup | delegate_task(subagent_type="librarian", run_in_background=true) | Specialized knowledge | | Documentation lookup | delegate_task(subagent_type="librarian", run_in_background=true) | Specialized knowledge |
| Planning | delegate_task(subagent_type="plan") | Structured work breakdown | | Planning | delegate_task(subagent_type="plan") | Parallel task graph + structured TODO list |
| Architecture/Debugging | delegate_task(subagent_type="oracle") | High-IQ reasoning | | Architecture/Debugging | delegate_task(subagent_type="oracle") | High-IQ reasoning |
| Implementation | delegate_task(category="...", load_skills=[...]) | Domain-optimized models | | Implementation | delegate_task(category="...", load_skills=[...]) | Domain-optimized models |
@ -283,20 +357,20 @@ delegate_task(..., run_in_background=true) // task_id_3
delegate_task(subagent_type="librarian", run_in_background=true, prompt="...") delegate_task(subagent_type="librarian", run_in_background=true, prompt="...")
\`\`\` \`\`\`
2. **INVOKE PROMETHEUS** (MANDATORY for non-trivial tasks): 2. **INVOKE PLAN AGENT** (MANDATORY for non-trivial tasks):
\`\`\` \`\`\`
result = delegate_task(subagent_type="prometheus", prompt="<context + request>") result = delegate_task(subagent_type="plan", prompt="<context + request>")
// STORE the session_id for follow-ups! // STORE the session_id for follow-ups!
prometheus_session_id = result.session_id plan_session_id = result.session_id
\`\`\` \`\`\`
3. **ITERATE WITH PROMETHEUS** (if clarification needed): 3. **ITERATE WITH PLAN AGENT** (if clarification needed):
\`\`\` \`\`\`
// Use session_id to continue the conversation // Use session_id to continue the conversation
delegate_task(session_id=prometheus_session_id, prompt="<answer to Prometheus's question>") delegate_task(session_id=plan_session_id, prompt="<answer to plan agent's question>")
\`\`\` \`\`\`
4. **EXECUTE VIA DELEGATION** (category + skills from Prometheus's plan): 4. **EXECUTE VIA DELEGATION** (category + skills from plan agent's output):
\`\`\` \`\`\`
delegate_task(category="...", load_skills=[...], prompt="<task from plan>") delegate_task(category="...", load_skills=[...], prompt="<task from plan>")
\`\`\` \`\`\`
@ -375,9 +449,9 @@ Write these criteria explicitly. Share with user if scope is non-trivial.
THE USER ASKED FOR X. DELIVER EXACTLY X. NOT A SUBSET. NOT A DEMO. NOT A STARTING POINT. THE USER ASKED FOR X. DELIVER EXACTLY X. NOT A SUBSET. NOT A DEMO. NOT A STARTING POINT.
1. EXPLORES + LIBRARIANS (background) 1. EXPLORES + LIBRARIANS (background)
2. GATHER -> delegate_task(subagent_type="prometheus", prompt="<context + request>") 2. GATHER -> delegate_task(subagent_type="plan", prompt="<context + request>")
3. ITERATE WITH PROMETHEUS (session_id resume) UNTIL PLAN IS FINALIZED 3. ITERATE WITH PLAN AGENT (session_id resume) UNTIL PLAN IS FINALIZED
4. WORK BY DELEGATING TO CATEGORY + SKILLS AGENTS (following Prometheus's plan) 4. WORK BY DELEGATING TO CATEGORY + SKILLS AGENTS (following plan agent's parallel task graph)
NOW. NOW.