สัญญาความสามารถ
รายการนี้บังคับใช้โดย scripts/test-capability-contracts.mjs ความสามารถของผู้ให้บริการจะยังไม่สมบูรณ์จนกว่า schema และการแมปแคตตาล็อก ตัวจัดการที่ดำเนินการได้ ไคลเอนต์เบราว์เซอร์ที่ตรงกัน การทำงาน UI ที่มีชื่อ เอกสาร การทดสอบพฤติกรรมเฉพาะ และ manifest ที่รวมมาจะสอดคล้องกัน
| ความสามารถ | ชนิด plugin | เส้นทางที่ดำเนินการได้ | ไคลเอนต์เบราว์เซอร์ | การทำงาน UI | เอกสาร | การทดสอบพฤติกรรมเฉพาะ | นิยามที่รวมมา |
|---|---|---|---|---|---|---|---|
| แชต/การเติมเต็ม | chat, completion | WS /ws (chat_stream) | frontend/src/hooks/useChat.ts | frontend/src/pages/ChatPage.tsx — handleSendMessage | docs/08-PLUGIN_ARCHITECTURE.md | scripts/test-chat-provider-selection.mjs (test:package) — การกำหนดเส้นทาง plugin ที่ตรงจะไปถึงผู้ให้บริการที่เลือกทั้งคำขอปกติและ streaming | anthropic, codex-oauth, gemini, github, groq, huggingface, kimi-code, llama-cpp, mistral, mlx-lm, openai, openrouter |
| Embedding | embedding | POST /api/ollama/embedGET /api/embeddings/models (ค้นหาเท่านั้น) | frontend/src/utils/api/modelApi.ts | frontend/src/components/ModelManager.tsx — handleGenerateEmbeddings | docs/09-RAG_FEATURE.md | scripts/test-plugin-capability-routing.mjs (test:package) — ความสามารถ Hugging Face ไม่ใช้ endpoint แชตทั่วไปและใช้ payload งาน | huggingface |
| การสร้างรูปภาพ | image | POST /api/image-gen/generate | frontend/src/utils/api/imageGenApi.ts | frontend/src/components/ImageGenerationPanel.tsx — handleGenerate | docs/38-MEDIA_GENERATION.md | scripts/test-image-generation-routing.mjs (test:package) — การสร้างรูปภาพใช้ผู้ให้บริการที่เลือกและการตั้งค่า OpenAI ตามผู้ใช้ | comfyui, huggingface, openai, openrouter |
| เสียงเป็นข้อความ | stt | POST /api/stt/transcribe | frontend/src/utils/api/sttApi.ts | frontend/src/hooks/useDictation.ts — toggle | docs/42-SPEECH_TO_TEXT.md | scripts/test-stt-routing.mjs (test:package) — STT ส่งคำขอ multipart ที่เข้ากันได้กับ OpenAI ไปยังเส้นทางที่เลือกfrontend/e2e/stt.spec.ts (test:e2e) — อินพุตเสียงผู้ให้บริการเปิดเผยเส้นทางและถอดเสียงที่บันทึก | huggingface, openai |
| ข้อความเป็นเสียง | tts | POST /api/tts/generate | frontend/src/utils/api/ttsApi.ts | frontend/src/components/TTSButton.tsx — handlePlay | docs/38-MEDIA_GENERATION.md | scripts/test-tts-routing.mjs (test:package) — TTS กำหนดเส้นทางนามแฝงโมเดลร่วมผ่าน plugin และ valve ผู้ใช้ที่เลือกfrontend/e2e/tts-playback.spec.ts (test:e2e) — การอ่านตามชุดใช้เสียงที่บันทึกไว้ซ้ำทุกชุด | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| การสร้างเสียง | audio | POST /api/media/sound/generate | frontend/src/utils/api/mediaApi.ts | frontend/src/components/MediaGenerationPanel.tsx — handleGenerate | docs/38-MEDIA_GENERATION.md | scripts/test-openrouter-media-routing.mjs (test:package) — โมเดลเอาต์พุตเสียง OpenRouter streaming ไบต์เสียงที่สร้าง | openrouter |
| การสร้างวิดีโอ | video | POST /api/media/video/generatePOST /api/media/video/jobs/:jobId/resume | frontend/src/utils/api/mediaApi.tsfrontend/src/utils/api/mediaApi.ts | frontend/src/components/MediaGenerationPanel.tsx — handleGenerate | docs/38-MEDIA_GENERATION.md | scripts/test-openrouter-media-routing.mjs (test:package) — การสร้างวิดีโอส่ง ตรวจ และดาวน์โหลดผ่าน endpoint ผู้ให้บริการscripts/test-openrouter-media-routing.mjs (test:package) — การเผยแพร่วิดีโอที่เตรียมและทำต่อแก้การรับทราบ commit ที่หาย | openrouter |
การบังคับใช้
ด่านแพ็กเกจปฏิเสธ schema หรือชนิด plugin ที่ไม่ประกาศ การแมปแคตตาล็อกเก่า เส้นทางค้นหาอย่างเดียวที่แสดงเป็นการดำเนินการ ตัวจัดการไม่มีการขนส่งเบราว์เซอร์ที่ตรง การทำงาน UI ไม่มีการเรียกและตัวกระตุ้นที่มองเห็น เอกสารไม่มีข้อกล่าวอ้างเฉพาะความสามารถ การทดสอบไม่มีพฤติกรรมในกรณีที่ระบุ รายการที่สร้างเก่า และ endpoint manifest การแมปโมเดล หรือค่าเริ่มต้นที่ไม่ถูกต้อง
การสร้าง embedding ทำผ่าน POST /api/ollama/embed และกำหนดเส้นทางไปยัง plugin embedding ที่เลือกได้ GET /api/embeddings/models แสดงโมเดล ด่านบันทึกเป็นการค้นหาเท่านั้นและไม่ยอมรับเป็นหลักฐานว่าการสร้าง embedding ทำงาน
สัญญาต้นฉบับระบุการทดสอบพฤติกรรมเฉพาะและตัวรัน สคริปต์ backend ต้องลงทะเบียนใน test:package; ข้อกำหนด frontend ต้องถูกค้นพบโดยสคริปต์ test:e2e ที่ใช้ Playwright การค้นหาสดอาจจำกัดแคตตาล็อกโมเดล แต่ไม่สร้างความสามารถดำเนินการใหม่