2026年3月11日 星期三

[macos] 快速設定 Mac Mini M4 32GB/1TB 並安裝設定 OpenClaw + Telegram + FileVault 排錯 @ Macbook M1


昨天弄出一個簡單的工具 macstrap ,方便未來快速批次處理 mac mini M4。然而,mac mini M4 一開始還是有幾個步驟需要人工處理的。

初次把 Mac mini 開機,過程會設定網路連線,以及設定一組帳密登入。進入系統後:
  • Sound: 聲音調成靜音
  • Energy: 開啟避免自動睡眠、電源失敗後可自動開機、網路喚醒
  • General: Sharing -> Remote Login: On
  • General: Sharing -> Remote Management: On -> 選項全開, 密碼設置, 指定使用者使用且選項全開
  • General: About -> Name -> 可以改成簡短的名稱,如 mac-mini ,好處就是可以用 ssh mac-mini.local 連線
  • 開啟 termnial -> 輸入 python3 -> 會觸動透過 Xcode 安裝 python3 環境 



如此就完成 mac mini 可被遠端操作的基本設定了,可以測試:
  • ssh user@mac-mini.local 
  • 開啟 螢幕共享 -> 輸入 mac-mini.local -> 選擇帳號登入
以上兩種就是可遠端的配置了,而多了 python3 的安裝,是為了用 macstrap 快速安置開發環境

```
% mkdir openclaw-on-mac-mini && cd openclaw-on-mac-mini
% python3 -m venv venv && source venv/bin/activate && pip install macstrap
% macstrap init --examples
% macstrap ssh-auth mac-mini.local --user user
...
✓  Passwordless SSH to mac-mini.local working.
...
✓  Sudo password stored in macOS Keychain
% macstrap run --config examples/ai-cli --config examples/openclaw  mac-mini.local 
...
```

如此系統就會安裝一些常見的 AI cli (OpenAI - Codex CLI, Google - Gemini CLI, Microsoft - Copilot CLI), Openclaw 跟 Docker Desktop 也安裝好了,而 Docker Desktop 需要登入 macOS 上先來個手動啟動,啟動後可以在設定區開啟 Start Docker Desktop when you sign into your computer,而這台 mac mini M4 是 32GB RAM 跟 1TB SSD ,因此可以多善用 Docker 來封裝一些任務做風險管控。

接著就是啟動 openclaw 的部分了,可以在 macos Desktop 啟動,也可以用 ssh 登入啟動,在此用後者:

```
% ssh user@mac-mini.local
user@mac-mini ~ % openclaw onboard

🦞 OpenClaw 2026.3.8 (3caab92)
   I'm not AI-powered, I'm AI-possessed. Big difference.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                  🦞 OPENCLAW 🦞                    
 
┌  OpenClaw onboarding
│...

```

我們採用 QuickStart ,以及 Copilot (Github + local proxy) ,而 Copilot CLI 認證方式採用 `GitHub Copilot (GitHub device login) (Uses GitHub device flow)`,且模型就挑 `GPT-5 mini` 好了

主因是 Github Copilot 在 2026-03-11 的模型費用:

```
 Search models...

  Claude Sonnet 4.5 (default) ✓                                      1x
  Claude Haiku 4.5                                                0.33x
  Claude Opus 4.6                                                    3x
  Claude Opus 4.6 (fast mode) (Preview) (requires enablement)       30x
  Claude Opus 4.5                                                    3x
  Claude Sonnet 4                                                    1x
  Gemini 3 Pro (Preview)                                             1x
  GPT-5.3-Codex                                                      1x
  GPT-5.2-Codex                                                      1x
  GPT-5.2                                                            1x
  GPT-5.1-Codex-Max                                                  1x
  GPT-5.1-Codex                                                      1x
  GPT-5.1                                                            1x
  GPT-5.1-Codex-Mini (Preview)                                    0.33x
❯ GPT-5 mini                                                         0x
  GPT-4.1                                                            0x
```

若表現太差就換到 `Claude Sonnet 4.5`

接著就是跟龍蝦溝通的方式 `Select channel (QuickStart)`

```
◆  Select channel (QuickStart)
│  ● Telegram (Bot API) (recommended · newcomer-friendly)
│  ○ WhatsApp (QR link)
│  ○ Discord (Bot API)
│  ○ IRC (Server + Nick)
│  ○ Google Chat (Chat API)
│  ○ Slack (Socket Mode)
│  ○ Signal (signal-cli)
│  ○ iMessage (imsg)
│  ○ LINE (Messaging API)
│  ○ Feishu/Lark (飞书)
│  ○ Nostr (NIP-04 DMs)
│  ○ Microsoft Teams (Bot Framework)
│  ○ Mattermost (plugin)
│  ○ Nextcloud Talk (self-hosted)
│  ○ Matrix (plugin)
│  ○ BlueBubbles (macOS app)
│  ○ Zalo (Bot API)
│  ○ Zalo (Personal Account)
│  ○ Synology Chat (Webhook)
│  ○ Tlon (Urbit)
│  ○ Skip for now
```

就是一下 Telegram 吧,設定滿簡單的,只要到 Telegram BotFather 上註冊一個 Bot 即可,過程會給予 HTTP API token ,回 OpenClaw 貼上即可。

接著 Install missing skill dependencies 的部分,就挑一下 macOS 系列: apple-notes, apple-reminders, openai-whisper 等等:

◆  Install missing skill dependencies
│  ◻ Skip for now (Continue without installing dependencies)
│  ◻ 🔐 1password
│  ◼ 📝 apple-notes (Manage Apple Notes via the `memo` CLI on macOS 
│  (create, view, edit, delete, search, move,…)
│  ◼ ⏰ apple-reminders (Manage Apple Reminders via remindctl CLI 
│  (list, add, edit, complete, delete). Supports li…)
│  ◻ 🐻 bear-notes
│  ◻ 📰 blogwatcher
│  ◻ 🫐 blucli
│  ◻ 📸 camsnap
│  ◻ 🧩 clawhub
│  ◻ 🎛️ eightctl
│  ◻ 🧲 gifgrep
│  ◻ 🎮 gog
│  ◻ 📍 goplaces
│  ◻ 📧 himalaya
│  ◻ 📨 imsg
│  ◻ 📦 mcporter
│  ◻ 📊 model-usage
│  ◻ 🍌 nano-banana-pro
│  ◻ 📄 nano-pdf
│  ◻ 💎 obsidian
│  ◼ 🎙️ openai-whisper (Local speech-to-text with the Whisper CLI (no
│   API key). — Install OpenAI Whisper (brew))
│  ◻ 💡 openhue
│  ◻ 🧿 oracle
│  ◻ 🛵 ordercli
│  ◻ 👀 peekaboo
│  ◻ 🗣️ sag
│  ◻ 🌊 songsee
│  ◻ 🔊 sonoscli
│  ◻ 🧾 summarize
│  ◻ ✅ things-mac
│  ◻ 🎞️ video-frames
│  ◻ 📱 wacli
│  ◻ 𝕏 xurl

接著 hooks 就全裝,最後就差不多搞定了。

未來想要打開設定,可以改用 openclaw dashboard 指令,將允許在 http://localhost:12345/ 類似的網址瀏覽。

這邊提一下 telegram 連線有問題的處理方式:
  1. 先在 Telegram BotFather 那邊查看 Bot 的情況,像是用 `/mybots` ,接著可以查看指定 bot 的 api token
  2. 直接在 mac mini 上編輯 ~/.openclaw/openclaw.json 檔案,確認:
    • 查看 channels.telegram 的設定,如 enabled: true, dmPolicy: pairing, 以及可以順便更新一下 botToken 等
  3. 在 mac mini 使用指令 `openclaw gateway` 運行
  4. 在 Telegram Bot 上,打 `/start` 指令
  5. 在 mac mini 使用指令 `openclaw pairing list telegram`
  6. 如果有看到配對碼,就用 `openclaw pairing approve telegram <CODE>` 生效他
如果 mac mini 重啟後,容易 Telegram 沒反應,這時可以用 ssh user@mac-mini.local 試試,若會看到 `System successfully unlocked. You may now use SSH to authenticate normally.` ,大概是因為 FileVault 的關係,可以評估一下是否關閉:

user@mac-mini ~ % fdesetup status
FileVault is On.
user@mac-mini ~ % sudo fdesetup disable
Enter the user name:user
Enter the password for user 'user':
FileVault has been disabled.
user@mac-mini ~ % fdesetup status      
FileVault is Off.

最後,設定一下開機自動執行 openclaw ,這邊單純用 crontab 管理,還有其他更佳的方案,之後再來研究:

```
user@mac-mini ~ % which openclaw
/Users/user/.nvm/versions/node/v22.22.1/bin/openclaw

user@mac-mini ~ % crontab -l
@reboot PATH=$PATH:$HOME/.nvm/versions/node/v22.22.1/bin/ $HOME/.nvm/versions/node/v22.22.1/bin/openclaw gateway >> $HOME/openclaw.log 2>&1
```

2026年3月10日 星期二

[macOS] 使用 macstrap 批次快速設定 Mac Mini M4 與架設 OpenClaw 環境 @ macOS

最近拿到一台 Mac mini M4 32GB/1TB ,之前很習慣用 Notes 貼一下快速安裝的指令,想著想著自己十多年前都在用 ansible 管理百台 Ubuntu servers ,這個年代一直貼指令微遜 XD 就 vibe coding 一下,請 AI 小弟幫忙實現工具,於是乎就長出個 macstrap 工具,其特色就是讓不熟悉 ansible 的人也能快速上手,而安裝途徑是透過 ssh remote command ,這樣搞定一台後,未來有多台 mac mini 要初始化,也可以快速搞定。

首先,先把 Mac mini 開箱後,設定好登入的帳號密碼,接著在 System Settings -> General -> Sharing -> Remote login 打開,這樣就完成很基本的 ssh 可登入機制,然而 macstrap 是基於 python 的工具,所以 Mac mini 本地需要故意打一下 python 指令觸發系統去下載安裝 Python3

接下來就是 macstrap 領域了:

```
% cd /tmp
% python3 -m venv venv
% source /tmp/venv/bin/activate
% pip install macstrap
...
% macstrap --version 
macstrap, version 1.1.0
```

初始化一些範例來用:

```
% macstrap init --exmaples
% tree -L 1 examples
examples
├── ai-cli
├── openclaw
├── php8.3-dev
└── utilities-dev

5 directories, 0 files
```

設置連上 Mac mini 的帳密,假設 Mac mini IP 是 192.168.1.100 (或 mac-mini.local) 登入帳號是 macuser 且擁有 sudo 權限:

```
% macstrap ssh-auth mac-mini.local --user macuser
```

替 192.168.1.100 (或 mac-mini.local) 安裝 AI CLI:

```
% macstrap run --config examples/ai-cli mac-mini.local
...

TASK [nvm : Install global npm packages] *****
ok: [mac-mini.local] => (item=@github/copilot)
ok: [mac-mini.local] => (item=@anthropic-ai/claude-code)
ok: [mac-mini.local] => (item=@openai/codex)
ok: [mac-mini.local] => (item=@google/gemini-cli)

...

```

安裝 OpenClaw:

```
% macstrap run --config examples/openclaw mac-mini.local
...
TASK [nvm : Install global npm packages] *****
ok: [user-macmini.local] => (item=openclaw)
...
```

接著登入 mac-mini.local 後,就可以用 openclaw onboard 啟動他來做設定:

```
% ssh macuser@mac-mini.local
Now using node v22.22.1 (npm v10.9.4)
[env] node: v22.22.1 | npm: 10.9.4 | Python 3.9.6

% openclaw onboard

🦞 OpenClaw 2026.3.8 (3caab92)
   Runs on a Raspberry Pi. Dreams of a rack in Iceland.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                  🦞 OPENCLAW 🦞                    
 
┌  OpenClaw onboarding
◇  Security ─────────────────────────────────────────────────────────────╮
│                                                                        │
│  Security warning — please read.                                       │
│                                                                        │
│  OpenClaw is a hobby project and still in beta. Expect sharp edges.    │
│  By default, OpenClaw is a personal agent: one trusted operator        │
│  boundary.                                                             │
│  This bot can read files and run actions if tools are enabled.         │
│  A bad prompt can trick it into doing unsafe things.                   │
│                                                                        │
│  OpenClaw is not a hostile multi-tenant boundary by default.           │
│  If multiple users can message one tool-enabled agent, they share      │
│  that delegated tool authority.                                        │
│                                                                        │
│  If you’re not comfortable with security hardening and access          │
│  control, don’t run OpenClaw.                                          │
│  Ask someone experienced to help before enabling tools or exposing it  │
│  to the internet.                                                      │
│                                                                        │
│  Recommended baseline:                                                 │
│  - Pairing/allowlists + mention gating.                                │
│  - Multi-user/shared inbox: split trust boundaries (separate           │
│    gateway/credentials, ideally separate OS users/hosts).              │
│  - Sandbox + least-privilege tools.                                    │
│  - Shared inboxes: isolate DM sessions (`session.dmScope:              │
│    per-channel-peer`) and keep tool access minimal.                    │
│  - Keep secrets out of the agent’s reachable filesystem.               │
│  - Use the strongest available model for any bot with tools or         │
│    untrusted inboxes.                                                  │
│                                                                        │
│  Run regularly:                                                        │
│  openclaw security audit --deep                                        │
│  openclaw security audit --fix                                         │
│                                                                        │
│  Must read: https://docs.openclaw.ai/gateway/security                  │
│                                                                        │
├────────────────────────────────────────────────────────────────────────╯
◆  I understand this is personal-by-default and shared/multi-user use requires
 lock-down. Continue?
│  ○ Yes / ● No

```

2026年2月13日 星期五

[Linux] 安裝 OpenClaw @ raspberrypi Debian 12




之前有一台 Pi 3 閒置,查了一下記憶體有 1GB ,試試看吧!先把它更新到 Debian GNU/Linux 12 (bookworm) ,接著用 nvm 安裝出 node.js v22 環境,再調整 swap 到 1GB 來跑:

```
@raspberrypi:~ $ uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm

@raspberrypi:~ $ apt policy raspberrypi-bootloader
raspberrypi-bootloader:
  Installed: 1:1.20230405-1
  Candidate: 1:1.20230405-1
  Version table:
 *** 1:1.20230405-1 500
        500 http://archive.raspberrypi.org/debian bookworm/main arm64 Packages
        100 /var/lib/dpkg/status

@raspberrypi:~ $ cat /etc/apt/sources.list.d/raspi.list
deb http://archive.raspberrypi.org/debian/ bookworm main

@raspberrypi:~ $ cat /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

@raspberrypi:~ $ lscpu
Architecture:            aarch64
  CPU op-mode(s):        32-bit, 64-bit
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               ARM
  Model name:            Cortex-A53
    Model:               4
    Thread(s) per core:  1
    Core(s) per cluster: 4
    Socket(s):           -
    Cluster(s):          1
    Stepping:            r0p4
    CPU(s) scaling MHz:  100%
    CPU max MHz:         1200.0000
    CPU min MHz:         600.0000
    BogoMIPS:            38.40
    Flags:               fp asimd evtstrm crc32 cpuid
Caches (sum of all):     
  L1d:                   128 KiB (4 instances)
  L1i:                   128 KiB (4 instances)
  L2:                    512 KiB (1 instance)
Vulnerabilities:         
  Itlb multihit:         Not affected
  L1tf:                  Not affected
  Mds:                   Not affected
  Meltdown:              Not affected
  Mmio stale data:       Not affected
  Retbleed:              Not affected
  Spec store bypass:     Not affected
  Spectre v1:            Mitigation; __user pointer sanitization
  Spectre v2:            Not affected
  Srbds:                 Not affected
  Tsx async abort:       Not affected

@raspberrypi:~ $ sudo vcgencmd measure_temp
temp=54.8'C

@raspberrypi:~ $ sudo vcgencmd measure_clock arm
frequency(48)=600062000

@raspberrypi:~ $ sudo vcgencmd get_mem gpu
gpu=76M

@raspberrypi:~ $ cat /proc/device-tree/model
Raspberry Pi 3 Model B Rev 1.2

$ cat /proc/cpuinfo | grep Model
Model : Raspberry Pi 3 Model B Rev 1.2
```

---

```
@raspberrypi:~ $ openclaw onboard

<--- Last few GCs --->

[17543:0x7fb04c0000]   229321 ms: Scavenge 451.3 (463.5) -> 450.8 (464.3) MB, pooled: 0 MB, 21.16 / 0.00 ms  (average mu = 0.614, current mu = 0.204) allocation failure; 
[17543:0x7fb04c0000]   229421 ms: Scavenge 452.0 (464.3) -> 451.5 (469.0) MB, pooled: 0 MB, 40.55 / 0.00 ms  (average mu = 0.614, current mu = 0.204) allocation failure; 


<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

 1: 0xe13218 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [openclaw]
 2: 0x11a7f8c v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [openclaw]
 3: 0x11a813c v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [openclaw]
 4: 0x13ccadc  [openclaw]
 5: 0x13e4a50 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [openclaw]
 6: 0x13bb378 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [openclaw]
 7: 0x13bc1b0 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [openclaw]
 8: 0x13972d0 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [openclaw]
 9: 0x17b0b5c v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [openclaw]
10: 0x1cc19d4  [openclaw]
```

```
@raspberrypi:~ $ free -h
               total        used        free      shared  buff/cache   available
Mem:           909Mi       209Mi       555Mi       3.8Mi       212Mi       700Mi
Swap:           99Mi        99Mi       160Ki


@raspberrypi:~ $ sudo dphys-swapfile swapoff
@raspberrypi:~ $ sudo vim /etc/dphys-swapfile
CONF_SWAPSIZE=1024
@raspberrypi:~ $ sudo dphys-swapfile setup
@raspberrypi:~ $ sudo dphys-swapfile swapon

@raspberrypi:~ $ free -h
               total        used        free      shared  buff/cache   available
Mem:           909Mi       313Mi       428Mi       5.0Mi       236Mi       596Mi
Swap:          1.0Gi          0B       1.0Gi
```

```
@raspberrypi:~ $ NODE_OPTIONS="--max-old-space-size=768" openclaw onboard

🦞 OpenClaw 2026.2.9 (33c75cb) — I read logs so you can keep pretending you don't have to.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                  🦞 OPENCLAW 🦞                    
 
┌  OpenClaw onboarding
◇  Security ──────────────────────────────────────────────────────────────────────────────╮
│                                                                                         │
│  Security warning — please read.                                                        │
│                                                                                         │
│  OpenClaw is a hobby project and still in beta. Expect sharp edges.                     │
│  This bot can read files and run actions if tools are enabled.                          │
│  A bad prompt can trick it into doing unsafe things.                                    │
│                                                                                         │
│  If you’re not comfortable with basic security and access control, don’t run OpenClaw.  │
│  Ask someone experienced to help before enabling tools or exposing it to the internet.  │
│                                                                                         │
│  Recommended baseline:                                                                  │
│  - Pairing/allowlists + mention gating.                                                 │
│  - Sandbox + least-privilege tools.                                                     │
│  - Keep secrets out of the agent’s reachable filesystem.                                │
│  - Use the strongest available model for any bot with tools or untrusted inboxes.       │
│                                                                                         │
│  Run regularly:                                                                         │
│  openclaw security audit --deep                                                         │
│  openclaw security audit --fix                                                          │
│                                                                                         │
│  Must read: https://docs.openclaw.ai/gateway/security                                   │
│                                                                                         │
├─────────────────────────────────────────────────────────────────────────────────────────╯
◆  I understand this is powerful and inherently risky. Continue?
│  ○ Yes / ● No
```

2026年1月1日 星期四

2026年,突然想用這個字了...

新年快樂

2025年9月21日 星期日

重度使用 Claude Code 五個月後...


累積到上個月,已經掏錢給 Claude 滿一年了,從一開始 claude.ai 的用法,不停地在瀏覽器上詢問,自己也開發了簡單的小工具,目的是把程式碼打包成單一檔案,方便超額後可以續作 XD 不過,這樣的生態慢慢在 2025.02 之後都改變了。我也從 vim 模式轉成 vscode + github copilot + agent mode ,然而,當我又摸熟 github copilot + agent mode 後,又轉進了 claude code 的世界,並在 2025.07 也提播助理費到百元美金 XD 好用,當然要給他加薪一下

如果要說最大的生活改變?可能就是進入到定義任務的開發模式了,以及享受慣老闆機制,凡事避開自己親自 coding ,自己不 coding 也能欣賞 AI coding,也是一種自我成長的過程,可以接納更多種的解方。

慣老闆方面也要體驗一下的,當然就想要極致壓榨 AI ,倒垃圾前、洗澡前、睡前下個指令是基本的,同時開 2-4 個 Terminal 做不同的事也是合情合理,只是到頭來自己的 context switch 反而吃重,並且隨著 AI 能力越來越強後,漸漸地收斂到同時做 1~2 件事就好,放過自己吧!

放過自己後,就是享受生活的開始,不再計較要怎樣操爆 AI ,反而是在生活時間的碎片化下,如何靠 AI 輔助串起一切,凡事盡可能規劃 Save/Load 架構,做事做到一個地步肯定要叫 AI 更新 CLAUDE.md 檔案,甚至另外規劃個 PLAN.md ,就像小老闆時時刻刻盯著 KPI 。那何謂享受?既然等待 AI 的時間慢慢拉長(AI處理的任務深度加深),就開始看一堆動畫 XD 想想倒看了不少:

  • 膽大黨
  • 阪本的日常
  • 怪獸8號
  • 薰香花朵凜然綻放
  • 治癒魔法的錯誤使用法
  • 我要架招一切
  • 我獨自升級
  • ...

現在是 2025-09-21 ,打算讓 Claude code 卸下重擔。開始試試 OpenAI codex ,從一開始對話窗上不能上傳圖片、不能工作時先打好下一道指令等等, codex 版本迭代後,基本上跟 Claude Code 的差距越來越小了。再加上 OpenAI GPT-5 的成效,其實很接近 Claude Sonnect 4 / Opus 4.1 ,只要任務定義的清楚,基本上都是一樣的。

我想,這大概就是另類的小確幸吧?AI 輔助十分競爭,各家業者的差距也在縮減。

不過,也有些殘忍的事正在發生,美國已經大量關閉新鮮人的職缺,原本認為中高階者會被新人+AI輔助取代,隨著時間已經變成新人的職缺大量縮減,因為有經驗者 + AI 輔助可以做更多的事,企業也不用等新人犯錯練等。就像十年前有錢的新創,起手式先掏錢挖走有經驗的人。

這件事在工作上也滿有感受到的,觀察到同事正進行一個尚未有經驗的任務時,原本期待 AI輔助的過程,可以讓同事朝向有效的路線發展,事實上還是很吃“提問者的提問方式“,因為 AI 也會順著提問者的思維去規劃,回歸到下 prompt 的品質依舊重要。觀察到一些計劃方向也出現繞路的情況,所幸,隨著實務經驗增加後,還是回歸了正途。這件事代表:雇用有經驗者 + AI 輔助,還是跟以往的生態一樣的,只是一個人的經驗價值,仍有可能因為 AI 的出現被貶低。

目前 開發者 與 AI 輔助仍努力的找個平衡點,應該不是 AI 的泡沫化?略知很多 AI 服務(如 Perplexity)仍是努力燒錢中,尚未損益平衡,這也是恰巧聽到矽谷 podcast ,行內在搞新創的都有時時追蹤業內的頭部,據說 Anthropic 話語權仍很好的,而整合類(沒有研發自己的 LLM且本身也沒錢研發)都非常辛苦,也怕搞 LLM 大廠推出新服務就打亂了自己的步調。

而最底層食物鏈的開發者呢?我想,真的只剩投資了 :P 只能配置好資產(大盤指數也行也夠),避免產業鏈一個瞬間轉身就...受到重傷 Orz