Pi Agent: Extension Basics
آخر تحديث: 2026-08-31
--- title: "أساسيات الامتدادات" description: "تعرّف على آلية امتدادات Pi Agent، وافهم بنية الامتداد ودورة حياته وسير عمل التطوير والنشر." order: 14 lang: ar
الامتدادات تأخذ Pi Agent من "جيد بما يكفي" إلى "رائع" — استخدم امتدادات الآخرين أو انشر امتدادك الخاص.
1. ما هي الامتدادات
الامتدادات هي آلية الإضافات في Pi Agent التي يمكنها:
- إضافة أدوات جديدة
- إضافة مهارات جديدة
- إضافة مزوّدي نماذج لغوية جديدة
- إضافة أوامر جديدة
- تعديل سلوك الوكيل
TEXT
📖 للعرض فقط
بنية الامتداد
├── manifest.yaml -> البيانات الوصفية (الاسم، الإصدار، التبعيات)
├── tools/ -> تعريفات الأدوات
├── skills/ -> تعريفات المهارات
├── providers/ -> محولات المزوّدين
├── hooks/ -> دوال الخطاف
└── templates/ -> قوالب الأوامر
2. تثبيت الامتدادات
(1) من المستودع الرسمي
BASH
pi-agent ext install github-tools
pi-agent ext install database-query
(2) من مستودع Git
BASH
pi-agent ext install git+https://github.com/user/pi-ext-custom.git
(3) من دليل محلي
BASH
pi-agent ext install ./my_extension
(4) إدارة الامتدادات
BASH
pi-agent ext list
pi-agent ext update github-tools
pi-agent ext remove github-tools
3. إنشاء امتدادات
(1) الهيكل الأساسي
BASH
pi-agent ext create my_extension
(2) manifest.yaml
YAML
name: my_extension
version: "1.0.0"
description: "امتدادي المخصص"
author: "Alice"
min_pi_agent_version: "0.8.0"
dependencies:
- requests>=2.28.0
tools:
- tools/my_tool.py
skills:
- skills/my_skill.yaml
entry_point: hooks.py
(3) تعريف أداة
PYTHON
# tools/my_tool.py
from pi_agent import tool
@tool(
name="weather_query",
description="Query weather for a city",
parameters={
"city": {"type": "string", "description": "City name"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"], "default": "celsius"}
}
)
def weather_query(city: str, unit: str = "celsius") -> dict:
import requests
resp = requests.get(f"https://wttr.in/{city}?format=j1")
data = resp.json()
temp = data["current_condition"][0]["temp_C"]
if unit == "fahrenheit":
temp = int(temp) * 9 // 5 + 32
return {"city": city, "temperature": temp, "unit": unit}
4. دورة حياة الامتداد
(1) دوال الخطاف
PYTHON
# hooks.py
from pi_agent import ExtensionHook
class MyExtension(ExtensionHook):
def on_load(self, agent):
print(f"Loaded my_extension for {agent.name}")
def on_tool_call(self, agent, tool_name, params):
print(f"Tool called: {tool_name}")
def on_tool_result(self, agent, tool_name, result):
print(f"Tool result: {tool_name}")
def on_error(self, agent, error):
print(f"Error: {error}")
def on_unload(self, agent):
print("my_extension unloaded")
5. نشر الامتدادات
(1) التغليف
BASH
pi-agent ext package my_extension
# يُنشئ my_extension-1.0.0.tar.gz
(2) النشر إلى المستودع الرسمي
BASH
pi-agent ext publish my_extension
(3) النشر إلى PyPI
BASH
cd my_extension
python -m build
twine upload dist/*
❓ أسئلة شائعة
س ما الفرق بين الامتداد والمهارة؟
ج المهارة هي وحدة قدرة واحدة (مجموعة أمر + أداة). الامتداد هو حزمة إضافات كاملة (أدوات ومهارات ومزوّدون وخطافات متعددة).
س تبعيات الامتداد؟
ج أعلن عنها في dependencies في manifest.yaml. Pi Agent يحلها ويثبتها تلقائياً.
س مراجعة أمان الامتدادات؟
ج امتدادات المستودع الرسمي مُراجعة. امتدادات الأطراف الثالثة تحتاج تقييم المخاطر الخاص بك. اختبر في بيئة معزولة أولاً.
📖 ملخص
- الامتدادات هي آلية الإضافات في Pi Agent للأدوات والمهارات والمزوّدين والأوامر
- ثبّت بـ
pi-agent ext install، أنشئ بـpi-agent ext create - manifest.yaml يعرّف البيانات الوصفية؛ tools/ وskills/ تحتوي الوظائف
- دوال الخطاف تعالج أحداث دورة الحياة
- انشر إلى المستودع الرسمي أو PyPI
📝 تمارين
- أساسي (الصعوبة: ⭐): ثبّت امتداداً رسمياً واستخدم أداته.
- متوسط (الصعوبة: ⭐⭐): أنشئ امتداد استعلام طقس بسيط بأداة ومهارة.
- متقدم (الصعوبة: ⭐⭐⭐): أنشئ امتداداً كاملاً بأداة ومهارة وخطافات واختبارات وحدة.