https://github.com/aaronsun0811-dot/council
Lightweight multi-model workflow desktop app — chain LLMs into a pipeline, each step one job. Tauri 2 + vanilla TS.
https://github.com/aaronsun0811-dot/council
desktop-app llm multi-model rust tauri typescript
Last synced: about 18 hours ago
JSON representation
Lightweight multi-model workflow desktop app — chain LLMs into a pipeline, each step one job. Tauri 2 + vanilla TS.
- Host: GitHub
- URL: https://github.com/aaronsun0811-dot/council
- Owner: aaronsun0811-dot
- License: mit
- Created: 2026-05-31T03:37:41.000Z (4 days ago)
- Default Branch: main
- Last Pushed: 2026-06-02T01:07:51.000Z (2 days ago)
- Last Synced: 2026-06-02T02:24:33.681Z (2 days ago)
- Topics: desktop-app, llm, multi-model, rust, tauri, typescript
- Language: TypeScript
- Size: 1.39 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.ar.md
- License: LICENSE
Awesome Lists containing this project
README

# council
**تطبيق سطح مكتب خفيف لسير عمل متعدد النماذج.**
اربط نماذج لغوية مختلفة في خط أنابيب (pipeline) يؤدي فيه كل خطوة مهمة واحدة — حيث يغذّي مخرج كل خطوة الخطوة التي تليها.
[简体中文](./README.zh.md) · [English](./README.md) · [Español](./README.es.md) · [Português](./README.pt.md) · [Français](./README.fr.md) · [Deutsch](./README.de.md) · [日本語](./README.ja.md) · [한국어](./README.ko.md) · [Tiếng Việt](./README.vi.md) · [Bahasa Indonesia](./README.id.md) · [हिन्दी](./README.hi.md) · [ไทย](./README.th.md) · [Türkçe](./README.tr.md) · العربية
Tauri 2 · vanilla TypeScript · بدون إطار عمل للواجهة الأمامية
---
## ما هو
يتيح لك `council` ربط عدة نماذج معًا في **خط أنابيب** خطّي. تختار كل خطوة نموذجها الخاص
(واجهة برمجة تطبيقات مستضافة، أو واجهة سطر أوامر محلية مثل Claude Code / Codex) وتؤدي مهمة واحدة — الصياغة، أو المراجعة،
أو التحقق من الحقائق، أو التنقيح — ثم تمرّر مخرجها إلى ما بعدها. كما يوجد أيضًا وضع **المقال الواحد**
بضربة واحدة (GEO) لتوليد مقال مكتمل + منشور اجتماعي في تمريرة واحدة، مع إمكانية توليد
الصور المضمّنة اختياريًا.
كل شيء يعمل محليًا بوصفه تطبيق سطح مكتب أصيلًا. **مفاتيح واجهة برمجة التطبيقات تبقى فقط في
localStorage الخاص بمتصفحك** — ولا تُرسَل إلى أي مكان سوى نقطة نهاية المزوّد التي تضبطها.
## الميزات
- **خط أنابيب النصوص** — خطوات متعددة، لكل منها نموذجها الخاص وتعليماتها. أشِر إلى مخرجات
الخطوات السابقة باستخدام عناصر نائبة: `{{input}}` (المدخل الأولي)، `{{prev}}` (الخطوة السابقة)، `{{1}}` `{{2}}` … (الخطوة N).
- **سوق النماذج** — إعدادات مسبقة لـ DeepSeek وOpenAI وGemini وQwen وKimi وGLM وxAI Grok وMistral
وVolcengine Doubao وOllama وMiniMax. تعمل أي نقطة نهاية `/chat/completions` متوافقة مع OpenAI عبر
إضافة مزوّد.
- **عمّال واجهة سطر الأوامر المحلية** — شغّل وكلاء محليين (Claude Code وCodex وGemini CLI وGrok CLI) بوصفهم خطوات
في خط الأنابيب عبر `cli_run` عام (برنامج + وسائط + موجِّه).
- **مكتبة المهارات** — موجِّهات `SKILL.md` قابلة لإعادة الاستخدام في `~/.council/skills`، يمكن إرفاقها لكل خطوة.
استورد من ملفات/مجلدات محلية، أو زامِن مع مستودع git (تنزيل / رفع).
- **وضع المقال الواحد (GEO)** — مولّد مستقل: العنوان/الموضوع، ومسار/أماكن اختيارية،
و10 أنماط كتابة، وشريط تمرير للطول، وزوّده بمادة خام أو رابط مرجعي، وصور مضمّنة
اختيارية. يُخرِج مقالًا قابلًا للتحرير + منشورًا اجتماعيًا قصيرًا؛ انسخه أو صدّره إلى Markdown.
- **توليد الصور** — تحويل النص إلى صورة عبر نقاط نهاية بأسلوب صور OpenAI (مثل Volcengine Seedream)،
أو SVG عبر عامل واجهة سطر أوامر محلي.
- **توليد الفيديو** — تحويل النص إلى فيديو بشكل غير متزامن (Volcengine Ark / Seedance)، يُعرَض في بطاقة النتيجة.
- **سير العمل المُسمّى** — احفظ / حمّل / احذف خطوط أنابيب كاملة بوصفها ملفات.
## تشغيله
المتطلبات: [Node.js](https://nodejs.org/) 18+، و[Rust](https://rustup.rs/) (المستقر)، و
[متطلبات Tauri 2 المسبقة](https://tauri.app/start/prerequisites/) لنظام تشغيلك.
```sh
npm install
npm run tauri dev # development mode, opens a window with HMR
npm run tauri build # build a release .app / .dmg (or platform equivalent)
```
## الاستخدام
1. افتح **厂商 / 命令 / Key** (المزوّدون / الأوامر / المفاتيح) في الشريط العلوي والصق مفتاح واجهة برمجة التطبيقات.
يأتي مزوّد DeepSeek مهيّأً مسبقًا — ما عليك سوى إضافة المفتاح. لأي خدمة أخرى متوافقة مع OpenAI،
انقر لإضافة مزوّد واضبط نقطة النهاية (Endpoint) الخاصة به حتى وبما في ذلك `/chat/completions`.
2. في اللوحة اليسرى، ابنِ خط الأنابيب: تختار كل خطوة نموذجًا (أو واجهة سطر أوامر محلية) وتعليمة.
3. استخدم العناصر النائبة في التعليمات للإشارة إلى مخرجات الخطوات السابقة:
- `{{input}}` — المدخل الأولي في الأعلى
- `{{prev}}` — مخرج الخطوة السابقة
- `{{1}}` `{{2}}` … — مخرج الخطوة N
4. انقر على **▶ 运行 (Run)**. تُنفَّذ الخطوات من الأعلى إلى الأسفل وتتدفق إلى لوحة النتائج في الجهة اليمنى.
5. بدّل إلى **单篇 (Single-article)** في الشريط العلوي للحصول على مولّد GEO بضربة واحدة.
## البنية المعمارية
تكشف الخلفية المكتوبة بلغة Rust (`src-tauri/src/lib.rs`) عن حفنة من أوامر Tauri؛ أما الواجهة الأمامية
المكتوبة بـ vanilla-TS فتنسّق خط الأنابيب وتبثّ كل خطوة.
| Command | الغرض |
| --- | --- |
| `chat_stream` | `/chat/completions` متوافق مع OpenAI (SSE)، يبثّ الفروقات (deltas) عبر Tauri Channel |
| `cli_run` | يشغّل عامل واجهة سطر أوامر محلي (برنامج + وسائط ثابتة + موجِّه بوصفه آخر argv) |
| `fetch_url` | يجلب صفحة ويب ويستخرج نصًا قابلًا للقراءة (لتغذية الرابط المرجعي) |
| `image_generate` | تحويل النص إلى صورة (بأسلوب صور OpenAI، يعيد رابط صورة) |
| `video_generate` | واجهة برمجة مهمة تحويل النص إلى فيديو غير متزامنة (إرسال + استطلاع)، تعيد رابط فيديو |
| `*_workflow` / `*_skill` | حفظ / تحميل / سرد / حذف سير العمل والمهارات؛ تنزيل / رفع المهارات عبر git |
- **البثّ**: يدفع كلٌّ من عمّال HTTP وواجهة سطر الأوامر نصًا تدريجيًا إلى الواجهة الأمامية عبر Tauri
`Channel`؛ وتتعامل الواجهة الأمامية معها بشكل موحّد.
- **`reqwest`** يستخدم `rustls-tls` (دون اعتماد على OpenSSL الخاص بالنظام).
- **المفاتيح** تُخزَّن فقط في localStorage. إيقاف التشغيل يوقف الواجهة الأمامية عن الإصغاء؛ أما
طلب HTTP الخلفي الجاري فيكتمل في الخلفية.
## خارطة الطريق
- الكتابة التعاونية متعددة النماذج لوضع المقال الواحد (سلسلة كاتب←محرّر / متغيّرات متوازية للمقارنة).
- وضع نقاش المائدة المستديرة (السؤال نفسه، نماذج متعددة، جولات متعددة + ملخّص).
## الترخيص
[MIT](./LICENSE)