[{"data":1,"prerenderedAt":1396},["ShallowReactive",2],{"search-navigation":3,"\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare":36,"\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare-surround":302},[4,8,12,16,20,24,28,32],{"title":5,"path":6,"stem":7},"Solving AI Agent Skills Fragmentation with npx skills","\u002Farticle\u002Fcentralised-the-skills-for-agents","en\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":9,"path":10,"stem":11},"Stop Exposing Your Vault: Secure NodeWarden with Cloudflare","\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","en\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":13,"path":14,"stem":15},"How to Self-Host a BitWarden Compatible Password Vault","\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","en\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":17,"path":18,"stem":19},"Google Antigravity 2 Hands-On: Setup & First Impressions","\u002Farticle\u002Fsetup-antigravity-2","en\u002Farticle\u002Fsetup-antigravity-2",{"title":21,"path":22,"stem":23},"NetSuite AI Connector Guide: MCP Setup & Use Cases","\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude","en\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":25,"path":26,"stem":27},"Testing Claude Fable 5: A Financial Analysis Review","\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis","en\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"title":29,"path":30,"stem":31},"Guide to Browser and Scheduler in Antigravity 2","\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2","en\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"title":33,"path":34,"stem":35},"Antigravity 2 in Action: AI Agents, Skills, and MCP","\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2","en\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"id":37,"title":38,"author":39,"body":40,"category":39,"date":285,"description":286,"extension":287,"image":288,"imageAlt":289,"isPublished":290,"meta":291,"minRead":297,"navigation":290,"path":298,"seo":299,"stem":300,"__hash__":301},"article\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare.md","Ngừng để lộ kho bảo mật của bạn: Bảo mật NodeWarden bằng Cloudflare",null,{"type":41,"value":42,"toc":279},"minimark",[43,47,50,67,72,79,82,87,90,94,126,130,133,200,204,207,272,276],[44,45,46],"p",{},"Ngay khi NodeWarden của bạn được hiển thị công khai trên Internet, nó sẽ bắt đầu thu hút hàng ngàn bot tự động liên tục quét tìm các lỗ hổng bảo mật 24\u002F7. Để bảo vệ dữ liệu nhạy cảm của mình, bạn cần thiết lập mức độ khóa bảo mật cao nhất có thể cho phiên bản (instance) NodeWarden của mình.",[44,48,49],{},"Để bảo mật NodeWarden, bạn có thể sử dụng một trong hai tính năng của Cloudflare:",[51,52,53,61],"ul",{},[54,55,56,60],"li",{},[57,58,59],"strong",{},"Cloudflare IP Access Rules (Quy tắc truy cập IP):"," Cho phép bạn chặn, yêu cầu xác thực (challenge) hoặc cho phép lưu lượng truy cập dựa trên các địa chỉ IP hoặc quốc gia cụ thể.",[54,62,63,66],{},[57,64,65],{},"Cloudflare Zero Trust (Khuyên dùng):"," Hoạt động như một cổng bảo mật giúp NodeWarden của bạn hoàn toàn tàng hình trước công chúng, chỉ cho phép những người dùng đã được ủy quyền đi qua.",[68,69,71],"h4",{"id":70},"tại-sao-chúng-tôi-khuyên-dùng-cloudflare-zero-trust","Tại sao chúng tôi khuyên dùng Cloudflare Zero Trust",[44,73,74,75,78],{},"Chúng tôi đặc biệt khuyên bạn nên sử dụng Cloudflare Zero Trust vì IP Access Rules bị ràng buộc với địa chỉ IP hoặc quốc gia. Điều này có nghĩa là bạn phải cập nhật thủ công các quy tắc của mình mỗi khi đi du lịch hoặc nếu bạn đang dùng IP động. Ngược lại, Cloudflare Zero Trust dựa trên ",[57,76,77],{},"danh tính"," của bạn chứ không phải vị trí địa lý—mang lại cho bạn quyền truy cập liền mạch và an toàn vào NodeWarden.",[80,81],"hr",{},[83,84,86],"h2",{"id":85},"hướng-dẫn-cấu-hình","Hướng dẫn cấu hình",[44,88,89],{},"Hãy làm theo các bước sau để cấu hình Cloudflare Zero Trust cho NodeWarden.",[68,91,93],{"id":92},"giai-đoạn-1-bắt-đầu","Giai đoạn 1: Bắt đầu",[95,96,97,105,112,119],"ol",{},[54,98,99,100],{},"Trên bảng điều khiển (dashboard) Cloudflare của bạn, nhấp vào 'Zero Trust' từ menu bên trái.\n",[101,102],"img",{"alt":103,"src":104},"Thanh bên của bảng điều khiển Cloudflare hiển thị tùy chọn Zero Trust được chọn trong menu điều hướng.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-dashboard-zero-trust-sidebar.webp",[54,106,107,108],{},"Nhấp vào 'Access controls', sau đó nhấp vào 'Applications'.\n",[101,109],{"alt":110,"src":111},"Menu điều hướng Cloudflare Zero Trust với phần Kiểm soát truy cập được mở rộng.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-access-controls-menu.webp",[54,113,114,115],{},"Hệ thống có thể yêu cầu bạn chọn gói ('Choose a plan').\n",[101,116],{"alt":117,"src":118},"Màn hình thiết lập tài khoản Cloudflare Zero Trust yêu cầu người dùng chọn gói đăng ký.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-choose-plan-setup.webp",[54,120,121,122],{},"Nhấp vào nút 'Choose a plan' và chọn gói 'Zero Trust Free'.\n",[101,123],{"alt":124,"src":125},"Trang chi tiết gói Zero Trust Free trên Cloudflare, làm nổi bật nút Chọn gói.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-free-plan-selection.webp",[68,127,129],{"id":128},"giai-đoạn-2-bảo-mật-giao-diện-web-của-bạn","Giai đoạn 2: Bảo mật giao diện Web của bạn",[44,131,132],{},"Đầu tiên, chúng ta sẽ tạo một ứng dụng để bảo vệ bảng điều khiển web của NodeWarden.",[95,134,135,142,149,156,163,170,177,180,187,190],{},[54,136,137,138],{},"Nhấp vào 'Create new application' để tạo ứng dụng đầu tiên.\n",[101,139],{"alt":140,"src":141},"Bảng điều khiển ứng dụng Cloudflare Access có nút Tạo ứng dụng mới.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-create-new-application.webp",[54,143,144,145],{},"Chọn 'Self-hosted and private'.\n",[101,146],{"alt":147,"src":148},"Cửa sổ thêm ứng dụng trong Cloudflare Access với loại ứng dụng Tự lưu trữ và riêng tư được chọn.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-add-self-hosted-application.webp",[54,150,151,152],{},"Nhập tên miền (domain) của NodeWarden.\n",[101,153],{"alt":154,"src":155},"Màn hình cấu hình ứng dụng Cloudflare Access hiển thị tên máy chủ công khai được đặt thành warden.techvoyage.dev.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-public-hostname.webp",[54,157,158,159],{},"Nhấp vào 'Create new policy' để tạo một chính sách.\n",[101,160],{"alt":161,"src":162},"Trang chính sách Cloudflare Access hiển thị không có chính sách nào được thêm và nút để tạo chính sách mới.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.webp",[54,164,165,166],{},"Chọn 'Emails' và nhập một email vào mục 'Policy rules'.\n",[101,167],{"alt":168,"src":169},"Màn hình cấu hình quy tắc chính sách Cloudflare Access với địa chỉ email được chỉ định làm tiêu chí bao gồm.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.webp",[54,171,172,173],{},"Nhập tên và chọn 'Allow' trong mục 'Policy details'.\n",[101,174],{"alt":175,"src":176},"Màn hình chi tiết chính sách Cloudflare Access hiển thị tên chính sách NodeWarden-Web và hành động được đặt thành Cho phép.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-allow.webp",[54,178,179],{},"Nhấp 'Save Policy' để lưu chính sách.",[54,181,182,183],{},"Nhập tên và chọn '1 month' trong phần 'Details'.\n",[101,184],{"alt":185,"src":186},"Bản tóm tắt cấu hình cuối cùng cho ứng dụng Cloudflare Access có tên NodeWarden-Web với thời hạn phiên là một tháng.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-final-details.webp",[54,188,189],{},"Nhấp vào 'Create' để tạo ứng dụng.",[54,191,192,195,196],{},[57,193,194],{},"Kiểm tra:"," Mở tên miền trên trình duyệt web, bạn sẽ thấy 'Cloudflare Access' yêu cầu nhập email.\n",[101,197],{"alt":198,"src":199},"Bản xem trước màn hình đăng nhập Cloudflare Access cho NodeWarden-Web, yêu cầu nhập địa chỉ email.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-login-screen-preview.webp",[68,201,203],{"id":202},"giai-đoạn-3-cho-phép-đồng-bộ-hóa-client-bitwarden-bỏ-qua-api-api-bypass","Giai đoạn 3: Cho phép đồng bộ hóa Client BitWarden (Bỏ qua API \u002F API Bypass)",[44,205,206],{},"Các ứng dụng BitWarden trên máy tính và thiết bị di động không thể xử lý màn hình đăng nhập email của Cloudflare. Do đó, chúng ta cần tạo ứng dụng thứ hai cho phép lưu lượng truy cập bỏ qua (bypass) màn hình đăng nhập, dành riêng cho việc đồng bộ hóa API.",[95,208,209,220,236,241,248,255,258,265],{},[54,210,211,212,215,216,219],{},"Quay lại phần Applications và nhấp vào ",[57,213,214],{},"Create new application",", chọn lại ",[57,217,218],{},"Self-hosted and private",".",[54,221,222,223,227,228,231,232],{},"Nhập 'api\u002F",[224,225,226],"em",{},"', 'identity\u002F","', 'notifications\u002F",[224,229,230],{},"' và 'icons\u002F","' vào phần Destinations.\n",[101,233],{"alt":234,"src":235},"Cấu hình nhiều tên máy chủ công khai để bỏ qua API trong Cloudflare Access, bao gồm các đường dẫn api, identity, notifications và icons.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-bypass-destinations.webp",[54,237,238,239],{},"Nhấp vào 'Create new policy' để tạo chính sách.\n",[101,240],{"alt":161,"src":162},[54,242,243,244],{},"Chọn 'Everyone' trong mục 'Policy rules'.\n",[101,245],{"alt":246,"src":247},"Cấu hình quy tắc chính sách Cloudflare Access với Mọi người được chọn để cho phép truy cập rộng rãi vào các đường dẫn cụ thể.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-everyone.webp",[54,249,250,251],{},"Nhập tên và chọn 'Bypass' trong mục 'Policy details'.\n",[101,252],{"alt":253,"src":254},"Chi tiết chính sách Cloudflare Access cho NodeWarden-API với hành động được đặt thành Bỏ qua.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-bypass.webp",[54,256,257],{},"Nhấp 'Save Policy' để lưu lại.",[54,259,260,261],{},"Nhập tên và chọn '1 month' cho 'Session Duration'.\n",[101,262],{"alt":263,"src":264},"Màn hình cấu hình cuối cùng cho ứng dụng NodeWarden-API trong Cloudflare Access.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-application-final-details.webp",[54,266,267,268],{},"Bạn sẽ thấy có 2 ứng dụng đã được tạo thành công.\n",[101,269],{"alt":270,"src":271},"Bảng điều khiển ứng dụng Cloudflare Access hiển thị cả hai ứng dụng Web và API đã được tạo thành công.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-applications-list-final.webp",[83,273,275],{"id":274},"lời-kết","Lời kết",[44,277,278],{},"Hãy nhớ rằng Cloudflare chỉ là lớp khiên bảo vệ bên ngoài của bạn. Để duy trì một kho lưu trữ (vault) thực sự an toàn, hãy đảm bảo bạn vẫn đang sử dụng một mật khẩu chính (master password) đủ mạnh, sử dụng Xác thực hai yếu tố (2FA) và giữ cho tài khoản Cloudflare của bạn luôn được bảo mật.",{"title":280,"searchDepth":281,"depth":281,"links":282},"",2,[283,284],{"id":85,"depth":281,"text":86},{"id":274,"depth":281,"text":275},"2026-05-27","Ngay khi NodeWarden của bạn được hiển thị công khai trên Internet, nó sẽ bắt đầu thu hút hàng ngàn bot tự động liên tục quét tìm các lỗ hổng bảo mật 24\u002F7.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fhuong-dan-bao-mat-nodewarden-tich-hop-cloudflare.webp","Hình ảnh thu nhỏ cho hướng dẫn từng bước bảo mật kho lưu trữ NodeWarden bằng cách tích hợp Cloudflare, với hình ảnh két sắt kỹ thuật số và tủ máy chủ được bảo vệ.",true,{"schemaOrg":292,"robots":295,"sitemap":296},[293],{"@type":294,"headline":38,"description":286},"TechArticle","index, follow",{"lastmod":285},8,"\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":38,"description":286,"ogTitle":38,"ogDescription":286,"twitterTitle":38,"twitterDescription":286},"vi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","ANwPHG2X3YN4N5KzblULOTfXWVmJrMIqYgywBOjKPlk",[303,930],{"id":304,"title":305,"author":39,"body":306,"category":39,"date":916,"description":917,"extension":287,"image":918,"imageAlt":919,"isPublished":290,"meta":920,"minRead":925,"navigation":290,"path":926,"seo":927,"stem":928,"__hash__":929},"article\u002Fvi\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare.md","Cách tự host kho mật khẩu tương thích BitWarden",{"type":41,"value":307,"toc":904},[308,311,317,321,554,559,578,582,610,614,644,648,675,679,722,726,762,766,769,773,802,806,829,833,836,853,858,861,864,878,882,895,899],[44,309,310],{},"Mật khẩu là tài sản kỹ thuật số quan trọng nhất của bạn, và giữ an toàn cho chúng đồng nghĩa với việc bạn phải tự mình kiểm soát. Bằng cách tự host (self-host) trình quản lý mật khẩu của mình, bạn sẽ làm chủ hoàn toàn bảo mật của bản thân.",[44,312,313,316],{},[57,314,315],{},"BitWarden"," được đánh giá rộng rãi là một trong những giải pháp đáng tin cậy nhất trong lĩnh vực quản lý mật khẩu và mã nguồn của nó được phát hành theo giấy phép AGPL-3.0. Một máy chủ không chính thức tương thích với BitWarden là NodeWarden, được viết bằng Typescript và có thể được triển khai (deploy) miễn phí trên nền tảng Cloudflare.",[68,318,320],{"id":319},"so-sánh-tính-năng-với-máy-chủ-bitwarden-chính-thức","So sánh tính năng với Máy chủ BitWarden Chính thức",[322,323,324,383],"table",{},[325,326,327],"thead",{},[328,329,330,345,357,370],"tr",{},[331,332,333],"th",{},[57,334,335,338,340,341,343],{},[336,337],"br",{},[336,339],{},"Tính năng",[336,342],{},[336,344],{},[331,346,347],{},[57,348,349,351,315,353,355],{},[336,350],{},[336,352],{},[336,354],{},[336,356],{},[331,358,359],{},[57,360,361,363,365,366,368],{},[336,362],{},[336,364],{},"NodeWarden",[336,367],{},[336,369],{},[331,371,372],{},[57,373,374,376,378,379,381],{},[336,375],{},[336,377],{},"Ghi chú",[336,380],{},[336,382],{},[384,385,386,403,419,431,443,459,476,491,506,518,530,543],"tbody",{},[328,387,388,392,395,397],{},[389,390,391],"td",{},"Web Vault (Kho lưu trữ Web)",[389,393,394],{},"✅",[389,396,394],{},[389,398,399,402],{},[57,400,401],{},"Giao diện Web Vault nguyên bản","​",[328,404,405,412,414,416],{},[389,406,407,408],{},"Đồng bộ hóa đầy đủ ",[409,410,411],"code",{},"\u002Fapi\u002Fsync",[389,413,394],{},[389,415,394],{},[389,417,418],{},"Tối ưu hóa tính tương thích cho các client chính thức",[328,420,421,424,426,428],{},[389,422,423],{},"Upload \u002F tải xuống tệp đính kèm",[389,425,394],{},[389,427,394],{},[389,429,430],{},"Cloudflare R2 hoặc KV",[328,432,433,436,438,440],{},[389,434,435],{},"Send (Gửi)",[389,437,394],{},[389,439,394],{},[389,441,442],{},"Hỗ trợ Send cả dạng văn bản và tệp",[328,444,445,448,450,452],{},[389,446,447],{},"Nhập \u002F Xuất (Import\u002FExport)",[389,449,394],{},[389,451,394],{},[389,453,454,455,458],{},"Hỗ trợ nhập (import) JSON \u002F CSV \u002F ",[57,456,457],{},"ZIP kèm tệp đính kèm","​ của BitWarden",[328,460,461,466,469,471],{},[389,462,463,402],{},[57,464,465],{},"Trung tâm Sao lưu Đám mây",[389,467,468],{},"❌",[389,470,394],{},[389,472,473,402],{},[57,474,475],{},"Sao lưu định kỳ lên WebDAV \u002F S3",[328,477,478,481,484,486],{},[389,479,480],{},"Gợi ý mật khẩu (web)",[389,482,483],{},"⚠️ Hạn chế",[389,485,394],{},[389,487,488,402],{},[57,489,490],{},"Không yêu cầu email",[328,492,493,496,498,500],{},[389,494,495],{},"TOTP \u002F Steam TOTP",[389,497,394],{},[389,499,394],{},[389,501,502,503],{},"Bao gồm hỗ trợ ",[409,504,505],{},"steam:\u002F\u002F",[328,507,508,511,513,515],{},[389,509,510],{},"Nhiều người dùng (Multi-user)",[389,512,394],{},[389,514,394],{},[389,516,517],{},"Đăng ký theo hình thức thư mời",[328,519,520,523,525,527],{},[389,521,522],{},"Tổ chức \u002F Bộ sưu tập \u002F Phân quyền",[389,524,394],{},[389,526,468],{},[389,528,529],{},"Chưa được triển khai",[328,531,532,535,537,540],{},[389,533,534],{},"Đăng nhập 2FA",[389,536,394],{},[389,538,539],{},"⚠️ Một phần",[389,541,542],{},"Hiện tại chỉ hỗ trợ TOTP cấp người dùng",[328,544,545,548,550,552],{},[389,546,547],{},"SSO \u002F SCIM \u002F Danh bạ doanh nghiệp",[389,549,394],{},[389,551,468],{},[389,553,529],{},[555,556,558],"h3",{"id":557},"những-gì-chúng-ta-cần","Những gì chúng ta cần:",[95,560,561,566,572],{},[54,562,563],{},[57,564,565],{},"Một tài khoản GitHub",[54,567,568,571],{},[57,569,570],{},"Một tài khoản Cloudflare"," (Miễn phí) đã kích hoạt Cloudflare R2 Storage.",[54,573,574,577],{},[224,575,576],{},"Tùy chọn:"," Một tên miền tùy chỉnh (custom domain) được quản lý trong Cloudflare.",[555,579,581],{"id":580},"giai-đoạn-1-chuẩn-bị-code","Giai đoạn 1: Chuẩn bị Code",[95,583,584,603],{},[54,585,586,587,593,594,598,599],{},"Fork kho lưu trữ NodeWarden từ ",[588,589,590],"a",{"href":590,"rel":591},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fnodewarden",[592],"nofollow"," hoặc kho lưu trữ gốc ",[588,595,596],{"href":596,"rel":597},"https:\u002F\u002Fgithub.com\u002Fshuaiplus\u002Fnodewarden",[592]," trên GitHub.\n",[101,600],{"alt":601,"src":602},"Fork kho lưu trữ NodeWarden trên GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Ffork-nodewarden-repo.webp",[54,604,605,606],{},"Bật Workflow \"Sync Upstream\".\n",[101,607],{"alt":608,"src":609},"Bật quy trình Sync Upstream trong GitHub Actions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fenable-sync-upstream.webp",[555,611,613],{"id":612},"giai-đoạn-2-triển-khai-deploy-lên-cloudflare","Giai đoạn 2: Triển khai (Deploy) lên Cloudflare",[95,615,616,625,638],{},[54,617,618,619,621],{},"Tạo một ứng dụng Worker trong Cloudflare.",[336,620],{},[101,622],{"alt":623,"src":624},"Tạo ứng dụng Worker mới trong bảng điều khiển Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-cloudflare-worker.webp",[54,626,627,628,630,634],{},"Chọn 'Continue with GitHub' để deploy ứng dụng.",[336,629],{},[101,631],{"alt":632,"src":633},"Triển khai ứng dụng NodeWarden bằng cách kết nối với GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fdeploy-github-repo.webp",[101,635],{"alt":636,"src":637},"Tiến trình xây dựng và triển khai Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-deploy-status.webp",[54,639,640,641,219],{},"Chờ một vài phút để Cloudflare build và deploy ứng dụng của bạn. Nó sẽ cung cấp cho bạn một URL mặc định có đuôi ",[409,642,643],{},"worker.dev",[555,645,647],{"id":646},"tùy-chọn-thêm-tên-miền-tùy-chỉnh","(Tùy chọn) Thêm Tên miền Tùy chỉnh:",[51,649,650,656,662],{},[54,651,652,653,219],{},"Trong cài đặt Cloudflare Worker của bạn, hãy vào tab ",[57,654,655],{},"Settings",[54,657,658,659,219],{},"Nhấp vào ",[57,660,661],{},"+ Add",[54,663,664,665,667,671],{},"Nhập tên miền bạn muốn và làm theo hướng dẫn.",[336,666],{},[101,668],{"alt":669,"src":670},"Điều hướng đến cài đặt tên miền tùy chỉnh trong Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-settings-custom-domain.webp",[101,672],{"alt":673,"src":674},"Thêm tên miền tùy chỉnh vào Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-custom-domain.webp",[555,676,678],{"id":677},"giai-đoạn-3-bảo-mật-máy-chủ-của-bạn-khóa-bảo-mật-jwt","Giai đoạn 3: Bảo mật Máy chủ của bạn (Khóa bảo mật JWT)",[95,680,681,684,696,716],{},[54,682,683],{},"Mở trình duyệt web và nhập tên miền tùy chỉnh của bạn hoặc tên miền 'worker.dev' vừa được tạo.",[54,685,686,687,219,690,692],{},"Bạn sẽ nhận được thông báo '",[57,688,689],{},"JWT_SECRET is missing'",[336,691],{},[101,693],{"alt":694,"src":695},"Thông báo lỗi JWT_SECRET is missing trên máy chủ NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fjwt-secret-missing-error.webp",[54,697,698,699,701,702,705,706,708,712],{},"Sao chép secret key (khóa bí mật) được tạo ra và quay lại tab Settings trên NodeWarden Worker của bạn, sau đó nhấp vào nút '",[57,700,661],{},"' trong phần '",[57,703,704],{},"Variables and Secrets","'.",[336,707],{},[101,709],{"alt":710,"src":711},"Phần Biến và Bí mật trong cài đặt Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fworker-variables-secrets.webp",[101,713],{"alt":714,"src":715},"Thêm bí mật JWT đã tạo vào các biến Cloudflare Worker","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fadd-jwt-secret.webp",[54,717,718,719,705],{},"Dán chuỗi bí mật vừa tạo vào và nhấp vào nút '",[57,720,721],{},"Deploy \u002F Save",[555,723,725],{"id":724},"giai-đoạn-4-tạo-tài-khoản-admin-của-bạn","Giai đoạn 4: Tạo Tài khoản Admin của bạn",[95,727,728,737,750,759],{},[54,729,730,731,733],{},"Quay lại trình duyệt web và tải lại (refresh) trang, bạn sẽ thấy trang đăng nhập như sau.",[336,732],{},[101,734],{"alt":735,"src":736},"Trang đăng nhập máy chủ NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-login.webp",[54,738,739,740,743,744,746],{},"Nhấp vào '",[57,741,742],{},"Create Account","' để tạo tài khoản quản trị (admin).",[336,745],{},[101,747],{"alt":748,"src":749},"Nhấp vào nút Create Account trên trang đăng nhập NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcreate-account-button.webp",[54,751,752,753,755],{},"Đăng nhập vào bảng điều khiển (Dashboard) bằng tài khoản admin vừa được tạo.",[336,754],{},[101,756],{"alt":757,"src":758},"Tổng quan về bảng điều khiển quản trị NodeWarden","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fnodewarden-dashboard.webp",[54,760,761],{},"Bây giờ máy chủ của chúng ta đã được deploy và đang hoạt động. Chúng ta sẽ bắt đầu thiết lập các client BitWarden.",[555,763,765],{"id":764},"giai-đoạn-5-kết-nối-các-thiết-bị-của-bạn","Giai đoạn 5: Kết nối Các Thiết bị của bạn",[44,767,768],{},"Bạn có thể sử dụng các ứng dụng BitWarden chính thức trên tất cả thiết bị của mình.",[555,770,772],{"id":771},"tiện-ích-mở-rộng-trên-chrome","Tiện ích mở rộng trên Chrome",[95,774,775,778,781,790,799],{},[54,776,777],{},"Cài đặt tiện ích mở rộng BitWarden cho Chrome.",[54,779,780],{},"Mở tiện ích mở rộng lên.",[54,782,783,784,786],{},"Nhấp vào đường link bên cạnh chữ 'Accessing:' ở dưới cùng của cửa sổ popup.",[336,785],{},[101,787],{"alt":788,"src":789},"Chọn tùy chọn tự lưu trữ trong tiện ích mở rộng Bitwarden Chrome","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-self-hosted.webp",[54,791,792,793,795],{},"Nhập tên miền của máy chủ NodeWarden của bạn vào.",[336,794],{},[101,796],{"alt":797,"src":798},"Nhập URL máy chủ trong tiện ích mở rộng Bitwarden Chrome","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-extension-domain.webp",[54,800,801],{},"Lưu các cài đặt và đăng nhập bằng tài khoản của bạn.",[68,803,805],{"id":804},"ứng-dụng-ios","Ứng dụng iOS",[95,807,808,811,820],{},[54,809,810],{},"Cài đặt ứng dụng BitWarden từ App Store.",[54,812,813,814,816],{},"Mở ứng dụng và nhấp vào '' bên cạnh phần 'Logging in on:'.",[336,815],{},[101,817],{"alt":818,"src":819},"Truy cập cài đặt tự lưu trữ trong ứng dụng Bitwarden iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-self-hosted.webp",[54,821,822,823,825],{},"Nhập tên miền của máy chủ NodeWarden và nhấp vào nút '✓'.",[336,824],{},[101,826],{"alt":827,"src":828},"Cấu hình URL máy chủ trong ứng dụng Bitwarden iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fbitwarden-ios-domain.webp",[555,830,832],{"id":831},"các-client-khác","Các Client Khác",[44,834,835],{},"NodeWarden đã được thử nghiệm và xác nhận tương thích với các client BitWarden chính thức sau:",[51,837,838,841,844,847,850],{},[54,839,840],{},"✅ Windows desktop",[54,842,843],{},"✅ Ứng dụng di động Android\u002FiOS",[54,845,846],{},"✅ Tiện ích mở rộng trình duyệt",[54,848,849],{},"✅ Linux desktop",[54,851,852],{},"⚠️ macOS desktop (chưa xác minh hoàn toàn)",[854,855,857],"h1",{"id":856},"sao-lưu-kho-lưu-trữ-vault-backup","Sao lưu Kho lưu trữ (Vault Backup)",[44,859,860],{},"NodeWarden cho phép bạn sao lưu vault của mình vào một máy tính cục bộ hoặc lưu trữ từ xa (remote storage hỗ trợ S3 hoặc WebDAV).",[44,862,863],{},"Để tự động hóa sao lưu từ xa:",[51,865,866,869],{},[54,867,868],{},"Cấu hình thông tin lưu trữ từ xa ngay trong bảng điều khiển của NodeWarden.",[54,870,871,872,874],{},"Đảm bảo rằng Cron task đã được thiết lập trên cài đặt của Cloudflare Worker để tự động sao lưu từ xa.",[336,873],{},[101,875],{"alt":876,"src":877},"Cấu hình trình kích hoạt Cron để sao lưu kho tiền tự động trong Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-worker-cron.webp",[854,879,881],{"id":880},"lưu-ý-bảo-mật-cuối-cùng","Lưu ý Bảo mật Cuối cùng",[51,883,884,887,890],{},[54,885,886],{},"Bảo mật quyền truy cập vào tài khoản Cloudflare của bạn, nếu không dữ liệu có thể bị đánh cắp. Hãy kích hoạt Xác thực Hai Yếu tố (2FA) hoặc Passkey trên tài khoản Cloudflare của bạn ngay lập tức.",[54,888,889],{},"Hãy host NodeWarden trên một tài khoản Cloudflare chuyên dụng. Không chia sẻ tài nguyên với các ứng dụng web khác để giảm thiểu các rủi ro về mặt an ninh.",[54,891,892],{},[588,893,894],{"href":10},"Bảo mật NodeWarden với Cloudflare",[854,896,898],{"id":897},"tham-khảo","Tham khảo",[51,900,901],{},[54,902,903],{},"Hướng dẫn Bắt đầu NodeWarden Chính thức",{"title":280,"searchDepth":281,"depth":281,"links":905},[906,908,909,910,911,912,913,914,915],{"id":557,"depth":907,"text":558},3,{"id":580,"depth":907,"text":581},{"id":612,"depth":907,"text":613},{"id":646,"depth":907,"text":647},{"id":677,"depth":907,"text":678},{"id":724,"depth":907,"text":725},{"id":764,"depth":907,"text":765},{"id":771,"depth":907,"text":772},{"id":831,"depth":907,"text":832},"2026-05-25","Mật khẩu là tài sản kỹ thuật số quan trọng nhất của bạn, và giữ an toàn cho chúng đồng nghĩa với việc bạn phải tự mình kiểm soát.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf%20hosting%20NodeWarden%20at%20Cloudflare\u002Ftu-host-may-chu-bitwarden.webp","Thumbnail hướng dẫn tự host máy chủ tương thích BitWarden, hiển thị két sắt kỹ thuật số và tủ máy chủ bảo mật.",{"schemaOrg":921,"robots":295,"sitemap":924},[922],{"@type":294,"headline":923,"description":917},"Cách bảo mật mật khẩu trong kho lưu trữ riêng bằng cách tự host máy chủ tương thích BitWarden",{"lastmod":916},9,"\u002Fvi\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":923,"description":917,"ogTitle":923,"ogDescription":917,"twitterTitle":923,"twitterDescription":917},"vi\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","Sz_ZV4VEDrf2LiTjgg5PqoqIhvdoIdz5W_mMCwtqSLQ",{"id":931,"title":932,"author":39,"body":933,"category":39,"date":1382,"description":1383,"extension":287,"image":1384,"imageAlt":1385,"isPublished":290,"meta":1386,"minRead":1302,"navigation":290,"path":1392,"seo":1393,"stem":1394,"__hash__":1395},"article\u002Fvi\u002Farticle\u002Fcentralised-the-skills-for-agents.md","Giải quyết sự phân mảnh kỹ năng của Agent AI với npx skills",{"type":41,"value":934,"toc":1372},[935,946,949,972,989,993,1003,1020,1030,1037,1040,1073,1079,1090,1109,1119,1130,1134,1141,1162,1165,1173,1183,1190,1193,1213,1222,1226,1232,1316,1322,1326,1362,1368],[44,936,937,938,941,942,945],{},"Nếu bạn đang chạy nhiều Agent AI hoặc CLI trên máy tính của mình — cho dù đó là Hermes, Claude Code, Codex, Antigravity, Kimi hay các công cụ được hỗ trợ khác — bạn có thể đã gặp phải một vấn đề cực kỳ khó chịu: ",[57,939,940],{},"sự phân mảnh kỹ năng"," (skills fragmentation). Mỗi Agent hoặc CLI lại tự duy trì một thư mục ",[409,943,944],{},"skills"," riêng biệt, dẫn đến việc cài đặt trùng lặp, lệch phiên bản và làm tăng thêm gánh nặng quản lý.",[44,947,948],{},"Trong quá trình làm việc với các Agent AI, chúng tôi thường xuyên gặp phải những vấn đề sau:",[51,950,951,957,963],{},[54,952,953,956],{},[57,954,955],{},"Cài đặt trùng lặp",": Cài đặt một kỹ năng (skill) mới cho một Agent, rồi lại phải cài đặt lại liên tục cho các Agent khác.",[54,958,959,962],{},[57,960,961],{},"Lệch phiên bản"," (version drift): Tùy chỉnh hoặc sửa lỗi một kỹ năng cho một Agent, nhưng quên cập nhật cho những Agent còn lại, dẫn đến việc các Agent hoạt động không nhất quán.",[54,964,965,968,969,971],{},[57,966,967],{},"Khó khăn trong quản lý",": Phải lùng sục từng thư mục ",[409,970,944],{}," của mỗi Agent trên hệ thống chỉ để xem những kỹ năng nào thực sự đã được cài đặt.",[44,973,974,975,978,979,981,982,219],{},"CLI ",[409,976,977],{},"npx skills",", một CLI mã nguồn mở từ Vercel, giải quyết triệt để vấn đề này bằng cách giúp bạn quản lý duy nhất một thư mục ",[409,980,944],{}," tập trung và chia sẻ nó cho tất cả các Agent của mình. Bạn có thể tham khảo ",[588,983,986,987],{"href":984,"rel":985},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills",[592],"kho lưu trữ GitHub của ",[409,988,977],{},[83,990,992],{"id":991},"thư-mục-tập-trung","Thư mục tập trung",[44,994,995,996,998,999,1002],{},"Khái niệm này rất đơn giản: nếu chúng ta trỏ thư mục ",[409,997,944],{}," của mọi Agent về ",[57,1000,1001],{},"cùng một thư mục vật lý",", vấn đề phân mảnh sẽ biến mất hoàn toàn.",[44,1004,1005,1006,1008,1009,1012,1013,1016,1017,1019],{},"Khi bạn cài đặt một kỹ năng bằng CLI ",[409,1007,977],{},", kỹ năng đó sẽ được tải xuống thư mục tập trung trên máy của bạn (",[409,1010,1011],{},"~\u002F.agents\u002Fskills","). Sau đó, CLI sẽ tạo một ",[57,1014,1015],{},"symlink"," (liên kết tượng trưng, đóng vai trò như một con trỏ trực tiếp) từ thư mục ",[409,1018,944],{}," của từng Agent về lại thư mục tập trung đó.",[44,1021,1022,1023,1026,1027,1029],{},"Ví dụ, khi Claude Code tìm kiếm các kỹ năng trong ",[409,1024,1025],{},"~\u002F.claude\u002Fskills\u002F",", nó sẽ được tự động chuyển hướng một cách mượt mà đến ",[409,1028,1011],{},". Nếu bạn thực hiện một thay đổi nhỏ đối với một kỹ năng trong thư mục tập trung đó, mọi Agent sẽ ngay lập tức thấy bản cập nhật. Không cần sao chép thủ công, không cần tập lệnh đồng bộ hóa và không lãng phí dung lượng ổ đĩa.",[83,1031,1033,1034,1036],{"id":1032},"cài-đặt-npx-skills-và-thêm-kỹ-năng","Cài đặt ",[409,1035,977],{}," và Thêm Kỹ năng",[44,1038,1039],{},"Chạy lệnh sau để bắt đầu và thêm kỹ năng đầu tiên của chúng ta:",[1041,1042,1046],"pre",{"className":1043,"code":1044,"language":1045,"meta":280,"style":280},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx skills add https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill --skill excalidraw-diagram\n","bash",[409,1047,1048],{"__ignoreMap":280},[1049,1050,1053,1057,1061,1064,1067,1070],"span",{"class":1051,"line":1052},"line",1,[1049,1054,1056],{"class":1055},"sBMFI","npx",[1049,1058,1060],{"class":1059},"sfazB"," skills",[1049,1062,1063],{"class":1059}," add",[1049,1065,1066],{"class":1059}," https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[1049,1068,1069],{"class":1059}," --skill",[1049,1071,1072],{"class":1059}," excalidraw-diagram\n",[44,1074,1075],{},[101,1076],{"alt":1077,"src":1078},"Sử dụng lệnh npx skills add để cài đặt kỹ năng từ GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-add-command.webp",[44,1080,1081,1082,1085,1086],{},"CLI sẽ hỏi bạn muốn thiết lập tính năng này cho một dự án cụ thể hay trên toàn cục (globally). Chúng tôi khuyên bạn nên chọn ",[57,1083,1084],{},"global"," để tất cả các Agent được hỗ trợ đều có thể truy cập:\n",[101,1087],{"alt":1088,"src":1089},"Chọn tùy chọn cài đặt toàn cục (global) trong npx skills CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-install-global-prompt.webp",[44,1091,1092,1093,1096,1097,1100,1101,1105],{},"Tiếp theo, hãy chắc chắn chọn ",[409,1094,1095],{},"Symlink"," để đảm bảo một ",[57,1098,1099],{},"nguồn dữ liệu chân lý duy nhất"," (single source of truth):\n",[101,1102],{"alt":1103,"src":1104},"Chọn phương thức symlink để đồng bộ hóa kỹ năng","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-symlink-option.webp",[101,1106],{"alt":1107,"src":1108},"Xác nhận cài đặt thành công và tạo symlink trong giao diện CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-installation-completed.webp",[44,1110,1111,1112,1114,1115],{},"Sau khi hoàn tất, chúng ta có thể kiểm tra xem kỹ năng đã được cài đặt trong thư mục tập trung tại ",[409,1113,1011],{}," chưa:\n",[101,1116],{"alt":1117,"src":1118},"Xác minh các kỹ năng đã cài đặt trong thư mục tập trung","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-directory-verification.webp",[44,1120,1121,1122,1125,1126],{},"Mở Kimi CLI (hoặc bất kỳ Agent nào khác), kỹ năng ",[409,1123,1124],{},"excalidraw-diagram"," đã sẵn sàng và hoạt động mượt mà!\n",[101,1127],{"alt":1128,"src":1129},"Kimi CLI hiển thị các kỹ năng tập trung đã tải và sẵn sàng sử dụng","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skills-integration.webp",[83,1131,1133],{"id":1132},"tạo-kỹ-năng-từ-con-số-0","Tạo Kỹ năng từ con số 0",[44,1135,1136,1137,1140],{},"Để xây dựng các kỹ năng của riêng bạn, bạn có thể sử dụng công cụ ",[409,1138,1139],{},"skill-creator"," của Anthropic. Hãy cài đặt nó như thế này:",[1041,1142,1144],{"className":1043,"code":1143,"language":1045,"meta":280,"style":280},"npx skills add https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills --skill skill-creator\n",[409,1145,1146],{"__ignoreMap":280},[1049,1147,1148,1150,1152,1154,1157,1159],{"class":1051,"line":1052},[1049,1149,1056],{"class":1055},[1049,1151,1060],{"class":1059},[1049,1153,1063],{"class":1059},[1049,1155,1156],{"class":1059}," https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills",[1049,1158,1069],{"class":1059},[1049,1160,1161],{"class":1059}," skill-creator\n",[44,1163,1164],{},"Bây giờ, trong Kimi hoặc bất kỳ Agent nào khác, nhập prompt sau:",[1041,1166,1171],{"className":1167,"code":1169,"language":1170},[1168],"language-text","Use the skill-creator to help me build a skill for creating a product landing page\n","text",[409,1172,1169],{"__ignoreMap":280},[44,1174,1175,1176,1178,1179],{},"Kimi hoặc Agent của bạn sẽ tự động nhận diện ",[409,1177,1139],{}," và hướng dẫn bạn từng bước thực hiện:\n",[101,1180],{"alt":1181,"src":1182},"Trình hướng dẫn skill-creator tương tác đang chạy trong Kimi CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skill-creator-setup.webp",[83,1184,1186,1187,1189],{"id":1185},"các-lệnh-npx-skills-hữu-ích-khác","Các lệnh ",[409,1188,977],{}," hữu ích khác",[44,1191,1192],{},"Dưới đây là một số lệnh tiện lợi khác:",[51,1194,1195,1201,1207],{},[54,1196,1197,1200],{},[409,1198,1199],{},"npx skills ls -g",": Liệt kê tất cả các kỹ năng được cài đặt toàn cục",[54,1202,1203,1206],{},[409,1204,1205],{},"npx skills update",": Cập nhật tất cả các kỹ năng bằng một lệnh duy nhất",[54,1208,1209,1212],{},[409,1210,1211],{},"npx skills remove",": Gỡ cài đặt\u002Fxóa một kỹ năng theo cách tương tác trực quan",[44,1214,1215,1216,1221],{},"Vui lòng tham khảo ",[588,1217,986,1219],{"href":984,"rel":1218},[592],[409,1220,977],{}," để biết thêm các lệnh và tài liệu tham khảo khác.",[83,1223,1225],{"id":1224},"nâng-cấp-hơn-nữa","Nâng cấp hơn nữa",[44,1227,1228,1229,1231],{},"Vì tất cả các kỹ năng hiện đã ở cùng một nơi (",[409,1230,1011],{},"), chúng ta có thể khởi tạo nó như một kho lưu trữ Git và đẩy nó lên GitHub hoặc GitLab.",[1041,1233,1235],{"className":1043,"code":1234,"language":1045,"meta":280,"style":280},"cd ~\u002F.agents\u002Fskills\ngit init\ngit add .\ngit commit -m \"Initial skills folder\"\ngit remote add origin https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\ngit push -u origin main\n",[409,1236,1237,1246,1254,1263,1284,1300],{"__ignoreMap":280},[1049,1238,1239,1243],{"class":1051,"line":1052},[1049,1240,1242],{"class":1241},"s2Zo4","cd",[1049,1244,1245],{"class":1059}," ~\u002F.agents\u002Fskills\n",[1049,1247,1248,1251],{"class":1051,"line":281},[1049,1249,1250],{"class":1055},"git",[1049,1252,1253],{"class":1059}," init\n",[1049,1255,1256,1258,1260],{"class":1051,"line":907},[1049,1257,1250],{"class":1055},[1049,1259,1063],{"class":1059},[1049,1261,1262],{"class":1059}," .\n",[1049,1264,1266,1268,1271,1274,1278,1281],{"class":1051,"line":1265},4,[1049,1267,1250],{"class":1055},[1049,1269,1270],{"class":1059}," commit",[1049,1272,1273],{"class":1059}," -m",[1049,1275,1277],{"class":1276},"sMK4o"," \"",[1049,1279,1280],{"class":1059},"Initial skills folder",[1049,1282,1283],{"class":1276},"\"\n",[1049,1285,1287,1289,1292,1294,1297],{"class":1051,"line":1286},5,[1049,1288,1250],{"class":1055},[1049,1290,1291],{"class":1059}," remote",[1049,1293,1063],{"class":1059},[1049,1295,1296],{"class":1059}," origin",[1049,1298,1299],{"class":1059}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\n",[1049,1301,1303,1305,1308,1311,1313],{"class":1051,"line":1302},6,[1049,1304,1250],{"class":1055},[1049,1306,1307],{"class":1059}," push",[1049,1309,1310],{"class":1059}," -u",[1049,1312,1296],{"class":1059},[1049,1314,1315],{"class":1059}," main\n",[44,1317,1318,1319,219],{},"Bây giờ, chúng ta đã có lịch sử hoàn chỉnh về tất cả các thay đổi kỹ năng, nghĩa là chúng ta có thể dễ dàng khôi phục (rollback) nếu một bản cập nhật làm hỏng thứ gì đó. Ngoài ra, chúng ta có thể đồng bộ hóa mượt mà các kỹ năng trên nhiều máy tính khác nhau (như máy tính xách tay và máy tính để bàn) bằng cách chạy lệnh nhanh ",[409,1320,1321],{},"git pull",[83,1323,1325],{"id":1324},"một-số-lưu-ý-quan-trọng-bảo-mật-rủi-ro","Một số lưu ý quan trọng (Bảo mật & Rủi ro)",[51,1327,1328,1334,1340,1350,1356],{},[54,1329,1330,1333],{},[57,1331,1332],{},"Khả năng tương thích khác nhau",": Không phải tất cả các nền tảng Agent đều hỗ trợ mọi tính năng (như custom hook hoặc các công cụ cụ thể được cho phép). Một kỹ năng có thể hoạt động tốt trên Agent này nhưng lại hạn chế trên Agent khác.",[54,1335,1336,1339],{},[57,1337,1338],{},"Tin tưởng nguồn",": Chỉ cài đặt các kỹ năng từ những nguồn đáng tin cậy.",[54,1341,1342,1345,1346,1349],{},[57,1343,1344],{},"Kiểm tra kỹ trước khi chạy",": Nếu bạn đang sử dụng kỹ năng tùy chỉnh hoặc của bên thứ ba, hãy xem xét kỹ các tệp (đặc biệt là trong thư mục ",[409,1347,1348],{},"scripts\u002F",") trước khi cho phép Agent của bạn chạy nó.",[54,1351,1352,1355],{},[57,1353,1354],{},"Quyền tối thiểu",": Cố gắng không cấp cho một kỹ năng nhiều quyền công cụ hoặc quyền truy cập hơn mức thực sự cần thiết để hoàn thành công việc.",[54,1357,1358,1361],{},[57,1359,1360],{},"Không bao giờ mã hóa cứng thông tin nhạy cảm",": Giữ các khóa API và bí mật của bạn tránh xa các tệp kỹ năng của bạn.",[44,1363,1364,1365,1367],{},"Thiết lập một thư mục tập trung đóng vai trò là \"nguồn dữ liệu chân lý duy nhất\" với ",[409,1366,977],{}," đã giúp đội ngũ của chúng tôi tiết kiệm thời gian và tránh việc làm trùng lặp không đáng có. Rất khuyến khích bạn thử trải nghiệm — năng lực AI sẽ mở rộng vượt trội khi hệ thống kỹ năng của bạn ngày càng phát triển!",[1369,1370,1371],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":280,"searchDepth":281,"depth":281,"links":1373},[1374,1375,1377,1378,1380,1381],{"id":991,"depth":281,"text":992},{"id":1032,"depth":281,"text":1376},"Cài đặt npx skills và Thêm Kỹ năng",{"id":1132,"depth":281,"text":1133},{"id":1185,"depth":281,"text":1379},"Các lệnh npx skills hữu ích khác",{"id":1224,"depth":281,"text":1225},{"id":1324,"depth":281,"text":1325},"2026-06-04","Bạn đang chạy nhiều Agent AI như Claude Code hay Kimi? Tìm hiểu cách giải quyết phân mảnh kỹ năng và quản lý một thư mục tập trung bằng npx skills CLI.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002FGi%E1%BA%A3i-quy%E1%BA%BFt-s%E1%BB%B1-ph%C3%A2n-m%E1%BA%A3nh-k%E1%BB%B9-n%C4%83ng-c%E1%BB%A7a-Agent-AI-v%E1%BB%9Bi-npx-skills.webp","Giải quyết sự phân mảnh kỹ năng của Agent AI với npx skills CLI",{"schemaOrg":1387,"robots":295,"sitemap":1390},[1388],{"@type":294,"headline":1389,"description":1383},"Cách giải quyết sự phân mảnh kỹ năng của Agent AI bằng npx skills",{"lastmod":1391},"2026-06-03","\u002Fvi\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":1389,"description":1383,"ogTitle":932,"ogDescription":1383,"twitterTitle":932,"twitterDescription":1383},"vi\u002Farticle\u002Fcentralised-the-skills-for-agents","OSP5xirx5WJAy5knsX8a7NTTW1ZmjY85mRZMmq9jXZU",1781435126936]