課前準備
請在工作坊前完成安裝與下方自測。第一次建立環境需要下載套件,請找網路穩定的地方操作;最後看到程式產生檔案並印出結果,就準備好了。
先確認一件事:你會用終端機嗎
這場工作坊全程在終端機裡進行。如果你平常只在 VS Code 按執行鍵、 或只用過 Google Colab,先跟著下面的操作認識它。
終端機入門:打開它、走到資料夾、確認位置
終端機就是一個「用打字下指令」的視窗。它永遠站在某一個資料夾裡面, 你打的指令都是對那個資料夾下的。這是最重要、也最常被忽略的一件事。
怎麼打開
| 系統 | 怎麼開 |
|---|---|
| Windows | 開始選單搜尋 PowerShell |
| macOS | Launchpad 搜尋終端機(Terminal) |
| Linux / WSL | Linux 開啟 Terminal;WSL 從 Windows 開始選單開啟已安裝的 Ubuntu |
三個你會用到的指令
| 指令 | 作用 |
|---|---|
pwd (Windows 也能用) | 我現在在哪個資料夾?不確定的時候先打這個 |
ls (Windows 也能用) | 列出這個資料夾裡有什麼 |
cd 資料夾名稱 | 走進某個資料夾。cd .. 是回上一層 |
路徑是資料夾的位置
Windows PowerShell 的路徑通常像 C:\Users\你的名字\Documents\ai-math-lab;WSL 像 /home/你的名字/ai-math-lab。請選一個環境完成本教材,同一份虛擬環境不要在兩邊交替使用。路徑含空格時,把整段路徑放在雙引號裡。
例如在 PowerShell 輸入 cd "C:\Users\你的名字\Documents\ai-math-lab",請先換成自己的實際位置。接著依序輸入 pwd 和 ls,確認位置與檔案。
每一種文字該貼在哪裡
看到 uv sync、opencode 這類指令,貼到 PowerShell 或 Ubuntu 終端機,按 Enter 執行。進入 OpenCode 後,才貼「請幫我……」的任務。程式的預期輸出用來比對,不用貼回終端機。多個步驟請逐步執行,確認上一個步驟完成再繼續。
在錯的資料夾裡啟動 opencode。這樣它可能找不到你的
AGENTS.md 與 opencode.json,無法沿用本課程的模型與執行規則。
每次啟動前先用 pwd 跟 ls 確認位置。
幾個小技巧
- Tab 鍵會自動補完檔名與資料夾名。打前幾個字母按 Tab,省事又不會打錯
- ↑ 方向鍵叫回上一個指令,不用重打
- 指令卡住停不下來:Ctrl+C
- 畫面太亂:打
clear(Windows 用cls)
這樣就夠了。這場工作坊不會用到更進階的終端機操作。
你需要安裝兩個東西
| 工具 | 作用 |
|---|---|
| opencode | 在終端機裡接受你的任務,讀檔、寫程式並執行 |
| uv | 建立本專案的 Python 環境並管理套件,不需要先另裝 Python |
不需要註冊任何帳號、不需要 API key、不需要信用卡。
工作坊用的模型 opencode/big-pickle 是內建免費的,裝完就能直接用。
安裝
Windows
Windows 11 內建了一個叫 winget 的套件管理員(跟系統一起出貨的
App Installer),所以你什麼都不用先裝。
開啟 PowerShell(開始選單搜尋「PowerShell」),貼上這兩行:
winget install SST.opencode --accept-source-agreements --accept-package-agreements
winget install astral-sh.uv --accept-source-agreements --accept-package-agreements
表示你的 Windows 比較舊(Windows 10 要 1809 以上才有,2004 之後才變成標配)。 開啟 Microsoft Store,搜尋 App Installer 安裝, 然後關掉 PowerShell 重開。
一、不加 --accept-source-agreements 會卡住。
winget 第一次執行會跳出一個要你按 Y 的條款同意,但那個提示常常收不到鍵盤輸入,
整個指令就停在那裡不動。上面的指令已經幫你跳過了。
二、裝完要重開 PowerShell。 新裝的程式不會出現在已經開著的視窗裡(PATH 沒有重新載入)。 把視窗關掉重開,再往下走。
macOS
macOS 內建 curl,直接開「終端機」貼這兩行:
curl -fsSL https://opencode.ai/install | bash
curl -LsSf https://astral.sh/uv/install.sh | sh
(macOS 請依官方安裝說明操作,課前完成同一份自測;需要協助時提早聯絡講師。)
Linux / WSL
這裡要多一個步驟。下載工具 curl 不一定裝在你的系統裡,
Ubuntu 的基本安裝並不包含它。真正一定有的是套件管理員 apt,
所以先用它把 curl 補上:
sudo apt update && sudo apt install -y curl ca-certificates
(ca-certificates 是驗證 HTTPS 憑證用的,少了它 curl 會連不上。
如果這兩個本來就有,這行也只會告訴你「已經是最新版」,不會弄壞任何東西。)
接著才裝 opencode 與 uv:
curl -fsSL https://opencode.ai/install | bash
curl -LsSf https://astral.sh/uv/install.sh | sh
裝完後關掉終端機重開,或執行 source ~/.bashrc。
確認裝好了
opencode --version
uv --version
兩個指令都應印出版本號;記下來,之後求助時可以一起提供。
先確認終端機能讀到安裝後的新路徑。把終端機完全關掉、重新開一個再試。 還是不行的話,Windows 請確認是用 PowerShell 而不是舊版的 cmd。
建立工作坊專案
建資料夾與檔案
找一個你記得住的位置(例如 Documents),建立資料夾:
mkdir ai-math-lab
cd ai-math-lab
mkdir notes
mkdir figs
建立 pyproject.toml
用任何文字編輯器(記事本也行)建立一個叫 pyproject.toml 的檔案,內容:
[project]
name = "ai-math-lab"
version = "0.1.0"
requires-python = ">=3.10"
dependencies = [
"numpy>=1.26",
"scipy>=1.11",
"matplotlib>=3.8",
"scikit-learn>=1.4",
"networkx>=3.2",
]
建立 opencode.json
同一個資料夾,建立 opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"model": "opencode/big-pickle",
"permission": {
"bash": "ask",
"edit": "ask",
"webfetch": "ask"
},
"instructions": ["AGENTS.md"]
}
opencode 的設定是一層一層疊上去的:全域設定 → 專案設定,後者蓋掉前者的同名項目。 把工作坊的設定放在專案資料夾裡,就不會影響你電腦上其他的 opencode 用途, 換一個資料夾就換一套設定。
建立 AGENTS.md
這是給 agent 看的專案規則。同一個資料夾,建立 AGENTS.md:
# AI-Math 工作坊 專案規則
## 語言
一律使用台灣繁體中文回答。程式碼、變數名稱、套件名稱保留英文。
## 執行環境
本專案用 uv 管理環境。執行 Python 一律用:`uv run python <檔案>`
不要用 `python`、`python3`、`pip install`。要加套件用 `uv add <套件>`。
## 數學程式的規矩
1. 可重現:用到隨機性的地方一律設 `random_state=0` 或 `np.random.seed(0)`。
2. 先說數學,再寫程式:動手前先用兩三句話說明你要用的公式或步驟。
3. 自己驗證:寫完數值方法必須附驗證程式碼,實際執行並印出比對結果。
不可以只說「應該正確」。
4. 不要偷懶:如果我要求「手刻」某個方法,就不可以直接呼叫 sklearn 的
對應實作來充數。sklearn 只能當對照組。
## 圖檔
所有圖存到 `figs/`,用 `savefig()`,不要用 `plt.show()`(無視窗環境無效)。
## 筆記
數學筆記寫在 `notes/` 底下的 .md 檔,數學式用 $...$ 與 $$...$$。
## 不要做的事
- 不要 git commit 或 git push,除非我明講。
- 不要刪除 `figs/` 或 `notes/` 裡既有的檔案。
建立 Python 環境(這步會等比較久)
uv sync
第一次執行會下載 Python 與套件,請等指令完成,回到可輸入下一個指令的提示字元。
如果超過一分鐘還在跑,去泡杯茶。看到類似這樣就對了:
綠燈自測
下面三個測試全部通過,你就準備好了。
測試一:Python 環境
uv run python -c "import numpy, scipy, sklearn, matplotlib, networkx; print('環境 OK')"
應該印出 環境 OK。
測試二:agent 會回話
opencode run "用一句話說明什麼是主成分分析"
應該得到一段繁體中文的回答。
測試三:agent 真的會動手(最重要的一關)
opencode run --auto "建立一個 hello.py,內容是印出 1 到 10 的平方,然後執行它"
你剛才在 opencode.json 裡把 edit 和 bash 設成 ask,
意思是「agent 要改檔案或跑指令之前,先問過我」。
問題是 opencode run 是非互動模式,沒有人可以回答那個問題。
opencode 的處理方式是直接拒絕:
! permission requested: edit (hello.py); auto-rejecting
✗ Write hello.py failed
Error: The user rejected permission to use this specific tool call.
--auto 就是「這一次我事先全部答應」。
它在自測時很方便,但平常不要養成習慣。
工作坊全程我們都用互動模式(直接打 opencode),
那時候每個動作都會停下來問你,你才有機會看清楚它要做什麼。
看到 Read、Write、$ 這三種箭頭,代表 agent 的三種能力
(讀檔、寫檔、執行指令)都正常。而且它讀了 AGENTS.md、用了 uv run,
表示你的專案規則有生效。
卡住了?
| 症狀 | 原因 | 怎麼辦 |
|---|---|---|
opencode: command not found無法辨識 'opencode' |
PATH 沒重新載入 | 把終端機完全關掉重開。Windows 請用 PowerShell,不要用 cmd。 |
curl: command not found |
Linux/WSL 沒有內建 curl |
先跑 sudo apt update && sudo apt install -y curl ca-certificates,再重跑安裝指令。 |
無法辨識 'winget' |
Windows 版本較舊,沒有內建 App Installer | Microsoft Store 搜尋 App Installer 安裝,關掉 PowerShell 重開。 |
winget 停在 Do you agree...[Y] Yes [N] No 不動 |
互動式條款同意收不到鍵盤輸入 | Ctrl+C 中斷,改用本頁那組帶 --accept-source-agreements 的指令。 |
Error: Internal server error |
看不到真正原因 | 加旗標重跑:opencode run "..." --print-logs --log-level ERROR |
Unrecognized request argument supplied: prompt_cache_key |
opencode 的已知上游問題,偶發 | 重試一次通常就好。仍然失敗就保留錯誤訊息,請講師協助。 |
換成其他模型後回 UnknownError |
那些模型需要 API key | 本工作坊只用 opencode/big-pickle。不要改 opencode.json 裡的 model。 |
uv sync 下載很慢或中斷 |
網路 | 重跑一次,uv 會接續已下載的部分,不會從頭來。 |
permission requested: edit ...; auto-rejecting |
opencode run 是非互動模式,沒人能回答 ask 的權限詢問 |
自測時加 --auto。平常請用互動模式(直接打 opencode)。 |
agent 用了 python 而不是 uv run python |
AGENTS.md 沒被讀到 |
確認 AGENTS.md 跟 opencode.json 在同一個資料夾,且你是在那個資料夾裡啟動 opencode。 |
把你打的指令和完整的錯誤訊息截圖,工作坊開始前傳給助教。 請不要只說「裝不起來」,那樣沒辦法幫你。
最後提醒
opencode/big-pickle 是限時免費的試用模型,官方明講資料可能被用於改進模型。
不要把未發表的研究資料、個人隱私資料或任何機密內容丟進去。
課堂用的都是 scikit-learn 內建的公開資料集,沒有這個問題。