تعرّف على Ralph
حلقة وكلاء مستقلة تعمل باستمرار حتى اكتمال جميع عناصر وثيقة متطلبات المنتج. لا حاجة إلى نصوص Bash، فكل شيء يعمل داخل ADK-Rust.

عرض حي لـ ADK-Ralph v2
أعط Ralph منتجًا صغيرًا واحدًا ليبنيه.
يشغل هذا الملف الثنائي الحقيقي لـ Rust. يحدد وكيل PRD قصة مستخدم واحدة، ينشئ وكيل المهندس التصميم وخطة المهمة، ويكتب وكيل Ralph Loop المشروع ويتحقق منه في مساحة عمل معزولة.
01 · PRD Agent
تعريف المنتج
02 · Architect Agent
تصميم النظام
03 · Ralph Loop Agent
ابنِ وتحقق
مشروع واحد · ثلاث تكرارات تنفيذ · حد زمني ثماني دقائق · حذف الملفات المؤقتة بعد التسليم
التشغيل الحقيقي سيظهر هنا.
سترى مراحل الوكيل، نشاط الأدوات، فحوصات الجودة، والملفات التي يعيدها رالف.
البنية نظرة عامة
مبني بالكامل بلغة Rust باستخدام إمكانات الحلقات الأصلية في ADK-Rust
وكيل الحلقة
يمر المنسّق الرئيسي على المهام، ويفوّض العمل، ويتابع التقدم العام.
وكيل التنفيذ
ينفذ كل مهمة ضمن سياق مركز، ثم يطبق التغييرات ويختبرها ويسجلها.
أدوات مخصصة
أدوات ADK-Rust أصلية لـ Git وعمليات الملفات وفحوص الجودة وإدارة وثيقة المتطلبات.
أهم الإمكانات
يعرض Ralph أهم إمكانات ADK-Rust لبناء الوكلاء المستقلين
حلقة مستقلة
تنفيذ مستمر حتى اكتمال جميع عناصر وثيقة المتطلبات، مع دمج أصلي لأدوات الحلقة ومن دون نصوص Bash.
تنسيق عدة وكلاء
ينسّق وكيل الحلقة وكلاء التنفيذ. يتخصص كل وكيل في دوره ليعمل بكفاءة أعلى.
أدوات مخصصة
تم بناء Git وعمليات الملفات وفحوص الجودة وإدارة وثيقة المتطلبات كلها كأدوات ADK-Rust أصلية.
مدفوع بوثيقة المتطلبات
إدارة مهام مبنية على JSON مع قصص المستخدم ومعايير القبول وتتبع النجاح والإخفاق.
بوابات الجودة
تشغيل cargo check وtest وclippy وfmt تلقائياً قبل كل commit.
حفظ الحالة
توفر سجلات 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
لماذا نبني الوكلاء المستقلين مباشرة بلغة Rust بدلاً من تنسيقهم باستخدام نصوص shell؟
| الجانب | Bash | أصلي |
|---|---|---|
| التنفيذ | نص shell + ADK-Rust | Rust خالصة |
| أمان الأنواع | وقت التشغيل | وقت الترجمة |
| معالجة الأخطاء | رموز الخروج | Result<T, E> |
| التزامن | تسلسلي | Async/await |
| دمج الأدوات | أوامر shell | أدوات ADK-Rust أصلية |
| تصحيح الأخطاء | ملفات السجل | التتبع + السجلات المنظمة |
| الأداء | تكلفة إنشاء العمليات | تجريدات بلا تكلفة تشغيلية |
| أمان الذاكرة | إدارة يدوية | يضمنها المترجم |
| الاختبارات | اختبارات تكامل فقط | اختبارات وحدات + تكامل |
هل أنت مستعد لبناء Ralph الخاص بك؟
استكشف الشفرة المصدرية كاملة، وعدّلها لتناسب حالة استخدامك، أو استخدمها أساساً لبناء أنظمة الوكلاء المستقلة الخاصة بك.