-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
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:
- Proposal-Level Construction — Grounds functionalities in a Feature Tree (1.5M+ nodes), selects relevant subtrees via explore/exploit search, builds a functionality graph
- Implementation-Level Construction — Encodes file structure (root→folders, intermediate→files, leaf→functions), data flows (inter-/intra-module), and generates interface skeletons with base classes
- 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
agentFrameworkto 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/*.jsonandfr/*.json - Pass
AGENT_FRAMEWORKviasetupProcessEnvironment()inagent-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=57. 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
FrameworkProviderpattern also enables future framework integrations.
Logs / Screenshots
Metadata
Metadata
Assignees
Labels
Projects
Status