[{"data":1,"prerenderedAt":1389},["ShallowReactive",2],{"post-aki-mcp-sv-1-10-0-mot-tien-trinh-va-ban-standalone":3,"content-query-EeEhfRv3bB":795},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"categoryKey":11,"readTime":12,"body":13,"_type":789,"_id":790,"_source":791,"_file":792,"_stem":793,"_extension":794},"\u002Fposts\u002Faki-mcp-sv-1-10-0-mot-tien-trinh-va-ban-standalone","posts",false,"","aki-mcp-sv 1.10.0: Gộp Về Một Tiến Trình, Thêm Bản Standalone","1.9.0 thêm bản standalone tải sẵn, 1.10.0 gộp 4 tiến trình Node về 1 và viết lại filesystem tool native, 1.11.0 thêm onboarding phiên đầu.","2026-08-23","aiInfra","6 min",{"type":14,"children":15,"toc":783},"root",[16,24,86,93,114,205,211,278,315,373,468,566,600,606,634,727,733,738,777],{"type":17,"tag":18,"props":19,"children":21},"element","h1",{"id":20},"aki-mcp-sv-1100-gộp-về-một-tiến-trình-thêm-bản-standalone",[22],{"type":23,"value":8},"text",{"type":17,"tag":25,"props":26,"children":27},"p",{},[28,30,37,39,45,47,52,54,61,63,68,70,74,76,84],{"type":23,"value":29},"Bài ",{"type":17,"tag":31,"props":32,"children":34},"a",{"href":33},"\u002Fposts\u002Faki-mcp-sv-1-6-0-gop-tool-local-va-tu-kiem-tra-update\u002F",[35],{"type":23,"value":36},"1.6.0",{"type":23,"value":38}," dừng ở tự kiểm tra bản mới. Từ đó đến ",{"type":17,"tag":40,"props":41,"children":42},"strong",{},[43],{"type":23,"value":44},"1.11.0",{"type":23,"value":46}," (23\u002F08\u002F2026) ba bản đổi cách người dùng cài đặt và cách server chạy dưới nền: ",{"type":17,"tag":40,"props":48,"children":49},{},[50],{"type":23,"value":51},"1.9.0",{"type":23,"value":53}," thêm đường cài không cần ",{"type":17,"tag":55,"props":56,"children":58},"code",{"className":57},[],[59],{"type":23,"value":60},"git clone",{"type":23,"value":62},", ",{"type":17,"tag":40,"props":64,"children":65},{},[66],{"type":23,"value":67},"1.10.0",{"type":23,"value":69}," gộp 4 tiến trình Node xuống còn 1, ",{"type":17,"tag":40,"props":71,"children":72},{},[73],{"type":23,"value":44},{"type":23,"value":75}," dạy AI tự đọc hướng dẫn ở phiên kết nối đầu tiên. GitHub ",{"type":17,"tag":31,"props":77,"children":81},{"href":78,"rel":79},"https:\u002F\u002Fgithub.com\u002Flacvietanh\u002Faki-mcp-sv\u002Fblob\u002Fmaster\u002FCHANGELOG.md",[80],"nofollow",[82],{"type":23,"value":83},"CHANGELOG",{"type":23,"value":85}," là nguồn chân lý.",{"type":17,"tag":87,"props":88,"children":90},"h2",{"id":89},"_190-không-cần-biết-git-vẫn-cài-được",[91],{"type":23,"value":92},"1.9.0 — Không cần biết Git vẫn cài được",{"type":17,"tag":25,"props":94,"children":95},{},[96,98,104,106,112],{"type":23,"value":97},"Trước 1.9.0, cài ",{"type":17,"tag":55,"props":99,"children":101},{"className":100},[],[102],{"type":23,"value":103},"aki-mcp-sv",{"type":23,"value":105}," bắt buộc qua ",{"type":17,"tag":55,"props":107,"children":109},{"className":108},[],[110],{"type":23,"value":111},"git clone && npm install && npm start",{"type":23,"value":113},". Bản 1.9.0 thêm một đường thứ hai: GitHub Actions build sẵn theo tag, chạy smoke-test trên cả ba hệ điều hành, rồi publish draft release với launcher riêng cho macOS\u002FLinux\u002FWindows cùng file payload đi kèm.",{"type":17,"tag":115,"props":116,"children":117},"ul",{},[118,124,143,156,200],{"type":17,"tag":119,"props":120,"children":121},"li",{},[122],{"type":23,"value":123},"Workflow release tag-triggered: build, smoke-test matrix 3 OS, gate bắt buộc đủ 6 asset, publish.",{"type":17,"tag":119,"props":125,"children":126},{},[127,133,135,141],{"type":17,"tag":55,"props":128,"children":130},{"className":129},[],[131],{"type":23,"value":132},"scripts\u002Fbuild\u002Frelease-gate.js",{"type":23,"value":134}," xác minh đủ asset và checksum SHA256 của từng launcher khớp ",{"type":17,"tag":55,"props":136,"children":138},{"className":137},[],[139],{"type":23,"value":140},"SHA256SUMS",{"type":23,"value":142}," của chính release đó trước khi coi là hợp lệ.",{"type":17,"tag":119,"props":144,"children":145},{},[146,148,154],{"type":23,"value":147},"Launcher bootstrap đưa Node runtime đóng gói sẵn vào PATH rồi mới exec vào ",{"type":17,"tag":55,"props":149,"children":151},{"className":150},[],[152],{"type":23,"value":153},"start.js",{"type":23,"value":155}," — người dùng không cần cài Node trước.",{"type":17,"tag":119,"props":157,"children":158},{},[159,161,167,169,175,177,183,184,190,192,198],{"type":23,"value":160},"Asset đổi tên ",{"type":17,"tag":55,"props":162,"children":164},{"className":163},[],[165],{"type":23,"value":166},"-app.zip",{"type":23,"value":168},"\u002F",{"type":17,"tag":55,"props":170,"children":172},{"className":171},[],[173],{"type":23,"value":174},"-app.tar.gz",{"type":23,"value":176}," → ",{"type":17,"tag":55,"props":178,"children":180},{"className":179},[],[181],{"type":23,"value":182},"-payload.zip",{"type":23,"value":168},{"type":17,"tag":55,"props":185,"children":187},{"className":186},[],[188],{"type":23,"value":189},"-payload.tar.gz",{"type":23,"value":191}," ở 1.9.2: tên cũ đọc như \"app để mở\", dễ nhầm với launcher nằm ngay cạnh; ",{"type":17,"tag":55,"props":193,"children":195},{"className":194},[],[196],{"type":23,"value":197},"payload",{"type":23,"value":199}," báo đúng vai trò — file nội bộ launcher tự tải, không phải file người dùng mở tay.",{"type":17,"tag":119,"props":201,"children":202},{},[203],{"type":23,"value":204},"README viết lại toàn bộ ở 1.9.3: cảnh báo bảo mật OS mà người dùng lần đầu chắc chắn gặp (Gatekeeper macOS, SmartScreen Windows, quyền thực thi trên Linux) và điểm sai của nút \"Code → Download ZIP\" trên GitHub (tải ra source archive không chạy được).",{"type":17,"tag":87,"props":206,"children":208},{"id":207},"vì-sao-phải-gộp-về-một-tiến-trình",[209],{"type":23,"value":210},"Vì sao phải gộp về một tiến trình?",{"type":17,"tag":212,"props":213,"children":217},"pre",{"className":214,"code":215,"language":216,"meta":7,"style":7},"language-mermaid shiki shiki-themes night-owl","graph LR\n    subgraph \"Trước 1.10.0 — 4 tiến trình\"\n        A1[gatekeeper.js] -->|SSE| B1[mcp-hub]\n        B1 --> C1[local-tools-mcp.js]\n        B1 --> D1[\"@modelcontextprotocol\u002Fserver-filesystem\"]\n    end\n","mermaid",[218],{"type":17,"tag":55,"props":219,"children":220},{"__ignoreMap":7},[221,233,242,251,260,269],{"type":17,"tag":222,"props":223,"children":226},"span",{"class":224,"line":225},"line",1,[227],{"type":17,"tag":222,"props":228,"children":230},{"style":229},"--shiki-default:#D6DEEB",[231],{"type":23,"value":232},"graph LR\n",{"type":17,"tag":222,"props":234,"children":236},{"class":224,"line":235},2,[237],{"type":17,"tag":222,"props":238,"children":239},{"style":229},[240],{"type":23,"value":241},"    subgraph \"Trước 1.10.0 — 4 tiến trình\"\n",{"type":17,"tag":222,"props":243,"children":245},{"class":224,"line":244},3,[246],{"type":17,"tag":222,"props":247,"children":248},{"style":229},[249],{"type":23,"value":250},"        A1[gatekeeper.js] -->|SSE| B1[mcp-hub]\n",{"type":17,"tag":222,"props":252,"children":254},{"class":224,"line":253},4,[255],{"type":17,"tag":222,"props":256,"children":257},{"style":229},[258],{"type":23,"value":259},"        B1 --> C1[local-tools-mcp.js]\n",{"type":17,"tag":222,"props":261,"children":263},{"class":224,"line":262},5,[264],{"type":17,"tag":222,"props":265,"children":266},{"style":229},[267],{"type":23,"value":268},"        B1 --> D1[\"@modelcontextprotocol\u002Fserver-filesystem\"]\n",{"type":17,"tag":222,"props":270,"children":272},{"class":224,"line":271},6,[273],{"type":17,"tag":222,"props":274,"children":275},{"style":229},[276],{"type":23,"value":277},"    end\n",{"type":17,"tag":212,"props":279,"children":281},{"className":214,"code":280,"language":216,"meta":7,"style":7},"graph LR\n    subgraph \"Từ 1.10.0 — 1 tiến trình\"\n        A2[gatekeeper.js] -->|InMemoryTransport| B2[\"tools-server.js: local__*\"]\n    end\n",[282],{"type":17,"tag":55,"props":283,"children":284},{"__ignoreMap":7},[285,292,300,308],{"type":17,"tag":222,"props":286,"children":287},{"class":224,"line":225},[288],{"type":17,"tag":222,"props":289,"children":290},{"style":229},[291],{"type":23,"value":232},{"type":17,"tag":222,"props":293,"children":294},{"class":224,"line":235},[295],{"type":17,"tag":222,"props":296,"children":297},{"style":229},[298],{"type":23,"value":299},"    subgraph \"Từ 1.10.0 — 1 tiến trình\"\n",{"type":17,"tag":222,"props":301,"children":302},{"class":224,"line":244},[303],{"type":17,"tag":222,"props":304,"children":305},{"style":229},[306],{"type":23,"value":307},"        A2[gatekeeper.js] -->|InMemoryTransport| B2[\"tools-server.js: local__*\"]\n",{"type":17,"tag":222,"props":309,"children":310},{"class":224,"line":253},[311],{"type":17,"tag":222,"props":312,"children":313},{"style":229},[314],{"type":23,"value":277},{"type":17,"tag":25,"props":316,"children":317},{},[318,324,326,332,334,340,342,348,350,356,358,364,365,371],{"type":17,"tag":55,"props":319,"children":321},{"className":320},[],[322],{"type":23,"value":323},"mcp-hub",{"type":23,"value":325}," và tiến trình filesystem bên thứ ba từng tồn tại chỉ để router tool qua SSE giữa các tiến trình con. ",{"type":17,"tag":55,"props":327,"children":329},{"className":328},[],[330],{"type":23,"value":331},"scripts\u002Ftools-server.js",{"type":23,"value":333}," dựng thẳng một ",{"type":17,"tag":55,"props":335,"children":337},{"className":336},[],[338],{"type":23,"value":339},"McpServer",{"type":23,"value":341}," in-process, ",{"type":17,"tag":55,"props":343,"children":345},{"className":344},[],[346],{"type":23,"value":347},"streamable-bridge.js",{"type":23,"value":349}," nói chuyện trực tiếp qua ",{"type":17,"tag":55,"props":351,"children":353},{"className":352},[],[354],{"type":23,"value":355},"InMemoryTransport",{"type":23,"value":357}," của chính SDK — không còn handshake SSE, không còn tiến trình con ",{"type":17,"tag":55,"props":359,"children":361},{"className":360},[],[362],{"type":23,"value":363},"npx",{"type":23,"value":168},{"type":17,"tag":55,"props":366,"children":368},{"className":367},[],[369],{"type":23,"value":370},"node",{"type":23,"value":372}," riêng phải theo dõi khi crash.",{"type":17,"tag":25,"props":374,"children":375},{},[376,378,384,386,392,394,400,401,407,408,414,415,421,422,428,429,435,436,442,444,450,452,458,460,466],{"type":23,"value":377},"Cái giá đổi lại nằm ở phần filesystem: bản thứ 3 (",{"type":17,"tag":55,"props":379,"children":381},{"className":380},[],[382],{"type":23,"value":383},"@modelcontextprotocol\u002Fserver-filesystem",{"type":23,"value":385},") bị gỡ hẳn, thay bằng 7 tool viết tay trong ",{"type":17,"tag":55,"props":387,"children":389},{"className":388},[],[390],{"type":23,"value":391},"filesystem-mcp.js",{"type":23,"value":393}," (",{"type":17,"tag":55,"props":395,"children":397},{"className":396},[],[398],{"type":23,"value":399},"read_text_file",{"type":23,"value":62},{"type":17,"tag":55,"props":402,"children":404},{"className":403},[],[405],{"type":23,"value":406},"write_file",{"type":23,"value":62},{"type":17,"tag":55,"props":409,"children":411},{"className":410},[],[412],{"type":23,"value":413},"edit_file",{"type":23,"value":62},{"type":17,"tag":55,"props":416,"children":418},{"className":417},[],[419],{"type":23,"value":420},"create_directory",{"type":23,"value":62},{"type":17,"tag":55,"props":423,"children":425},{"className":424},[],[426],{"type":23,"value":427},"move_file",{"type":23,"value":62},{"type":17,"tag":55,"props":430,"children":432},{"className":431},[],[433],{"type":23,"value":434},"get_file_info",{"type":23,"value":62},{"type":17,"tag":55,"props":437,"children":439},{"className":438},[],[440],{"type":23,"value":441},"list_allowed_directories",{"type":23,"value":443},") — an toàn symlink theo đúng cách package cũ từng làm (",{"type":17,"tag":55,"props":445,"children":447},{"className":446},[],[448],{"type":23,"value":449},"validatePath()",{"type":23,"value":451}," realpath containment), và đọc danh sách thư mục cho phép trực tiếp từ ",{"type":17,"tag":55,"props":453,"children":455},{"className":454},[],[456],{"type":23,"value":457},"setting.json",{"type":23,"value":459}," qua ",{"type":17,"tag":55,"props":461,"children":463},{"className":462},[],[464],{"type":23,"value":465},"roots.js",{"type":23,"value":467},", 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, không cần khởi động lại — trước đó chỉ shell\u002Fsearch có tính chất live-reload này, filesystem còn phải bấm nút \"Apply\" riêng.",{"type":17,"tag":469,"props":470,"children":471},"blockquote",{},[472],{"type":17,"tag":25,"props":473,"children":474},{},[475,480,482,487,489,495,497,503,505,510,512,517,519,525,527,533,535,541,543,549,551,557,559,564],{"type":17,"tag":222,"props":476,"children":477},{},[478],{"type":23,"value":479},"!NOTE",{"type":23,"value":481},"\nRAM baseline đo được ở 1.10.0: tiến trình chạy đơn, idle sau boot, ",{"type":17,"tag":40,"props":483,"children":484},{},[485],{"type":23,"value":486},"~92MB RSS",{"type":23,"value":488}," — vượt mục tiêu ~40MB. Cô lập nguyên nhân bằng cách import từng phần và đọc ",{"type":17,"tag":55,"props":490,"children":492},{"className":491},[],[493],{"type":23,"value":494},"process.memoryUsage()",{"type":23,"value":496},": Node trần + ",{"type":17,"tag":55,"props":498,"children":500},{"className":499},[],[501],{"type":23,"value":502},"zod",{"type":23,"value":504}," đã ~40MB (đúng mục tiêu gốc), riêng ",{"type":17,"tag":55,"props":506,"children":508},{"className":507},[],[509],{"type":23,"value":339},{"type":23,"value":511}," của SDK MCP cộng thêm ",{"type":17,"tag":40,"props":513,"children":514},{},[515],{"type":23,"value":516},"+27MB",{"type":23,"value":518}," vì dựng sẵn schema zod cho toàn bộ giao thức MCP (resource, prompt, sampling, elicitation, task — 215 định nghĩa), chứ không chỉ phần ",{"type":17,"tag":55,"props":520,"children":522},{"className":521},[],[523],{"type":23,"value":524},"tools\u002F*",{"type":23,"value":526}," server này thật sự dùng — chi phí cố định khi phụ thuộc SDK chính chủ. ~22MB còn lại đến từ ",{"type":17,"tag":55,"props":528,"children":530},{"className":529},[],[531],{"type":23,"value":532},"fetch()",{"type":23,"value":534}," gọi lúc boot của ",{"type":17,"tag":55,"props":536,"children":538},{"className":537},[],[539],{"type":23,"value":540},"update-check.js",{"type":23,"value":542}," khởi tạo cả ",{"type":17,"tag":55,"props":544,"children":546},{"className":545},[],[547],{"type":23,"value":548},"undici",{"type":23,"value":550},"; sửa bằng cách viết lại trên ",{"type":17,"tag":55,"props":552,"children":554},{"className":553},[],[555],{"type":23,"value":556},"node:https",{"type":23,"value":558}," trực tiếp. Kết quả đo cuối: ",{"type":17,"tag":40,"props":560,"children":561},{},[562],{"type":23,"value":563},"~92MB → ~72.6MB RSS",{"type":23,"value":565},".",{"type":17,"tag":25,"props":567,"children":568},{},[569,571,577,578,584,585,591,592,598],{"type":23,"value":570},"Các thay đổi nhỏ hơn trong 1.10.0: icon Claude\u002FGrok\u002FChatGPT\u002FGemini thật thay chữ ở panel, allowlist git read-only mở rộng thêm ",{"type":17,"tag":55,"props":572,"children":574},{"className":573},[],[575],{"type":23,"value":576},"ls-remote",{"type":23,"value":168},{"type":17,"tag":55,"props":579,"children":581},{"className":580},[],[582],{"type":23,"value":583},"describe",{"type":23,"value":168},{"type":17,"tag":55,"props":586,"children":588},{"className":587},[],[589],{"type":23,"value":590},"shortlog",{"type":23,"value":168},{"type":17,"tag":55,"props":593,"children":595},{"className":594},[],[596],{"type":23,"value":597},"merge-base",{"type":23,"value":599},", QR donate responsive.",{"type":17,"tag":87,"props":601,"children":603},{"id":602},"_1110-ai-tự-đọc-hướng-dẫn-ở-phiên-đầu",[604],{"type":23,"value":605},"1.11.0 — AI tự đọc hướng dẫn ở phiên đầu",{"type":17,"tag":25,"props":607,"children":608},{},[609,611,617,619,624,626,632],{"type":23,"value":610},"Prompt dán vào AI vốn đã sát trần 1.500 ký tự của ChatGPT (đo được 1141\u002F1500 trước, 1292\u002F1500 sau khi thêm). Bản 1.11.0 giải bài toán \"làm sao nhét thêm hướng dẫn mà không phá trần\" bằng một dòng trỏ tới file, không nhét nguyên văn: ",{"type":17,"tag":55,"props":612,"children":614},{"className":613},[],[615],{"type":23,"value":616},"docs\u002Fref\u002Fmcp-intro.md",{"type":23,"value":618}," (mẫu live-plan, tính liên tục qua nhiều tài khoản) chỉ được AI đọc ",{"type":17,"tag":40,"props":620,"children":621},{},[622],{"type":23,"value":623},"một lần",{"type":23,"value":625},", chặn bởi cờ ",{"type":17,"tag":55,"props":627,"children":629},{"className":628},[],[630],{"type":23,"value":631},"~\u002F.aki\u002Fmcpsv\u002Fintro.json",{"type":23,"value":633}," — phiên sau không đọc lại.",{"type":17,"tag":115,"props":635,"children":636},{},[637,680,716],{"type":17,"tag":119,"props":638,"children":639},{},[640,642,648,650,656,658,664,666,671,672,678],{"type":23,"value":641},"Sửa kèm: ",{"type":17,"tag":55,"props":643,"children":645},{"className":644},[],[646],{"type":23,"value":647},"~\u002F.aki\u002Faki-mcp-status.json",{"type":23,"value":649}," — file trạng thái AI đọc đầu phiên để biết bản đang cài — trước đó nằm ngoài ",{"type":17,"tag":55,"props":651,"children":653},{"className":652},[],[654],{"type":23,"value":655},"USER_DIR",{"type":23,"value":657}," riêng của app, ",{"type":17,"tag":55,"props":659,"children":661},{"className":660},[],[662],{"type":23,"value":663},"scripts\u002Fupdate-check.js",{"type":23,"value":665}," nay tính đường dẫn qua đúng ",{"type":17,"tag":55,"props":667,"children":669},{"className":668},[],[670],{"type":23,"value":655},{"type":23,"value":393},{"type":17,"tag":55,"props":673,"children":675},{"className":674},[],[676],{"type":23,"value":677},"scripts\u002Fuserdata.js",{"type":23,"value":679},") như mọi userData khác.",{"type":17,"tag":119,"props":681,"children":682},{},[683,685,691,693,699,701,707,709,714],{"type":23,"value":684},"GitHub Release notes hết trống: ",{"type":17,"tag":55,"props":686,"children":688},{"className":687},[],[689],{"type":23,"value":690},".github\u002Fworkflows\u002Frelease.yml",{"type":23,"value":692}," trước dùng ",{"type":17,"tag":55,"props":694,"children":696},{"className":695},[],[697],{"type":23,"value":698},"gh release create --generate-notes",{"type":23,"value":700},", chỉ lấy nội dung từ PR đã merge — 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 ",{"type":17,"tag":55,"props":702,"children":704},{"className":703},[],[705],{"type":23,"value":706},"CHANGELOG.md",{"type":23,"value":708}," của bản được tag, kèm link so sánh ",{"type":17,"tag":40,"props":710,"children":711},{},[712],{"type":23,"value":713},"Full Changelog",{"type":23,"value":715}," với tag bare-semver liền trước.",{"type":17,"tag":119,"props":717,"children":718},{},[719,725],{"type":17,"tag":55,"props":720,"children":722},{"className":721},[],[723],{"type":23,"value":724},".env",{"type":23,"value":726}," giữ nguyên, không gỡ (quyết định đóng, không phải thay đổi hành vi).",{"type":17,"tag":87,"props":728,"children":730},{"id":729},"cài-đặt",[731],{"type":23,"value":732},"Cài đặt",{"type":17,"tag":25,"props":734,"children":735},{},[736],{"type":23,"value":737},"Hai đường, cả hai đều dẫn tới cùng server:",{"type":17,"tag":115,"props":739,"children":740},{},[741,758],{"type":17,"tag":119,"props":742,"children":743},{},[744,749,751,757],{"type":17,"tag":40,"props":745,"children":746},{},[747],{"type":23,"value":748},"Git clone",{"type":23,"value":750}," (như trước giờ): ",{"type":17,"tag":55,"props":752,"children":754},{"className":753},[],[755],{"type":23,"value":756},"git clone https:\u002F\u002Fgithub.com\u002Flacvietanh\u002Faki-mcp-sv.git && cd aki-mcp-sv && npm install && npm start",{"type":23,"value":565},{"type":17,"tag":119,"props":759,"children":760},{},[761,766,768,775],{"type":17,"tag":40,"props":762,"children":763},{},[764],{"type":23,"value":765},"Standalone",{"type":23,"value":767}," (mới từ 1.9.0): tải launcher đúng hệ điều hành từ trang ",{"type":17,"tag":31,"props":769,"children":772},{"href":770,"rel":771},"https:\u002F\u002Fgithub.com\u002Flacvietanh\u002Faki-mcp-sv\u002Freleases",[80],[773],{"type":23,"value":774},"Releases",{"type":23,"value":776}," trên GitHub, chạy trực tiếp — không cần cài Node hay Git trước.",{"type":17,"tag":778,"props":779,"children":780},"style",{},[781],{"type":23,"value":782},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":235,"depth":235,"links":784},[785,786,787,788],{"id":89,"depth":235,"text":92},{"id":207,"depth":235,"text":210},{"id":602,"depth":235,"text":605},{"id":729,"depth":235,"text":732},"markdown","content:posts:aki-mcp-sv-1-10-0-mot-tien-trinh-va-ban-standalone.md","content","posts\u002Faki-mcp-sv-1-10-0-mot-tien-trinh-va-ban-standalone.md","posts\u002Faki-mcp-sv-1-10-0-mot-tien-trinh-va-ban-standalone","md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"categoryKey":11,"readTime":12,"body":796,"_type":789,"_id":790,"_source":791,"_file":792,"_stem":793,"_extension":794},{"type":14,"children":797,"toc":1383},[798,802,843,847,863,933,937,985,1019,1064,1140,1214,1242,1246,1267,1340,1344,1348,1379],{"type":17,"tag":18,"props":799,"children":800},{"id":20},[801],{"type":23,"value":8},{"type":17,"tag":25,"props":803,"children":804},{},[805,806,810,811,815,816,820,821,826,827,831,832,836,837,842],{"type":23,"value":29},{"type":17,"tag":31,"props":807,"children":808},{"href":33},[809],{"type":23,"value":36},{"type":23,"value":38},{"type":17,"tag":40,"props":812,"children":813},{},[814],{"type":23,"value":44},{"type":23,"value":46},{"type":17,"tag":40,"props":817,"children":818},{},[819],{"type":23,"value":51},{"type":23,"value":53},{"type":17,"tag":55,"props":822,"children":824},{"className":823},[],[825],{"type":23,"value":60},{"type":23,"value":62},{"type":17,"tag":40,"props":828,"children":829},{},[830],{"type":23,"value":67},{"type":23,"value":69},{"type":17,"tag":40,"props":833,"children":834},{},[835],{"type":23,"value":44},{"type":23,"value":75},{"type":17,"tag":31,"props":838,"children":840},{"href":78,"rel":839},[80],[841],{"type":23,"value":83},{"type":23,"value":85},{"type":17,"tag":87,"props":844,"children":845},{"id":89},[846],{"type":23,"value":92},{"type":17,"tag":25,"props":848,"children":849},{},[850,851,856,857,862],{"type":23,"value":97},{"type":17,"tag":55,"props":852,"children":854},{"className":853},[],[855],{"type":23,"value":103},{"type":23,"value":105},{"type":17,"tag":55,"props":858,"children":860},{"className":859},[],[861],{"type":23,"value":111},{"type":23,"value":113},{"type":17,"tag":115,"props":864,"children":865},{},[866,870,885,895,929],{"type":17,"tag":119,"props":867,"children":868},{},[869],{"type":23,"value":123},{"type":17,"tag":119,"props":871,"children":872},{},[873,878,879,884],{"type":17,"tag":55,"props":874,"children":876},{"className":875},[],[877],{"type":23,"value":132},{"type":23,"value":134},{"type":17,"tag":55,"props":880,"children":882},{"className":881},[],[883],{"type":23,"value":140},{"type":23,"value":142},{"type":17,"tag":119,"props":886,"children":887},{},[888,889,894],{"type":23,"value":147},{"type":17,"tag":55,"props":890,"children":892},{"className":891},[],[893],{"type":23,"value":153},{"type":23,"value":155},{"type":17,"tag":119,"props":896,"children":897},{},[898,899,904,905,910,911,916,917,922,923,928],{"type":23,"value":160},{"type":17,"tag":55,"props":900,"children":902},{"className":901},[],[903],{"type":23,"value":166},{"type":23,"value":168},{"type":17,"tag":55,"props":906,"children":908},{"className":907},[],[909],{"type":23,"value":174},{"type":23,"value":176},{"type":17,"tag":55,"props":912,"children":914},{"className":913},[],[915],{"type":23,"value":182},{"type":23,"value":168},{"type":17,"tag":55,"props":918,"children":920},{"className":919},[],[921],{"type":23,"value":189},{"type":23,"value":191},{"type":17,"tag":55,"props":924,"children":926},{"className":925},[],[927],{"type":23,"value":197},{"type":23,"value":199},{"type":17,"tag":119,"props":930,"children":931},{},[932],{"type":23,"value":204},{"type":17,"tag":87,"props":934,"children":935},{"id":207},[936],{"type":23,"value":210},{"type":17,"tag":212,"props":938,"children":939},{"className":214,"code":215,"language":216,"meta":7,"style":7},[940],{"type":17,"tag":55,"props":941,"children":942},{"__ignoreMap":7},[943,950,957,964,971,978],{"type":17,"tag":222,"props":944,"children":945},{"class":224,"line":225},[946],{"type":17,"tag":222,"props":947,"children":948},{"style":229},[949],{"type":23,"value":232},{"type":17,"tag":222,"props":951,"children":952},{"class":224,"line":235},[953],{"type":17,"tag":222,"props":954,"children":955},{"style":229},[956],{"type":23,"value":241},{"type":17,"tag":222,"props":958,"children":959},{"class":224,"line":244},[960],{"type":17,"tag":222,"props":961,"children":962},{"style":229},[963],{"type":23,"value":250},{"type":17,"tag":222,"props":965,"children":966},{"class":224,"line":253},[967],{"type":17,"tag":222,"props":968,"children":969},{"style":229},[970],{"type":23,"value":259},{"type":17,"tag":222,"props":972,"children":973},{"class":224,"line":262},[974],{"type":17,"tag":222,"props":975,"children":976},{"style":229},[977],{"type":23,"value":268},{"type":17,"tag":222,"props":979,"children":980},{"class":224,"line":271},[981],{"type":17,"tag":222,"props":982,"children":983},{"style":229},[984],{"type":23,"value":277},{"type":17,"tag":212,"props":986,"children":987},{"className":214,"code":280,"language":216,"meta":7,"style":7},[988],{"type":17,"tag":55,"props":989,"children":990},{"__ignoreMap":7},[991,998,1005,1012],{"type":17,"tag":222,"props":992,"children":993},{"class":224,"line":225},[994],{"type":17,"tag":222,"props":995,"children":996},{"style":229},[997],{"type":23,"value":232},{"type":17,"tag":222,"props":999,"children":1000},{"class":224,"line":235},[1001],{"type":17,"tag":222,"props":1002,"children":1003},{"style":229},[1004],{"type":23,"value":299},{"type":17,"tag":222,"props":1006,"children":1007},{"class":224,"line":244},[1008],{"type":17,"tag":222,"props":1009,"children":1010},{"style":229},[1011],{"type":23,"value":307},{"type":17,"tag":222,"props":1013,"children":1014},{"class":224,"line":253},[1015],{"type":17,"tag":222,"props":1016,"children":1017},{"style":229},[1018],{"type":23,"value":277},{"type":17,"tag":25,"props":1020,"children":1021},{},[1022,1027,1028,1033,1034,1039,1040,1045,1046,1051,1052,1057,1058,1063],{"type":17,"tag":55,"props":1023,"children":1025},{"className":1024},[],[1026],{"type":23,"value":323},{"type":23,"value":325},{"type":17,"tag":55,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":23,"value":331},{"type":23,"value":333},{"type":17,"tag":55,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":23,"value":339},{"type":23,"value":341},{"type":17,"tag":55,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":23,"value":347},{"type":23,"value":349},{"type":17,"tag":55,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":23,"value":355},{"type":23,"value":357},{"type":17,"tag":55,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":23,"value":363},{"type":23,"value":168},{"type":17,"tag":55,"props":1059,"children":1061},{"className":1060},[],[1062],{"type":23,"value":370},{"type":23,"value":372},{"type":17,"tag":25,"props":1065,"children":1066},{},[1067,1068,1073,1074,1079,1080,1085,1086,1091,1092,1097,1098,1103,1104,1109,1110,1115,1116,1121,1122,1127,1128,1133,1134,1139],{"type":23,"value":377},{"type":17,"tag":55,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":23,"value":383},{"type":23,"value":385},{"type":17,"tag":55,"props":1075,"children":1077},{"className":1076},[],[1078],{"type":23,"value":391},{"type":23,"value":393},{"type":17,"tag":55,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":23,"value":399},{"type":23,"value":62},{"type":17,"tag":55,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":23,"value":406},{"type":23,"value":62},{"type":17,"tag":55,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":23,"value":413},{"type":23,"value":62},{"type":17,"tag":55,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":23,"value":420},{"type":23,"value":62},{"type":17,"tag":55,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":23,"value":427},{"type":23,"value":62},{"type":17,"tag":55,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":23,"value":434},{"type":23,"value":62},{"type":17,"tag":55,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":23,"value":441},{"type":23,"value":443},{"type":17,"tag":55,"props":1123,"children":1125},{"className":1124},[],[1126],{"type":23,"value":449},{"type":23,"value":451},{"type":17,"tag":55,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":23,"value":457},{"type":23,"value":459},{"type":17,"tag":55,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":23,"value":465},{"type":23,"value":467},{"type":17,"tag":469,"props":1141,"children":1142},{},[1143],{"type":17,"tag":25,"props":1144,"children":1145},{},[1146,1150,1151,1155,1156,1161,1162,1167,1168,1173,1174,1178,1179,1184,1185,1190,1191,1196,1197,1202,1203,1208,1209,1213],{"type":17,"tag":222,"props":1147,"children":1148},{},[1149],{"type":23,"value":479},{"type":23,"value":481},{"type":17,"tag":40,"props":1152,"children":1153},{},[1154],{"type":23,"value":486},{"type":23,"value":488},{"type":17,"tag":55,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":23,"value":494},{"type":23,"value":496},{"type":17,"tag":55,"props":1163,"children":1165},{"className":1164},[],[1166],{"type":23,"value":502},{"type":23,"value":504},{"type":17,"tag":55,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":23,"value":339},{"type":23,"value":511},{"type":17,"tag":40,"props":1175,"children":1176},{},[1177],{"type":23,"value":516},{"type":23,"value":518},{"type":17,"tag":55,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":23,"value":524},{"type":23,"value":526},{"type":17,"tag":55,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":23,"value":532},{"type":23,"value":534},{"type":17,"tag":55,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":23,"value":540},{"type":23,"value":542},{"type":17,"tag":55,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":23,"value":548},{"type":23,"value":550},{"type":17,"tag":55,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":23,"value":556},{"type":23,"value":558},{"type":17,"tag":40,"props":1210,"children":1211},{},[1212],{"type":23,"value":563},{"type":23,"value":565},{"type":17,"tag":25,"props":1215,"children":1216},{},[1217,1218,1223,1224,1229,1230,1235,1236,1241],{"type":23,"value":570},{"type":17,"tag":55,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":23,"value":576},{"type":23,"value":168},{"type":17,"tag":55,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":23,"value":583},{"type":23,"value":168},{"type":17,"tag":55,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":23,"value":590},{"type":23,"value":168},{"type":17,"tag":55,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":23,"value":597},{"type":23,"value":599},{"type":17,"tag":87,"props":1243,"children":1244},{"id":602},[1245],{"type":23,"value":605},{"type":17,"tag":25,"props":1247,"children":1248},{},[1249,1250,1255,1256,1260,1261,1266],{"type":23,"value":610},{"type":17,"tag":55,"props":1251,"children":1253},{"className":1252},[],[1254],{"type":23,"value":616},{"type":23,"value":618},{"type":17,"tag":40,"props":1257,"children":1258},{},[1259],{"type":23,"value":623},{"type":23,"value":625},{"type":17,"tag":55,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":23,"value":631},{"type":23,"value":633},{"type":17,"tag":115,"props":1268,"children":1269},{},[1270,1304,1331],{"type":17,"tag":119,"props":1271,"children":1272},{},[1273,1274,1279,1280,1285,1286,1291,1292,1297,1298,1303],{"type":23,"value":641},{"type":17,"tag":55,"props":1275,"children":1277},{"className":1276},[],[1278],{"type":23,"value":647},{"type":23,"value":649},{"type":17,"tag":55,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":23,"value":655},{"type":23,"value":657},{"type":17,"tag":55,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":23,"value":663},{"type":23,"value":665},{"type":17,"tag":55,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":23,"value":655},{"type":23,"value":393},{"type":17,"tag":55,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":23,"value":677},{"type":23,"value":679},{"type":17,"tag":119,"props":1305,"children":1306},{},[1307,1308,1313,1314,1319,1320,1325,1326,1330],{"type":23,"value":684},{"type":17,"tag":55,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":23,"value":690},{"type":23,"value":692},{"type":17,"tag":55,"props":1315,"children":1317},{"className":1316},[],[1318],{"type":23,"value":698},{"type":23,"value":700},{"type":17,"tag":55,"props":1321,"children":1323},{"className":1322},[],[1324],{"type":23,"value":706},{"type":23,"value":708},{"type":17,"tag":40,"props":1327,"children":1328},{},[1329],{"type":23,"value":713},{"type":23,"value":715},{"type":17,"tag":119,"props":1332,"children":1333},{},[1334,1339],{"type":17,"tag":55,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":23,"value":724},{"type":23,"value":726},{"type":17,"tag":87,"props":1341,"children":1342},{"id":729},[1343],{"type":23,"value":732},{"type":17,"tag":25,"props":1345,"children":1346},{},[1347],{"type":23,"value":737},{"type":17,"tag":115,"props":1349,"children":1350},{},[1351,1365],{"type":17,"tag":119,"props":1352,"children":1353},{},[1354,1358,1359,1364],{"type":17,"tag":40,"props":1355,"children":1356},{},[1357],{"type":23,"value":748},{"type":23,"value":750},{"type":17,"tag":55,"props":1360,"children":1362},{"className":1361},[],[1363],{"type":23,"value":756},{"type":23,"value":565},{"type":17,"tag":119,"props":1366,"children":1367},{},[1368,1372,1373,1378],{"type":17,"tag":40,"props":1369,"children":1370},{},[1371],{"type":23,"value":765},{"type":23,"value":767},{"type":17,"tag":31,"props":1374,"children":1376},{"href":770,"rel":1375},[80],[1377],{"type":23,"value":774},{"type":23,"value":776},{"type":17,"tag":778,"props":1380,"children":1381},{},[1382],{"type":23,"value":782},{"title":7,"searchDepth":235,"depth":235,"links":1384},[1385,1386,1387,1388],{"id":89,"depth":235,"text":92},{"id":207,"depth":235,"text":210},{"id":602,"depth":235,"text":605},{"id":729,"depth":235,"text":732},1788893805829]