ollama launch openclaw他會問你問題,ollama server (local or remote), model name ..
設定好會啟動 gateway.
然後開 openclaw tui 讓你測試。
This guide explains how to manually install the searxng skill on an OpenClaw host and configure it to use a specific SearXNG server instance.
Since the skill is part of the official OpenClaw skills repository but may not be available directly via the clawhub slug for all versions, we clone the repository and extract the specific skill folder.
# Clone the skills repository
git clone --depth 1 https://github.com/openclaw/skills.git /tmp/openclaw-skills
# Create the local skill directory
mkdir -p ~/.openclaw/skills/searxng
# Copy the searxng skill files (from abk234's contribution)
cp -r /tmp/openclaw-skills/skills/abk234/searxng/* ~/.openclaw/skills/searxng/
The skill needs to know where your SearXNG instance is running. This is done by adding an env section to your global openclaw.json configuration file.
Add the following block to your ~/.openclaw/openclaw.json file:
{
"env": {
"SEARXNG_URL": "http://192.168.145.70:8081"
},
... (rest of your configuration)
}
python3 -c "import json; f=open('$HOME/.openclaw/openclaw.json', 'r'); d=json.load(f); d['env'] = {'SEARXNG_URL': 'http://192.168.145.70:8081'}; f=open('$HOME/.openclaw/openclaw.json', 'w'); json.dump(d, f, indent=2)"
The SearXNG skill script (searxng.py) requires specific Python libraries to handle HTTP requests and terminal formatting.
# Ensure pip is installed and then install dependencies
pip3 install httpx rich
Run the following command to ensure OpenClaw recognizes the new skill and marks it as ready.
openclaw skills list
You should see 📦 searxng in the list with a checkmark (✓) or "ready" status. You can also test it directly via the CLI:
SEARXNG_URL=http://192.168.145.70:8081 python3 ~/.openclaw/skills/searxng/scripts/searxng.py search "your search query"
If OpenClaw is already running, you may need to restart the gateway or simply tell your agent to "refresh skills" to begin using the new capability.
"tools": {
"web": {
"search": {
"enable": true,
"provider": "searxng",
"searxng": {
"baseUrl": "http://192.168.145.70:8081/Search"
}
}
}
},
#!/bin/bash
# Configuration Variables
SSID="pi4app"
PASSWORD="pi4password"
AP_IP="192.168.4.1/24"
CON_NAME="Hotspot"
WLAN_IF="wlan0"
# 1. Check for root privileges
if [ "$EUID" -ne 0 ]; then
echo "Please run as root (use sudo)"
exit 1
fi
# 2. Check if nmcli is installed
if ! command -v nmcli &> /dev/null; then
echo "Error: nmcli is not installed. This script requires NetworkManager."
exit 1
fi
echo "--- Configuring Wi-Fi Access Point: $SSID ---"
# 3. Remove existing connection with the same name if it exists
nmcli connection delete "$CON_NAME" 2>/dev/null
# 4. Create the Hotspot connection
# - type wifi: Specifies a Wi-Fi connection
# - mode ap: Sets it to Access Point mode
# - band a: Sets it to 5GHz (use 'bg' for 2.4GHz)
# - ipv4.method shared: Enables internet sharing/NAT
# - ipv4.addresses: Sets a custom subnet to avoid conflicts with eth0
nmcli connection add type wifi ifname "$WLAN_IF" con-name "$CON_NAME" autoconnect yes ssid "$SSID" \
802-11-wireless.mode ap \
802-11-wireless.band a \
ipv4.method shared \
ipv4.addresses "$AP_IP" \
wifi-sec.key-mgmt wpa-psk \
wifi-sec.psk "$PASSWORD"
# 5. Explicitly ensure autoconnect is set to yes
nmcli connection modify "$CON_NAME" connection.autoconnect yes
echo "--- Activating $CON_NAME ---"
# 6. Bring the connection up
nmcli connection up "$CON_NAME"
echo "--- Setup Complete ---"
echo "Autoconnect status: $(nmcli -f connection.autoconnect connection show "$CON_NAME" | grep autoconnect)"
nmcli device status
ip addr show "$WLAN_IF"
在沒有顯示器與鍵盤的情況下(Headless 模式),可以透過在 SD 卡的 boot 分割區中建立或編輯特定檔案,來完成系統初始化設定。
適用版本:Raspberry Pi OS Trixie (2025-12-04 以後的映像檔)。此版本改用 cloud-init 取代舊版的 userconf.txt 方式。
在 boot 分割區的根目錄下,建立一個檔名為 ssh 的空白檔案(不含任何副檔名)。系統在開機過程中由 sshswitch.service 偵測到此檔案後,會自動啟動 OpenSSH 服務並移除該檔案。
touch /media/你的使用者/bootfs/ssh
注意:僅在 cloud-init 的 user-data 中設定 ssh_pwauth: true 是不夠的,該設定只控制 SSH 是否允許密碼登入,並不會啟動 SSH 服務本身。必須建立 ssh 檔案才能啟動服務。
自 Trixie 版本起,Raspberry Pi OS 改用 cloud-init 進行首次開機設定。舊版的 userconf.txt 方式已不再支援。使用者帳號需透過 boot 分割區中的 user-data 檔案來設定。
首先產生加密密碼字串:
openssl passwd -6 "你的密碼"
編輯 boot 分割區中的 user-data 檔案,內容如下:
#cloud-config hostname: raspberrypi users: - name: charles-chang gecos: Charles Chang groups: users,adm,dialout,audio,netdev,video,plugdev,cdrom,games,input,gpio,spi,i2c,render,sudo shell: /bin/bash lock_passwd: false passwd: 此處填入上面指令產生的加密密碼字串 sudo: ALL=(ALL) NOPASSWD:ALL ssh_pwauth: true runcmd: - nmcli radio wifi on
說明:最後的 runcmd 區段是用來在首次開機時啟用 WiFi radio,原因見下節說明。
編輯 boot 分割區中的 network-config 檔案。此檔案使用 netplan 格式(YAML),cloud-init 會在首次開機時讀取並套用。
network:
version: 2
ethernets:
eth0:
dhcp4: true
optional: true
wifis:
wlan0:
dhcp4: true
optional: false
access-points:
你的WiFi名稱:
password: "你的WiFi密碼"
注意 YAML 縮排:此檔案對空白字元敏感,請使用空格而非 Tab。
WiFi radio 預設為停用:Raspberry Pi OS Trixie 的 NetworkManager 預設將 WiFi radio 設為軟體停用狀態(WIFI: disabled)。即使 network-config 中已正確設定 WiFi 連線資訊,WiFi 仍無法連線。解決方法是在 user-data 的 runcmd 中加入 nmcli radio wifi on,讓系統在首次開機時自動啟用 WiFi radio。
將設定完成的 SD 卡插入樹莓派後送電開機。Cloud-init 首次開機約需 2-3 分鐘完成設定。完成後即可透過 SSH 連線:
ssh charles-chang@樹莓派的IP位址
可透過路由器的 DHCP 用戶端清單查詢樹莓派的 IP 位址。若已在 user-data 中安裝 avahi-daemon,亦可使用:
ssh charles-chang@raspberrypi.local
首次登入後,建議立即執行 passwd 指令更換初始密碼,以確保系統安全性。
| 檔案 | 位置 | 用途 |
|---|---|---|
ssh | boot 分割區根目錄 | 啟用 SSH 服務(空白檔案) |
user-data | boot 分割區根目錄 | 設定使用者帳號、密碼、runcmd |
network-config | boot 分割區根目錄 | 設定 WiFi 和乙太網路連線 |
meta-data | boot 分割區根目錄 | cloud-init 中繼資料(通常不需修改) |
# Your system has configured 'manage_etc_hosts' as True. # As a result, if you wish for changes to this file to persist # then you will need to either # a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl # b.) change or remove the value of 'manage_etc_hosts' in # /etc/cloud/cloud.cfg or cloud-config from user-data #結果去看 /etc/cloud/cloud.cfg 只有 update_etc_hosts
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
然後就可以用 choco 安裝..
choco install ripgrep其實這是為了要裝 cursor 的 cli:
irm 'https://cursor.com/install?win32=true' | iexref:
[model_providers.ollama-remote] name = "ollama" base_url = "http://192.168.145.70:11434/v1" wire_api = "responses"這樣,用 ollama-remote 作為 provider 的 name。
model_provider = "ollama-remote" model = "gpt-oss:20b" model_reasoning_effort = "medium" oss_provider = "ollama-remote"這樣,直接啟動 codex 後,就會用這個自己的 ollama server 的 gpt-oss:20b 作為 model 了。
export ANTHROPIC_AUTH_TOKEN=ollama export ANTHROPIC_BASE_URL=http://192.168.145.70:11434然後在啟動的時候指定 model:
claude --model gpt-oss:120bollama 要新版的才有支援 claude 的 api 格式.
MODEL="${1:-qwen3.5:5b}"
# Export the environment variables
export ANTHROPIC_DEFAULT_OPUS_MODEL="$MODEL"
export ANTHROPIC_DEFAULT_SONNET_MODEL="$MODEL"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="$MODEL"
export CLAUDE_CODE_SUBAGENT_MODEL="$MODEL"
其實這樣 web search 還是不能用,因為還要一個 search engine。
When converting 5.1.3. Tutorial for Large Language Models.pdf to Markdown, shell script sections were missing in the output. These sections had light gray text on light gray background (low contrast).
The VLM prompt didn't explicitly instruct the model to look for low-contrast code blocks. While the VLM could recognize the text, recognition was inconsistent.
Added explicit instructions to detect low-contrast code:
$ bash script.sh, $ ./compile.sh, $ adb pushNew
pip install live-vlm-webui然後啟動:
$ live-vlm-webui 2026-01-10 22:02:23,010 - live_vlm_webui.server - INFO - No model/API specified, auto-detecting local services... 2026-01-10 22:02:23,016 - live_vlm_webui.server - INFO - ✅ Auto-detected Ollama at http://localhost:11434/v1 2026-01-10 22:02:23,016 - live_vlm_webui.server - INFO - Selected model: llama3.2-vision:latest 2026-01-10 22:02:23,047 - live_vlm_webui.server - INFO - Initialized VLM service: 2026-01-10 22:02:23,047 - live_vlm_webui.server - INFO - Model: llama3.2-vision:latest 2026-01-10 22:02:23,047 - live_vlm_webui.server - INFO - API: http://localhost:11434/v1 (Local) 2026-01-10 22:02:23,047 - live_vlm_webui.server - INFO - Prompt: Describe what you see in this image in one sentence. 2026-01-10 22:02:23,047 - live_vlm_webui.server - INFO - Serving static files from: /home/charles-chang/livevlmwebui/venv/lib/python3.12/site-packages/live_vlm_webui/static/images 2026-01-10 22:02:23,047 - live_vlm_webui.server - INFO - Serving favicon files from: /home/charles-chang/livevlmwebui/venv/lib/python3.12/site-packages/live_vlm_webui/static/favicon 2026-01-10 22:02:23,048 - live_vlm_webui.server - INFO - SSL enabled - using HTTPS 2026-01-10 22:02:23,048 - live_vlm_webui.server - INFO - Starting server on 0.0.0.0:8090 2026-01-10 22:02:23,048 - live_vlm_webui.server - INFO - 2026-01-10 22:02:23,048 - live_vlm_webui.server - INFO - ====================================================================== 2026-01-10 22:02:23,048 - live_vlm_webui.server - INFO - Access the server at: 2026-01-10 22:02:23,048 - live_vlm_webui.server - INFO - Local: https://localhost:8090 2026-01-10 22:02:23,049 - live_vlm_webui.server - INFO - Network: https://192.168.145.77:8090 2026-01-10 22:02:23,049 - live_vlm_webui.server - INFO - Network: https://172.20.0.1:8090 ... 2026-01-10 22:02:23,050 - live_vlm_webui.server - INFO - Network: https://192.168.94.37:8090 2026-01-10 22:02:23,050 - live_vlm_webui.server - INFO - ====================================================================== 2026-01-10 22:02:23,050 - live_vlm_webui.server - INFO - 2026-01-10 22:02:23,050 - live_vlm_webui.server - INFO - Press Ctrl+C to stop 2026-01-10 22:02:23,069 - live_vlm_webui.gpu_monitor - INFO - Auto-detected NVIDIA GPU (NVML available) 2026-01-10 22:02:23,069 - live_vlm_webui.gpu_monitor - INFO - Detected system: ASUS EX-B760M-V5 2026-01-10 22:02:23,076 - live_vlm_webui.gpu_monitor - INFO - NVML initialized for GPU: NVIDIA TITAN RTX 2026-01-10 22:02:23,076 - live_vlm_webui.server - INFO - GPU monitor initialized 2026-01-10 22:02:23,076 - live_vlm_webui.server - INFO - GPU monitoring task started 2026-01-10 22:02:23,076 - live_vlm_webui.server - INFO - GPU monitoring loop started ======== Running on https://0.0.0.0:8090 ======== (Press CTRL+C to quit)然後在browsser 上開啟 https://localhost:8090 就可以。
說明如何在 Raspberry Pi 4 環境下,透過 NetworkManager 將無線熱點設定為 5GHz (802.11ac) 模式。
執行以下指令確認無線網卡支援 5GHz 頻段:
iw list
輸出內容若包含 Band 2 相關資訊,即代表硬體支援。
假設既有的熱點連線名稱為 wifi-ap。若要切換至 AC 模式,必須指定頻段與頻道。
將 wifi.band 參數設定為 a,這代表強制使用 5GHz 頻段。
sudo nmcli connection modify wifi-ap wifi.band a
建議手動指定一組非 DFS 頻道 (例如 36, 40, 44, 48) 以加速啟動時間。
sudo nmcli connection modify wifi-ap wifi.channel 36
重新啟動連線以生效設定:
sudo nmcli connection up wifi-ap
使用以下工具檢視目前的運作頻率與頻寬:
iw dev wlan0 info
正確範例輸出:
channel 36 (5180 MHz), width: 20 MHz
若顯示頻率為 5000 MHz 以上 (例如 5180 MHz),且用戶端連線速率超過 72 Mbps,即確認已運作於 802.11ac 模式。
使用 NetworkManager 建立熱點時,預設會鎖定頻寬為 20 MHz。雖然運作於 5GHz 頻段,但最高理論速率限制約為 86.6 Mbps。此設定是為了確保最高的裝置相容性與連線穩定度。
另外使用nmcli設定完,nmcli會自動更新 /etc/NetworkManager/system-connections/ 目錄下的 .nmconnection。 讓設定永久保存。
Language server killed with signal SIGILL找到一個很像 language server 的 : ./bin/94...af/extensions/antigravity/bin/language_server_linux_arm
~/.antigravity-server $ ./bin/94f...6af/extensions/antigravity/bin/language_server_linux_arm --version Illegal instruction所以用 gdb 來看,用這些參數:
* `-ex "run"`: Tells GDB to start the program immediately.
* `-ex "x/i \$pc"`: This is the most important part.
* x = Examine memory.
* /i = Format the output as a CPU instruction.
* $pc = Look at the Program Counter (the exact address where the CPU stopped because of the error).
* `-ex "bt"`: Generates a Backtrace to show the function call stack leading up to the crash.
* `--batch`: Runs GDB in non-interactive mode and exits once the commands are finished.
* `--args`: Allows you to pass the binary path and any flags it needs (like --version).
結果
~/.antigravity-server $gdb -ex "run" -ex "x/i \$pc" -ex "bt" --batch --args ./bin/94...6af/extensions/antigravity/bin/language_server_linux_arm --version [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1". Program received signal SIGILL, Illegal instruction. 0x000000555d5426ac in ?? () => 0x555d5426ac: ldaddal x8, x8, [x9] #0 0x000000555d5426ac in ?? () #1 0x0000007ff7fc1cdc in ?? () from /lib/ld-linux-aarch64.so.1 #2 0x0000007ff7fd83a0 in ?? () from /lib/ld-linux-aarch64.so.1所以是 ldaddal
在沒有顯示器與鍵盤的情況下(Headless 模式),可以透過在 SD 卡的 boot 分割區中建立特定檔案,來完成系統初始化設定。
在 boot 分割區的根目錄下,建立一個檔名為 ssh 的空白檔案(不含任何副檔名)。系統在開機過程中偵測到此檔案後,會自動啟動 OpenSSH 服務並在完成後移除該檔案。
自 Raspberry Pi OS 更新後,預設不再提供預設的 pi 使用者。必須手動建立 userconf.txt 檔案來定義使用者資訊。
在 boot 分割區根目錄下建立名為 userconf.txt 的純文字檔案,其內容格式如下:
使用者名稱:加密後的密碼字串產生加密密碼字串的參考指令(以 Linux 系統為例):
echo -n "你的密碼" | openssl passwd -6 -stdin範例檔案內容:
charles-chang:$6$0k2ljc4fIQEb9rWU$fo9gJ10kBqy7dcrJqj41W3ENmKVcIBRzeazsRSAqtqadQodTZRETA5LsTjb3TfjyafIOuRfNE8QNNDFmwBrr11將設定完成的 SD 卡插入樹莓派並連接乙太網路線後送電開機。待系統啟動完成後,即可透過 SSH 客戶端連線。連線指令如下:
ssh charles-chang@raspberrypi.local或者使用分享器分配給樹莓派的 IP 地址進行連線。
首次登入後,建議立即執行 passwd 指令更換初始密碼,以確保系統安全性。