CLI-Anything: biến app bất kỳ thành CLI cho agent
CLI-Anything của HKUDS: dùng CLI-Hub và meta skill để agent tự cài CLI, và plugin bảy phase tạo CLI cho GIMP, LibreOffice, Blender.
✓ Đã duyệt độc lập · cập nhật 25/10/2026 · 11 min
1. CLI-Anything là gì và ai làm ra nó
AICodeKing chào người xem rồi giới thiệu chủ đề hôm nay: một project tên là CLI-Anything. Project này đến từ HKUDS, tức Data Intelligence Lab của University of Hong Kong. Theo anh (video đăng ngày 25/10/2026), đây cũng là lab đã làm ra LightRAG và một vài project agent phổ biến khác.
Ý tưởng rất đơn giản. Phần lớn phần mềm được làm ra cho con người dùng: nó có nút bấm, menu và cửa sổ. Theo AICodeKing (video đăng ngày 25/10/2026), AI agent không giỏi những thứ đó; chúng giỏi làm việc với text. Vì vậy CLI-Anything lấy một phần mềm và cho nó một command line interface mà agent dùng được.
Theo cách anh mô tả trong video đăng ngày 25/10/2026, việc này chỉ cần một lệnh. Bạn đưa vào source code của một app như GIMP hay Blender, coding agent của bạn đọc code đó và dựng một CLI đầy đủ cho nó. Agent cũng viết luôn test, tài liệu và một skill file để các agent khác biết cách dùng CLI.

/cli-anything nhận source code (ví dụ GIMP, Blender), giao cho coding agent, và đầu ra là một CLI hoàn chỉnh.Theo AICodeKing (video đăng ngày 25/10/2026), repo lúc đó có hơn 54.000 sao, dùng giấy phép Apache 2.0 và hoàn toàn mã nguồn mở, nên anh gọi đây là một project khá lớn.
2. Ba cách cho agent dùng app desktop, và vì sao chọn CLI
Tiếp theo anh giải thích vì sao CLI là interface đúng cho bài toán này. Theo AICodeKing (video đăng ngày 25/10/2026), lúc này có ba cách phổ biến để cho một agent dùng một app desktop.
Cách thứ nhất là GUI automation: agent chụp màn hình và click vào các pixel. Theo anh (video đăng ngày 25/10/2026), cách này chậm và hỏng mỗi khi giao diện thay đổi. Cách thứ hai là dùng API, nhưng theo anh nhiều app không có API, hoặc API chỉ phủ một phần nhỏ của app. Cách thứ ba là viết lại: ai đó dựng một bản sao nhỏ của app bằng Python, nhưng theo anh bản sao đó thiếu phần lớn tính năng.
Theo AICodeKing (video đăng ngày 25/10/2026), CLI giải quyết được các vấn đề này. Agent vốn đã biết dùng terminal. Một CLI là text vào, text ra. Mỗi lệnh có một trang help, nên agent tự khám phá được nó làm được gì. Và ở project này, mỗi lệnh còn có cờ --json; với cờ đó, đầu ra là JSON sạch mà agent đọc được mà không phải đoán.

layer new --json là một object JSON (id, name "Background", type "solid", width 1920, height 1080, opacity, blend_mode, offset, filters, fill). Bên phải ghi "reads it without guessing" và "no screen parsing".3. Gọi phần mềm thật, và hai cách dùng project
Điểm quan trọng thứ hai, theo AICodeKing (video đăng ngày 25/10/2026), là CLI-Anything không thay thế phần mềm thật mà gọi chính phần mềm đó. Ví dụ, CLI của LibreOffice tạo ra một file PDF thật thông qua LibreOffice ở headless mode. CLI của Blender render bằng Blender thật.
Project gọi cách làm này là authentic software integration. Theo anh (video đăng ngày 25/10/2026), nhờ vậy bạn có toàn bộ sức mạnh của app, chứ không phải một phiên bản đồ chơi của nó.
Có hai cách dùng project này. Cách thứ nhất là dùng các CLI mà người khác đã làm sẵn. Cách thứ hai là tự build một CLI mới cho phần mềm của riêng bạn. AICodeKing nói anh sẽ chỉ cả hai.
4. CLI-Hub: cài đặt và xem registry
Anh bắt đầu với cách thứ nhất, là CLI-Hub. Theo AICodeKing (video đăng ngày 25/10/2026), CLI-Hub là một package manager cho các CLI này. Để cài, mở terminal và chạy lệnh dưới đây. Theo anh (video đăng ngày 25/10/2026), bạn cần Python 3.10 trở lên.
pip install cli-anything-hub
Khi cài xong, chạy cli-hub list. Lệnh này cho bạn thấy mọi CLI trong registry. Theo anh (video đăng ngày 25/10/2026), có rất nhiều: anh đọc ra GIMP, Blender, Inkscape, Audacity, OBS Studio, LibreOffice, Kdenlive, Shotcut, Draw.io, Zoom, ComfyUI, FreeCAD, QGIS, Obsidian, Zotero và nhiều cái khác nữa. Slide lúc đó ghi "a few of the 103 CLIs in the registry".

cli-hub list trong video đăng ngày 25/10/2026: các CLI xếp theo nhóm (SEARCH, STORAGE, STREAMING, TESTING, VIDEO, WEB...), dòng cuối ghi "103 CLIs available (79 harness, 24 public), 0 installed" cùng danh sách category.5. Tìm, cài, xem thông tin và khởi động một CLI
Nếu bạn muốn tìm thứ gì cụ thể, chạy cli-hub search rồi gõ một từ khoá. Ví dụ với cli-hub search image, trong demo của video đăng ngày 25/10/2026 chỉ còn hiện các công cụ về ảnh.
Theo demo trong video đăng ngày 25/10/2026, để cài một CLI, chạy cli-hub install gimp. Sau đó chạy cli-hub info gimp để xem chi tiết, và để khởi động nó thì chạy cli-hub launch gimp.
cli-hub search image cli-hub install gimp cli-hub info gimp cli-hub launch gimp

cli-hub install gimp báo "Installed GIMP (cli-anything-gimp)"; cli-hub info gimp ghi category image, Requires "gimp (apt install gimp)", entry point cli-anything-gimp và đường dẫn SKILL.md; cli-hub launch gimp mở một khung chào kèm lệnh npx skills add cho skill tương ứng, rồi quit để thoát.Có một điều cần biết ở đây. Theo AICodeKing (video đăng ngày 25/10/2026), các CLI này gọi app thật, nên nếu bạn cài GIMP CLI thì máy bạn cũng phải có GIMP. Blender, LibreOffice và các app khác cũng vậy.
6. Meta skill của CLI-Hub cho agent
Giờ giao việc này cho agent. Theo AICodeKing (video đăng ngày 25/10/2026), project có một meta skill cho CLI-Hub. Anh giải thích meta skill là một skill dạy agent cách tìm và cài các công cụ khác.
Để thêm nó, chạy npx skills add HKUDS/CLI-Anything, rồi --skill cli-hub-meta-skill, rồi -g và -y. Theo anh, cờ -g cài ở mức global, còn cờ -y bỏ qua các câu hỏi. Lệnh đầy đủ như README ghi (đọc ngày 25/10/2026):
npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill -g -y
Theo AICodeKing (video đăng ngày 25/10/2026), skill này chạy được với Claude Code, Codex, OpenClaw, Nanobot, Antigravity và các agent khác có hỗ trợ skill. Sau đó bạn có thể đưa agent một prompt như sau, rồi viết task của bạn ngay sau đó:
Find appropriate CLI software in CLI-Hub and complete the task: ...
7. Agent tự tìm Draw.io CLI để vẽ diagram
Ví dụ, AICodeKing yêu cầu agent vẽ một architecture diagram đơn giản. Trong demo của video đăng ngày 25/10/2026, agent tìm trên Hub, thấy Draw.io CLI và cài nó. Sau đó agent đọc skill file của CLI đó và bắt đầu chạy lệnh: thêm các hình, nối chúng lại, và cuối cùng xuất ra một file PNG.
Anh nói rằng anh không hề bảo cho agent dùng công cụ nào. Agent tự tìm ra công cụ (demo trong video đăng ngày 25/10/2026), và anh thấy điều này khá hay.
![Slide năm bước: cli-hub search diagram, drawio [diagrams], cli-hub install drawio, reads its SKILL.md, shape add · connect add](../photos/0XQele28q0w-0403.jpg)
cli-hub search diagram, tìm thấy drawio [diagrams], cli-hub install drawio, đọc SKILL.md của nó, rồi chạy shape add và connect add.Sau đó anh chuyển sang phần chính là CLI generator. Theo AICodeKing (video đăng ngày 25/10/2026), đây là thứ bạn dùng khi Hub không có phần mềm bạn cần, hoặc khi bạn có một công cụ nội bộ của riêng mình và muốn agent dùng được nó.
8. CLI generator: cài plugin trong Claude Code
AICodeKing làm demo trong Claude Code, nhưng theo anh (video đăng ngày 25/10/2026) generator cũng chạy được trong Cursor, Codex, OpenCode, Pi, Hermes, GitHub Copilot CLI và vài công cụ khác.
Đầu tiên, bạn cần thêm marketplace. Trong Claude Code, chạy lệnh thứ nhất bên dưới. Sau đó chạy lệnh thứ hai để cài plugin. Theo AICodeKing (video đăng ngày 25/10/2026), thế là xong, plugin đã hoạt động.
/plugin marketplace add HKUDS/CLI-Anything /plugin install cli-anything

/plugin marketplace add HKUDS/CLI-Anything, Step 2 cài bằng /plugin install cli-anything, kèm câu "That's it. The plugin is now available in your Claude Code session." và một ghi chú cho người dùng Windows.Nếu bạn dùng Windows, theo anh (video đăng ngày 25/10/2026) bạn cần Git for Windows hoặc WSL, vì Claude Code chạy shell command qua Bash và plugin cần đến nó.
Theo AICodeKing (video đăng ngày 25/10/2026), để build một CLI, bạn chạy /cli-anything rồi đưa vào một đường dẫn hoặc một GitHub URL. Ví dụ /cli-anything ./gimp, hoặc bạn có thể đưa URL repo GitHub của Blender. Trên màn hình, README ghi lệnh này sẽ "Generate a complete CLI for GIMP (all 7 phases)", và một nhãn bổ sung ghi "or a repo URL: github.com/blender/blender".
/cli-anything ./gimp
9. Bảy phase của pipeline
Sau đó plugin chạy một pipeline gồm bảy phase. AICodeKing giải thích từng phase theo video đăng ngày 25/10/2026:
- Phase 1, Analyze. Theo video đăng ngày 25/10/2026, agent đọc source code, tìm các action mà GUI làm, và nối mỗi action với đoạn code thực hiện nó.
- Phase 2, Design. Theo video đăng ngày 25/10/2026, agent lên kế hoạch cho các command group, state model và các định dạng đầu ra.
- Phase 3, Implement. Theo video đăng ngày 25/10/2026, agent viết CLI bằng thư viện Click trong Python. Mỗi CLI có REPL mode, đầu ra JSON, và undo/redo.
- Phase 4, Plan tests. Theo video đăng ngày 25/10/2026, agent viết một file tên là TEST.md với kế hoạch cho unit test và end-to-end test.
- Phase 5, Write tests. Theo video đăng ngày 25/10/2026, agent viết test theo kế hoạch đó.
- Phase 6, Document. Theo video đăng ngày 25/10/2026, agent chạy test và ghi kết quả ngược lại vào TEST.md. Ở phase này nó cũng tạo một file SKILL.md; các agent khác dùng file này để khám phá CLI.
- Phase 7, Publish. Theo video đăng ngày 25/10/2026, agent tạo một file setup.py và cài CLI vào PATH của bạn.

Theo AICodeKing (video đăng ngày 25/10/2026), việc này mất một lúc, nên anh chờ một chút. Slide lúc đó ghi "this takes a while", rồi thanh tiến trình chuyển sang "done".
10. Dùng CLI GIMP vừa được tạo
Giờ dùng CLI mà agent vừa làm ra (demo trong video đăng ngày 25/10/2026). Anh nói vào thư mục agent harness và chạy pip install -e; README ghi lệnh này là cd gimp/agent-harness && pip install -e . (đọc ngày 25/10/2026). Theo AICodeKing, sau đó bạn gọi được nó từ bất kỳ đâu.
Theo AICodeKing (video đăng ngày 25/10/2026), mọi CLI có cùng một mẫu tên: cli-anything- rồi đến tên phần mềm. Ở đây là cli-anything-gimp. Chạy cli-anything-gimp --help, bạn thấy mọi command group.
Tiếp theo anh tạo một project (demo trong video đăng ngày 25/10/2026). Trên màn hình, lệnh anh chạy là tạo project mới với chiều rộng 1920, chiều cao 1080 và file đầu ra là poster.json:
cli-anything-gimp project new --width 1920 --height 1080 -o poster.json

Sau đó anh thêm một layer với cờ --json. Trong demo của video đăng ngày 25/10/2026, đầu ra là JSON sạch, và AICodeKing nói đây chính là thứ agent đọc.
11. LibreOffice: tạo một PDF thật ở headless mode
Theo AICodeKing (video đăng ngày 25/10/2026), README cũng có một ví dụ LibreOffice hay, nên anh thử luôn. Đầu tiên anh tạo một Writer document mới. Rồi anh thêm một heading ghi "Q1 Report". Rồi anh thêm một bảng bốn hàng ba cột. Cuối cùng anh chạy lệnh export render để tạo PDF. Các lệnh như README ghi (README đọc ngày 25/10/2026, cũng là phần hiện trên màn hình):
# Create a new Writer document cli-anything-libreoffice document new -o report.json --type writer # Add content cli-anything-libreoffice --project report.json writer add-heading -t "Q1 Report" --level 1 cli-anything-libreoffice --project report.json writer add-table --rows 4 --cols 3 # Export to real PDF via LibreOffice headless cli-anything-libreoffice --project report.json export render output.pdf -p pdf --overwrite # JSON mode for agent consumption cli-anything-libreoffice --json document info --project report.json

cli-anything-libreoffice kèm kết quả mẫu, ví dụ "Added 4×3 table", "Exported: output.pdf (42,831 bytes) via libreoffice-headless", và object JSON của document info (name "Q1 Report", type writer, pages 1, elements 2).Và đây là file PDF. Theo AICodeKing (demo trong video đăng ngày 25/10/2026), đó là một PDF thật, do LibreOffice tạo ra ở headless mode.
12. Blender và REPL mode
Theo AICodeKing (video đăng ngày 25/10/2026), nếu bạn chạy một CLI mà không kèm lệnh nào, bạn vào REPL mode. Anh thử với Blender: chạy cli-anything-blender và nhận được một prompt tương tác.
Trong demo (video đăng ngày 25/10/2026), anh gõ scene new --name ProductShot, rồi thêm một cube mesh. Sau đó anh dùng render engine Cycles và chạy render; trên màn hình là render settings --engine CYCLES --samples 32 rồi render execute render.png. AICodeKing nói Blender render ảnh ở chế độ nền (background). Trên màn hình có nhãn "writes a bpy script for blender --background", và sau khi exit khỏi REPL, lệnh blender --background --python _render_script.py in ra "Render complete".
cli-anything-blender scene new --name ProductShot render settings --engine CYCLES --samples 32 render execute render.png

blender [ProductShot*], cài đặt CYCLES 32 samples ở 1920x1080 và dòng "Render complete" kèm "Blender 5.0.1"; bên phải là file render.png 1920 × 1080 hiển thị một khối lập phương xám.Prompt cũng hiện tên scene, và hiện một dấu sao khi có thay đổi chưa được lưu (slide ghi "scene name" và "unsaved changes" dưới blender [ProductShot*]). Theo AICodeKing (video đăng ngày 25/10/2026), nhờ vậy agent luôn biết trạng thái hiện tại.
13. Refine, test và validate
Theo AICodeKing (video đăng ngày 25/10/2026), lần chạy đầu tiên không phải lúc nào cũng phủ hết app. Để xử lý việc này có lệnh refine: chạy /cli-anything:refine rồi đường dẫn. Agent so sánh những gì phần mềm làm được với những gì CLI làm được, rồi thêm lệnh, test và tài liệu cho các chỗ còn thiếu.
Theo AICodeKing (video đăng ngày 25/10/2026), bạn cũng có thể đưa cho lệnh refine một trọng tâm. Ví dụ, bạn nói bạn muốn có thêm lệnh cho batch processing và filter. Slide ghi đây là ví dụ của chính README:
/cli-anything:refine ./gimp "I want more CLIs on image batch processing and filters"
Theo AICodeKing (video đăng ngày 25/10/2026), bạn có thể chạy refine nhiều lần; mỗi lần chạy bổ sung thêm vào CLI và không xoá phần đã làm trước đó. README cũng ghi mỗi lần refine là "incremental and non-destructive" (đọc ngày 25/10/2026).
Còn hai lệnh nữa. Theo anh (video đăng ngày 25/10/2026), lệnh test chạy các test và cập nhật TEST.md. Lệnh validate kiểm tra CLI theo các quy tắc của project.
14. HARNESS.md và cách các test kiểm tra kết quả
Các quy tắc đó nằm trong một file tên là HARNESS.md. AICodeKing gọi đây là playbook mà agent làm theo ở mọi phase, và theo anh (video đăng ngày 25/10/2026) nó có vài bài học hay.
Ví dụ, CLI phải dùng phần mềm thật; nó không được dùng Pillow thay cho GIMP. HARNESS.md ghi đúng điều này là một anti-pattern: "Building a Pillow-based image compositor to replace GIMP" (đọc ngày 25/10/2026). Một bài học khác anh nêu là exit code bằng 0 không chứng minh được việc export đã thành công. Vì vậy, theo anh (video đăng ngày 25/10/2026), các test kiểm tra file đầu ra thật: magic bytes, cấu trúc file, pixel, mức âm thanh và độ dài.
Theo AICodeKing (video đăng ngày 25/10/2026), số liệu test cũng tốt: README cho thấy hơn 2.400 test pass trên khoảng 30 harness. Bảng trên màn hình ghi tổng 2.464 passed.

Mỗi harness có unit test dùng dữ liệu giả và end-to-end test dùng phần mềm thật. Theo AICodeKing (video đăng ngày 25/10/2026), nếu phần mềm thật chưa được cài thì test sẽ fail chứ không skip; HARNESS.md cũng ghi "if the software isn't installed, tests fail, not skip" (đọc ngày 25/10/2026). Anh nói anh rất thích điểm này, vì một test bị skip có thể che giấu một CLI hỏng.
15. Các demo trong README
Theo AICodeKing (video đăng ngày 25/10/2026), README cũng có vài demo hay. Trong một demo, một agent dựng một xe tự hành Curiosity trong FreeCAD từng bước một, có live preview. README mô tả đây là một rover "Curiosity-inspired" mà agent lắp dần trong khi xuất preview FreeCAD thật (đọc ngày 25/10/2026).
Trong một demo khác, một agent dựng một chiếc drone khoa học viễn tưởng trong Blender. Cũng có một agent chơi Slay the Spire II thông qua CLI, và một agent điều khiển một phiên ArcGIS Pro đang chạy. Theo AICodeKing (video đăng ngày 25/10/2026), như vậy công cụ này không chỉ dành cho các công cụ văn phòng; slide lúc đó ghi "not only office tools".
16. Giới hạn
Giờ nói về giới hạn, vì theo AICodeKing (video đăng ngày 25/10/2026) project có vài giới hạn.
Thứ nhất, nó cần một model mạnh. README ghi rằng bạn cần một model frontier-class để có kết quả đáng tin cậy. AICodeKing đọc ra Claude Opus, Sonnet và GPT 5.4; trên màn hình, README ghi "Claude Opus 4.6, Claude Sonnet 4.6, GPT-5.4" (README trong video đăng ngày 25/10/2026). Theo anh, một model local nhỏ có thể tạo ra một CLI chưa đầy đủ hoặc chưa đúng. Vì vậy, theo AICodeKing (video đăng ngày 25/10/2026), chạy trên một codebase lớn không hề rẻ: quá trình generate có thể tốn rất nhiều token.

Thứ hai, theo anh (video đăng ngày 25/10/2026), nó làm tốt nhất khi bạn có source code. Nếu bạn chỉ có một binary đã compile, chất lượng và độ phủ sẽ thấp hơn nhiều.
Thứ ba, theo AICodeKing (video đăng ngày 25/10/2026), một lần chạy thường là chưa đủ. Nhiều khả năng bạn sẽ phải chạy refine vài lần trước khi CLI đủ tốt cho công việc thật.
AICodeKing nói thêm một điều (video đăng ngày 25/10/2026): một CLI do agent tạo ra vẫn là code do agent tạo ra. Vì vậy hãy đọc các test và kiểm tra các lệnh trước khi cho nó quyền truy cập vào các file quan trọng.
17. Nhận định của AICodeKing
Nhìn chung, AICodeKing cho rằng đây là một ý tưởng rất hay (video đăng ngày 25/10/2026). Theo anh, GUI agent dùng ảnh chụp màn hình thì chậm và tốn kém, còn một CLI có đầu ra JSON thì nhanh, rẻ và dễ dùng với agent. Và project này làm giúp bạn phần việc nhàm chán là tạo ra CLI đó.
Theo anh (video đăng ngày 25/10/2026), phần CLI-Hub cũng miễn phí và dễ dùng, kể cả khi bạn không bao giờ tự build một CLI. Nếu bạn dùng Claude Code hoặc Codex nhiều, anh nói anh sẽ cài meta skill của CLI-Hub trước, vì theo anh nó không tốn gì và agent của bạn có thêm một bộ công cụ mới lớn. Sau đó, nếu bạn có một app không có trong Hub, hãy thử generator với app đó.
Anh kết lại rằng nhìn chung project này khá hay, mời người xem để lại ý kiến trong phần bình luận, và hẹn gặp lại ở video sau.
Nguồn và liên kết 9 nguồn
- Tên gốc: CLI-Anything: Turn ANY App into a CLI for Claude Code & Codex (GIMP, Blender, LibreOffice & More!)
- Sự kiện: YouTube
- Video gốc: https://www.youtube.com/watch?v=0XQele28q0w youtube.com
- Kênh YouTube AICodeKing (AICodeKing): youtube.com/channel/UC0m81bQuthaQZmFbXEY9QSw youtube.com
- Repo CLI-Anything của HKUDS trên GitHub (giấy phép Apache-2.0, khoảng 57.000 sao khi đọc ngày 25/10/2026): github.com/HKUDS/CLI-Anything github.com
- HARNESS.md, phương pháp mà mọi lệnh của plugin tham chiếu (đọc ngày 25/10/2026: anti-pattern dùng Pillow thay GIMP, test fail chứ không skip khi thiếu phần mềm, kiểm tra magic bytes): cli-anything-plugin/HARNESS.md github.com
- Trang web CLI-Hub (đọc ngày 25/10/2026): hkuds.github.io/CLI-Anything hkuds.github.io
- Package cli-anything-hub trên PyPI (đọc ngày 25/10/2026): pypi.org/project/cli-anything-hub pypi.org
- LightRAG, một project khác của HKUDS mà AICodeKing nhắc tới: github.com/HKUDS/LightRAG github.com