Skip to content

Feature Request: Add RPG-ZeroRepo as alternative Agent Framework (Settings → Agent Framework → Agent Settings) #1799

@Gerqol

Description

@Gerqol

Checklist

  • I searched existing issues and this hasn't been reported

Area

Fullstack

Operating System

macOS

Version

2.7.6

What happened?

Currently, Auto-Claude only supports its own built-in agent pipeline (Spec → Planner → Coder → QA → Merge) for autonomous tasks. There is no way to swap the underlying coding framework.

Microsoft Research has released RPG-ZeroRepo (MIT License), a graph-driven framework for repository-level code generation that significantly outperforms Claude Code on the RepoCraft benchmark (6 real-world projects, 1,052 tasks):

Metric Claude Code ZeroRepo Delta
Coverage 54.2% 81.5% +27.3 pts
Pass Rate 33.9% 69.7% +35.8 pts
Code Scale (LOC) ~10.6K ~36K 3.9×
Scaling Plateaus at ~4K LOC Near-linear over 30 iterations

The follow-up paper RPG-Encoder (Feb 2026) shows even stronger results: 98.5% coverage / 86.0% pass rate with GPT-5-mini, and 93.7% function-level Acc@5 on SWE-bench Verified with Claude-4.5.

What is RPG-ZeroRepo?

RPG replaces free-form natural language planning with a Repository Planning Graph — a persistent graph encoding capabilities, file structures, data flows, and function interfaces. It operates in three stages:

  1. Proposal-Level Construction — Grounds functionalities in a Feature Tree (1.5M+ nodes), selects relevant subtrees via explore/exploit search, builds a functionality graph
  2. Implementation-Level Construction — Encodes file structure (root→folders, intermediate→files, leaf→functions), data flows (inter-/intra-module), and generates interface skeletons with base classes
  3. Graph-Guided Code Generation — Traverses RPG in topological order, applies TDD per leaf node with 3 localization tools (RPG-Guided Search, Repository Code View, Dependency Explore), majority-vote diagnosis for test failures

Feature Request

Add RPG-ZeroRepo as a selectable alternative framework in Settings → Agent Framework → Agent Settings alongside the existing Auto-Claude pipeline. When selected, the RPG pipeline replaces the entire autonomous task execution.

Papers: arXiv:2509.16198v5 (Oct 2025), arXiv:2602.02084 (Feb 2026)
Code: github.com/microsoft/RPG-ZeroRepo (MIT License)

Steps to reproduce

N/A — Feature request. Proposed implementation:

1. Framework Abstraction Layer (Backend)

New file apps/backend/frameworks/__init__.py:

from abc import ABC, abstractmethod

class FrameworkProvider(ABC):
    name: str           # "auto-claude" or "rpg-zerorepo"
    display_name: str   # "Auto Claude" or "RPG-ZeroRepo"

    @abstractmethod
    async def create_spec(self, task_description, project_dir, spec_dir, **kwargs) -> dict: ...
    @abstractmethod
    async def create_plan(self, spec_dir, project_dir, **kwargs) -> dict: ...
    @abstractmethod
    async def execute(self, spec_dir, project_dir, max_iterations, **kwargs) -> dict: ...
    @abstractmethod
    async def validate(self, spec_dir, project_dir, **kwargs) -> dict: ...
    @abstractmethod
    async def finalize(self, spec_dir, project_dir, **kwargs) -> dict: ...

def get_framework(name: str) -> FrameworkProvider:
    from frameworks.auto_claude import AutoClaudeFramework
    from frameworks.rpg_zerorepo import RPGZeroRepoFramework
    providers = {"auto-claude": AutoClaudeFramework, "rpg-zerorepo": RPGZeroRepoFramework}
    return providers[name]()

2. Wrap existing pipeline (zero risk, no code changes)

New file apps/backend/frameworks/auto_claude.py — delegates to existing spec/pipeline/orchestrator.py, agents/planner.py, agents/coder.py, qa/loop.py, merge/. No existing code modified.

3. RPG-ZeroRepo provider

New directory apps/backend/frameworks/rpg_zerorepo/:

rpg_zerorepo/
├── __init__.py           # RPGZeroRepoFramework (implements FrameworkProvider)
├── graph.py              # RPG data structure (Nodes, Edges, serialization)
├── proposal.py           # Stage A: Feature Tree → Functionality Graph
├── implementation.py     # Stage B: File Structure + Data Flow → full RPG
├── codegen.py            # Stage C: Topological traversal + TDD per node
├── testing.py            # Staged testing: Unit → Regression → Integration
├── localization.py       # RPG-Guided Search + Dependency Explore
├── feature_tree.py       # EpiCoder Feature Tree Index
└── prompts/              # Prompt templates (paper Appendix A)

Uses create_client() from core/client.py, respects phase_config.py, works in git worktrees, reports via Kanban events.

4. Runner modification

apps/backend/runners/spec_runner.py reads framework from env:

framework_name = os.environ.get("AGENT_FRAMEWORK", "auto-claude")
framework = get_framework(framework_name)
await framework.create_spec(...)
await framework.create_plan(...)
await framework.execute(...)
await framework.validate(...)
await framework.finalize(...)

5. Settings UI (Frontend)

In apps/frontend/src/renderer/features/settings/:

  • Add agentFramework to Zustand settings store ("auto-claude" | "rpg-zerorepo")
  • Radix UI Select dropdown under "Agent Framework → Agent Settings"
  • Label: "The coding framework used for autonomous tasks"
  • i18n keys in en/*.json and fr/*.json
  • Pass AGENT_FRAMEWORK via setupProcessEnvironment() in agent-process.ts

6. .env config

AGENT_FRAMEWORK=auto-claude
RPG_PROPOSAL_ITERATIONS=30
RPG_FEATURE_TREE_PATH=
RPG_LOCALIZATION_MAX_STEPS=20
RPG_TDD_MAJORITY_VOTE_ROUNDS=5

7. Dependencies

networkx>=3.1
faiss-cpu>=1.7.4   # optional

Expected behavior

Under Settings → Agent Framework → Agent Settings, a dropdown labeled "The coding framework used for autonomous tasks" with two options:

  • Auto Claude (default) — Existing spec → planner → coder → QA → merge pipeline
  • RPG-ZeroRepo — Graph-driven pipeline with RPG planning, topological code generation, staged TDD

When RPG-ZeroRepo is selected, all new autonomous tasks use the RPG pipeline. Existing Auto-Claude pipeline remains fully functional as default.

Compatibility

Auto-Claude Concept RPG-ZeroRepo Compatible?
create_client() / Claude Agent SDK Same SDK
phase_config.py (model/thinking) Same settings
Git worktrees Same worktree
Kanban Board / task status Same events
Parallel agents (up to 12) Natural parallelization via graph nodes
Memory (Graphiti) RPG graph = persistent memory
Security sandbox Same hooks

Implementation order

# What Where Effort
1 Framework Abstraction + AutoClaude wrapper apps/backend/frameworks/ Low
2 Settings UI dropdown + i18n apps/frontend/.../settings/ Low
3 RPG core graph data structure rpg_zerorepo/graph.py Medium
4 RPG Proposal (Feature Tree + Explore/Exploit) rpg_zerorepo/proposal.py Medium-High
5 RPG Implementation (File + Data Flow + Interfaces) rpg_zerorepo/implementation.py Medium-High
6 RPG Code Gen + Testing rpg_zerorepo/codegen.py High
7 End-to-end integration tests tests/ Medium

Phases 1+2 have no dependency on RPG code and can ship immediately. The FrameworkProvider pattern also enables future framework integrations.

Logs / Screenshots

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/fullstackThis is Frontend + BackendfeatureNew feature or requestos/macosmacOS specificpriority/lowNice to have, when time permits

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions