0Pricing
AI Agents · درس

واجهات أدوات البرمجة (Read وEdit وBash)

الحد الأدنى من الأدوات التي يحتاج إليها وكيل برمجي: قراءة ملف، وتحرير ملف، وتشغيل shell، وتشغيل الاختبارات.

واجهات أدوات البرمجة (Read وEdit وBash) درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

ما الأدوات التي يحتاج إليها الوكيل البرمجي؟

الحد الأدنى:

  1. read_file — عرض الشيفرة
  2. edit_file / write_file — تغيير الشيفرة
  3. bash — تشغيل أوامر الصدفة (الاختبارات وعمليات البناء)
  4. search / grep — العثور على الشيفرة باستخدام سلسلة نصية أو رمز

read_file

def read_file(path: str, start_line: int = 0, end_line: int | None = None) -> str:
    with open(path) as f:
        lines = f.readlines()
    return ''.join(lines[start_line:end_line])

# --- demo ---
with open('demo_source.py', 'w', encoding='utf-8') as f:
    f.write('line0\nline1\nline2\nline3\nline4\n')

snippet = read_file('demo_source.py', start_line=1, end_line=3)
print('Lines 1-2 of demo_source.py:')
print(snippet)

قراءة نطاقات الأسطر توفّر الرموز

بالنسبة إلى الملفات الكبيرة، اقرأوا النطاق ذي الصلة فقط. فهذا يوفر عددًا هائلًا من الرموز مقارنةً بقراءة الملف بأكمله في كل استدعاء.

edit_file (استبدال سلسلة نصية)

نمط str_replace في Anthropic: ابحثوا عن سلسلة نصية فريدة في ملف واستبدلوها:

def edit_file(path: str, old_string: str, new_string: str):
    contents = read_file(path)
    occurrences = contents.count(old_string)
    if occurrences == 0:
        raise ValueError('old_string not found')
    if occurrences > 1:
        raise ValueError('old_string is not unique')
    contents = contents.replace(old_string, new_string)
    with open(path, 'w') as f:
        f.write(contents)

لماذا استبدال السلاسل النصية بدلًا من الفروقات؟

  • أبسط على النموذج من إنتاج صياغة فروقات صالحة
  • يجبر النموذج على فحص الشيفرة الحقيقية (ما يساعد على اكتشاف الهلوسة)
  • يُظهر خطأ عند وجود التباس

وهو التنسيق المستخدم في Claude Code.

write_file

لإنشاء ملفات جديدة:

def write_file(path: str, content: str):
    os.makedirs(os.path.dirname(path), exist_ok=True)
    with open(path, 'w') as f:
        f.write(content)

bash

أوامر الصدفة — للاختبارات وعمليات البناء وتثبيت الحزم:

def bash(command: str, timeout: int = 60) -> dict:
    import subprocess
    try:
        result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=timeout)
        return {'stdout': result.stdout[-5000:], 'stderr': result.stderr[-5000:], 'exit_code': result.returncode}
    except subprocess.TimeoutExpired:
        return {'error': 'timeout', 'exit_code': -1}

# --- demo ---
result = bash("echo hello from the sandboxed shell")
print(f"exit_code={result['exit_code']}")
print(f"stdout={result['stdout'].strip()!r}")

اعزلوا أداة Bash

لا تشغّلوا bash مطلقًا على المضيف لديكم. استخدموا Docker / Firecracker / E2B. (راجعوا الدورة السابقة حول العزل.)

اقتطعوا المخرجات الطويلة

قد تنتج إخفاقات الاختبارات ميغابايتات من المخرجات. اقتطعوها إلى بضعة كيلوبايتات أخيرة — فهي تحتوي عادةً على الخطأ الفعلي:

stderr = 'error line\n' * 1000

if len(stderr) > 5000:
    stderr = '...[truncated]...' + stderr[-5000:]

print(f'Truncated stderr length: {len(stderr)}')

search / grep

def grep(pattern: str, path: str = '.', file_glob: str = '**/*') -> list[str]:
    matches = []
    for f in glob(file_glob, recursive=True):
        for i, line in enumerate(open(f)):
            if re.search(pattern, line):
                matches.append(f'{f}:{i+1}: {line.rstrip()}')
    return matches[:50]

list_files

def list_files(path: str = '.') -> list[str]:
    return [p for p in glob(f'{path}/**', recursive=True) if os.path.isfile(p)][:200]

اختياري: أدوات AST

لفهم الشيفرة بعمق أكبر:

def find_function(name: str, path: str):
    tree = ast.parse(open(path).read())
    for node in ast.walk(tree):
        if isinstance(node, ast.FunctionDef) and node.name == name:
            return ast.unparse(node)

أوصاف الأدوات هي الأهم هنا

يختار وكلاء الشيفرة الأداة الخاطئة أكثر من وكلاء المحادثة. خصّصوا وقتًا إضافيًا للأوصاف:

description='Edit a file by replacing a unique string. The old_string MUST appear exactly once in the file. Reads the file first to validate. Use this for any code change in an existing file.'

هذه هي مجموعة الأدوات بأكملها

Read وedit وwrite وbash وgrep وlist. باستخدام هذه الأدوات الست، يستطيع الوكيل البرمجي تنفيذ معظم مهام هندسة البرمجيات. أضيفوا أدوات متخصصة فقط عند ثبوت فائدتها بالقياس.

نمط التعديل

لماذا يُعدّ التعديل باستخدام "string-replace" أكثر أمانًا من التعديل باستخدام "send full file"؟

مراجعة

Read وedit (str_replace) وwrite وbash وgrep وlist. ست أدوات موصوفة ومعزولة بشكل صحيح تكفي لمعظم وكلاء البرمجة.

الأسئلة الشائعة

هل درس «واجهات أدوات البرمجة (Read وEdit وBash)» مجاني؟

نعم — نص درس «واجهات أدوات البرمجة (Read وEdit وBash)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «واجهات أدوات البرمجة (Read وEdit وBash)»؟

الحد الأدنى من الأدوات التي يحتاج إليها وكيل برمجي: قراءة ملف، وتحرير ملف، وتشغيل shell، وتشغيل الاختبارات. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «واجهات أدوات البرمجة (Read وEdit وBash)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أنماط الوكلاء: التخطيط والتنفيذ والتحقق
  2. واجهات أدوات البرمجة (Read وEdit وBash)
  3. حلقات التصحيح الذاتي التكرارية
  4. معماريات SWE-Agent وOpenDevin
← العودة إلى AI Agents