كواليس «كلود كود» بـ سويفت: القوة في البساطة لا في «هياط» الكود المتراكم
تحليل معماري لمقاربة بسيطة تحدث فرقاً كبيراً في عالم المساعدين البرمجيين

هوس المطورين بفك شفرة «كلود كود» (Claude Code) لا يتوقف. الجميع يسأل عن سر الكفاءة. الإجابة ليست في آلاف السطور البرمجية، بل في مشروع جديد بلغة «سويفت» يضع هذه الأداة على طاولة التشريح. المحاولة هنا ليست مجرد تقليد، بل إعادة بناء الواجهة من الصفر لبرهنة حقيقة واحدة: القوة تسكن في البساطة المعمارية، لا في تكدس الأدوات الرقمية التي لا يلمسها أحد.
خرافة أن التعقيد يولد العبقرية سقطت تماماً. «كلود كود» لا يغرقك بمئات الميزات التافهة. هو يركز على حفنة أدوات متقنة؛ أداة بحث، ومحرر ملفات. هذا كل شيء. الحمل الأكبر يقع على عاتق النموذج اللغوي (LLM) نفسه. هذا النهج يقتل «الضجيج» البرمجي الذي يفسد تجربة الوكلاء الآخرين. النظام هنا أداة تنفيذية رشيقة، وليس هيكلاً بيروقراطياً معقداً يستهلك الموارد ويقدم القليل.
لغة «سويفت» لم تعد حبيسة تطبيقات آيفون. بفضل نموذج التزامن (Concurrency) الحديث، أصبحت خياراً شرساً لبناء أنظمة الذكاء الاصطناعي التي تطلب استجابة لحظية. المشروع الحالي يستغل هذه القوة لاختبار الحد الأدنى من البنية المطلوبة. التصميم «المتقشف» يتفوق بمراحل على الأنظمة التي تعتمد على طبقات تنسيق ضخمة تلتهم الذاكرة دون طائل. تاريخياً، البرمجيات العظيمة بدأت هكذا: نواة صلبة، ووظائف مباشرة.
قوة النظام تتركز في حلقة تفاعل واحدة. هي القلب النابض:
func run(query: String) async throws -> String {
messages.append(.user(query))
while true {
let request = APIRequest(
model: model, system: systemPrompt, messages: messages, tools: Self.toolDefinitions
)
let response = try await apiClient.createMessage(request)
messages.append(Message(role: .assistant, content: response.content))
guard response.stopReason == .toolUse else {
return response.content.textContent
}
var results: [ContentBlock] = []
for block in response.content {
if case .toolUse(let id, let name, let input) = block {
let output = await executeTool(name: name, input: input)
results.append(.toolResult(toolUseId: id, content: output, isError: false))
}
}
messages.append(Message(role: .user, content: results))
}
}الأساس المتين لا يحتاج لتغيير مستمر. الأدوات تتبدل، وبنية الحلقة ثابتة. ولمن يريد الغرق في التفاصيل، تتوفر سلسلة تعليمية من 9 أجزاء تفكك شفرة هذا المشروع. الهدف؟ عزل كل آلية واختبارها وحدها.
مبادئ تصميم وكلاء البرمجة هنا حادة وواضحة:
- الكيف يدهس الكم: فهرس أدوات ضخم يعني تشتتاً أكبر. مجموعة صغيرة موثوقة هي الحل.
- ذكاء المحرك: النموذج اللغوي يقود، والكود المحيط مجرد «تنسيق خفيف» لتقليل التكاليف.
- وضوح المهمة: تتبع الحالة بدقة يمنع الغموض الذي تسببه الأوامر العشوائية.
- ضغط السياق: تقليل البيانات المرسلة ليس توفيراً للرموز (Tokens) فقط، بل ميزة تجعل الوكيل أسرع وأكثر تركيزاً.
خارطة الطريق قسمت العمل لمرحلتين؛ الميكانيكا أولاً، ثم المنتج النهائي الذي يملك ذاكرة ومثابرة.
المرحلة الأولى: الميكانيكيات الأساسية
| المرحلة | الإضافة البرمجية | العلامة (Tag) |
|---|---|---|
| 00 | التمهيد: مشروع SPM وتصميم CI | 00-bootstrap |
| 01 | حلقة الوكيل وأداة Bash | 01-agent-loop |
| 02 | توجيه الأدوات والتحكم في الملفات | 02-tool-dispatch |
| 03 | تتبع المهام وحقن التذكيرات | 03-todo-write |
المرحلة الثانية: آليات المنتج
| المرحلة | الإضافة البرمجية | العلامة (Tag) |
|---|---|---|
| 04 | الوكلاء الفرعيون بسياق جديد | 04-subagents |
| 05 | تحميل المهارات عبر ملفات Markdown | 05-skill-loading |
| 06 | إستراتيجية ضغط السياق الثلاثية | 06-context-compaction |
| 07 | نظام المهام القائم على الرسم البياني | 07-task-system |
| 08 | إدارة المهام الخلفية بنظام Actor | 08-background-tasks |
تقنياً، المشروع يعتمد على Swift Package Manager مقسماً بين مكتبة (Core) وواجهة سطر أوامر (CLI) باسم claude. استخدام مكتبة AsyncHTTPClient يضمن العمل بكفاءة على Mac أو Linux. دعم كامل لتدفق الأحداث (SSE) دون تعقيدات إضافية.
هذا المشروع لا يدعي المثالية. هو رحلة استكشافية لفهم «لماذا تنجح الأشياء؟». تصميم بسيط عمداً، يترك مساحة للنقص ليركز على الدروس المعمارية. هل المعمارية الرشيقة كافية لمنافسة العمالقة؟ الإجابة في الكود.
التشغيل الفوري
- بيئة سويفت 6.2 مع تفعيل التزامن الصارم.
- مكتبة
AsyncHTTPClient. - نظام macOS 10.15 أو لينكس حديث.
خطوات التنفيذ
- استنساخ المستودع:
git clone https://github.com/ivanmagda/swift-claude-code.git - الدخول للمجلد:
cd swift-claude-code - إعداد البيئة:
cp .env.example .envوضع مفتاح API لشركة Anthropic. - البناء:
swift build - التشغيل:
swift run claude
المشروع تحت ترخيص MIT. عدل، اشتق، وافعل ما بدا لك.








