يقدم هاربر ريد تفصيلاً لتدفق عمله الحالي لاستخدام نماذج لغوية كبيرة (LLMs) لتوليد التعليمات البرمجية، مع التركيز على اتباع نهج منظم يهدف إلى تقليل الوقت الضائع وزيادة الإنتاجية. يتم تقسيم تدفق العمل إلى مراحل متميزة، بما في ذلك صقل الأفكار، والتخطيط التفصيلي، والتنفيذ التكراري. يشارك ريد رؤى مستمدة من تجربته الخاصة، ومحادثات مع زملائه المطورين، وأفضل الممارسات في الصناعة. تقدم هذه المدونة دليلاً عملياً للمطورين الذين يتطلعون إلى دمج نماذج LLMs في عملية البرمجة الخاصة بهم، سواء كانوا يبدأون مشروعاً جديداً أو يعملون مع قاعدة تعليمات برمجية موجودة.
تطوير المشروع الجديد: عملية من ثلاث خطوات
يحدد ريد عملية من ثلاث خطوات مثالية لتطوير المشاريع الجديدة، مع التركيز على التخطيط الدقيق والتوثيق لتسهيل التنفيذ السلس على شكل زيادات صغيرة يمكن التحكم فيها.
- صقل الأفكار: استخدم نموذج LLM للمحادثة (مثل ChatGPT) لصقل فكرة المشروع من خلال طرح أسئلة تكرارية، مما يؤدي في النهاية إلى إنشاء وثيقة مواصفات شاملة (
spec.md). يمكن بعد ذلك استخدام هذه المواصفات لأغراض مختلفة، مثل تحديد نقاط الضعف في الفكرة، أو إنشاء ورقة بيضاء، أو تطوير نموذج أعمال.
- التخطيط: استخدم نموذج استدلال (مثل o1، o3، r1) لإنشاء مخطط تفصيلي خطوة بخطوة لبناء المشروع. قسّم الخطة إلى أجزاء صغيرة متكررة، مع التأكد من أن كل خطوة صغيرة بما يكفي للتنفيذ الآمن مع اختبار قوي. يجب أن يكون الناتج
prompt_plan.md يحتوي على سلسلة من المطالبات لنموذج LLM لتوليد التعليمات البرمجية. يتم أيضاً إنشاء قائمة تحقق todo.md لتتبع التقدم.
- التنفيذ: قم بتنفيذ الخطة باستخدام أداة توليد التعليمات البرمجية مثل Aider أو Cursor أو Claude. يفضل ريد إقران Claude الخام مع Aider. يتم استخدام Claude لتنفيذ المطالبات بشكل متكرر وتصحيح التعليمات البرمجية من خلال Repomix. يقوم Aider بأتمتة عملية توليد التعليمات البرمجية، بما في ذلك تشغيل الاختبارات وتصحيح الأخطاء.
التعليمات البرمجية الحديثة القديمة: التكرار التدريجي
للعمل مع قواعد التعليمات البرمجية الحالية، يدافع ريد عن اتباع نهج أكثر توجهاً نحو المهام، مع التركيز على التحسينات التدريجية بدلاً من التخطيط الشامل.
- جمع السياق: استخدم أداة (يستخدم ريد Repomix) لاستخراج التعليمات البرمجية المصدر ذات الصلة وتعبئتها في ملف
output.txt لنموذج LLM. يتم استخدام مهام Mise لتحويلات مختلفة، مثل إنشاء مراجعات التعليمات البرمجية أو مشكلات GitHub أو الاختبارات المفقودة أو ملفات README. تتيح مرونة Mise تجاوز التكوينات بناءً على متطلبات قاعدة التعليمات البرمجية المحددة.
- التفاعل مع النموذج اللغوي الكبير: مرر
output.txt إلى نموذج LLM لإجراء التحويلات، وحفظ النتائج كملفات markdown. على سبيل المثال، يتضمن إنشاء اختبارات مفقودة تشغيل مهمة Mise لإنشاء ملف missing-tests.md، ثم استخدام محتويات هذا الملف مع سياق قاعدة التعليمات البرمجية لتوجيه نموذج LLM.
- التنفيذ (Claude/Aider): دمج التعليمات البرمجية التي تم إنشاؤها باستخدام إما Claude أو Aider. باستخدام Claude، انسخ التعليمات البرمجية والصقها يدوياً في IDE، وشغل الاختبارات، وكرر العملية. باستخدام Aider، الصق المطالبة، وشاهد Aider يقوم تلقائياً بإنشاء التعليمات البرمجية واختبارها، ومعالجة أي مشكلات.
سحر المطالبات: تحسين قواعد التعليمات البرمجية
يشارك ريد العديد من المطالبات التي يستخدمها لتحسين قواعد التعليمات البرمجية الثابتة، بما في ذلك مطالبات لمراجعة التعليمات البرمجية وإنشاء مشكلات GitHub وتحديد الاختبارات المفقودة. بينما يعترف بأن هذه المطالبات قديمة إلى حد ما، إلا أنها تقدم نقطة انطلاق لتحسين جودة التعليمات البرمجية ومتانتها.
- مراجعة التعليمات البرمجية: مطالبة لإجراء مراجعة شاملة للتعليمات البرمجية وإخراج المراجعة بتنسيق markdown، بما في ذلك أرقام الأسطر والمعلومات السياقية.
- إنشاء مشكلات GitHub: مطالبة لتحديد الأخطاء أو خيارات التصميم أو مشكلات نظافة التعليمات البرمجية وتنسيقها كمشكلات GitHub.
- الاختبارات المفقودة: مطالبة لتحديد حالات الاختبار المفقودة وكتابة اختبارات التعليمات البرمجية.
تجربة القرصنة الفردية والحاجة إلى برمجة LLM متعددة اللاعبين
يندد ريد بالطبيعة الفردية السائدة لتدفقات عمل البرمجة بمساعدة LLM الحالية، مشيراً إلى أن البرمجة بشكل عام أفضل مع الأشخاص. يدعو إلى حلول تسهل البرمجة الجماعية مع نماذج LLM، ومعالجة تحديات مثل تصادمات الروبوتات وتعارضات الدمج وتعقيدات السياق. يعتقد أن هذا مجال حاسم للابتكار.
التخفيف من وقت التوقف ومعالجة الشكوك
يسلم ريد بوقت التوقف المرتبط بالانتظار حتى تقوم نماذج LLM بمعالجة التعليمات البرمجية، ويقترح أنشطة مثل تبادل الأفكار حول مشاريع جديدة، أو الاستماع إلى الموسيقى، أو ممارسة ألعاب بسيطة لملء الوقت. كما يعالج الشكوك المحيطة بنماذج LLM، ويسلط الضوء على المخاوف بشأن استهلاك الطاقة والتأثير البيئي. يوصي بكتاب إيثان مولي “الذكاء المشترك: العيش والعمل مع الذكاء الاصطناعي” كمنظور متوازن حول فوائد وتحديات الذكاء الاصطناعي.
في الختام، يقدم تدفق عمل هاربر ريد إطاراً قيماً للاستفادة من نماذج LLM في تطوير البرمجيات، مع التركيز على التخطيط المنظم والتنفيذ التكراري والتحسين المستمر. على الرغم من التحديات والمزالق المحتملة، يدعو ريد إلى استكشاف إمكانيات البرمجة بمساعدة LLM، وتشجيع المطورين على التجربة والتكيف وفي النهاية تعزيز إنتاجيتهم وإبداعهم.
المصدر: Harper Reed’s Blog
Harper Reed details his current workflow for using Large Language Models (LLMs) to generate code, emphasizing a structured approach designed to minimize wasted time and maximize productivity. The workflow is broken down into distinct phases, including idea honing, detailed planning, and iterative execution. Reed shares insights gleaned from his own experience, conversations with fellow developers, and industry best practices. This post provides a practical guide for developers looking to integrate LLMs into their coding process, whether starting a new project or working with an existing codebase.
Greenfield Development: A Three-Step Process
Reed outlines a three-step process ideal for greenfield development, focusing on meticulous planning and documentation to facilitate smooth execution in small, manageable increments.
- Idea Honing: Use a conversational LLM (e.g., ChatGPT) to refine the project idea through iterative questioning, ultimately generating a comprehensive specification document (
spec.md). This spec can then be used for various purposes, such as identifying weaknesses in the idea, generating a white paper, or developing a business model.
- Planning: Leverage a reasoning model (e.g., o1, o3, r1) to create a detailed, step-by-step blueprint for building the project. Break the plan into small, iterative chunks, ensuring each step is small enough for safe implementation with robust testing. The output should be a
prompt_plan.md containing a series of prompts for a code-generation LLM. A todo.md checklist is also generated to track progress.
- Execution: Execute the plan using a code-generation tool like Aider, Cursor, or Claude. Reed prefers pairing raw Claude with Aider. Claude is used for iteratively executing prompts and debugging code through Repomix. Aider automates the code generation process, including running tests and debugging.
Legacy Modern Code: Incremental Iteration
For working with existing codebases, Reed advocates a more task-oriented approach, focusing on incremental improvements rather than comprehensive planning.
- Context Gathering: Use a tool (Reed uses Repomix) to extract relevant source code and package it into an
output.txt file for the LLM. Mise tasks are utilized for various transformations, such as generating code reviews, GitHub issues, missing tests, or READMEs. The flexibility of Mise allows for overriding configurations based on specific codebase requirements.
- LLM Interaction: Pass the
output.txt to the LLM to perform transformations, saving the results as markdown files. For example, generating missing tests involves running a Mise task to create a missing-tests.md file, then using the contents of this file along with the codebase context to guide the LLM.
- Execution (Claude/Aider): Integrate the generated code using either Claude or Aider. With Claude, manually copy and paste the code into the IDE, run tests, and repeat. With Aider, paste the prompt, watch Aider automatically generate and test the code, and address any issues.
Prompt Magic: Enhancing Codebases
Reed shares several prompts he uses to enhance established codebases, including prompts for code review, GitHub issue generation, and identifying missing tests. While he acknowledges these prompts are somewhat outdated, they offer a starting point for improving code quality and robustness.
- Code Review: A prompt to conduct a thorough code review and output the review in markdown format, including line numbers and contextual information.
- GitHub Issue Generation: A prompt to identify bugs, design choices, or code cleanliness issues and format them as GitHub issues.
- Missing Tests: A prompt to identify missing test cases and write code tests.
The Solo Hacker Experience and the Need for Multiplayer LLM Coding
Reed laments the predominantly single-player nature of current LLM-assisted coding workflows, noting that coding is generally better with people. He calls for solutions that facilitate team-based coding with LLMs, addressing challenges such as bot collisions, merge conflicts, and context complications. He believes that this is a critical area for innovation.
Mitigating Downtime and Addressing Skepticism
Reed acknowledges the downtime associated with waiting for LLMs to process code, suggesting activities like brainstorming new projects, listening to music, or engaging in simple games to fill the time. He also addresses the skepticism surrounding LLMs, highlighting concerns about power consumption and environmental impact. He recommends Ethan Mollick’s book “Co-Intelligence: Living and Working with AI” as a balanced perspective on the benefits and challenges of AI.
In conclusion, Harper Reed’s workflow offers a valuable framework for leveraging LLMs in software development, emphasizing structured planning, iterative execution, and continuous improvement. Despite the challenges and potential pitfalls, Reed advocates for exploring the possibilities of LLM-assisted coding, encouraging developers to experiment, adapt, and ultimately enhance their productivity and creativity.
Source: Harper Reed’s Blog
جاري تحميل التعليقات...