Hợp đồng khả năng
Danh mục này được scripts/test-capability-contracts.mjs thực thi. Một khả năng của nhà cung cấp chưa hoàn chỉnh cho đến khi lược đồ và ánh xạ danh mục, trình xử lý có thể thực thi, máy khách trình duyệt tương ứng, hành động UI có tên, tài liệu, kiểm thử hành vi tập trung và các manifest đi kèm đều thống nhất.
| Khả năng | Loại plugin | Tuyến có thể thực thi | Máy khách trình duyệt | Hành động UI | Tài liệu | Kiểm thử hành vi tập trung | Định nghĩa đi kèm |
|---|---|---|---|---|---|---|---|
| Trò chuyện / hoàn tất | 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) — định tuyến plugin chính xác đến nhà cung cấp đã chọn cho yêu cầu thường và 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 (chỉ khám phá) | 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) — các khả năng Hugging Face bỏ qua endpoint Chat chung và dùng payload tác vụ | huggingface |
| Tạo hình ảnh | 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) — tạo hình ảnh dùng nhà cung cấp đã chọn và cài đặt OpenAI theo phạm vi người dùng | comfyui, huggingface, openai, openrouter |
| Giọng nói thành văn bản | 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 gửi yêu cầu multipart tương thích OpenAI đến tuyến đã chọnfrontend/e2e/stt.spec.ts (test:e2e) — đầu vào giọng nói của nhà cung cấp công bố tuyến và phiên âm âm thanh đã ghi | huggingface, openai |
| Văn bản thành giọng nói | 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 định tuyến bí danh mô hình dùng chung qua plugin và valve người dùng đã chọnfrontend/e2e/tts-playback.spec.ts (test:e2e) — đọc thành tiếng theo lô dùng lại giọng đã lưu được chọn cho mọi lô | elevenlabs, huggingface, kyutai-tts-1.6b, kyutai-tts, longcat-audiodit, openai-tts, openai, openrouter, qwen-tts |
| Tạo âm thanh | 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) — các mô hình đầu ra âm thanh OpenRouter truyền trực tuyến byte âm thanh được tạo | openrouter |
| Tạo video | 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) — tạo video gửi, thăm dò và tải xuống qua endpoint nhà cung cấpscripts/test-openrouter-media-routing.mjs (test:package) — các lần phát hành video đã chuẩn bị và tiếp tục xử lý xác nhận commit bị mất | openrouter |
Thực thi
Cổng kiểm tra gói từ chối lược đồ hoặc loại plugin chưa khai báo, ánh xạ danh mục lỗi thời, tuyến chỉ dùng để khám phá nhưng được trình bày như thực thi, trình xử lý không có phương thức truyền tải trình duyệt tương ứng, hành động UI không có lệnh gọi và kích hoạt hiển thị, tài liệu không có khẳng định riêng cho khả năng, kiểm thử không có hành vi trong ca kiểm thử được đặt tên, danh mục được tạo đã cũ, cùng endpoint manifest, ánh xạ mô hình hoặc giá trị mặc định không hợp lệ.
Việc tạo embedding được thực thi qua POST /api/ollama/embed và có thể định tuyến đến plugin embedding đã chọn. GET /api/embeddings/models liệt kê mô hình; cổng kiểm tra ghi nhận đây là tuyến chỉ dành cho khám phá và không bao giờ xem nó là bằng chứng rằng việc tạo embedding hoạt động.
Hợp đồng nguồn xác định từng kiểm thử hành vi tập trung và trình chạy của nó. Tập lệnh backend phải được đăng ký trong test:package; đặc tả frontend phải được tập lệnh test:e2e dựa trên Playwright tìm thấy. Khám phá trực tiếp có thể thu hẹp danh mục mô hình nhưng không tạo ra khả năng thực thi mới.