الدرس 25: تنفيذ الكود
الدرس 25: تنفيذ الكود — دليل سهل الفهم بناءً على الوثائق الرسمية
هذا جزء من سلسلة دروس هيرميس الرسمية. عرض جميع الدروس
تخيّل أنك تخبز كعكة، وبدلاً من إحضار المكونات واحداً تلو الآخر، تكتب الوصفة كاملة، وتسلّمها لمساعد، فيعيد لك الكعكة الجاهزة فقط. هذا بالضبط ما يفعله تنفيذ الأكواد (Code Execution) مع وكيل هيرميس — فهو يتيح للوكيل تشغيل سكربت بايثون كامل يستدعي أدوات متعددة داخله، ثم يعيد النتيجة النهائية فقط إلى المحادثة.
ما هو تنفيذ الأكواد؟
عادةً، عندما يحتاج هيرميس إلى البحث في الويب، أو قراءة ملف، أو تشغيل أمر، فإنه ينفّذ كل خطوة على حدة — وكل نتيجة وسيطة تُحمَّل في “ذاكرته” (نافذة السياق). هذا بطيء ويهدر الرموز (tokens).
مع أداة execute_code، يكتب هيرميس سكربت بايثون يمكنه استدعاء الأدوات برمجياً — مثل web_search أو read_file أو patch — دفعة واحدة. يعمل السكربت في عملية فرعية منفصلة، ولا يعود إلى الوكيل سوى مخرجات print(). كل البيانات الوسيطة الفوضوية تبقى مخفية.
كيف يعمل: خطوة بخطوة
الخطوة 1: يكتب الوكيل سكربت بايثون
يبدأ باستيراد الأدوات من وحدة خاصة:
from hermes_tools import web_search, web_extract
الخطوة 2: ينشئ هيرميس وحدة مساعدة
يقوم تلقائياً بإنشاء ملف hermes_tools.py يربط السكربت الخاص بك بالوكيل الرئيسي.
الخطوة 3: فتح قناة تواصل
يفتح هيرميس مقبس Unix domain socket (خط هاتف محلي سريع بين العمليات) ويبدأ خيط استماع.
الخطوة 4: يعمل السكربت في عملية فرعية
كل استدعاء أداة داخل السكربت يمر عبر ذلك المقبس إلى هيرميس، الذي ينفّذه ويعيد النتيجة.
الخطوة 5: فقط مخرجات print تعود
عبارات print() في السكربت هي الشيء الوحيد الذي يراه نموذج اللغة. كل نتائج الأدوات الوسيطة لا تدخل نافذة السياق أبداً — مما يوفر كميات هائلة من الرموز.
متى يستخدم هيرميس هذا؟
يختار الوكيل execute_code تلقائياً عندما يلاحظ:
- 3 استدعاءات أدوات أو أكثر مع منطق بينها (مثل التصفية أو المقارنة)
- معالجة بيانات ضخمة — مثل البحث في ملفات كثيرة واستخراج مقاطع
- حلقات تكرار — تكرار إجراء على عناصر متعددة
المكسب الأكبر؟ كفاءة الرموز. بدلاً من إدخال كل نتيجة بحث في المحادثة، يمر فقط الملخص النهائي.
أمثلة عملية يمكنك تجربتها
1. خط معالجة بيانات
from hermes_tools import search_files, read_file
import json
# Find all config files and extract database settings
matches = search_files("database", path=".", file_glob="*.yaml", limit=20)
configs = []
for match in matches.get("matches", []):
content = read_file(match["path"])
configs.append({"file": match["path"], "preview": content["content"][:200]})
print(json.dumps(configs, indent=2))
2. بحث ويب متعدد الخطوات
from hermes_tools import web_search, web_extract
import json
results = web_search("Rust async runtime comparison 2025", limit=5)
summaries = []
for r in results["data"]["web"]:
page = web_extract([r["url"]])
for p in page.get("results", []):
if p.get("content"):
summaries.append({
"title": r["title"],
"url": r["url"],
"excerpt": p["content"][:500]
})
print(json.dumps(summaries, indent=2))
3. إعادة هيكلة ملفات جماعية
from hermes_tools import search_files, read_file, patch
matches = search_files("old_api_call", path="src/", file_glob="*.py")
fixed = 0
for match in matches.get("matches", []):
result = patch(
path=match["path"],
old_string="old_api_call(",
new_string="new_api_call(",
replace_all=True
)
if "error" not in str(result):
fixed += 1
print(f"Fixed {fixed} files out of {len(matches.get('matches', []))} matches")
4. خط بناء واختبار
from hermes_tools import terminal
import json
result = terminal("cd /project && python -m pytest --tb=short -q 2>&1", timeout=120)
output = result.get("output", "")
passed = output.count(" passed")
failed = output.count(" failed")
print(json.dumps({"passed": passed, "failed": failed}, indent=2))
نقاط أساسية للتذكّر
- الأدوات المتاحة داخل السكربتات:
web_searchوweb_extractوread_fileوwrite_fileوsearch_filesوpatchوterminal(في المقدمة فقط). - فقط مخرجات
print()تعود — كل شيء آخر يبقى مخفياً. - ممتاز للحلقات والتصفية وسير العمل متعدد الخطوات — وكأنك تمنح هيرميس بيئة برمجة مصغّرة.
الخلاصة
تنفيذ الأكواد يحوّل هيرميس من مساعد خطوة بخطوة إلى معالج دفعات. يكتب سكربتاً، يشغّله، ويعطيك الإجابة النهائية فقط — مما يوفر الوقت والرموز والجهد الذهني. إذا رأيت هيرميس يقوم بالكثير من استدعاءات الأدوات المتكررة، فغالباً يستخدم هذه الميزة في الخلفية.
التالي: الدرس 26 — المعالجة الدفعية: تشغيل مئات الاستعلامات بالتوازي.
📖 التوثيق الرسمي
この記事は Hermes Agent のالتوثيق الرسميに基づいています:التوثيق الرسمي › user-guide/features/code-execution