Skip to main content

8 posts tagged with "AI"

Machine learning, generative models and putting AI inside a system that already runs.

View All Tags

1MCP Agent: gom mọi MCP server về một cửa, và bớt ngốn context

· 10 min read
Nguyễn Huỳnh Minh Tiến
Middle Fullstack Developer @ Utop.vn
Summary

Dùng vài MCP server cho Claude Code, Cursor, Codex… thì sớm muộn bạn cũng phải khai báo lặp lại cùng một danh sách ở từng client, và mỗi server lại đổ toàn bộ schema tool vào context ngay khi phiên bắt đầu. 1MCP Agent (@1mcp/agent) là một proxy đứng giữa: bạn đăng ký các MCP server một lần, chạy 1mcp serve, rồi client nào cũng chỉ cần trỏ về một địa chỉ. Ngoài ra nó có chế độ CLI cho phép agent khám phá và gọi tool theo từng bước (instructions → inspect → run) để không phải nạp hết schema từ đầu.

Bài bắt đầu từ một vấn đề tôi gặp thật (máy nặng vì mỗi session Claude Code tự khởi động bản sao MCP server của riêng nó), rồi chuyển sang giới thiệu 1MCP dựa trên README của repo và tài liệu tại docs.1mcp.app. Phần giới thiệu công cụ chưa phải đánh giá sau thời gian dài dùng. Chỗ nào tài liệu không nói rõ thì tôi ghi là chưa rõ, không đoán.

Diagram Design: teaching AI agents to draw clean, good-looking, on-brand technical diagrams

· 26 min read
Nguyễn Huỳnh Minh Tiến
Middle Fullstack Developer @ Utop.vn
Summary

Diagram Design is an open-source skill (MIT license) by Cathryn Lavery for AI agents such as Claude Code, Codex and GitHub Copilot. Once it is installed, you just ask your agent to "draw an architecture diagram for this system" and get back an HTML file with a clean, clearly laid-out diagram: no more boxes piled on boxes or arrows crossing every which way. It covers 44 diagram types and can redraw old diagrams from draw.io, Mermaid and Excalidraw. Colors, fonts and dark mode can be changed to match your brand. If you write labels in Vietnamese, you should swap the title font, because the default one is missing many accented letters.

This post is an introduction, not a review after long-term use. The information comes from the README on GitHub and the skill's instruction file SKILL.md, version 2.6.68. The Vietnamese font check and the color contrast numbers are my own.

Cài skill rồi code tiếp: cơ chế đằng sau và phần tri thức bị bỏ lại

· 15 min read
Nguyễn Huỳnh Minh Tiến
Middle Fullstack Developer @ Utop.vn
Summary

Một skill không phải plugin, không phải thư viện, không phải đoạn code được thực thi. Nó là văn bản được nạp vào cửa sổ ngữ cảnh theo ba tầng: tên và mô tả luôn nằm sẵn (~100 token), thân bài chỉ nạp khi model thấy khớp, còn file đính kèm thì không tốn gì cho tới lúc thật sự mở ra. Model đọc skill rồi tự quyết định làm theo, chứ không "chạy" nó. Ba tầng đó giải thích gần hết những câu hỏi thực dụng — vì sao description quyết định việc kích hoạt chứ không phải nội dung, vì sao viết skill dài là phản tác dụng. Và vì skill là bản nén phán đoán của một người trong một bối cảnh cụ thể, cài nó vào mà không đọc nghĩa là nhận cả những giả định bạn chưa từng kiểm chứng.

Quy trình phổ biến hiện nay: vào một danh mục skill, chọn preset, chạy một lệnh cài, rồi code tiếp. Hỏi vì sao agent đột nhiên viết test theo kiểu đó, vì sao nó nhất quyết dùng pattern kia, thì câu trả lời thường là "tại skill nó thế".

Đó là chỗ tri thức rơi rụng. Không phải vì skill xấu — nhiều skill viết rất tốt — mà vì bản chất của skill là nén phán đoán lại thành hướng dẫn, và người nhận thường chỉ lấy phần hướng dẫn.

Bài này mổ hai lớp: cơ chế skill hoạt động thế nào, và chuyện gì bị bỏ lại khi ta chỉ cài mà không đọc.

MeiGen: thư viện prompt ảnh miễn phí, và cái MCP server ít người để ý

· 10 min read
Nguyễn Huỳnh Minh Tiến
Middle Fullstack Developer @ Utop.vn
Summary

MeiGen là một thư viện prompt cho các mô hình sinh ảnh và video — duyệt được ngay, không cần tạo tài khoản, và mỗi prompt đều đi kèm ảnh kết quả của chính nó nên bạn biết trước sẽ nhận được gì. Nhưng thứ đáng chú ý với người viết code lại nằm ở mục ít ai bấm vào: MeiGen có MCP server, nghĩa là bạn gắn nó vào Claude Code hay Codex rồi gọi thẳng các tác vụ xoá nền, upscale, dựng ảnh sản phẩm ngay trong phiên làm việc, không cần mở trình duyệt. Duyệt prompt thì miễn phí, còn sinh ảnh qua MCP thì trang tài liệu ghi rõ là tiêu credit đã mua.

Bài này là giới thiệu công cụ, không phải đánh giá từ trải nghiệm dài ngày. Mọi thông tin dưới đây tôi lấy trực tiếp từ meigen.ai và trang MCP của họ; chỗ nào tôi không kiểm chứng được thì tôi nói rõ là không kiểm chứng được.

ONNX Runtime Dies on Alpine: the ld-linux-x86-64.so.2 Error and Why libc6-compat Won't Save You

· 14 min read
Nguyễn Huỳnh Minh Tiến
Middle Fullstack Developer @ Utop.vn
Summary

onnxruntime-node ships prebuilt binaries built against glibc, and libonnxruntime.so.1 carries a DT_NEEDED entry pointing directly at ld-linux-x86-64.so.2 — glibc's own dynamic loader. Alpine uses musl, where that file does not exist, so dlopen fails at the library-loading step. Installing libc6-compat or gcompat does not fix it: they provide the loader file so you clear the first error, then die on the second one, __vsnprintf_chk: symbol not found. The practical answer is to change the base image to node:22-bookworm-slim, paying about 89 MB more for something that actually runs.

At 21:30 I added a Dockerfile for ClubDay — an event web app whose drawing game is scored by an ONNX model running on the server itself. The base image was reflex: node:22-alpine, because it is small.

The image built cleanly. The container came up. docker ps was green. Then, at the moment the server loaded the model, everything collapsed with an error line that never mentions ONNX:

Error loading shared library ld-linux-x86-64.so.2: No such file or directory
(needed by /app/node_modules/onnxruntime-node/bin/napi-v6/linux/x64/libonnxruntime.so.1)

At 21:44 I changed one line in the Dockerfile and everything worked. But the fourteen minutes in between are worth writing down, because that error line names a file you never installed, never declared in package.json, and which is simply always there on your development machine.