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 يحلها ويثبتها تلقائياً.
س مراجعة أمان الامتدادات؟
ج امتدادات المستودع الرسمي مُراجعة. امتدادات الأطراف الثالثة تحتاج تقييم المخاطر الخاص بك. اختبر في بيئة معزولة أولاً.

📖 ملخص


📝 تمارين

  1. أساسي (الصعوبة: ⭐): ثبّت امتداداً رسمياً واستخدم أداته.
  2. متوسط (الصعوبة: ⭐⭐): أنشئ امتداد استعلام طقس بسيط بأداة ومهارة.
  3. متقدم (الصعوبة: ⭐⭐⭐): أنشئ امتداداً كاملاً بأداة ومهارة وخطافات واختبارات وحدة.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%