الانتقال إلى المحتوى الرئيسي

ثلاث طرق للمساهمة

هناك ثلاث طرق للمساهمة في وولف فيش:

الكود

TypeScript - إصلاح الأخطاء، إضافة الميزات، تحسين بيئة التشغيل.

القدرات

SKILL.md + إضافة اختيارية - علّم وولف فيش أشياء جديدة.

التوثيق

صفحات MDX - حسّن أو ترجم الوثائق.

المساهمات البرمجية

سير العمل

  1. انسخ المستودع واستنسخ نسختك
  2. أنشئ فرع ميزة:
    git checkout -b feature/my-thing
    # or
    git checkout -b fix/the-bug
    
  3. أجرِ تغييراتك
  4. تحقق:
    npm run typecheck && npm run lint
    
  5. اختبر تغييرات الواجهة في المتصفح (npm run dev)
  6. أنشئ التزامًا بالتنسيق التقليدي
  7. ادفع وافتح طلب سحب ضد main

رسائل الالتزام

استخدم الالتزامات التقليدية:
type(scope): subject

feat(runtime): add token counting to prefrontal
fix(renderer): prevent flash on theme switch
refactor(motor): simplify retry logic
docs(capabilities): add plugin lifecycle diagram
الأنواع الشائعة: feat، fix، refactor، docs، chore، test

اتفاقيات الكود

يجب أن يكون الكود موثقًا ذاتيًا. إذا احتجت لتعليق، اشرح لماذا وليس ماذا.
// Bad
// Get the user
const user = getUser()

// Good — the WHY is non-obvious
// Fallback to default user when workspace has no user.md yet
const user = getUser() ?? DEFAULT_USER
لا تُنشئ تجريدات حتى يكون لديك ثلاث حالات استخدام ملموسة. إصلاح الخطأ هو إصلاح خطأ - لا تُعد هيكلة العالم حوله.
قبل إضافة حزمة، تحقق مما إذا كانت المكتبة القياسية أو التبعيات الحالية تغطيها بالفعل. يستخدم وولف فيش fetch() مباشرة بدلاً من Axios، و mitt بدلاً من EventEmitter3، وهكذا.
لا تستورد أبدًا من @main/* في كود العارض. جميع الاتصالات تمر عبر قنوات IPC المعرّفة في طبقة preload.
// In renderer — use the exposed API
const result = await window.api.someChannel(args)

// NEVER do this in renderer
import { something } from '@main/some-module' // Breaks process isolation
البصمة الكاملة للتطبيق موجودة في ~/.wolffish/. لا تكتب أبدًا على سطح المكتب أو المستندات أو المجلدات المؤقتة أو أي مكان آخر. إذا احتاجت ميزة لتخزين، ضعها داخل مساحة العمل.

المساهمة بالقدرات

القدرات هي أسهل طريقة لتوسيع وولف فيش دون المساس بالكود الأساسي.

إنشاء قدرة

  1. أنشئ مجلدًا في src/defaults/workspace/brain/cerebellum/:
    brain/cerebellum/my-capability/
    ├── SKILL.md          # Required — defines triggers, tools, behavior
    └── plugin/           # Optional — custom tool logic
        └── index.mjs
    
  2. اكتب SKILL.md مع البيانات الوصفية المناسبة:
    ---
    name: my-capability
    description: What this capability does
    triggers:
      - keyword that activates this
      - another trigger phrase
    tools:
      - name: my_tool
        description: What this tool does
        parameters:
          type: object
          properties:
            input:
              type: string
              description: The input to process
          required: [input]
    danger:
      - pattern: "rm -rf"
        reason: "Destructive file operation"
    ---
    
    # Instructions for the LLM
    
    When the user asks about [topic], use the `my_tool` tool to...
    
  3. اختبر مع النماذج السحابية (DeepSeek، Claude، GPT) والنماذج المحلية (Ollama) - يجب أن يكون السلوك متسقًا.

مشاركة القدرات

يمكن أن تكون القدرات أيضًا في مستودعات مستقلة. يستنسخها المستخدمون مباشرة في مجلد ~/.wolffish/workspace/brain/cerebellum/:
cd ~/.wolffish/workspace/brain/cerebellum/
git clone https://github.com/you/wolffish-capability-name.git
يكتشفها وولف فيش عند التشغيل التالي.

المساهمة في التوثيق

الإعداد

الوثائق موجودة في مستودع wolffish-docs (منفصل عن التطبيق):
git clone https://github.com/thewolffish/wolffish-docs.git
cd wolffish-docs
npx mintlify dev

التنسيق

  • ملفات MDX مع مكونات Mintlify (Card، CardGroup، Note، Tip، Warning، Tabs، Accordion، إلخ.)
  • حافظ على المحتوى عمليًا وموجزًا
  • استخدم كتل الكود بكثرة

الترجمات

الترجمات العربية مطلوبة لجميع الصفحات الجديدة. يعكس مجلد ar/ بنية الإنجليزية بالضبط.
لكل صفحة جديدة في section/page.mdx، أنشئ صفحة مقابلة في ar/section/page.mdx بنفس البنية والمحتوى المترجم. حدّث تنقل mint.json لكلا الإصدارين.

إعداد بيئة التطوير

شغّل بيئة التطوير أولاً.

إضافة وحدات الدماغ

تساهم بوحدة بيئة تشغيل جديدة؟ اقرأ هذا.