Stage 0 — 基礎準備(Foundations)
這一關先檢查:你會不會使用後面一定會用到的四種工具?會就直接跳過。不會也沒關係,照著下面的小練習做一次。
何時可以跳過這個階段
看看下面四件事。你不需要背指令,但要能自己查資料並完成:
- 用 Python 向 API(Application Programming Interface,讓程式呼叫服務的介面)(給程式取資料的入口)拿公開資料,再從 JSON(JavaScript Object Notation,程式交換資料常用的文字格式) 裡找出一個值。
- 用 Git 複製專案(clone)、開工作線(branch)、保存版本(commit),再把版本送到網路上(push)。兩次修改撞在一起時,知道要留下什麼(合併衝突)。
- 用命令列(在終端機輸入的文字指令)切換資料夾、建立檔案並執行 Python script。
- 看懂 YAML 與 JSON。它們都是用文字保存資料的格式。
四項都做得到,就直接前往 Stage 1 — LLM 基礎。只要有一項不確定,就完成本頁的主練習;需要時再展開補充內容。
📌 學習目標
完成這一關後,你可以:
- 讓 Python 從 API 拿資料,再讀出 JSON 裡需要的部分。
- 從終端機執行程式,並找到程式建立的檔案。
- 用 Git 保存一個版本,需要時可以回到這個版本。
- 認出 YAML、JSON 與 API token(讓程式登入的秘密文字),知道哪些內容不能公開。
🛠 動手練習:做一個 GitHub 資料小工具
**成果:**讓 Python 從 GitHub 拿公開資料,把結果顯示在畫面上、寫進檔案,再用 Git 保存。這個主練習不需要帳號、API token 或付費服務。
1. 建立程式
建立一個新資料夾,並把下面內容存成 github_profile.py:
import json
import sys
from pathlib import Path
from urllib.request import Request, urlopen
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
url = "https://api.github.com/users/torvalds"
request = Request(url, headers={"User-Agent": "stage-0-practice"})
with urlopen(request, timeout=10) as response:
profile = json.load(response)
result = f"{profile['login']} 有 {profile['followers']} 位追蹤者"
print(result)
Path("result.txt").write_text(result + "\n", encoding="utf-8")
API 是程式拿資料的入口。JSON 是這次收到的資料格式。
2. 執行程式
在終端機進入該資料夾,執行:
python github_profile.py
畫面會顯示帳號與追蹤者數量,資料夾裡也會多出 result.txt。追蹤者數量會改變,不需要和別人的畫面一樣。
3. 用 Git 保存成果
git init
git add github_profile.py result.txt
git commit -m "Add GitHub profile checker"
Commit 是 Git 保存的一個版本,旁邊會有一句說明。如果 Git 第一次要求姓名或 email,依畫面提示設定後,再執行一次 git commit。這些資料是版本的作者標籤,不是密碼。
✅ 完成檢查
- 終端機顯示 GitHub 帳號與追蹤者數量。
-
result.txt有相同的結果。 -
git log --oneline看得到剛才的 commit。 - 程式與 commit 裡沒有密碼或 API token。
四項都完成,就可以前往 Stage 1 — LLM 基礎。如果卡住,展開下面最接近問題的部分,不必一次讀完。
⏱️ 展開時間、環境與這一關存在的原因
時間:完全不熟時預留 1–2 週,約 5–15 小時;已經會其中幾項,只補不熟的部分即可。
環境:準備仍受支援的 Python 3、Git、文字編輯器與終端機。終端機就是輸入文字指令的視窗。Windows 可使用 PowerShell;macOS 或 Linux 可使用系統終端機。
先確認工具可以執行:
python --version
git --version
後面的 AI agent 教材會直接使用 Python、Git、命令列與設定檔。Stage 0 不會教完所有內容。它只幫你找出還不熟的地方,再告訴你去哪裡補。
🧰 展開 Python、Git、命令列與 YAML/JSON 補充練習
只做你還不熟的項目:
- Python:把主練習網址中的
torvalds換成自己的 GitHub 帳號或其他公開帳號,確認程式仍能讀出login與followers。 - Git:建立新 branch(不直接改原版本的工作線),修改輸出文字,再做一次 commit。接著把練習放到自己的遠端 Git 專案,並執行
git push。 - 命令列:建立
src、tests、docs三個資料夾,從不同路徑執行主練習,並找出result.txt實際寫到哪裡。 - JSON:把 API 回應存成檔案,找出
name、public_repos與followers三個欄位。 - YAML:建立一個含有
username與output_file的小設定檔,練習縮排、字串與布林值。YAML 對空格很敏感,不要使用 Tab 縮排。
遇到錯誤時,先讀最後一行錯誤訊息,再確認目前資料夾、檔名與 Python 版本。一次只改一件事,才知道哪個修改有效。
🔐 展開選修:安全地體驗 GitHub API 驗證
主練習不需要 token。Token 是一串讓 GitHub 認出你的秘密文字。只有想理解「登入後的 API」時才做這一題。
- 依 GitHub 官方說明 建立 fine-grained personal access token。Fine-grained 表示你可以只開需要的權限。
- 使用最短的有效期限,不加入額外權限。
GET /user對 fine-grained token 不要求任何權限。 - 把 token 放進環境變數
GITHUB_TOKEN。環境變數是電腦暫時保管資料、讓程式讀取的位置。不要把 token 寫進 Python、Markdown、截圖、終端機歷史或 Git commit。 - 呼叫
https://api.github.com/user兩次。第一次不帶 token,應看到401,意思是尚未登入。第二次帶 token,應看到200,意思是 GitHub 接受了請求。 - 練習結束後,回到 GitHub 設定頁撤銷 token,並清除環境變數。
Bash 可以這樣避免把輸入顯示在畫面上:
read -s GITHUB_TOKEN && export GITHUB_TOKEN
curl -sS -o /dev/null -w "No token: %{http_code}\n" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/user
curl -sS -o /dev/null -w "With token: %{http_code}\n" \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/user
unset GITHUB_TOKEN
PowerShell 7.1 以上可以這樣做:
$env:GITHUB_TOKEN = Read-Host -MaskInput "Paste token"
$withoutToken = Invoke-WebRequest -Uri https://api.github.com/user `
-Headers @{ Accept = "application/vnd.github+json" } `
-SkipHttpErrorCheck
$withToken = Invoke-WebRequest -Uri https://api.github.com/user -Headers @{
Authorization = "Bearer $env:GITHUB_TOKEN"
Accept = "application/vnd.github+json"
} -SkipHttpErrorCheck
"No token: $($withoutToken.StatusCode)"
"With token: $($withToken.StatusCode)"
Remove-Item Env:GITHUB_TOKEN
Token 就像程式使用的臨時鑰匙。拿到它的人可能以你的身分操作,所以權限越少、期限越短越安全。
🗺️ 展開名詞與 Agent 全景補充
- CLI(命令列介面):在終端機輸入文字指令來操作電腦。
- API(應用程式介面):讓兩個程式用固定規則交換資料的入口。
- JSON/YAML:用文字保存結構化資料的兩種格式;JSON 常見於 API,YAML 常見於設定檔。
- Git:記錄檔案版本的工具;commit 是一次有說明的版本快照。
看到其他不懂的詞,先查 術語表。想知道 agent 為什麼可能出現在終端機、聊天軟體或裝置上,再看 Agent 全景地圖。這兩份都不是開始主練習前的必讀內容。
🎯 精選學習資源
需要補某一項能力時再找對應入口;不用把 18 個資源全部讀完。
學習資源與 GitHub 驗證指引查核:2026-08-27 UTC
推薦度 是學習優先順序,不是 GitHub 的熱門數字。依專案規則,⭐⭐⭐⭐⭐ 代表「不看會卡住」;下面都是補充資源,所以誠實使用 ⭐⭐⭐⭐(強烈建議)或 ⭐⭐⭐(紮實參考),不用假五星。
| 主題 | 資源 | 適合誰 | 推薦度 | 為什麼推薦/備註 |
|---|---|---|---|---|
| Python | Python Crash Course | 想跟著一本書從頭練習 | ⭐⭐⭐⭐ | 程式碼免費;完整教材需購買書本。 |
| Real Python | 學過一點,想查一個問題 | ⭐⭐⭐⭐ | 文章按主題分開,遇到問題時容易查找。 | |
| Corey Schafer YouTube | 喜歡看英文影片 | ⭐⭐⭐ | 用影片從基礎語法帶到實際應用。 | |
| Boot.dev | 喜歡一邊操作一邊學 | ⭐⭐⭐ | 部分內容免費;完整後端路線需付費。 | |
| Python 官方繁體中文教學 | 做完第一次練習,想查正確語法 | ⭐⭐⭐⭐ | 官方參考資料;它預期你已懂一點程式設計。 | |
| Git | Pro Git book | 想完整理解 Git | ⭐⭐⭐⭐ | 免費的官方完整參考書。 |
| Atlassian Git Tutorials | 想用圖看懂 branch、merge 與做事順序 | ⭐⭐⭐⭐ | 用圖解說明常見工作流程。 | |
| Pro Git — Undoing Things | Git 操作出錯,想安全復原 | ⭐⭐⭐⭐ | 先說明哪些操作會丟失資料,再教你如何復原。 | |
| git-flight-rules | 基本方法不夠,想查更多問題 | ⭐⭐⭐ | 收錄較多 Git 問題與處理方式。 | |
| CLI/Shell | The Art of Command Line | 想有順序地學命令列 | ⭐⭐⭐⭐ | 從新手指令一路介紹到較進階的操作。 |
| Microsoft Learn — PowerShell | 使用 Windows,想從第一步開始 | ⭐⭐⭐⭐ | Microsoft 官方的 PowerShell 入門教材。 | |
| tldr pages | 只想先看一個指令怎麼用 | ⭐⭐⭐⭐ | 用短小、可複製的例子解釋常用指令。 | |
| REST API | MDN — HTTP | 想知道 API 背後怎麼傳資料 | ⭐⭐⭐⭐ | Mozilla 維護的 HTTP 參考資料。 |
| Postman Learning Center | 想用圖形介面試 API | ⭐⭐⭐⭐ | 不必先寫程式,也能看到送出與收到的資料。 | |
| HTTPie | 想從命令列呼叫 API | ⭐⭐⭐ | 指令通常比原始 curl 寫法容易閱讀。 | |
| YAML/JSON | YAML 官網 | 需要查 YAML 的正確寫法 | ⭐⭐⭐ | 語法與正式規格的官方入口。 |
| JSON 介紹 | 第一次接觸 JSON | ⭐⭐⭐⭐ | 用短例子說明 JSON 怎麼裝資料。 | |
| jq | 想從命令列整理 JSON | ⭐⭐⭐⭐ | 可以篩選與整理 API 傳回的資料。 |
✅ 走完 Stage 0 了? 接著前往 Stage 1 — LLM 基礎,完成第一次 LLM API 呼叫,並學會 token、context window 與成本估算。