Trần Quốc Việt
← All posts

2026-04-12

Gen AI

BeGuru AI — Technical Docs: Tổng quan kiến trúc (runtime, agent, đĩa)

Hiện trạng beguru-ai (FastAPI, Agno, OpenRouter) và kiến trúc đề xuất: MemoryPlane, mem0+Qdrant, LangGraph (+ Temporal khi cần durable), sandbox E2B/Docker, Langfuse+OTel — đồng bộ product plan North Star.

Orchestrator (đề xuất)

LangGraph · Temporal*

Memory dài hạn

MemoryPlane · mem0 · Qdrant

Sandbox

E2B · Docker isolate

Quan sát

Langfuse · OpenTelemetry

View
Lang

Tóm lược

  • BeGuru AI (service beguru-ai) là backend FastAPI gắn AgentOS (Agno); các route /api/freetext/*, /api/workflows/*, … điều phối PMEngineer gọi LLM qua OpenRouter, ghi kết quả xuống projects_root_dir (Next.js / Go) cùng cây design-system/ trong mỗi project FE.
  • Tài liệu gốc (SSOT) trong repo: docs/ARCHITECTURE_RUNTIME.md, docs/MEMORY_AND_CONTEXT_LAYERS.md, docs/API_SPEC.md.
  • Thứ tự đọc đề xuất: bài này (map) → Design & đĩaRuntimeMemoryMem0 & cross-sessionTechnical Narrative (mental model & SSOT tóm tắt) → AIO Sandbox (thực thi cô lập — lộ trình).

Hiện trạng vs hướng đi (North Star)

Hiện tại hệ chạy theo request–response / SSE: client gửi messages, server nén context (ContextCompressor), ghim pins, Engineer ghi file + (tuỳ flow) kiểm tra tĩnh — chưa có graph điều phối đa bước bắt buộc hay sandbox chạy lệnh thống nhất giữa mọi route.

Hướng sản phẩm (đối chiếu các assistant dạng Claude Code): autonomous coding cần vòng lặp Plan → sửa/ghi đĩa → chạy lệnh trong môi trường cách ly → quan sát stdout/exit → checkpoint, có thể đa agent (PM, Engineer FE, Engineer BE) với handoff có contract (spec, BUILD_STATE, API). Kiến trúc tham chiếu trong ecosystem thường dùng LangGraph (hoặc tương đương) cho state + routing có điều kiện + checkpoint; ví dụ case study production với 8 agent, orchestrator–worker, sandbox modal, middleware và caching — xem FRE|Nxt × InterviewLM — LangGraph multi-agent (bài ngoài, không phải BeGuru).

BeGuru không cam kết đã triển khai đủ các lớp đó; bài Mem0 & cross-session mô tả một mảnh lộ trình (memory ngữ nghĩa + Qdrant). Khi spike, nên đo latency, chi phí, an toàn sandbox trước khi gắn vào API công khai.

Kiến trúc mục tiêu

Artifact-first: file .guru/ / design-system vẫn là nguồn chân lý; nhớ ngữ nghĩa là lớp bổ sung. Về memory, BeGuru vận hành song song ba mặt: (1) short-term trong phiên (RawHistory → ContextCompressor → PinnedLayer), (2) artifact bền trên đĩa (templates, BUILD_STATE, MASTER), và (3) semantic long-term (MemoryPlane → mem0 → vector store). Hover vào ô để thấy luồng dữ liệu; dùng nút mở rộng để xem sơ đồ toàn màn.

Chú thích màu ô (kind): client / router (xanh dương) · api (tím) · agent (hồng) · llm (amber) · disk / template (xanh lá / cam) · memory (đỏ nhạt) · sandbox (cyan) · obs (xám).

BeGuru — Tầng nhớ & Artifact

Di chuột lên ô để xem luồng; nút mở rộng để đọc toàn màn.
Sơ đồ tương tác · SSOT: beguru-ai/docs

See also: Memory & context layers · Mem0 & cross-session

React Agent loop — orchestrator, sandbox & observe

Autonomous coding cần vòng phản hồi: orchestrator giữ state/checkpoint, router chọn agent phù hợp (PM, FE, BE), agents gọi LLM để sinh nội dung rồi ghi artifact; artifact có thể chạy trong sandbox để quan sát stdout/exit — kết quả quan sát feed ngược về orchestrator để quyết định bước tiếp.

React Agent Workflow — Orchestrator & Sandbox loop

LangGraph điều phối state → router → agent → ghi đĩa → sandbox → observe → feedback.
Sơ đồ tương tác · SSOT: beguru-ai/docs

Tech stack đề xuất (mục tiêu lộ trình)

LớpĐề xuấtVai trò ngắn
Điều phối đa bướcLangGraph (Python); Temporal khi cần durable / chờ người / SLA dàiState, conditional edges, checkpoint; hybrid LangGraph-inside-Temporal nếu cần
MemoryPlaneInterface nội bộ; backend đầu tiên mem0 (AsyncMemory)retrieve / commit thống nhất cho PM + Engineer routes
Vector storeQdrant (compose); tuỳ chọn pgvector nếu gom một PostgresSemantic search memories; tenant qua collection / policy
SandboxE2B hoặc Docker + giới hạn CPU/time/networkQuan sát sau khi ghi đĩa — gần pattern case study modal sandbox
LLMOpenRouter (giữ)Tách model rẻ cho extract memory vs model mạnh cho codegen
Quan sátLangfuse (đã có) + OpenTelemetry → LangfuseTrace graph, tool, sandbox span
AgnoGiữ registry / MCP / agent class; có thể thu hẹp khi logic chuyển dần sang node graphKhông bắt buộc big-bang thay framework

*Temporal: tùy spike stack-spike (SLO, chi phí vận hành).

Hiện tại vs đề xuất (một bảng)

LớpHiện tại (typical)Đề xuất mục tiêu
Điều phốiRoute FastAPI + stream trực tiếpLangGraph (+ Temporal khi cần)
Nhớ xuyên phiênChưa / từng spike mem0MemoryPlane → mem0 + Qdrant
Kiểm chứng tự độngStatic check cục bộ trong flowSandbox Plane + vòng Observe
Quan sátLogger + Langfuse tuỳ chọnLangfuse + OTel end-to-end

Mục đích và phạm vi

Bài này không thay thế OpenAPI hay tài liệu nội bộ đầy đủ; nó cố định bối cảnh kiến trúcchỗ các bộ phận gắn với nhau để đọc tiếp các bài chuyên sâu.

Sơ đồ tổng quan (runtime)

Sơ đồ SVG tương tác bên dưới: hover vào từng ô để highlight nhánh (cạnh và các ô liên quan). Các mã ngắn (ui, api, …) khớp với bảng đối chiếu ngay sau sơ đồ.

Runtime BeGuru (hover để xem luồng)

Di chuột lên từng khối để làm nổi cạnh nối trực tiếp và ô lân cận.
Sơ đồ tương tác · SSOT: beguru-ai/docs

Đối chiếu nhanh (mã trên sơ đồ):

Thành phần
uiClient (Web / Studio / CLI)
apiFastAPI — HTTP, CORS, logging
osAgentOS Agno — cùng process với API
ftagCác router REST (freetext, workflows, interview, agents)
pm, en, arAgent PM / Engineer / kiến trúc & QA
orOpenRouter (gateway model)
proj, tpl, dsArtifact trên đĩa (project, template, design-system)
lf, logLangfuse (tuỳ chọn) và StructuredLogger

Bảng thành phần

Thành phầnVai tròGhi chú / artifactBài liên quan
FastAPIHTTP server, CORS, logging, /healthsrc.api.mainRuntime
AgentOS (Agno)Registry agent, khởi tạo framework agentCùng process với APIRuntime
Routersfreetext, workflows, interview, agentsInclude từ main.pyRuntime
PM AgentThảo luận spec, handoff LABEL_*, khối ## BEGURU_FE_SPEC / BEStream SSERuntime
Engineer Agentgenerate-code, edit-code, generate-backend (Go)Ghi file theo output_pathRuntime, Design & đĩa
OpenRouterGateway tới các model; attribution header (Referer / title)Env model trong SettingsRuntime
Artifact đĩaMASTER.md, BUILD_STATE.md, PRODUCT_PLAN.md, beguru_chat_context.jsonDưới design-system/ mỗi projectDesign & đĩa
Context pipelineNén history, ghim pins, context pack cho EngineerContextCompressor, v.v.Memory
SQLite (Agno)Session / workflow / optional persist summarydata/agno.db (cấu hình tuỳ môi trường)Memory
Memory xuyên phiên (lộ trình)Facts theo user_id, semantic searchmem0 + Qdrant, inject ở route — xem bài Mem0Mem0 & cross-session

Tech stack hiện tại (điển hình)

LớpCông nghệ
RuntimePython, FastAPI, Uvicorn
AgentsAgno AgentOS, agents PM / Engineer / …
LLMOpenRouter (model cấu hình qua .env / Settings)
Output FETemplate Next.js (templates/guru-nextjs-template), rule .guru/rules/
Output BETemplate Go (templates/beguru-go-template-be), pipeline init-go-projectbackend-spec/*generate-backend
Quan sátStructuredLogger; Langfuse tuỳ chọn
Lộ trìnhXem mục Kiến trúc đề xuấtTech stack đề xuất phía trên

Luồng sản phẩm chính (FE trước)

Luồng Go backend (sau FE, có gate backend-spec) được mô tả trong ARCHITECTURE_RUNTIME.mdbài Runtime.

Tham chiếu trong repo beguru-ai

  • docs/ARCHITECTURE_RUNTIME.md — sơ đồ, bảng thành phần, deploy điển hình.
  • docs/API_SPEC.md — contract HTTP, output_path, field request/response.
  • docs/MEMORY_AND_CONTEXT_LAYERS.md — pipeline nén, pins, artifact.

Bài liên quan / Related posts