Các tác nhân AI cần trạng thái có thể kiểm tra được. Đó là lý do tôi xây dựng LangMCP.
Medium Towards AI· Muhammad Abdullah Shafat Mulkana· 1/6/2026general
Các điểm kiểm tra (checkpoint), bộ nhớ và khoảng trống gỡ lỗi mà các dấu vết (trace) không thể lấp đầy.
Kiểm tra hoạt động bên trong của một tác nhân (agent).
Được tạo bởi AI thông qua Gemini. Lần đầu tiên một tác nhân AI quên đi điều gì đó quan trọng, bản năng mách bảo rằng lỗi nằm ở lời nhắc (prompt). Tôi cũng từng như vậy.
Bạn xem xét thông điệp hệ thống. Bạn đọc lại mô tả công cụ. Bạn tự hỏi liệu mô hình đã bỏ qua một hướng dẫn, hay liệu người dùng đã nói điều gì đó mơ hồ ba lượt trước đó.
Đôi khi đó chính là vấn đề.
Nhưng khi bạn xây dựng với LangGraph, hành vi thú vị nhất thường nằm ở các điểm kiểm tra, trạng thái luồng (thread state), bộ nhớ dài hạn, không gian tên (namespace), cấu hình.
Các điểm kiểm tra, bộ nhớ và khoảng trống gỡ lỗi mà dấu vết không thể lấp đầy.
Kiểm tra hoạt động bên trong của một tác nhân.
Được tạo bởi AI thông qua Gemini.
Lần đầu tiên một tác nhân AI quên một điều quan trọng, bản năng là đổ lỗi cho lời nhắc. Tôi cũng đã làm điều đó.
Bạn xem xét thông báo hệ thống. Bạn đọc lại mô tả công cụ. Bạn tự hỏi liệu mô hình có bỏ qua một hướng dẫn hay người dùng đã nói điều gì đó mơ hồ ba lượt trước đó.
Đôi khi đó là vấn đề.
Nhưng khi bạn xây dựng với LangGraph, hành vi thú vị nhất thường nằm ở các điểm kiểm tra, trạng thái luồng, bộ nhớ dài hạn, không gian tên, ID có thể cấu hình và tất cả các chi tiết về tính bền vững quyết định liệu một cuộc trò chuyện có mạch lạc từ lượt này sang lượt tiếp theo hay không.
Đến một lúc nào đó, câu hỏi thực sự không còn là:
“Mô hình đã làm gì?”
Và trở thành:
“Hiện tại có gì trong cơ sở dữ liệu?”
Câu hỏi đó là lý do tôi xây dựng LangMCP.
Khoảng trống gỡ lỗi trong các tác nhân có trạng thái
Các công cụ như Langsmith và Langfuse rất xuất sắc trong việc theo dõi. Chúng cho bạn biết điều gì đã xảy ra trong quá trình chạy, công cụ nào được gọi, mô hình đã trả về gì và cách một chuỗi hoặc đồ thị được thực thi.
Nhưng khi xây dựng các hệ thống tác nhân thực tế, tôi liên tục gặp phải một vấn đề gỡ lỗi hơi khác.
Tôi không chỉ muốn biết điều gì đã xảy ra trong một lần thực thi. Tôi muốn kiểm tra trạng thái còn lại sau khi thực thi. Bạn có thể làm điều đó với các bảng điều khiển cơ sở dữ liệu, tập lệnh cục bộ, nhật ký và bảng điều khiển theo dõi. Tôi đã làm điều đó trong một thời gian.
Nhưng không có cái nào trong số đó cảm thấy giống như giao diện phù hợp cho một trợ lý mã hóa AI.
Tôi không muốn cấp cho trợ lý quyền truy cập SQL tùy ý. Tôi không muốn thông tin đăng nhập cơ sở dữ liệu trôi nổi trong các lời nhắc. Tôi không muốn mọi nhà phát triển giữ một bộ sưu tập tập lệnh riêng để kiểm tra trạng thái luồng.
Tôi muốn một cái gì đó nhỏ hơn và an toàn hơn:
Một máy chủ MCP cục bộ hiểu tính bền vững của LangGraph và chỉ hiển thị các thao tác kiểm tra mà tôi thực sự cần.
Đó đã trở thành LangMCP.
LangMCP là gì
LangMCP là một máy chủ MCP phát triển để kiểm tra điểm kiểm tra và kho lưu trữ của LangGraph.
Nó kết nối thông qua các cấu hình được đặt tên, sử dụng các API kiểm tra và kho lưu trữ gốc của LangGraph, đồng thời cung cấp cho các máy khách MCP như Cursor hoặc Claude Desktop một cách chỉ đọc để kiểm tra tính bền vững. Nó có một khu vực bề mặt hẹp, có chủ đích:
liệt kê các cấu hình,
kiểm tra tình trạng,
khám phá ID luồng,
kiểm tra trạng thái luồng,
liệt kê lịch sử điểm kiểm tra,
so sánh các điểm kiểm tra,
tóm tắt các luồng,
kiểm tra không gian tên kho lưu trữ,
tìm kiếm bộ nhớ dài hạn, và
tóm tắt bộ nhớ người dùng.
Bề mặt đó có tính thực tế một cách có chủ đích. Nó được thiết kế để trả lời câu hỏi quan trọng trong quá trình phát triển:
“Tại sao tác nhân này lại hành xử như vậy?”
Tại sao MCP là ranh giới phù hợp
MCP mang lại cho dự án một hình dạng rõ ràng.
Trình chỉnh sửa hoặc trợ lý không cần truy cập trực tiếp vào cơ sở dữ liệu. Nó nói chuyện với LangMCP. LangMCP sở hữu các cấu hình, bộ điều hợp phụ trợ, việc biên tập, phân trang và thực thi chỉ đọc.
Sự tách biệt đó rất quan trọng. Một trợ lý hữu ích phải có khả năng kiểm tra trạng thái, nhưng nó không nên vô tình trở thành một công cụ di chuyển.
Quy trình làm việc rất đơn giản:
1. Cấu hình các cấu hình trong langmcp.toml.
2. Khởi động máy chủ MCP với giao thức stdio.
3. Hỏi trợ lý về một luồng, điểm kiểm tra hoặc bộ nhớ người dùng.
4. Cho phép trợ lý kiểm tra trạng thái thông qua các thao tác bị hạn chế.
5. Nhận lại một phán quyết dựa trên dữ liệu bền vững thực tế.
Đây là phần tôi thích nhất về thiết kế. Nó không yêu cầu mô hình phải thông minh với cơ sở hạ tầng. Nó cung cấp cho mô hình một ống kính an toàn hơn vào hệ thống.
Bắt đầu với La
ngMCP
Cài đặt gói Python
uv pip install "langmcp[all]"
2. Cấu hình hồ sơ trong langmcp.toml:
[profiles.dev]
checkpointer = "${POSTGRES_URI}"
store = "${POSTGRES_URI}"
3. Khởi động máy chủ và kết nối trình soạn thảo của bạn:
langmcp serve --config ./langmcp.toml
Sau đó, yêu cầu trợ lý của bạn: “Tóm tắt luồng abc123 và kiểm tra xem bộ nhớ người dùng có tồn tại cho user_456 không.”
Nếu bạn muốn thêm LangMCP vào IDE mã hóa dựa trên AI của mình như Cursor hoặc VS Code, tệp mcp.json phải có cấu trúc sau.
{
"mcpServers": {
"langmcp": {
"command": "uvx",
"args": ["langmcp[all]", "serve", "--config", "ABSOLUTE_PATH_TO_LANGMCP_TOML"],
"env": {
"LANGMCP_READ_ONLY": "true",
"POSTGRES_URI": "postgresql://READONLY_USER:READONLY_PASSWORD@HOST:5432/DB_NAME"
}
}
}
}
Các công cụ rất hữu ích, nhưng MCP còn nhiều điều hơn thế
Phiên bản đầu tiên của LangMCP tập trung vào các công cụ.
Đó là điểm khởi đầu rõ ràng. Các công cụ hoàn hảo khi trợ lý cần thực hiện một hành động với các đối số:
get_thread_state(thread_id)
compare_checkpoints(thread_id, checkpoint_id_a, checkpoint_id_b)
search_store(namespace_prefix, query)
analyze_memory_gaps(thread_id, user_id)
Nhưng MCP không chỉ có các công cụ. Khi dự án trưởng thành, tôi đã thêm cả tài nguyên và lời nhắc. Điều đó đã thay đổi cảm nhận về máy chủ.
Tài nguyên: xử lý trạng thái bền vững như ngữ cảnh có thể đọc được
Tài nguyên hữu ích khi dữ liệu nên được cảm nhận như một đối tượng có thể đọc được với một URI ổn định.
Đối với LangMCP, điều đó ánh xạ tự nhiên tới những thứ như:
langmcp://profiles
langmcp://profiles/{profile}/health
langmcp://profiles/{profile}/threads
langmcp://profiles/{profile}/threads/{thread_id}/summary
langmcp://profiles/{profile}/threads/{thread_id}/checkpoints
langmcp://profiles/{profile}/users/{user_id}/memory-summary
Đây là một sự phù hợp tốt hơn cho trạng thái mà một máy khách có thể muốn đính kèm làm ngữ cảnh. Tóm tắt luồng không thực sự là một “hành động” theo nghĩa sản phẩm. Đó là một cái nhìn về trạng thái hiện tại.
Sự khác biệt đó nghe có vẻ nhỏ, nhưng nó làm cho giao diện MCP cảm thấy tự nhiên hơn. Các công cụ trả lời các yêu cầu. Tài nguyên hiển thị một trạng thái có thể kiểm tra được.
Lời nhắc: đóng gói quy trình gỡ lỗi
Khi gỡ lỗi bộ nhớ tác nhân, các bước thường có thể lặp lại. Bạn không muốn trợ lý chuyển thẳng từ “tác nhân đã quên điều gì đó” sang một câu trả lời tự tin. Bạn muốn nó kiểm tra trạng thái luồng, lịch sử điểm kiểm tra, siêu dữ liệu cấu hình, không gian tên lưu trữ và bộ nhớ người dùng trước khi đưa ra kết luận.
Vì vậy, LangMCP bao gồm các lời nhắc có thể tái sử dụng như:
debug_thread
investigate_memory_gap
compare_thread_checkpoints
inspect_user_memory
Nguồn tin: Medium Towards AI — Tác giả: Muhammad Abdullah Shafat Mulkana. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.