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.

Buổi học nội bộ! Tìm hiểu “MCP” – giao thức không thể thiếu trong ứng dụng AI tạo sinh

Internal seminar about MCP

 

Xin chào, tôi là Kakeya, Giám đốc điều hành của Scuti.

Công ty chúng tôi chuyên phát triển offshore tại Việt Nam với thế mạnh về AI tạo sinh. Chúng tôi cung cấp các dịch vụ như Tư vấn AI tạo sinhAI-OCR, và gần đây rất vui mừng khi nhận được nhiều yêu cầu phát triển hệ thống tích hợp cùng AI tạo sinh.

Gần đây, Scuti đã tổ chức một buổi học nội bộ để nâng cao hiểu biết về “MCP (Model Connection Protocol)”.

MCP là một giao thức dùng để kết nối AI – đặc biệt là LLM (Mô hình ngôn ngữ lớn) – với các dịch vụ bên ngoài. Mặc dù nghe có vẻ kỹ thuật, nhưng thực tế lại rất hữu ích ngay cả đối với những người không phải kỹ sư. Ví dụ, khi sử dụng các công cụ như Claude, MCP giúp tích hợp hiệu quả với các dịch vụ khác, nâng cao năng suất đáng kể.

Buổi học này hướng đến cả kỹ sư và những người không chuyên kỹ thuật. Nội dung bao gồm khái niệm cơ bản về MCP, các ví dụ ứng dụng thực tế, cũng như cách triển khai vào công việc hàng ngày. Một điểm nổi bật là việc sử dụng MCP kết hợp với các công cụ phát triển như Cursor để kết nối với các dịch vụ bên ngoài, từ đó tăng tốc độ phát triển và nâng cao chất lượng sản phẩm. Đây là kỹ năng gần như bắt buộc đối với kỹ sư.

Tại Scuti, chúng tôi luôn nỗ lực tạo ra môi trường giúp mọi thành viên cập nhật các công nghệ mới nhất. Ngoài các buổi hội thảo nội bộ thường xuyên, chúng tôi còn có chính sách thưởng cho việc nghiên cứu và chia sẻ kết quả, cũng như hỗ trợ nhân viên lấy các chứng chỉ kỹ thuật.

Trong thời đại AI tạo sinh ngày càng gắn liền với sự phát triển kinh doanh, saldo5d việc toàn bộ nhân viên có cùng nền tảng kiến thức và khả năng áp dụng thực tiễn là điều vô cùng quan trọng. Thông qua các buổi học như thế này, Scuti tiếp tục củng cố năng lực công nghệ và khả năng phối hợp nội bộ một cách vững chắc.

Internal Study Session Held! Learning the Essential “MCP” for Generative AI Utilization

Internal seminar about MCP

 

Hello, this is Kakeya, CEO of Scuti.

Our company specializes in offshore development in Vietnam with a strong focus on generative AI. We provide services such as Generative AI Consulting and Generative AI-OCR, and we are grateful to have received a growing number of system development requests integrated with generative AI.

Recently, we held an internal study session at Scuti to deepen our understanding of “MCP (Model Connection Protocol).”

MCP is a protocol that connects AI—particularly LLMs (Large Language Models)—with external services. While it may sound technical, it is actually quite useful even for non-engineers. For example, when using tools like Claude, MCP enables seamless integration with other services, greatly enhancing efficiency.

The study session was designed to benefit both engineers and non-engineers. It covered the fundamentals of MCP, practical use cases, and how this protocol can be applied to everyday operations. One of the key highlights was how MCP can be utilized with development tools such as Cursor to connect with various external services, thus boosting development speed and product quality. For engineers, this is becoming an essential skill.

At Scuti, we are committed to fostering an environment where every team member can stay up-to-date with the latest technologies. We hold regular internal seminars, offer incentive programs for research and output sharing, and actively support the acquisition of technical certifications.

As generative AI becomes increasingly integral to business growth, it is crucial for all team members to have a common understanding of the technologies involved and be able to apply them effectively. Through sessions like this, Scuti continues to strengthen its technological capabilities and collaborative potential across teams.

Dify MCP Plugin & Zapier: A Hands-On Guide to Agent Tool Integration

Introduction

Leverage the power of the Model Context Protocol (MCP) in Dify to connect your agents with Zapier’s extensive application library and automate complex workflows. Before we dive into the integration steps, let’s quickly clarify the key players involved:

  • Dify: This is an LLMops platform designed to help you easily build, deploy, and manage AI-powered applications and agents. It supports various large language models and provides tools for creating complex AI workflows.
  • Zapier: Think of Zapier as a universal translator and automation engine for web applications. It connects thousands of different apps (like Gmail, Slack, Google Sheets, etc.) allowing you to create automated workflows between them without needing to write code.
  • MCP (Model Context Protocol): This is essentially a standardized ‘language’ or set of rules. It allows AI agents, like those built in Dify, to understand what external tools (like specific Zapier actions) do and how to use them correctly.

Now that we understand the components, let’s explore how to bring these powerful tools together.


Integrating Zapier with Dify via MCP

Zapier Setup

  1. Visit Zapier MCP Settings.
  2. Copy your unique MCP Server Endpoint link.
  3. Click “Edit MCP Actions” to add new tools and actions.
  4. Click “Add a new action”.
  5. Select and configure specific actions like “Gmail: Reply to Email”.
  6. To set up:
    – Click “Connect to a new Gmail account”, log in, and authorize your account.

    – For fields like thread, to, and body, select “Have AI guess a value for this field”.
  7. Repeat to expand your toolkit with “Gmail: Send Email” action.

MCP Plugins on Dify

  • MCP SSE: A plugin that communicates with one or more MCP Servers using HTTP + Server-Sent Events (SSE), enabling your Agent to discover and invoke external tools dynamically.
  • MCP Agent Strategy: This plugin integrates MCP directly into Workflow Agent nodes, empowering agents to autonomously decide and call external tools based on MCP-defined logic.

MCP SSE

Customize the JSON template below by inputting your Zapier MCP Server URL in place of the existing one. Paste the resulting complete JSON configuration into the installed plugin.

{
“server_name”: {
“url”: “https://actions.zapier.com/mcp/*******/sse”,
“headers”: {},
“timeout”: 5,
“sse_read_timeout”: 300
}
}

 

 

After setting things up, proceed to create a new Agent app. Ensure you enable your configured MCP SSE plugin under ‘Tools’. This allows the Agent to automatically trigger relevant tools based on the user’s intent, such as drafting and sending emails via an integrated Gmail action.

MCP Agent Strategy

Besides the SSE plugin, the MCP Agent Strategy plugin puts MCP right into your workflow’s Agent nodes. After installing it, set up the MCP Server URL just like before. This allows your workflow agents to automatically use Zapier MCP on their own to do tasks like sending Gmail emails within your automated workflows.


Final Notes

Currently (April 2025), Dify’s MCP capabilities are thanks to fantastic community plugins – our sincere thanks to the contributors! We’re also developing built-in MCP support to make setting up services like Zapier MCP and Composio within Dify even easier. This will unlock more powerful integrations for everyone. More updates are coming soon!

References: Dify MCP Plugin Hands-On Guide: Integrating Zapier for Effortless Agent Tool Calls