opencode×AI-Math
00·請在工作坊前完成

課前準備

請在工作坊前完成安裝與下方自測。第一次建立環境需要下載套件,請找網路穩定的地方操作;最後看到程式產生檔案並印出結果,就準備好了。

先確認一件事:你會用終端機嗎

這場工作坊全程在終端機裡進行。如果你平常只在 VS Code 按執行鍵、 或只用過 Google Colab,先跟著下面的操作認識它。

終端機入門:打開它、走到資料夾、確認位置

終端機就是一個「用打字下指令」的視窗。它永遠站在某一個資料夾裡面, 你打的指令都是對那個資料夾下的。這是最重要、也最常被忽略的一件事。

怎麼打開

系統怎麼開
Windows開始選單搜尋 PowerShell
macOSLaunchpad 搜尋終端機(Terminal)
Linux / WSLLinux 開啟 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
如果說「無法辨識 winget」

表示你的 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 與套件,請等指令完成,回到可輸入下一個指令的提示字元。

如果超過一分鐘還在跑,去泡杯茶。看到類似這樣就對了:

uv sync
+ numpy==2.5.3
+ scipy==1.18.1
+ scikit-learn==1.9.1
+ matplotlib==3.11.2
+ networkx==3.6.1
(還有十幾個相依套件)

綠燈自測

下面三個測試全部通過,你就準備好了。

測試一: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 的平方,然後執行它"
那個 --auto 是什麼,為什麼只有這裡要加

你剛才在 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 AGENTS.md
Write hello.py
uv run python hello.py
1 4 9 16 25 36 49 64 81 100
已建立 hello.py 並執行完成。

看到 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 內建的公開資料集,沒有這個問題。