Tools8 min

aki-mcp-sv 1.11: gộp một tiến trình, AI tự đọc hướng dẫn

aki-mcp-sv 1.10 gộp 4 tiến trình Node về 1, viết lại filesystem tool native, RAM giảm còn ~72.6MB; 1.11 dạy AI tự đọc hướng dẫn ở phiên kết nối đầu.

aki-mcp-sv 1.11: gộp một tiến trình, AI tự đọc hướng dẫn

aki-mcp-sv 1.11.0 (23/08/2026) là bản mới nhất tính từ bài 1.9: 1.10.0 gộp 4 tiến trình Node đang chạy song song xuống còn 1, thay hai gói bên thứ ba (mcp-hub, filesystem MCP chính thức) bằng code viết tay trong chính repo, và đo lại RAM baseline tận gốc; 1.11.0 cho AI tự đọc tài liệu giới thiệu MCP ngay ở phiên kết nối đầu tiên thay vì nhét nguyên văn vào đoạn dán tay.

Vì sao gộp 4 tiến trình về 1?

Trước 1.10.0, streamable-bridge.js nói chuyện với mcp-hub — một tiến trình con riêng — qua handshake SSE, và mcp-hub lại spawn thêm một tiến trình filesystem của gói @modelcontextprotocol/server-filesystem. Ba lớp trung gian này chỉ tồn tại để router lệnh gọi tool giữa các tiến trình con.

1.10.0 gỡ cả mcp-hub lẫn tiến trình filesystem con: scripts/tools-server.js dựng thẳng một McpServer chạy in-process, và streamable-bridge.js nói chuyện trực tiếp qua InMemoryTransport của chính SDK MCP — không còn handshake SSE, không còn tiến trình con phải theo dõi khi crash. Tên tool phục vụ ra ngoài không đổi (vẫn giữ tiền tố local__), nên không kết nối nào đang dùng phải cấu hình lại.

Filesystem tool viết lại native thay đổi gì?

scripts/filesystem-mcp.js thay thế gói bên thứ ba bằng 7 tool viết tay: read_text_file, write_file, edit_file, create_directory, move_file, get_file_info, list_allowed_directories. An toàn symlink giữ nguyên cách gói cũ từng làm — kiểm tra containment bằng realpath, port lại từ validatePath() gốc.

Điểm khác biệt thực dùng: danh sách thư mục cho phép giờ đọc trực tiếp từ setting.json qua roots.js, nên một lần sửa folder trên panel có hiệu lực ngay ở lệnh gọi tiếp theo — trước đó chỉ shell và search có tính chất live-reload này, riêng filesystem còn phải bấm nút "Apply to file tools" rồi restart cả hub. Nút đó, cùng nút "Restart hub", bị gỡ khỏi panel vì không còn ý nghĩa.

  • Bỏ khỏi bộ tool vì trùng chức năng hoặc không có bằng chứng dùng thật: read_file (alias đã deprecated), list_directory/list_directory_with_sizes/directory_tree/search_files (đã có find_path/search_content thay thế), read_multiple_files, read_media_file.
Lưu ý

RAM baseline đo được ở 1.10.0: tiến trình đơn, idle sau boot, ~92MB RSS — vượt mục tiêu ~40MB của kế hoạch. Cô lập nguyên nhân bằng cách import từng phần và đọc process.memoryUsage(): Node trần + zod đã ~40MB (đúng mục tiêu gốc); riêng việc import McpServer/Server của SDK MCP cộng thêm +27MB, vì types.js dựng sẵn schema zod cho toàn bộ giao thức MCP — resource, prompt, sampling, elicitation, task, tổng 215 định nghĩa — chứ không chỉ phần tools/* mà server này thật sự dùng, và SDK không xuất subpath nhẹ hơn nào cho việc đó. 5 module tool của chính repo chỉ cộng thêm ~3MB. ~22MB còn lại đến từ update-check.js gọi fetch() lúc boot, khiến Node khởi tạo lười cả client undici bên trong nó — sửa bằng cách viết lại trên node:https trực tiếp. Kết quả đo cuối: 92MB → 72.6MB RSS. Phần chênh còn lại với mục tiêu 40MB là chi phí cố định của SDK MCP chính chủ, không phải thứ code của repo này giảm thêm được — ~72-76MB là mức sàn thực tế khi còn phụ thuộc SDK đó.

Những thay đổi nhỏ hơn của 1.10.0

Xác minh trên một npm start thật ngày 21/08/2026 (8 lần gọi initialize không kèm session ID vẫn mở đúng một phiên chung, round-trip OAuth DCR kiểu ChatGPT chạy trọn từ /register tới refresh token, folder thêm ở panel có hiệu lực ngay lệnh kế tiếp):

  • Icon Claude/Grok/ChatGPT/Gemini thật thay chữ ở panel, cạnh mỗi tab connector.
  • Allowlist git read-only mở rộng thêm ls-remote, describe, shortlog, merge-base — riêng ls-remote chỉ được phép khi gọi không kèm tham số, vì transport ext:: của git có thể biến một tham số repository/URL thành chạy lệnh tuỳ ý.
  • Sửa .jpg/.jpeg bị phục vụ sai Content-Type (thiếu trong bảng MIME của scripts/http.js, trước đó chạy được nhờ trình duyệt tự đoán định dạng).
  • Sửa file trạng thái staleness ~/.aki/aki-mcp-status.json không được ghi lại ngay sau khi refresh phiên bản trên panel, trước đó chỉ cập nhật trong bộ nhớ.
  • QR donate responsive thay vì khung cố định 118px.

1.11.0 — AI tự đọc hướng dẫn ở phiên đầu

Đoạn lệnh dán tay cho AI vốn đã sát trần 1.500 ký tự của ChatGPT. 1.11.0 giải bài toán "nhét thêm hướng dẫn mà không phá trần" bằng một dòng trỏ tới file thay vì nhét nguyên văn: docs/ref/mcp-intro.md (mẫu live-plan, tính liên tục qua nhiều tài khoản) chỉ được AI đọc một lần, chặn bởi cờ ~/.aki/mcpsv/intro.json — phiên sau không đọc lại. Đo được: 1.141/1.500 ký tự trước khi thêm dòng này, 1.292/1.500 sau.

Sửa kèm: ~/.aki/aki-mcp-status.json — file AI đọc đầu phiên để biết bản đang cài — trước đó tính đường dẫn ra ngoài USER_DIR riêng của app; nay dùng đúng USER_DIR như mọi userData khác. GitHub Release notes hết trống: workflow release trước chỉ lấy nội dung từ PR đã merge, mà repo này commit thẳng lên trunk nên phần thân gần như trống; nay trích đúng section CHANGELOG.md của bản được tag, kèm link so sánh Full Changelog với tag liền trước. .env được quyết định giữ nguyên, không gỡ.

Cả 1.10.0 và 1.11.0 không đổi cách kết nối — tên tool local__*, URL MCP và xác thực OAuth 2.1 giữ nguyên như bài giới thiệu dự án. Xem phân tích kiến trúc whitelist để hiểu vì sao server này an toàn khi mở ra internet, hoặc bài 1.9 cho phần cài đặt bằng launcher độc lập.

Bài liên quan