2026年10月11日 星期日

OpenClaw 學習筆記 : 在樹莓派 Pi 4 安裝 OpenClaw (二十)

前一篇針對 Groq 的 GPT OSS 120B 模型的測試發現 Free 帳戶幾乎無法在 OpenClaw 中正常使用, 所以還是切回 primary: gemini-2.5-flash 與 fallback: gpt-5.6-luna 配置, 順便對 Gemini 2.5 Flash 做效能測試. 

本系列全部測試文章索引參考 :



1. 復原主備援模型 :

復原程序如下 : 

設定 primary 模型為 Gemini 2.5 Flash : 

pi@pi4b:~ $ openclaw config set agents.defaults.model.primary "google/gemini-2.5-flash" 
│
◇  

OpenClaw 2026.7.1-2 (0790d9f)
I'm not magic—I'm just extremely persistent with retries and coping strategies.

Updated agents.defaults.model.primary. Change will apply without restarting the gateway.

設定備援模型清單, 只設定單一成員 GPT 5.6 Luna : 

pi@pi4b:~ $ openclaw config set agents.defaults.model.fallbacks '["openai/gpt-5.6-luna"]'
│
◇  

OpenClaw 2026.7.1-2 (0790d9f)
I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.

Updated agents.defaults.model.fallbacks. Change will apply without restarting the gateway.

檢視設定結果 : 

pi@pi4b:~ $ openclaw config get agents.defaults.model 

OpenClaw 2026.7.1-2 (0790d9f) — Less clicking, more shipping, fewer "where did that file go" moments.

{
  "primary": "google/gemini-2.5-flash",
  "fallbacks": [
    "openai/gpt-5.6-luna"
  ]
}

驗證設定檔是否有效 : 

pi@pi4b:~ $ openclaw config validate
│
◇  

OpenClaw 2026.7.1-2 (0790d9f)
I run on caffeine, JSON5, and the audacity of "it worked on my machine."

Config valid: ~/.openclaw/openclaw.json

最後殺程序觸發服務重啟 : 

pi@pi4b:~ $ pkill -9 -f openclaw  


2. 能力測驗 :

以下對 Gemini 2.5 Flash 進行五項能力考驗 : 


(1). 網路搜尋 :

提示詞如下 : 

台積電 ADR 目前價格? 

結果 : 




(2). Python 知識 :

提示詞如下 :

請用繁體中文解釋 Python 的 list、tuple、set 三者差異。
要求:
1. 用表格比較
2. 各給一個實際例子
3. 說明什麼情況下應該選哪一個

結果如下 : 

關於三個資料結構差異, 其回應如下 :

好的,Tony,這就為您解釋 Python 中 list、tuple、set 三者的差異,並附上表格比較、實際例子及使用時機建議。

Python list, tuple, set 差異比較

實際例子

1. list (列表) 範例

2. tuple (元組) 範例

3. set (集合) 範例

什麼情況下應該選哪一個?

*   選擇 list (列表) 的時機:
    *   當您需要一個可變的序列,允許新增、刪除或修改元素。
    *   元素的順序很重要,且可以包含重複的元素。
    *   例如:待辦事項清單、歷史紀錄、資料庫查詢結果集。

*   選擇 tuple (元組) 的時機:
    *   當您需要一個不可變的序列,一旦定義就不希望其內容被修改。
    *   元素的順序很重要,且可以包含重複的元素。
    *   經常用於表示固定數量和順序的資料,例如:座標點 (x, y)、RGB 顏色值 (R, G, B)、函數的多個返回值。
    *   元組可以作為字典的鍵 (因為其不可變性)。
    *   作為函數參數傳遞時,可以確保資料不會在函數內部被意外修改。

*   選擇 set (集合) 的時機:
    *   當您需要儲存一系列獨一無二的元素,不關心元素順序。
    *   需要高效地檢查元素是否存在於集合中 (通常比列表快)。
    *   需要進行數學上的集合操作,例如:聯集 (union)、交集 (intersection)、差集 (difference) 等。
    *   例如:追蹤網站的唯一訪客 IP 位址、找出兩個班級共同的學生、從列表中去除重複元素。
Usage: 14k in / 1.5k out




程式碼範例 : 






(3). 推理能力 :

提示詞如下 :

有 100 顆球,其中 1 顆重量不同,但不知道它比較重還是比較輕。只有一個沒有砝碼的天平,最多可以秤 3 次。請找出異常球,並判斷它是比較重還是比較輕。請完整說明策略。

結果如下 :

這個問題在數學上,對於 100 顆球並在最多 3 次秤重內找出異常球並判斷輕重,是不可能解決的。

原因解釋:

1.  天平秤重的結果數: 一個沒有砝碼的天平每次秤重有 3 種可能結果:
    *   左邊重
    *   右邊重
    *   兩邊一樣重
2.  3 次秤重的最大區分能力: 如果最多秤 3 次,則總共可以得到 $3 \times 3 \times 3 = 3^3 = 27$ 種不同的結果。
3.  100 顆球所需區分的可能性:
    *   我們要從 100 顆球中找出哪一顆是異常球,這有 100 種可能性。
    *   還要判斷這顆異常球是比正常球重還是輕,這有 2 種可能性。
    *   因此,總共需要區分的可能性為 $100 \times 2 = 200$ 種。
4.  結論: 因為 200 (所需區分的可能性) > 27 (3 次秤重能提供的最大結果數),所以不可能在 3 次秤重內解決 100 顆球的問題。

解決類似問題的策略 (以 12 顆球為例,這是可以在 3 次秤重內解決的最大數量之一):

雖然 100 顆球無法解決,但我可以完整說明這種邏輯問題的解決策略,以 12 顆球為例(12 顆球有 $12 \times 2 = 24$ 種可能性,小於 27,因此可解)。

目標: 從 12 顆球中找出 1 顆異常球,並判斷它是重還是輕。

球的編號: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

第一次秤重: (將 12 顆球分為三組,每組 4 顆)

*   左邊: (1, 2, 3, 4)
*   右邊: (5, 6, 7, 8)
*   保留: (9, 10, 11, 12)

結果分析:

1.  情況一:天平兩邊相等 (1,2,3,4) = (5,6,7,8)
    *   推斷: 球 1-8 都是正常的。異常球在保留的 (9, 10, 11, 12) 這 4 顆球中。
    *   剩餘任務: 從 4 顆球中找出異常球並判斷輕重,有 8 種可能性 ($4 \times 2 = 8$),剩下 2 次秤重。

2.  情況二:左邊輕 (1,2,3,4) < (5,6,7,8)
    *   推斷:
        *   異常球在 (1,2,3,4) 中且比正常球輕 (Lighter)。
        *   或者異常球在 (5,6,7,8) 中且比正常球重 (Heavier)。
    *   推斷: 球 9-12 都是正常的。
    *   剩餘任務: 從 8 顆球中找出異常球並判斷輕重 (已知輕或重),有 8 種可能性 ($4 \text{L} + 4 \text{H} = 8$),剩下 2 次秤重。

3.  情況三:左邊重 (1,2,3,4) > (5,6,7,8)
    *   推斷:
        *   異常球在 (1,2,3,4) 中且比正常球重 (Heavier)。
        *   或者異常球在 (5,6,7,8) 中且比正常球輕 (Lighter)。
    *   推斷: 球 9-12 都是正常的。
    *   剩餘任務: 與情況二對稱,從 8 顆球中找出異常球並判斷輕重,有 8 種可能性,剩下 2 次秤重。

第二次秤重 (以情況一為例:異常球在 9,10,11,12 中):

*   已知: (1,2,3,4,5,6,7,8) 都是正常球。
*   左邊: (9, 10, 11) (三顆可疑球)
*   右邊: (1, 2, 3) (三顆正常球)
*   保留: (12) (一顆可疑球)

結果分析:

1.  情況 1.1:天平兩邊相等 (9,10,11) = (1,2,3)
    *   推斷: 球 9,10,11 都是正常的。異常球是 12。
    *   剩餘任務: 判斷球 12 的輕重,剩下 1 次秤重。

2.  情況 1.2:左邊重 (9,10,11) > (1,2,3)
    *   推斷: 異常球在 (9,10,11) 中且比正常球重。
    *   剩餘任務: 從 3 顆球中找出較重的異常球,剩下 1 次秤重。

3.  情況 1.3:左邊輕 (9,10,11) < (1,2,3)
    *   推斷: 異常球在 (9,10,11) 中且比正常球輕。
    *   剩餘任務: 從 3 顆球中找出較輕的異常球,剩下 1 次秤重。

第三次秤重 (接續情況 1.1, 1.2, 1.3 的子情況):

*   接續 1.1 (異常球是 12):
    *   左邊: (12)
    *   右邊: (1) (正常球)
    *   結果:
        *   12 > 1:球 12 較重。
        *   12 < 1:球 12 較輕。

*   接續 1.2 (9,10,11 中有一顆較重):
    *   左邊: (9)
    *   右邊: (10)
    *   結果:
        *   9 > 10:球 9 較重。
        *   9 < 10:球 10 較重。
        *   9 = 10:球 11 較重。

*   接續 1.3 (9,10,11 中有一顆較輕):
    *   左邊: (9)
    *   右邊: (10)
    *   結果:
        *   9 > 10:球 10 較輕。
        *   9 < 10:球 9 較輕。
        *   9 = 10:球 11 較輕。

第二次秤重 (以情況二為例:異常球在 (1L,2L,3L,4L,5H,6H,7H,8H) 中):

*   已知: (9,10,11,12) 都是正常球。
*   左邊: (1, 5, 9) (1L?, 5H?, 9N)
*   右邊: (2, 6, 10) (2L?, 6H?, 10N)
*   保留: (3, 4, 7, 8) (3L?, 4L?, 7H?, 8H?)

結果分析:

1.  情況 2.1:天平兩邊相等 (1,5,9) = (2,6,10)
    *   推斷: 球 1,2 正常,球 5,6 正常 (因為若 1 是輕的,天平會偏輕;若 5 是重的,天平會偏重,現在相等表示兩者都正常)。
    *   推斷: 異常球在保留的 (3L, 4L, 7H, 8H) 這 4 顆球中。
    *   剩餘任務: 從這 4 顆球中找出異常球並判斷輕重,剩下 1 次秤重。

2.  情況 2.2:左邊重 (1,5,9) > (2,6,10)
    *   推斷: 這表示左邊有重球或右邊有輕球。
        *   可能 5 是重球或 6 是重球 (這是從第一次秤重推斷出的)。
        *   也可能 2 是輕球 (這是從第一次秤重推斷出的)。
        *   不可能 1 是輕球 (因為天平偏重)。
    *   推斷: 異常球是 5H 或 6H 或 2L。
    *   剩餘任務: 從這 3 顆球中找出異常球並判斷輕重,剩下 1 次秤重。

3.  情況 2.3:左邊輕 (1,5,9) < (2,6,10)
    *   推斷: 這表示左邊有輕球或右邊有重球。
        *   可能 1 是輕球 (這是從第一次秤重推斷出的)。
        *   不可能 5,6 是重球。
        *   不可能 2 是輕球。
    *   推斷: 異常球是 1L。
    *   剩餘任務: 只剩 1L,已經知道是哪顆球和它的輕重,無需第三次秤重。

第三次秤重 (接續情況 2.1, 2.2 的子情況):

*   接續 2.1 (異常球在 3L, 4L, 7H, 8H 中):
    *   左邊: (3) (疑似輕)
    *   右邊: (7) (疑似重)
    *   結果:
        *   3 < 7:球 3 較輕。
        *   3 > 7:球 7 較重。
        *   3 = 7:異常球在保留的 (4L, 8H) 中。
            *   再比較: (4) vs (1) (正常球)
            *   4 < 1:球 4 較輕。
            *   4 = 1:球 8 較重。

*   接續 2.2 (異常球是 5H, 6H, 2L 之一):
    *   左邊: (5) (疑似重)
    *   右邊: (6) (疑似重)
    *   結果:
        *   5 > 6:球 5 較重。
        *   5 < 6:球 6 較重。
        *   5 = 6:球 2 較輕。

情況三的解決方法 則是與情況二對稱的,透過同樣的策略步驟即可得出答案。

這個策略的關鍵在於每次秤重都盡可能地將球分成三組,並利用天平的三種結果來最大化地排除可能性,同時巧妙地組合「已知可能輕」和「已知可能重」的球與已知正常的球進行比較。

總之,100 顆球在 3 次秤重內是無解的。上述策略適用於 12 顆球的情況。
Usage: 14k in / 9.5k out


(4). Python 程式能力 :

提示詞如下 : 

請寫一個 Python 函式:

def detect_drawdown(prices, threshold=0.2):

輸入是一個每日收盤價 list,找出所有從歷史高點回撤超過 threshold 的區段。

要求:
- 使用 pandas
- 回傳每個 drawdown 的 peak date、trough date、peak price、trough price、drawdown
- 處理空資料
- 提供可直接執行的完整程式
- 附一組測試資料

結果如下 :




程式碼 : 







(5). Tool Calling 能力 :

提示詞如下 : 

請在目前 Raspberry Pi 上執行:
uname -a
free -h
df -h

然後整理成一個簡短的系統狀態報告。

結果如下 : 



沒有留言 :