iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

30 天學會做一個 CLI:打造人類與 AI 都友善的現代 CLI 應用 系列

終端機一直是工程師日常開發與維運的核心介面。隨著 AI Agent 普及,純文字與標準輸入輸出的特點,更讓 CLI 成為 AI理解與操作系統的關鍵管道。現代的 CLI 需要同時兼顧兩種需求:對人類友善,操作直覺且回饋清楚;對 AI 友善,輸出穩定且易於解析。這套 30 篇教學以 Go為開發語言,帶你建立完整的設計思維做出人與AI 順暢使用的實用工具。

參賽天數 28 天 | 共 28 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

為什麼要學習開發CLI

在圖形介面早已成為主流的今天,開發者的工作依然離開不了終端機。不管是連進雲端伺服器管理系統服務、使用 git 控管程式碼,還是在 CI/CD 中串接 Shell...

2026-09-12 ‧ 由 evanchen 分享
DAY 2

命令進入 CLI 程式前:終端機、Shell 與 OS 的運作原理

動手建立專案前,我們先追蹤一行命令從按下 Enter 到程式被啟動前的完整流程,釐清終端機、Shell 與作業系統各自做了什麼準備,才把控制權交給 CLI 程式...

2026-09-13 ‧ 由 evanchen 分享
DAY 3

命令進入 CLI 程式後:Command、Arg 與 Flag 的拆解與設計

上一篇我們追蹤了一行命令在進到程式之前發生的事:終端機接收鍵盤輸入、Shell 解析文字並尋找執行檔、作業系統建立 Process 並將參數陣列傳給程式。當控制...

2026-09-14 ‧ 由 evanchen 分享
DAY 4

建立第一個 CLI 專案

上一篇拆解了 Command、Arg 與 Flag 的角色與設計,這篇我們將開始動手建立第一個 CLI 專案。本系列示範使用 VS Code 作為 IDE、Go...

2026-09-15 ‧ 由 evanchen 分享
DAY 5

建構 CLI 子命令與輸入參數

上一篇建好的 mytool 目前只有根命令,執行後只會印出說明文字。這篇我們要讓它開始處理具體工作:先建立第一個子命令、讓它接收並驗證位置參數,再進一步組織成多...

2026-09-16 ‧ 由 evanchen 分享
DAY 6

設計 CLI Flag 的型別、縮寫與作用範圍

上一篇把 Flag 定位成「對動作的修飾」,這篇接著 Cobra 裡實作縮寫及型別。延續 建構 CLI 子命令與輸入參數 裡的 mytool user crea...

2026-09-17 ‧ 由 evanchen 分享
DAY 7

管道與重導向 (Pipeline & Redirection)

上一篇我們為 mytool 加上了 Flag,執行後會把結果印在螢幕上。但在 Shell 中,mytool 和 ps、grep、git 一樣,都能透過標準的輸入...

2026-09-18 ‧ 由 evanchen 分享
DAY 8

Flag、環境變數與設定檔

當一個 CLI 工具(例如 mytool)支援 table、text 與 json 等多種輸出格式時,不同情境會有不同的設定需求: 設定檔:使用者可以在 c...

2026-09-19 ‧ 由 evanchen 分享
DAY 9

Human-friendly CLI 設計:命名、Help 與錯誤提示

CLI 運作在純文字的終端機環境中,不像 GUI 擁有按鈕、視覺邊框或選單點擊等提示。使用者第一次接觸工具時,無法透過視覺預覽介面,全靠輸入命令、查詢 --he...

2026-09-20 ‧ 由 evanchen 分享
DAY 10

Human-friendly CLI 輸出:表格、顏色與進度

當 CLI 只輸出單色純文字時,多欄資料容易擠在一起難以閱讀,長時間執行的任務也會因為畫面靜止而無法判斷進度。為了解決這些閱讀與反饋問題,我們可以透過設計視覺回...

2026-09-21 ‧ 由 evanchen 分享