Serena: Transform Any LLM Into a Professional Coding Agent – Save 80% Tokens, 5x Faster Development

Bạn đã bao giờ ước có một trợ lý lập trình thực sự hiểu codebase của mình, không chỉ đọc file dài dòng hay grep chuỗi, mà còn làm việc như một IDE ngay trong tay?

Đó chính là điều mà Serena mang lại.

Serena là gì?

Serena là một toolkit mạnh mẽ dành cho coding agent, có thể biến bất kỳ LLM nào bạn đang dùng thành một agent giàu tính năng, làm việc trực tiếp trên codebase. Khác với nhiều công cụ hiện tại, Serena không bị ràng buộc vào một LLM, framework hay giao diện cụ thể – bạn có thể linh hoạt sử dụng trong nhiều bối cảnh khác nhau.

🔧 Với Serena, agent của bạn có thể:

  • Truy xuất và chỉnh sửa code ở mức symbol, thay vì phải đọc toàn bộ file
  • Hiểu được mối quan hệ giữa các thành phần code, như cách một IDE chuyên nghiệp hoạt động
  • Tối ưu hiệu suất (token efficiency) khi làm việc với LLM, tiết kiệm chi phí và tăng tốc độ

🆓 Hoàn toàn miễn phí & mã nguồn mở

Serena giúp bạn khai thác tối đa khả năng của các LLM mà không tốn thêm chi phí.


Tại sao Serena quan trọng?

Hãy nghĩ về Serena như việc trao cho coding agent của bạn một “bộ công cụ IDE”: từ find_symbol, find_referencing_symbols cho đến insert_after_symbol. Điều này mở ra một kỷ nguyên mới, nơi việc tự động hóa code không chỉ dừng lại ở “tìm & thay thế chuỗi”, mà là hiểu và chỉnh sửa code như một lập trình viên thực thụ.

Cách hoạt động

Serena bản thân nó không phải là một “AI biết code” – mà là bộ công cụ giúp AI code tốt hơn. Để thực sự hoạt động, Serena cần một LLM (như Claude, GPT, Gemini…) làm “bộ não” để điều phối việc sử dụng công cụ.

Ví dụ đơn giản: bạn có thể supercharge Claude Code chỉ với một dòng lệnh trong terminal, và ngay lập tức Claude sẽ được bổ sung khả năng thao tác codebase ở mức IDE.


So sánh Workflow: Trước và Sau Serena

Tiêu chí Trước khi dùng Serena Với Serena
Cách tìm mã cần chỉnh sửa LLM phải đọc cả file hoặc cả codebase, sau đó “đoán” vị trí cần thay đổi Sử dụng công cụ như find_symbol, find_referencing_symbols để nhảy thẳng tới đoạn mã cần thao tác
Hiệu quả token Tiêu tốn nhiều token do phải nạp cả khối lượng mã lớn Tiết kiệm token, chỉ truy xuất phần liên quan
Tốc độ Chậm, vì cần nhiều bước suy luận và thao tác thủ công Nhanh hơn, nhờ thao tác trực tiếp ở mức symbol
Chất lượng mã sinh ra Dễ bị lỗi do LLM có thể bỏ sót ngữ cảnh quan trọng hoặc chỉnh sai chỗ Ổn định và chính xác hơn, nhờ cơ chế truy xuất có cấu trúc
Ứng dụng thực tế Chỉ phù hợp cho dự án nhỏ Cực kỳ hữu ích cho dự án lớn, nhiều module phức tạp

Công nghệ đằng sau Serena

Serena được xây dựng dựa trên Language Server Protocol (LSP) – chuẩn chung mà hầu hết các IDE hiện đại đều sử dụng. Nhờ đó, Serena không chỉ đọc code ở mức văn bản, mà còn hiểu được cấu trúc và ngữ nghĩa của mã nguồn: class, function, reference, symbol…

Tương tự như một developer đang thao tác trong IDE, Serena có thể:

  • Nhanh chóng tìm đúng context trong dự án lớn
  • Thực hiện chỉnh sửa có chủ đích, thay vì tìm kiếm chuỗi mù quáng
  • Giúp tiết kiệm token, tăng tốc độ và giảm lỗi khi kết hợp cùng LLM

💡 Kết quả: Serena thường mang lại hiệu quả cao hơn cả những giải pháp thương mại đắt đỏ, nhưng hoàn toàn miễn phí & open-source.


Ngôn ngữ được hỗ trợ

Ngôn ngữ Ghi chú
Python Hỗ trợ trực tiếp
TypeScript / JavaScript Hỗ trợ trực tiếp
PHP Dùng Intelephense LSP (cần INTELEPHENSE_LICENSE_KEY cho tính năng premium)
Go Cần cài gopls
R Cần cài package languageserver
Rust Dùng rust-analyzer qua rustup
C / C++ Một số vấn đề khi tìm references (đang cải thiện)
Zig Cần cài ZLS
C# Hỗ trợ trực tiếp
Ruby Mặc định dùng ruby-lsp (có thể chọn solargraph cũ)
Swift Hỗ trợ trực tiếp
Kotlin Dùng LS chính thức (pre-alpha, còn lỗi)
Java Startup chậm, có vấn đề trên macOS/Linux
Clojure Hỗ trợ trực tiếp
Dart Hỗ trợ trực tiếp
Bash Hỗ trợ trực tiếp
Lua Tự động tải lua-language-server nếu chưa có
Nix Cần cài nixd
Elixir Cần NextLS + Elixir (chưa hỗ trợ Windows)
Erlang Cần beam + erlang_ls, experimental, có thể chậm
AL Hỗ trợ trực tiếp

Cách tích hợp Serena với LLM

Serena được thiết kế linh hoạt, có thể cắm vào nhiều môi trường và workflow khác nhau:

🔹 Qua Model Context Protocol (MCP)

Serena chạy như một MCP server, dễ dàng tích hợp với:

  • 🖥 IDEs: VSCode, Cursor, IntelliJ
  • 🧩 Extensions: Cline, Roo Code
  • 💻 Terminal clients: Codex, Gemini-CLI, Qwen3-Coder, rovodev, OpenHands CLI
  • 🪄 Claude Code và Claude Desktop
  • 🌐 Local clients: OpenWebUI, Jan, Agno

🔹 Qua mcpo (bridge tool)

Dùng để kết nối Serena với những client không hỗ trợ MCP, nhưng có hỗ trợ tool calling qua OpenAPI (ví dụ ChatGPT).

🔹 Nhúng trực tiếp vào agent framework

Các tool trong Serena được xây dựng độc lập với framework → bạn có thể đưa vào bất kỳ agent framework nào (LangChain, LlamaIndex, v.v.), như một “plugin” chuyên về code.

💡 Điểm mạnh: Serena không khóa bạn vào một LLM hay IDE cụ thể. Dù bạn dùng ChatGPT, Claude, Gemini hay bất kỳ model nào, Serena đều có thể biến LLM đó thành một coding agent mạnh mẽ.


Hướng dẫn cài đặt Serena MCP trên Cursor (macOS)

🔹 Bước 1: Cài đặt uvx

Chạy lệnh trong Terminal:

brew install uvx

🔹 Bước 2: Thêm Serena MCP vào Cursor

  1. Mở Cursor Settings
  2. Vào mục MCP → Thêm mới MCP
  3. Trong file mcp.json, thêm cấu hình sau:
{
  "mcpServers": {
    "serena": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/oraios/serena",
        "serena",
        "start-mcp-server",
        "--context",
        "ide-assistant"
      ]
    }
  }
}

🔹 Bước 3: Kiểm tra Serena đã chạy thành công

  1. Sau khi restart Cursor, Serena MCP server sẽ được khởi động tại localhost
  2. Bạn có thể mở trình duyệt và truy cập: 👉 http://127.0.0.1:24282/dashboard/index.html
  3. Tại đây sẽ hiển thị dashboard của Serena, xác nhận rằng server đã chạy

⚡️ Giờ thì bạn có thể bắt đầu sử dụng Serena trực tiếp trong Cursor, tận dụng các công cụ phân tích code và chỉnh sửa thông minh giống như IDE xịn + AI hỗ trợ.


Bắt đầu sử dụng Serena trong Cursor

1. Kiểm tra Serena đã kết nối

  1. Mở Command Palette (⌘ + Shift + P)
  2. Gõ:
    • MCP: List Tools → để xem danh sách tool mà Serena cung cấp
    • MCP: Call Tool → để gọi trực tiếp một tool bất kỳ từ Serena

Nếu bạn thấy các tool này, nghĩa là Serena đã được kết nối thành công.

2. Index dự án với Serena (Bước quan trọng)

  1. Mở chat với AI và nhập lệnh:
    "Use Serena to index the entire project."
    
  2. Chờ Serena hoàn tất indexing (tùy project lớn/nhỏ sẽ nhanh hay chậm)
  3. Sau khi indexing xong, Serena sẽ hiểu toàn bộ codebase ở mức symbol-level

3. Chat AI trong Cursor với Serena

Không dùng Serena (AI tự đoán):

"Find where process_audio_file_url is used."

Dùng Serena (AI gọi đúng tool):

"Use Serena to find where process_audio_file_url is referenced."
"Insert a new function after the UserService class using Serena."

Quan sát: Thay vì đọc toàn file, AI sẽ gọi Serena để tìm chính xác vị trí cần chỉnh sửa → tiết kiệm token, nhanh hơn và code chất lượng hơn.


Hiểu về thư mục memories/

Sau khi dùng “Use Serena to index the entire project.”, Cursor sẽ có thêm 1 thư mục memories/.

📂 Thư mục memories dùng để làm gì?

Khi bạn bảo Serena index dự án, nó sẽ quét toàn bộ codebase và trích xuất ra thông tin ở mức symbol-level (class, function, biến, module, dependency, …). Những dữ liệu này không chỉ dùng trong một session, mà được lưu trữ lại trong thư mục memories/ để tái sử dụng.

🔹 Chức năng chính của thư mục memories

  1. Lưu trữ index codebase đã phân tích
    • Thay vì phải index lại toàn bộ project mỗi lần mở Cursor, Serena sẽ đọc từ memories/ để tiết kiệm thời gian
    • Với project lớn (hàng nghìn file), điều này cực kỳ quan trọng
  2. Giúp Serena “ghi nhớ” ngữ cảnh codebase qua nhiều phiên làm việc
    • Cho phép Serena hiểu liên kết giữa các file, dependency, và symbol
    • Nhờ đó khi bạn quay lại project, Serena vẫn có thể truy vấn chính xác mà không cần quét lại từ đầu
  3. Tăng tốc độ tìm kiếm và chỉnh sửa code
    • Khi bạn gọi tool như find_symbol, Serena sẽ tìm trực tiếp trong dữ liệu memories thay vì đọc toàn bộ file
    • Điều này làm giảm đáng kể chi phí token và cải thiện tốc độ phản hồi
  4. Cơ chế cập nhật thông minh
    • Nếu bạn chỉnh sửa hoặc thêm file mới, Serena có thể cập nhật lại memories (re-index incrementally) thay vì làm lại toàn bộ
    • Giúp giữ bộ nhớ luôn đồng bộ với trạng thái codebase hiện tại

🔹 Khi nào cần xoá hoặc làm mới memories/?

  • Khi project có thay đổi cấu trúc lớn (ví dụ: đổi tên thư mục gốc, refactor nhiều module cùng lúc)
  • Khi Serena trả về kết quả sai lệch → có thể do bộ nhớ cũ. Lúc này chỉ cần xóa thư mục memories/ và chạy lại indexing

👉 Nói đơn giản: memories là “bộ não dài hạn” của Serena. Nó cho phép AI làm việc hiệu quả như một IDE, không mất công quét lại dự án mỗi lần bạn mở Cursor.


Quản lý & Làm mới thư mục memories

Đôi khi project thay đổi nhiều, hoặc Serena trả kết quả chưa chính xác → bạn có thể cần làm mới (refresh) thư mục memories/.

🔹 1. Re-index toàn bộ project

Trong chat với AI trong Cursor, gõ:

"Use Serena to re-index the entire project."

Serena sẽ xoá index cũ trong memories/ và quét lại toàn bộ codebase.

🔹 2. Cập nhật incremental (khi thêm file/hàm mới)

Nếu bạn chỉ thêm vài file mới hoặc sửa một phần nhỏ, không cần index lại hết. Hãy chat với AI:

"Use Serena to update index for changed files only."

Serena sẽ scan phần thay đổi và cập nhật lại memories/ thay vì làm lại từ đầu.

🔹 3. Xoá thủ công thư mục memories/

Trong trường hợp nghi ngờ index bị lỗi hoặc không đồng bộ:

  1. Thoát Cursor
  2. Xoá thư mục memories/ trong project: rm -rf memories
  3. Mở lại Cursor và yêu cầu: "Use Serena to index the entire project."

→ Serena sẽ tạo lại bộ nhớ mới sạch sẽ.

✅ Khi nào nên refresh memories?

  • Project refactor lớn, đổi cấu trúc folder
  • Serena tìm nhầm symbol hoặc không thấy hàm/class mới thêm
  • Project import dependency mới hoặc xoá nhiều module cũ

Case Study: Serena thay đổi game như thế nào? 🚀

1. Câu chuyện thực tế

Trong dự án Realtime Translator của công ty, mình sử dụng Claude 4 để hỗ trợ code (sau 2 tuấn để test và thực nghiệm) . Claude 4 rất mạnh về suy luận và viết code, nhưng có một nhược điểm chí mạng: ngốn token khủng khiếp.

Trước khi dùng Serena → chỉ 7 ngày là đã hết quota. Sau khi dùng Serena → tận 2 tuần vẫn chưa hết quota.

Tại sao? Vì mỗi lần yêu cầu AI chỉnh sửa code, nó phải “cày” qua hàng ngàn dòng code không liên quan, đọc cả những file chẳng liên quan gì đến yêu cầu.

👉 Điều này dẫn đến:

  • Tốn token vô ích
  • Phản hồi chậm
  • Độ chính xác giảm vì ngữ cảnh bị nhiễu loạn

Serena ra đời chính là để giải quyết nỗi đau này!

2. Những lợi ích cụ thể

🔥 Hiệu suất & độ chính xác vượt trội

AI không còn bị “ngợp” bởi hàng đống code vô nghĩa. Ngữ cảnh gọn gàng → phản hồi nhanh, chính xác, ít nhầm lẫn.

💸 Tiết kiệm chi phí và tokens

Thay vì để AI đọc cả codebase, chỉ những phần liên quan mới được đưa vào. Với các mô hình tính phí dựa trên token (như Claude, GPT-4), bạn sẽ tiết kiệm được một khoản lớn.

Cá nhân mình dùng Claude Code Pro ($17), trước kia rất dễ chạm limit. Từ ngày có Serena → vẫn còn chạm limit, nhưng đã cải thiện đáng kể


Lưu ý quan trọng khi sử dụng Serena

🔹 Cài đặt theo từng dự án

  • Serena nên được cài theo từng dự án (per-project)
  • Không nên cài ở scope “user” vì dữ liệu index có thể bị lẫn lộn giữa các project
  • Mỗi khi chuyển project, hãy đảm bảo Serena được cấu hình riêng biệt

🔹 Indexing định kỳ

  • Với project thay đổi thường xuyên, nên re-index ít nhất 1 tuần/lần
  • Khi add/remove nhiều dependency, luôn chạy lại indexing

🔹 Monitoring hiệu suất

  • Theo dõi dashboard Serena để đảm bảo server hoạt động ổn định
  • Nếu thấy phản hồi chậm, kiểm tra lại cấu hình MCP và memory usage

Kết luận

Serena không chỉ là một công cụ, mà là một game changer cho cách chúng ta làm việc với AI trong lập trình. Bằng cách biến LLM thành một coding agent thực sự hiểu codebase, Serena mở ra những khả năng mới:

  • Tiết kiệm chi phí đáng kể khi sử dụng LLM
  • Tăng tốc độ và độ chính xác trong các tác vụ coding
  • Mở rộng khả năng của AI từ “code generator” thành “code collaborator”

Và quan trọng nhất, tất cả điều này đều hoàn toàn miễn phí và mã nguồn mở.

👉 Hành động ngay hôm nay: Hãy thử cài đặt Serena cho project của bạn và trải nghiệm sự khác biệt. Bạn sẽ ngạc nhiên về hiệu quả mà nó mang lại!


Bài viết được viết dựa trên trải nghiệm thực tế sử dụng Serena trong các dự án production. Để biết thêm thông tin chi tiết và cập nhật mới nhất, hãy truy cập GitHub repository của Serena.