Director: framework video agent 20+ mô-đun dựng chatbot video
Khám phá Director (VideoDB): Flask + 29 agent (search, edit, dub, subtitle) + chat Vue. Kho mã nguồn mở hay để tự build chatbot video, chưa test sâu.
Director: framework video agent 20+ mô-đun dựng chatbot video
Khi đã quen với agent code (opencode), tự hỏi: có tương tự cho video không — agent hiểu "tìm clip, cắt, lồng tiếng, phụ đề" theo lệnh chat? Tôi tìm thấy Director của VideoDB và mổ repo này. Đây là bản scan, chưa test sâu.
Thành thật: tôi đọc code + docs, chưa chạy make run trên máy nên verdict ở mức chỉ nên biết, không phải nên dùng. Bài này để bạn quyết có nên thử không.
Nó là gì
"ChatGPT cho video" — framework build video agent có thể suy luận tác vụ video phức tạp: search, edit, comp, generation, stream kết quả realtime. Nuôi trên nền "Video-as-Data" của VideoDB (index video thành data truy vấn được).
Kiến trúc 3 tầng:
| Tầng | Công nghệ | |---|---| | Backend | Flask 3, Flask-SocketIO, OpenAI SDK, yt-dlp, videodb | | Frontend | Vue 3 + Vite + socket.io-client | | Docs | MkDocs (material theme) |
Lưu ý nhỏ: vài chỗ ghi React/TypeScript cho frontend — thực tế là Vue 3. Cứ lấy source làm chuẩn.
Điều đáng xem trong code
29 agent backend
Thư mục backend/director/agents/ có 29 file agent (và base class). Nhóm chính:
- Search/đọc:
search.py,index.py,summarize_video.py,transcription.py. - Edit/cắt:
subtitle.py,dubbing.py,voice_replacement.py,clone_voice.py,frame.py,prompt_clip.py. - Generation:
text_to_movie.py,video_generation.py,image_generation.py,audio_generation.py. - Ops:
download.py,upload.py,stream_video.py,censor.py,pricing.py,web_search_agent.py,slack_agent.py.
Cách tiếp cận gọn: mỗi agent kế thừa BaseAgent, implement run(), đẩy tiến trình qua
output_message.push_update(), xong publish(). Return AgentResponse.
Mô hình agent chuẩn (dễ mở rộng)
Agent mẫu thực tế là sample.py (class SampleAgent):
class SampleAgent(BaseAgent):
def __init__(self, session: Session, **kwargs):
...
def run(self, sample_id: str, *args, **kwargs) -> AgentResponse:
...
self.output_message.push_update()
self.output_message.publish()
return AgentResponse(status=AgentStatus.SUCCESS, ...)
Để đăng ký agent mới: import vào handler.py, thêm vào list agents của ChatHandler.
Rất đơn giản — kết hợp là điều làm dự án này "framework" chứ không phải app đóng.
Chat UI + player
Frontend dùng @videodb/chat-vue + @videodb/player-vue — xây UI chat tích hợp video
player, stream response qua Socket.IO. Đây là phần "giống ChatGPT nhưng hiểu video".
Chạy thế nào
make run # backend :8000 + frontend :8080
# hoặc
docker-compose up # cùng 2 port
Yêu cầu: Python 3.9+, Node 22.8+. (pyproject ghi >=3.6, nhưng README ghi 3.9+ —
mình tin README.)
Chi phí
- Repo: 0 VND, MIT, source mở.
- Vận hành tốn chi phí của video stack bên dưới: VideoDB cho index/query video, LLM cho reasoning, model TTS/voice clone khi dùng agent dubbing. Tự tính theo video phút xử lý.
- Nếu chỉ muốn test local không đắt — Flask+Vue chạy máy thường, chỉ tốn model khi gọi.
Giới hạn
- Chưa chạy thử E2E nên đừng coi đây là đánh giá chất lượng agent output.
- Phụ thuộc vào VideoDB infra — nếu chỉ dùng phần framework mà không index video thì mất mảng lớn giá trị.
- Agent quality phụ thuộc LLM backend + thư mục video bạn cấp.
AudioContentxuất hiện trong tài liệu nhưng trong source chỉ có TextContent / VideoContent / VideosContent / ImageContent / SearchResultsContent — tài liệu chưa khớp 100% code.
Verdict
Chỉ nên biết ở thời điểm này, trừ khi bạn đã có sẵn dữ liệu video cần chatbot trả lời/cắt/generation theo lệnh — lúc đó đáng để bỏ 1 buổi chạy thử.
Nếu bạn đang đầu tư vào stack video agent: đọc source sample.py + handler.py + docs
bao gồm core/reasoning.md, agents/interface.md để hiểu thiết kế trước khi quyết.
Nếu mới làm video agent từ 0 và lo về hạ tầng, xem bài ComfyUI/HyperFrames để so giữa cách render frame-by-frame và cách index-video-data.