أفكر في تفعيل بعض الأوامر المخصصة في مساعد Discourse.
حتى الآن، أقصى ما تمكنت من فعله هو استخدامها من خلال الوكلاء (agents) عبر روبوت الذكاء الاصطناعي. فعلى سبيل المثال، تقوم دالة بتطوير منشور بشكل موجز من رابط مُلصق. يعمل الأمر بشكل رائع، لكنه يتطلب جهدًا كبيرًا لتحويل الرسالة الشخصية إلى موضوع، ثم نقله، ثم إضافة الوسوم.
السلوك المطلوب هو السماح بإضافة نفس الوظيفة إلى الأوامر المحددة مسبقًا في المساعد، دون الحاجة إلى لصق الأمر الأولي مرة أخرى.
حسنًا، انتهى بي الأمر إلى إعادة استخدام بعض الأدوات المساعدة المتاحة حاليًا (لكنها غير مستخدمة في مجتمعنا) والتي تم شحنها بالفعل مع Discourse.
| الموقع |
الإعداد |
القيمة |
إعادة تسمية التسمية (تخصيص → نص) |
| استفسار الذكاء الاصطناعي (المنشورات/المواضيع) |
ai_helper_translator_agent |
وكيل البحث المخصص |
discourse_ai.ai_helper.prompts.translate → تسمية البحث المخصص |
| ترجمة المحرر |
ai_helper_markdown_tables_agent |
وكيل الترجمة المدمج |
discourse_ai.ai_helper.prompts.markdown_table → ترجمة |
| منسّق Markdown في المحرر |
ai_helper_smart_dates_agent |
وكيل منسّق Markdown (تم نقله) |
discourse_ai.ai_helper.prompts.replace_dates → تنسيق كـ Markdown |
ثم مقتطفان:
javascripts/discourse/api-initializers/ai-helper-slots.gjs
import { apiInitializer } from "discourse/lib/api";
const AI_HELPER_ICONS = {
translate: "ph-dt-magnifying-glass", // for forum search agent
markdown_table: "ph-dt-translate", // composer: built-in Translator
replace_dates: "ph-dt-markdown", // composer: Markdown formatter
};
export default apiInitializer((api) => {
api.getCurrentUser()?.ai_helper_prompts?.forEach((prompt) => {
prompt.icon = AI_HELPER_ICONS[prompt.name] ?? prompt.icon;
});
});
common.scss
.ai-composer-helper-menu ul.ai-helper-options li[data-value="translate"] {
display: none;
}
ملاحظة: أنا أستخدم مجموعة أيقونات Phosphor مخصصة؛ يمكن دمج الأيقونات الجديدة في Font Awesome أو Material أو أي مجموعة أيقونات أخرى.