पूरी तरह नेटिव ADK-Rust कार्यान्वयन

मिलिए Ralph

एक स्वायत्त एजेंट लूप जो PRD के सभी आइटम पूरे होने तक लगातार चलता है। Bash स्क्रिप्ट की आवश्यकता नहीं है—सब कुछ ADK-Rust के भीतर चलता है।

लाइव ADK-Ralph v2 डेमो

राल्फ को एक छोटा उत्पाद बनाने दें।

यह वास्तविक Rust बाइनरी चलाता है। PRD एजेंट एक उपयोगकर्ता कहानी परिभाषित करता है, आर्किटेक्ट एजेंट डिजाइन और कार्य योजना बनाता है, और Ralph Loop एजेंट एक पृथक कार्यक्षेत्र में प्रोजेक्ट लिखता और सत्यापित करता है।

01 · PRD Agent

उत्पाद परिभाषित करें

1

02 · Architect Agent

सिस्टम डिज़ाइन करें

2

03 · Ralph Loop Agent

बनाएं और सत्यापित करें

3

एक प्रोजेक्ट · तीन कार्यान्वयन पुनरावृत्तियाँ · आठ मिनट की सीमा · डिलीवरी के बाद अस्थायी फ़ाइलें हटाई गईं

Ralph निष्पादन
वास्तविक प्रक्रिया · स्ट्रीम की गई

वास्तविक रन यहाँ दिखाई देगा।

आप एजेंट चरण, टूल गतिविधि, गुणवत्ता जांच, और राल्फ द्वारा लौटाए गए फ़ाइल देखेंगे।

आर्किटेक्चर अवलोकन

ADK-Rust की नेटिव लूप क्षमताओं के साथ पूरी तरह Rust में निर्मित

लूप एजेंट
ऑर्केस्ट्रेटर
वर्कर एजेंट
कार्य निष्पादक
PRD टूल
कार्य प्रबंधक
Git टूल
संस्करण नियंत्रण
टेस्ट टूल
गुणवत्ता जाँच
1

लूप एजेंट

मुख्य ऑर्केस्ट्रेटर कार्यों को क्रम से चलाता है, काम सौंपता है और समग्र प्रगति पर नज़र रखता है।

2

वर्कर एजेंट

केंद्रित संदर्भ में अलग-अलग कार्य करता है। बदलावों को लागू, जाँच और कमिट करता है।

3

कस्टम टूल

Git, फ़ाइल संचालन, गुणवत्ता जाँच और PRD प्रबंधन के लिए नेटिव ADK-Rust टूल।

मुख्य क्षमताएँ

Ralph स्वायत्त एजेंट विकास के लिए ADK-Rust की मुख्य क्षमताएँ दिखाता है

🔄

स्वायत्त लूप

सभी PRD आइटम पूरे होने तक निरंतर निष्पादन। Bash स्क्रिप्ट के बिना नेटिव लूप टूल एकीकरण।

🤖

मल्टी-एजेंट समन्वय

लूप एजेंट वर्कर एजेंटों का समन्वय करता है। बेहतर परिणाम के लिए हर एजेंट अपनी भूमिका में विशेषज्ञ होता है।

🛠️

कस्टम टूल

Git, फ़ाइल संचालन, गुणवत्ता जाँच और PRD प्रबंधन—सभी नेटिव ADK-Rust टूल के रूप में निर्मित।

📋

PRD द्वारा संचालित

यूज़र स्टोरी, स्वीकृति मानदंड और पास/फेल ट्रैकिंग के साथ JSON-आधारित कार्य प्रबंधन।

गुणवत्ता द्वार

हर कमिट से पहले cargo check, test, clippy और fmt की स्वचालित जाँच।

💾

स्थिति का स्थायी भंडारण

Git कमिट, प्रगति लॉग और AGENTS.md अपडेट पूरा संदर्भ और ऑडिट योग्यता देते हैं।

कार्यान्वयन विवरण

साफ़ और प्रचलित Rust कोड जो ADK-Rust की पूरी क्षमता का उपयोग करता है

use serde::{Deserialize, Serialize};
use std::fs;
use anyhow::Result;

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Prd {
    pub project: String,
    pub branch_name: String,
    pub description: String,
    pub user_stories: Vec<UserStory>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UserStory {
    pub id: String,
    pub title: String,
    pub description: String,
    pub acceptance_criteria: Vec<String>,
    pub priority: u32,
    pub passes: bool,
    #[serde(default)]
    pub notes: String,
}

impl Prd {
    pub fn load(path: &str) -> Result<Self> {
        let content = fs::read_to_string(path)?;
        let prd: Prd = serde_json::from_str(&content)?;
        Ok(prd)
    }
    
    pub fn save(&self, path: &str) -> Result<()> {
        let content = serde_json::to_string_pretty(self)?;
        fs::write(path, content)?;
        Ok(())
    }
    
    pub fn get_next_task(&self) -> Option<&UserStory> {
        self.user_stories
            .iter()
            .filter(|story| !story.passes)
            .min_by_key(|story| story.priority)
    }
    
    pub fn mark_complete(&mut self, task_id: &str) -> Result<()> {
        if let Some(story) = self.user_stories
            .iter_mut()
            .find(|s| s.id == task_id) 
        {
            story.passes = true;
        }
        Ok(())
    }
    
    pub fn is_complete(&self) -> bool {
        self.user_stories.iter().all(|story| story.passes)
    }
    
    pub fn stats(&self) -> (usize, usize) {
        let complete = self.user_stories
            .iter()
            .filter(|s| s.passes)
            .count();
        let total = self.user_stories.len();
        (complete, total)
    }
}

प्रोजेक्ट संरचना

एक साफ़ मॉड्यूलर संरचना जो एजेंट, टूल और मॉडल अलग रखती है, जिससे रखरखाव और विस्तार आसान होता है।

ralph/
├── Cargo.toml                # Ralph agent config
├── src/
│   ├── main.rs               # Entry point
│   ├── agents/
│   │   ├── mod.rs
│   │   ├── loop_agent.rs     # Main orchestrator
│   │   └── worker_agent.rs   # Task executor
│   ├── tools/
│   │   ├── mod.rs
│   │   ├── git_tool.rs       # Git operations
│   │   ├── file_tool.rs      # File manipulation
│   │   ├── test_tool.rs      # Quality checks
│   │   └── prd_tool.rs       # PRD management
│   └── models/
│       ├── prd.rs            # PRD data structures
│       └── config.rs         # Configuration
├── prd.json                  # Task list
└── progress.txt              # Learnings log

नेटिव बनाम Bash

स्वायत्त एजेंटों को shell स्क्रिप्ट से संचालित करने के बजाय सीधे Rust में क्यों बनाएँ?

पहलूBashनेटिव
कार्यान्वयनShell स्क्रिप्ट + ADK-Rustशुद्ध Rust
टाइप सुरक्षारनटाइमकम्पाइल समय
त्रुटि प्रबंधनएग्ज़िट कोडResult<T, E>
समवर्ती निष्पादनक्रमिकAsync/await
टूल एकीकरणShell कमांडनेटिव ADK-Rust टूल
डीबगिंगलॉग फ़ाइलेंट्रेसिंग + संरचित लॉगिंग
प्रदर्शननई प्रक्रियाएँ बनाने का अतिरिक्त खर्चशून्य-लागत एब्स्ट्रैक्शन
मेमोरी सुरक्षामैन्युअल प्रबंधनकम्पाइलर द्वारा सुनिश्चित
टेस्टिंगकेवल इंटीग्रेशन टेस्टयूनिट + इंटीग्रेशन टेस्ट

अपना Ralph बनाने के लिए तैयार हैं?

पूरा सोर्स कोड देखें, इसे अपने उपयोग के अनुसार बदलें या अपने स्वायत्त एजेंट सिस्टम के लिए इससे प्रेरणा लें।