讓 AI 不只會聊天:透過 CLI 擴充 AI 的實際工作能力

生成式 AI 很擅長回答問題、產生程式碼、規劃系統架構與整理技術文件。

但若 AI 只能停留在聊天視窗中,它多半只能告訴你:

  • 指令應該怎麼下
  • 程式應該怎麼寫
  • 系統應該怎麼部署
  • 錯誤可能發生在哪裡

真正要讓 AI 參與開發、測試、部署與維運,就需要搭配 CLI 工具。

CLI 是 Command-Line Interface,命令列介面。透過終端機、PowerShell、Git、Docker、Python、Node.js,以及各種雲端 CLI,AI 才能把「建議」轉換為「可執行的工作流程」。

簡單來說:

聊天介面讓 AI 提供答案,CLI 則讓 AI 有機會把答案轉換成實際操作。

當開發環境準備完成後,AI 可以協助:

  • 建立專案
  • 建立資料夾與程式檔案
  • 安裝開發套件
  • 執行程式
  • 執行測試
  • 分析錯誤
  • 修改程式
  • 操作 Git
  • 建立 Docker 容器
  • 部署雲端服務
  • 操作 Firebase
  • 查詢資料庫
  • 建立 CI/CD
  • 撰寫 PowerShell 自動化腳本
  • 分析系統 Log
  • 重複執行、修正與驗證

這也是 AI Coding Agent、AI CLI、Vibe Coding 與 Agentic Development 的核心基礎。


一、什麼是 CLI?

CLI 是透過文字指令操作電腦、開發工具與雲端平台的介面。

例如,使用 Git 下載專案:

git clone https://github.com/example/project.git

使用 Docker 啟動服務:

docker compose up -d

登入 Azure:

az login

部署 Google Cloud Run:

gcloud run deploy

當 AI 開發工具具備 CLI 操作能力後,通常可以依照以下流程工作:

  1. 理解使用者需求。
  2. 檢查本機開發環境。
  3. 建立專案與資料夾。
  4. 安裝必要套件。
  5. 產生程式碼與設定檔。
  6. 執行建置。
  7. 執行測試。
  8. 分析錯誤訊息。
  9. 修改程式。
  10. 再次執行與驗證。
  11. 建立 Git Commit。
  12. 部署到測試或雲端環境。

因此,CLI 不只是工程師輸入指令的工具,也是 AI 與作業系統、開發工具及雲端平台之間的重要橋梁。


二、Windows 本機建議安裝的基礎工具

若要在 Windows 電腦上使用 AI 搭配 CLI,建議先安裝以下工具。


1. Windows Terminal

Windows Terminal 是 Windows 上的現代化終端機工具。

官方安裝說明:

https://learn.microsoft.com/zh-tw/windows/terminal/install

Windows Terminal 可以同時操作:

  • PowerShell
  • Command Prompt
  • WSL
  • SSH
  • Azure Cloud Shell
  • 各種 CLI 工具

Windows Terminal 可視為整個 CLI 開發環境的主要入口。

安裝完成後,可以從開始功能表開啟 Windows Terminal,並在不同分頁中分別執行:

  • PowerShell
  • Git
  • Docker
  • Node.js
  • Python
  • Azure CLI
  • Google Cloud CLI

2. PowerShell 7

PowerShell 是 Windows 上非常重要的命令列與自動化腳本工具。

官方安裝說明:

https://learn.microsoft.com/zh-tw/powershell/scripting/install/install-powershell-on-windows?view=powershell-7.6

PowerShell 可以用來:

  • 管理檔案與資料夾
  • 安裝軟體
  • 呼叫 REST API
  • 控制 Windows Service
  • 控制 IIS
  • 建立部署腳本
  • 建立備份腳本
  • 建立排程工作
  • 檢查網站健康狀態
  • 分析 Log
  • 操作 Git
  • 操作 Docker
  • 操作雲端 CLI
  • 建立 CI/CD 腳本

確認 PowerShell 版本:

pwsh --version

啟動 PowerShell 7:

pwsh

PowerShell 特別適合以下環境:

  • Windows Server
  • IIS
  • .NET
  • SQL Server
  • Active Directory
  • 企業內部系統
  • 自動部署
  • 自動更新
  • 系統維運

例如,AI 可以協助建立一支 PowerShell 腳本,自動完成:

  1. 下載 GitHub 最新 Release。
  2. 解壓縮檔案。
  3. 停止 IIS。
  4. 備份現有網站。
  5. 保留 appsettings.json
  6. 更新程式。
  7. 啟動 IIS。
  8. 驗證網站狀態。
  9. 失敗時自動還原。

3. Git

Git 是目前最重要的分散式版本控制工具之一。

官方網站:

https://git-scm.com/

Windows 使用者通常可以從 Git 官方網站下載 Git for Windows

Git 可以用來管理:

  • 程式碼版本
  • 修改紀錄
  • 分支
  • Commit
  • Tag
  • Merge
  • 衝突處理
  • 程式碼還原
  • 遠端 Repository
  • 團隊協作
  • CI/CD 觸發
  • Release 版本

確認 Git 是否安裝完成:

git --version

查看目前 Git 設定:

git config --list

設定使用者名稱:

git config --global user.name "Your Name"

設定電子郵件:

git config --global user.email "you@example.com"

查看設定結果:

git config --global user.name
git config --global user.email

Git 的基本工作流程

Git 最常見的操作流程如下:

工作目錄
→ 暫存區
→ 本機 Repository
→ 遠端 Repository

查看目前修改狀態:

git status

將修改加入暫存區:

git add .

建立 Commit:

git commit -m "feat: add login feature"

推送到遠端:

git push

建立新的 Git Repository

在目前資料夾初始化 Git:

git init

加入所有檔案:

git add .

建立第一個 Commit:

git commit -m "Initial commit"

設定遠端 Repository:

git remote add origin https://github.com/owner/repository.git

推送至遠端:

git branch -M main
git push -u origin main

下載既有專案

Clone Git Repository:

git clone https://github.com/owner/repository.git

進入專案:

cd repository

查看目前分支:

git branch

取得最新版本:

git pull

建立功能分支

建立並切換到新分支:

git switch -c feature/add-login

較舊的寫法:

git checkout -b feature/add-login

完成修改後:

git add .
git commit -m "feat: add login feature"
git push -u origin feature/add-login

常見 Git 指令

查看 Commit 紀錄:

git log

以精簡格式查看:

git log --oneline

查看程式修改內容:

git diff

查看已暫存的修改:

git diff --staged

查看遠端 Repository:

git remote -v

切換分支:

git switch main

合併分支:

git merge feature/add-login

建立標籤:

git tag v1.0.0

推送標籤:

git push origin v1.0.0

Git 在 AI 開發中的重要性

AI 可以快速修改大量程式碼,但修改範圍越大,風險也越高。

因此,在讓 AI 操作專案前,建議先建立 Git Commit:

git status
git add .
git commit -m "chore: backup before AI changes"

AI 修改完成後,可以透過以下指令檢查差異:

git diff

若修改錯誤,可以使用 Git 還原。

還原單一檔案:

git restore path/to/file

取消暫存:

git restore --staged path/to/file

回到上一個 Commit 前,必須先確認是否會影響尚未保存的修改。

Git 對 AI 開發最大的價值包括:

  • 保留 AI 修改前的版本
  • 比較 AI 修改內容
  • 快速找出錯誤
  • 分批提交修改
  • 容易進行程式碼審查
  • 發生問題時可以還原
  • 可與 GitHub、GitLab、CI/CD 整合

4. Docker Desktop

Docker 可以將應用程式與其執行環境封裝成容器。

官方下載:

https://www.docker.com/products/docker-desktop/

Docker 適合用來建立:

  • PostgreSQL
  • MySQL
  • Redis
  • RabbitMQ
  • Nginx
  • Elasticsearch
  • Qdrant
  • Milvus
  • AI API
  • Python 執行環境
  • .NET 執行環境
  • React 前端
  • 測試環境
  • 微服務架構

確認 Docker 是否安裝:

docker --version

確認 Docker Compose:

docker compose version

查看執行中的容器:

docker ps

查看所有容器:

docker ps -a

例如,使用 Docker 建立 PostgreSQL:

docker run --name postgres-dev `
  -e POSTGRES_USER=postgres `
  -e POSTGRES_PASSWORD=YourPassword `
  -e POSTGRES_DB=appdb `
  -p 5432:5432 `
  -d postgres

AI 可以協助產生:

  • Dockerfile
  • docker-compose.yml
  • Volume
  • Network
  • Health Check
  • 環境變數
  • 多階段建置
  • 正式環境映像檔
  • 容器啟動腳本

5. Node.js

Node.js 是 JavaScript 與 TypeScript 的執行環境。

官方網站:

https://nodejs.org/zh-tw

Node.js 常用於:

  • React
  • Vue
  • Angular
  • Next.js
  • Nuxt
  • Vite
  • Three.js
  • Express
  • NestJS
  • MCP Server
  • AI CLI
  • 自動化工具
  • 前端建置

確認 Node.js:

node --version

確認 npm:

npm --version

建立 Vite 專案:

npm create vite@latest

安裝套件:

npm install

啟動開發環境:

npm run dev

建立正式版本:

npm run build

AI 可以透過 Node.js CLI 協助:

  • 建立 React 專案
  • 安裝 UI 套件
  • 建立 API
  • 建立 Three.js 場景
  • 執行 ESLint
  • 執行測試
  • 建立 Production Build
  • 分析 npm 安裝錯誤

6. Python 或 Anaconda

Python 是 AI、機器學習、資料分析、自動化與後端 API 常用的程式語言。

Python 官方下載:

https://www.python.org/downloads/

Anaconda 下載:

https://www.anaconda.com/download

Python 常見用途包括:

  • OpenAI API
  • Azure OpenAI
  • RAG
  • Embedding
  • 向量資料庫
  • 機器學習
  • 深度學習
  • OCR
  • Whisper
  • YOLO
  • 資料分析
  • Excel 處理
  • 網頁爬蟲
  • FastAPI
  • Flask
  • 自動化腳本

確認 Python:

python --version

確認 pip:

pip --version

建立虛擬環境:

python -m venv .venv

啟用虛擬環境:

.\.venv\Scripts\Activate.ps1

安裝套件:

pip install fastapi uvicorn openai

輸出套件清單:

pip freeze > requirements.txt

安裝專案套件:

pip install -r requirements.txt

Anaconda 則特別適合:

  • Jupyter Notebook
  • 資料科學
  • AI 模型研究
  • 多 Python 環境管理
  • 機器學習套件管理
  • 教學與實驗環境

三、如果要建立雲端服務

若希望 AI 協助建立或部署雲端服務,應安裝對應平台的官方 CLI。


1. Google Cloud CLI

官方網站:

https://cloud.google.com/cli

Google Cloud CLI 的主要指令為:

gcloud

可操作:

  • Cloud Run
  • Compute Engine
  • Cloud Storage
  • Cloud SQL
  • Google Kubernetes Engine
  • Artifact Registry
  • Secret Manager
  • Cloud Functions
  • IAM
  • Service Account
  • VPC
  • Load Balancer

登入 Google Cloud:

gcloud auth login

查看帳號:

gcloud auth list

查看專案:

gcloud projects list

設定預設專案:

gcloud config set project YOUR_PROJECT_ID

查看目前設定:

gcloud config list

設定預設區域:

gcloud config set run/region asia-east1

部署 Cloud Run:

gcloud run deploy

AI 可以根據需求協助:

  1. 建立 Google Cloud 專案。
  2. 啟用相關 API。
  3. 建立 Artifact Registry。
  4. 建立 Docker Image。
  5. 推送映像檔。
  6. 建立 Cloud Run。
  7. 設定 Secret Manager。
  8. 設定環境變數。
  9. 設定自訂網域。
  10. 建立自動部署腳本。

2. Firebase CLI

官方文件:

https://firebase.google.com/docs/cli?hl=zh-cn

Firebase CLI 通常透過 npm 安裝:

npm install -g firebase-tools

確認版本:

firebase --version

登入:

firebase login

查看專案:

firebase projects:list

初始化 Firebase:

firebase init

切換專案:

firebase use PROJECT_ID

部署:

firebase deploy

Firebase CLI 可管理:

  • Firebase Hosting
  • Firestore
  • Authentication
  • Cloud Functions
  • Storage
  • Emulator
  • Remote Config
  • App Hosting
  • Security Rules

AI 可以協助建立:

  • firebase.json
  • Firestore Rules
  • Storage Rules
  • Functions 專案
  • Hosting 設定
  • Emulator 設定
  • CI/CD 部署流程

3. Azure CLI

官方安裝說明:

https://learn.microsoft.com/zh-tw/cli/azure/install-azure-cli?view=azure-cli-latest

Azure CLI 的主要指令為:

az

登入 Azure:

az login

查看訂閱:

az account list --output table

設定訂閱:

az account set --subscription "訂閱名稱或訂閱 ID"

建立 Resource Group:

az group create `
  --name DemoResourceGroup `
  --location eastasia

Azure CLI 可操作:

  • App Service
  • Azure Functions
  • Container Apps
  • Azure Kubernetes Service
  • Azure SQL
  • PostgreSQL Flexible Server
  • Storage Account
  • Key Vault
  • Azure OpenAI
  • Virtual Machine
  • Azure Container Registry
  • Application Insights
  • Azure Monitor
  • Service Bus
  • Redis

AI 可以根據需求產生:

  • 建立資源腳本
  • 更新部署腳本
  • 環境變數設定
  • Key Vault 設定
  • 網路安全設定
  • Application Insights 監控
  • 刪除測試環境腳本

四、資料庫工具

AI 應用通常需要儲存:

  • 使用者資料
  • 系統設定
  • 對話紀錄
  • 文件索引
  • Embedding
  • 分析結果
  • 操作 Log
  • 任務狀態
  • 權限資料
  • AI Agent 執行紀錄

因此,資料庫也是 AI CLI 開發環境的重要部分。


1. PostgreSQL

下載網址:

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

PostgreSQL 適合:

  • 企業管理系統
  • SaaS
  • AI 應用
  • RAG
  • JSON 資料
  • 全文檢索
  • 地理資訊
  • 向量搜尋
  • 多租戶系統

搭配 pgvector 後,PostgreSQL 也可以儲存與搜尋 Embedding。

確認 PostgreSQL CLI:

psql --version

連線本機 PostgreSQL:

psql -h localhost -U postgres

指定資料庫:

psql -h localhost -U postgres -d appdb

建立資料庫:

CREATE DATABASE ai_demo;

查看資料庫:

\l

查看資料表:

\dt

離開:

\q

2. pgAdmin

官方網站:

https://www.pgadmin.org/

pgAdmin 是 PostgreSQL 的圖形化管理工具,可用來:

  • 建立資料庫
  • 建立資料表
  • 執行 SQL
  • 管理帳號
  • 管理權限
  • 查看連線
  • 備份
  • 還原
  • 查看效能

CLI 適合自動化,pgAdmin 適合視覺化管理,兩者可以搭配使用。


3. SQLite

官方網站:

https://www.sqlite.org/

SQLite 是輕量級嵌入式資料庫,不需要獨立資料庫伺服器。

適合:

  • 桌面程式
  • 手機 App
  • 小型系統
  • 單機工具
  • PoC
  • 快速雛型
  • 開發測試
  • 本機 AI 工具
  • 小型 RAG

資料通常儲存在單一檔案中,例如:

app.db

開啟資料庫:

sqlite3 app.db

查看資料表:

.tables

查看資料表結構:

.schema users

離開 SQLite:

.quit

4. DB Browser for SQLite

官方網站:

https://sqlitebrowser.org/

DB Browser for SQLite 可以透過圖形化介面:

  • 開啟 SQLite
  • 查看資料表
  • 編輯資料
  • 執行 SQL
  • 匯入 CSV
  • 匯出 CSV
  • 查看索引
  • 修改資料表結構

當 AI 產生 SQLite 專案後,可以使用 DB Browser 驗證資料是否正確。


五、版本控制與遠端平台 CLI

Git、GitHub CLI 與 GitLab CLI 是不同層級的工具。

可以簡單理解為:

工具主要用途
Git管理本機與遠端程式碼版本
GitHub CLI操作 GitHub 平台功能
GitLab CLI操作 GitLab 平台功能

GitHub CLI 與 GitLab CLI 不能取代 Git。

一般情況下,應先安裝 Git,再安裝 GitHub CLI 或 GitLab CLI。


1. Git

官方網站:

https://git-scm.com/

Git 負責:

  • Clone
  • Add
  • Commit
  • Pull
  • Push
  • Branch
  • Merge
  • Tag
  • Diff
  • Restore

例如:

git clone https://github.com/owner/repository.git
git switch -c feature/new-page
git add .
git commit -m "feat: add new page"
git push -u origin feature/new-page

2. GitHub CLI

官方網站:

https://cli.github.com/

GitHub CLI 的主要指令是:

gh

登入 GitHub:

gh auth login

查看登入狀態:

gh auth status

建立 Repository:

gh repo create

下載 Repository:

gh repo clone owner/repository

建立 Issue:

gh issue create

查看 Issue:

gh issue list

建立 Pull Request:

gh pr create

查看 Pull Request:

gh pr list

查看 GitHub Actions:

gh run list

查看執行結果:

gh run view

查看失敗 Log:

gh run view --log-failed

GitHub CLI 可讓 AI 協助:

  • 建立 Repository
  • 建立 Issue
  • 建立 Pull Request
  • 查看 Review
  • 分析 GitHub Actions
  • 下載 Release
  • 建立 Release
  • 管理 Workflow
  • 管理 GitHub 專案

3. GitLab CLI

GitLab CLI 發布頁:

https://gitlab.com/gitlab-org/cli/-/releases

GitLab CLI 的主要指令為:

glab

登入 GitLab:

glab auth login

GitLab CLI 可以連線:

  • GitLab.com
  • 自建 GitLab Server

查看 Issue:

glab issue list

建立 Issue:

glab issue create

查看 Merge Request:

glab mr list

建立 Merge Request:

glab mr create

查看 Pipeline:

glab pipeline list

查看 CI 狀態:

glab ci status

GitLab CLI 可讓 AI 協助:

  • 建立 Issue
  • 建立 Merge Request
  • 查看 Pipeline
  • 建立 Release
  • 分析 CI/CD
  • 操作自建 GitLab
  • 管理專案工作流程

需要注意:

GitLab CLI 負責管理 GitLab 平台,真正執行 CI/CD 工作的元件仍是 GitLab Runner。


六、AI 搭配 CLI 可以做哪些事情?


1. 建立網站專案

提示詞範例:

請使用 Vite 建立 React TypeScript 專案。

需求:
- 使用 React
- 使用 TypeScript
- 使用 Tailwind CSS
- 建立首頁
- 建立登入頁
- 建立後台 Dashboard
- 使用 React Router
- 安裝套件
- 執行 npm run build
- 修正所有建置錯誤

AI 可以協助執行:

npm create vite@latest
npm install
npm install react-router-dom
npm run build

並建立:

  • React 元件
  • 路由
  • 表單
  • Dashboard
  • API Service
  • CSS
  • 環境變數

2. 建立 Python API

提示詞範例:

請建立一個 Python FastAPI 專案。

需求:
- 提供健康檢查 API
- 提供使用者登入 API
- 提供 AI 問答 API
- 使用 SQLite
- 使用 SQLAlchemy
- 建立 requirements.txt
- 建立單元測試
- 啟動後驗證 API

AI 可以建立:

app/
├─ main.py
├─ database.py
├─ models.py
├─ schemas.py
├─ services/
├─ routers/
├─ tests/
├─ requirements.txt
└─ README.md

並執行:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install fastapi uvicorn sqlalchemy pytest
uvicorn app.main:app --reload
pytest

3. 建立 Docker 環境

提示詞範例:

請將目前 FastAPI 專案容器化。

需求:
- 建立 Dockerfile
- 建立 docker-compose.yml
- 建立 PostgreSQL
- 建立 Redis
- 建立健康檢查
- 使用環境變數
- 啟動後測試 API

AI 可以執行:

docker compose up -d --build

查看容器:

docker compose ps

查看 Log:

docker compose logs -f

4. 部署 Google Cloud

提示詞範例:

我要在 Google Cloud 建立一個網頁服務。

請使用 gcloud CLI 協助規劃與部署。

需求:
- Python FastAPI
- 使用 Docker
- 部署至 Cloud Run
- 區域使用 asia-east1
- 使用 Artifact Registry
- 使用 Secret Manager 儲存 API Key
- 設定環境變數
- 提供部署與刪除腳本
- 建立付費資源前先列出資源清單

AI 可以依序協助:

  1. 檢查 gcloud。
  2. 登入帳號。
  3. 設定 Project。
  4. 啟用 API。
  5. 建立 Artifact Registry。
  6. 建立 Docker Image。
  7. 推送 Image。
  8. 建立 Secret。
  9. 部署 Cloud Run。
  10. 驗證服務網址。

5. 部署 Azure 服務

提示詞範例:

請使用 Azure CLI 部署一個 .NET Web API。

需求:
- 建立 Resource Group
- 建立 Linux App Service
- 建立 PostgreSQL Flexible Server
- 使用 Key Vault
- 使用 Application Insights
- 設定正式環境變數
- 提供建立、更新與刪除腳本

AI 可以產生與執行:

  • az group create
  • az appservice plan create
  • az webapp create
  • az postgres flexible-server create
  • az keyvault create
  • az monitor app-insights component create

6. 操作 Firebase

提示詞範例:

請使用 Firebase CLI 建立一個 React 網站。

需求:
- 使用 Firebase Hosting
- 使用 Firestore
- 使用 Authentication
- 建立 Security Rules
- 建立本機 Emulator
- 建立 GitHub Actions 自動部署

AI 可以協助執行:

firebase login
firebase init
firebase emulators:start
firebase deploy

7. 操作 Git 與 GitHub

提示詞範例:

請檢查目前專案修改內容。

接著:
1. 建立 feature/login 分支。
2. 將修改分成合理的 Commit。
3. 推送到 GitHub。
4. 使用 GitHub CLI 建立 Pull Request。
5. 在 Pull Request 說明中列出修改內容與測試結果。

AI 可能執行:

git status
git diff
git switch -c feature/login
git add .
git commit -m "feat: add login feature"
git push -u origin feature/login
gh pr create

8. 操作 Git 與 GitLab

提示詞範例:

請分析目前修改內容。

接著:
1. 建立 feature/report 分支。
2. 建立 Commit。
3. 推送到公司自建 GitLab。
4. 使用 glab 建立 Merge Request。
5. 檢查 GitLab Pipeline。

AI 可能執行:

git switch -c feature/report
git add .
git commit -m "feat: add report module"
git push -u origin feature/report
glab mr create
glab pipeline list

9. 自動管理 Windows 與 IIS

提示詞範例:

請使用 PowerShell 建立網站自動更新腳本。

流程:
1. 從 GitHub Release 取得最新版本。
2. 下載 ZIP。
3. 驗證檔案。
4. 解壓縮。
5. 停止 IIS App Pool。
6. 備份目前網站。
7. 保留 appsettings.json。
8. 更新其他程式檔案。
9. 啟動 IIS App Pool。
10. 呼叫健康檢查網址。
11. 失敗時還原。
12. 將完整過程寫入 Log。

AI 可以協助:

  • 撰寫腳本
  • 執行腳本
  • 分析權限錯誤
  • 驗證 IIS
  • 驗證網址
  • 建立失敗還原機制

七、如何撰寫適合 AI CLI 的提示詞?

不建議只寫:

幫我建立一個網站。

這類提示詞過於模糊,AI 很難判斷:

  • 使用什麼程式語言
  • 使用什麼框架
  • 是否使用 Docker
  • 是否需要資料庫
  • 是否需要部署
  • 可以操作哪些 CLI
  • 是否可以安裝套件
  • 是否可以修改現有檔案

建議至少包含以下內容:

  1. 目標。
  2. 技術架構。
  3. 執行環境。
  4. 可使用工具。
  5. 功能需求。
  6. 驗證方式。
  7. 權限限制。
  8. 安全限制。
  9. 部署平台。
  10. 最終交付內容。

建議提示詞模板

你是一位資深軟體架構師、AI 工程師與 DevOps 工程師。

請在目前目錄建立一個可執行的專案。

技術需求:
- 前端:React、TypeScript
- 後端:Python FastAPI
- 資料庫:PostgreSQL
- 快取:Redis
- 容器:Docker Compose
- 雲端:Google Cloud Run
- 版本控制:GitHub

可使用工具:
- PowerShell
- Git
- GitHub CLI
- Python CLI
- Node.js CLI
- Docker CLI
- gcloud CLI

執行要求:
1. 先檢查所有必要工具是否安裝。
2. 查看目前資料夾與既有檔案。
3. 不要直接覆蓋重要檔案。
4. 建立專案結構。
5. 安裝必要套件。
6. 建立資料庫設定。
7. 建立 Dockerfile 與 docker-compose.yml。
8. 建立健康檢查 API。
9. 建立單元測試。
10. 執行建置與測試。
11. 修正所有錯誤。
12. 建立 Git 分支與 Commit。
13. 提供 Cloud Run 部署腳本。
14. 涉及付費資源前,先列出資源與可能費用。
15. 不要將密碼、Token 或 API Key 寫入 Git。

八、網頁 3D 與程式 3D 工具選擇


網頁 3D:Three.js

Three.js 是基於 WebGL 的 JavaScript 3D 函式庫。

適合:

  • 網頁 3D 展示
  • 產品模型展示
  • 3D 模型檢視器
  • 互動式場景
  • 數位孿生介面
  • WebXR
  • 教學模擬
  • 網頁小遊戲
  • 工業設備視覺化

安裝 Three.js:

npm install three

建立 Vite 專案:

npm create vite@latest threejs-demo
cd threejs-demo
npm install
npm install three
npm run dev

Three.js 可以搭配:

  • React Three Fiber
  • Drei
  • Vite
  • Blender
  • GLTF
  • GLB
  • WebXR
  • Cannon.js
  • Rapier

提示詞範例:

請使用 Vite、TypeScript 與 Three.js 建立 3D 網頁。

需求:
- 建立地板
- 建立環境光
- 建立方向光
- 載入 GLB 模型
- 支援滑鼠旋轉
- 支援模型縮放
- 支援物件點擊
- 顯示物件資訊
- 加入載入進度
- 加入效能統計
- 執行 npm run build 驗證

程式、遊戲與工業模擬:Unity

Unity 是跨平台 2D/3D 開發引擎,主要使用 C#。

適合:

  • Windows 3D 程式
  • 手機 App
  • 3D 遊戲
  • AR
  • VR
  • 工業模擬
  • 教育訓練
  • 數位孿生
  • 物理模擬
  • 互動式展示

Unity 適合需要以下能力的專案:

  • 角色控制
  • 動畫系統
  • 物理引擎
  • 碰撞偵測
  • 多平台輸出
  • VR/AR 裝置
  • 複雜場景管理
  • 手機感測器
  • 工業設備模擬

工具選擇參考:

使用情境建議工具
網頁顯示 3D 模型Three.js
網頁互動 3D 場景Three.js
網頁產品展示Three.js
網頁輕量遊戲Three.js
Windows 3D 程式Unity
手機 3D AppUnity
AR/VR 應用Unity
完整 3D 遊戲Unity
工業模擬Unity
教育訓練模擬Unity

九、安全與權限管理

AI 能操作 CLI,代表它也可能執行具有破壞性的指令。

因此,必須建立明確的安全界線。


1. 不要將密碼寫入提示詞或程式碼

避免直接提供:

  • 密碼
  • API Key
  • Access Token
  • GitHub Token
  • GitLab Token
  • 資料庫密碼
  • SSH Private Key
  • Service Account Key
  • Azure Client Secret

建議使用:

  • 環境變數
  • .env
  • User Secrets
  • Azure Key Vault
  • Google Secret Manager
  • GitHub Secrets
  • GitLab CI/CD Variables

.gitignore 建議包含:

.env
.env.*
*.key
*.pem
appsettings.Production.json
secrets.json
service-account.json

2. 執行刪除指令前必須確認

以下指令可能造成嚴重影響:

Remove-Item -Recurse -Force
rm -rf
docker system prune -a
az group delete
gcloud projects delete
git reset --hard
git clean -fd

執行前應先:

  • 顯示操作目標
  • 顯示實際路徑
  • 顯示預計刪除內容
  • 建立備份
  • 建立 Git Commit
  • 優先在測試環境操作
  • 避免直接操作正式環境

3. 使用 Git 保護程式碼

AI 大量修改程式前,先執行:

git status
git add .
git commit -m "chore: snapshot before AI changes"

修改完成後檢查:

git diff
git status

這樣可以:

  • 查看 AI 改了什麼
  • 找出不合理修改
  • 分批審查
  • 還原錯誤
  • 保留歷史紀錄

4. 區分不同環境

建議至少區分:

Development
Testing
Staging
Production

AI 初期應優先操作:

  • Development
  • Testing
  • 個人雲端專案
  • 測試用 Resource Group
  • 測試用 Git 分支
  • 測試資料庫

避免一開始就讓 AI 取得 Production 最高權限。


5. 使用最小權限原則

AI 使用的帳號、Token 或 Service Account,只應取得必要權限。

例如:

  • 部署 Cloud Run 不一定需要 Project Owner
  • 建立 Pull Request 不需要 Repository Admin
  • 查詢資料庫不一定需要 DROP 權限
  • 讀取 Log 不需要系統管理員權限
  • Firebase 部署不一定需要完整 Google Cloud 管理權限

十、安裝完成後的環境檢查

可以使用 PowerShell 快速檢查常用工具是否存在:

$commands = @(
    "pwsh",
    "git",
    "docker",
    "node",
    "npm",
    "python",
    "pip",
    "gcloud",
    "firebase",
    "az",
    "gh",
    "glab",
    "psql",
    "sqlite3"
)

foreach ($command in $commands) {
    $result = Get-Command $command -ErrorAction SilentlyContinue

    if ($result) {
        Write-Host "[OK] $command" -ForegroundColor Green
    }
    else {
        Write-Host "[Missing] $command" -ForegroundColor Yellow
    }
}

也可以進一步檢查版本:

$versionCommands = @{
    "PowerShell" = "pwsh --version"
    "Git"        = "git --version"
    "Docker"     = "docker --version"
    "Node.js"    = "node --version"
    "npm"        = "npm --version"
    "Python"     = "python --version"
    "pip"        = "pip --version"
    "gcloud"     = "gcloud version"
    "Firebase"   = "firebase --version"
    "Azure CLI"  = "az version"
    "GitHub CLI" = "gh --version"
    "GitLab CLI" = "glab --version"
    "PostgreSQL" = "psql --version"
    "SQLite"     = "sqlite3 --version"
}

foreach ($item in $versionCommands.GetEnumerator()) {
    Write-Host "`n=== $($item.Key) ===" -ForegroundColor Cyan

    try {
        Invoke-Expression $item.Value
    }
    catch {
        Write-Host "未安裝或無法執行" -ForegroundColor Yellow
    }
}

十一、建議的 AI CLI 基礎工具組合

初學者可先安裝:

Windows Terminal
+ PowerShell 7
+ Git
+ Node.js
+ Python
+ Docker Desktop

需要使用 GitHub 時,再安裝:

GitHub CLI

需要使用 GitLab 時,再安裝:

GitLab CLI

需要部署 Google Cloud 時,再安裝:

Google Cloud CLI
+ Firebase CLI

需要部署 Azure 時,再安裝:

Azure CLI

需要開發資料庫應用時,可安裝:

PostgreSQL
+ pgAdmin
+ SQLite
+ DB Browser for SQLite

十二、結論

AI 能不能真正參與軟體開發,不只取決於模型本身是否聰明,也取決於它能使用哪些工具。

只有聊天能力時,AI 通常可以:

  • 提供建議
  • 產生程式碼
  • 解釋錯誤
  • 規劃架構
  • 撰寫指令

搭配 CLI 後,AI 則可以進一步協助:

  • 建立專案
  • 建立檔案
  • 安裝套件
  • 執行程式
  • 執行測試
  • 修正錯誤
  • 操作 Git
  • 建立分支與 Commit
  • 建立 Pull Request
  • 建立 Merge Request
  • 建立 Docker 容器
  • 操作資料庫
  • 部署雲端
  • 建立 CI/CD
  • 執行系統維運
  • 產生自動化腳本
  • 驗證最終結果

其中,Git 是 AI 開發流程中非常重要的安全基礎。

Git 可以讓開發者清楚知道:

  • AI 修改了哪些檔案
  • AI 修改了哪些程式碼
  • 哪一個版本發生問題
  • 是否需要還原
  • 是否可以進行程式碼審查

因此,建議至少準備以下環境:

Windows Terminal
+ PowerShell 7
+ Git
+ Node.js
+ Python
+ Docker
+ GitHub CLI 或 GitLab CLI
+ Azure CLI 或 Google Cloud CLI

完成安裝後,可以在提示詞中清楚告訴 AI:

你可以使用 PowerShell、Git、Python、Node.js、Docker 與雲端 CLI。

請先檢查目前環境與 Git 狀態,再開始修改。

執行過程中:
1. 不要直接覆蓋重要檔案。
2. 不要刪除未確認的檔案。
3. 修改前先建立 Git 分支。
4. 修改後執行建置與測試。
5. 顯示完整錯誤訊息。
6. 修正後再次驗證。
7. 不要將密碼與 Token 寫入 Git。
8. 涉及雲端付費資源前,先列出預計建立的資源。

當 AI、CLI、Git、Docker、程式語言與雲端平台整合後,AI 就不再只是回答技術問題的聊天工具,而是能夠參與規劃、開發、測試、版本控制、部署與維運的工程協作工具。

SQLite 推新版本~修復資料庫損壞漏洞以及漂亮呈現的QRF(Query Result Formatter)

SQLite 是全世界應用最廣泛的嵌入式資料庫引擎,從手機 App、瀏覽器到物聯網裝置都能看到它的身影。2026 年 7 月 24 日發布的 3.53.4 版本,除了修補前幾個小版本(3.53.1~3.53.3)遺留的問題外,也整合了自 3.53.0 以來累積的多項重要功能。以下用淺顯的方式,把這次更新拆解成幾個重點面向來介紹。

一、最值得關心的修復:資料庫損壞漏洞

這次更新最關鍵的一項,是修復了與 WAL(Write-Ahead Log,預寫式日誌)重置有關的資料庫損壞問題。WAL 是 SQLite 用來提升寫入效能與並行處理能力的機制,一旦這個環節出錯,最壞情況可能導致資料庫檔案損毀。對一般使用者來說,這代表:只要有使用資料庫寫入操作的應用程式,都建議儘快升級到這個版本,以避免潛在的資料遺失風險。

二、新增QRF(Query Result Formatter)

QRF(Query Result Formatter)是這次版本很有特色的新功能,簡單來說,它能把 SQL 查詢結果自動排版成整齊的表格,方便在文字介面(例如命令列視窗)中閱讀,例如數字會自動靠右對齊、輸出以框線字元組成表格。這對於習慣用命令列工具查資料庫的工程師或維運人員來說,等於是「不用額外工具,資料庫自己就把報表排版好了」。目前互動式命令列(CLI)已預設採用這種新格式,而批次執行(例如寫腳本自動跑 SQL)則仍維持舊格式,避免既有自動化流程被打亂。

三、SQL 語法更靈活

這次也強化了 SQL 語言本身的能力,重點包括:

  • ALTER TABLE 更彈性:現在可以直接新增或移除欄位的 NOT NULL、CHECK 限制條件,不需要像以前一樣重建整張表。
  • REINDEX EXPRESSIONS:可以單獨重建「表達式索引」(例如根據函數運算結果建立的索引),用來修復索引過期失效的問題。
  • VACUUM INTO 加強:備份資料庫時可以透過 URI 參數指定保留空間大小,方便預留未來成長空間。
  • 新增了 json_array_insert()jsonb_array_insert() 兩個 JSON 處理函數,讓操作 JSON 陣列更方便。

四、查詢效能與規劃器的優化

SQLite 的「查詢規劃器」負責決定一條 SQL 該怎麼執行最有效率,這次做了幾項調整:對於 EXCEPT、INTERSECT、UNION 這類集合運算,一律改用排序合併演算法,官方說明這樣「幾乎總是」比雜湊表快;另外也改善了多表格連接(JOIN)時的順序選擇邏輯,減少不必要的運算。對開發者而言,這些改動通常不需要修改任何程式碼,資料庫會自動跑得更快。

五、浮點數精度改變 — 需要留意的相容性議題

比較值得注意的是,浮點數與文字互相轉換的精度,預設從過去的 15 位有效數字,提升到 17 位。這代表數字顯示可能比以前更精確,但也可能讓某些依賴舊有顯示格式的程式或測試出現差異。如果需要維持舊行為,可以透過 SQLITE_DBCONFIG_FP_DIGITS 設定調整回來。這是一個「預設值改變」型的更新,建議有大量數值運算的系統在升級前先做測試。

六、命令列工具(CLI)多項細節優化

命令列工具本身也有不少貼心的小改進,例如 .timer 指令可以設定只計時下一句 SQL、.progress 可以設定逾時自動中斷查詢、.indexes 指令的搜尋邏輯改為比對索引名稱本身(而非資料表名稱),讓搜尋功能真正符合預期。另外要特別提醒:點指令結尾若有沒加引號的分號,現在會被直接忽略,這是一項可能造成相容性問題的改變,若有腳本依賴舊行為,需要特別檢查。

七、其他技術亮點

新增了多個 C 語言介面函數,方便進階開發者操作字串緩衝區與虛擬表;Session 擴充功能新增了逐項新增變更的介面,方便做資料同步;JavaScript/WASM 版本則新增了 opfs-wl 檔案系統選項,透過瀏覽器的 Web Locks 機制達到更公平的鎖定共享,不過需要較新版本的瀏覽器支援。

重點總結

如果只想記住三件事:第一,這個版本修了一個可能造成資料庫損壞的漏洞,建議儘快升級;第二,新增的 QRF 讓命令列查詢結果變得更好讀;第三,浮點數精度與分號規則有變動,升級前建議簡單測試一下既有系統是否受影響。

需要特別說明的是,官方頁面提到 3.53.4 這個修補版本,主要是為了修正前幾個版本(3.53.1 至 3.53.3)中「主要由人工智慧引起的問題」,詳細細節官方僅指向提交紀錄,並未在頁面上進一步展開說明。

LINE 開發者的 2026 年中震撼彈:Rate Limit 被腰斬 99.5%、帳號終於能「刪除重來」,還有那個消失的最小化按鈕

身為一個每天跟 LINE Messaging API、LIFF 混在一起的 .NET 開發者,我必須說 2026 年這個五月到七月,LINE 官方明顯是把「改版」這件事當成連續劇在更新,一集接一集,還時不時來個「未完待續」。這篇就把這段期間比較有感的更新,一次幫大家整理清楚,順便碎念幾句。

一、Rich Menu 終於有「數據」可以看了,不用再靠感覺

7 月 1 日這天,Messaging API 新增了兩支端點:取得 rich menu 洞察總覽、取得每日洞察數據。以前如果你的圖文選單是用 Messaging API 建的,你只能默默祈禱使用者有點下去;現在終於可以像用 LINE Official Account Manager 建的選單一樣,看到「顯示次數」跟「點擊次數」了。有趣的是官方特別強調,這兩套數據是互不相通的:API 建的選單看不到後台的數據,後台建的選單也看不到 API 的數據。所以如果你們家專案是兩種方式混用,記得數據要分開看,不然老闆問起「圖文選單成效」,你可能要交出兩份報告。

二、Rate Limit 被砍到只剩 0.5%,這是要逼死誰

這大概是整個五月最有戲劇張力的一則公告。5 月 7 日官方先預告:Get rich menu list 這支端點的速率限制,將從每秒 2000 次,改成每秒 10 次。沒錯,你沒看錯,是從 2000 掉到 10,砍幅超過 99%。然後 5 月 26 日,這件事真的發生了。

Get rich menu list
之前:2,000 requests / 秒
之後:   10 requests / 秒

如果你的系統有那種「每次使用者互動就順手查一次 rich menu 清單」的懶惰寫法,這波更新等於直接把你的架構考卷發回來重寫。建議是把清單資料快取起來,別再每次都問 LINE 要清單,畢竟現在問一次的成本,可能比你想像中貴很多。

三、LINE MINI App 內購:免費試用期結束,該收錢了

LINE MINI App 的應用內購買功能,原本佛心來著開放免費使用到 6 月底,官方在 6 月 5 日先預告、7 月 1 日正式上路:從 7 月 1 日之後的交易開始收取服務費用,費率則是以你申請當下公告的費率為準。同時官方也順手修訂了《LINE 應用內購買服務條款》,主要是把費用計算與請款結算方式講得更清楚。如果你們家產品有掛 MINI App 內購,這波記得回頭檢查一下財務試算,別讓會計部門措手不及。

四、日本認證 MINI App 可以跟 Business Manager 組織「牽紅線」了

6 月 10 日這則比較偏在地化:日本地區的已驗證 MINI App,現在可以把 MINI App 頻道連結到 Business Manager 組織,進而跟同組織底下的其他服務(目前支援 LINE 官方帳號)做整合。條件不少,包括地區都要設成日本、服務提供者跟已發布資料的營運公司要一致等等,細節偏繁瑣,但方向很明確:LINE 想把底下這些帳號體系越串越緊,官方也說未來會開放更多整合功能,值得先卡個位。

五、開發者帳號終於可以「刪除」了,但這是不歸路

6 月 24 日的更新算是補了一個长期缺口:LINE Developers Console 終於支援刪除開發者帳號。不過這裡有個重點要劃起來——刪除之後不能復原。而且如果你是某個 Provider 或 Channel 底下唯一的 Admin,刪除前系統會要求你先把權限交接給其他帳號,不然那個服務就等於被鎖死,沒人能再進去改設定。所以與其說這是「刪除帳號」功能,不如說它是一個「離職交接檢查表」,公司內部帳號有異動的話,記得先做好交接再按下去。

六、LIFF 悄悄升級了兩次,但你可能完全沒感覺

5 月 13 日發布 LIFF v2.29.0,6 月 29 日再發布 v2.29.1,兩次都寫著同一句話:只調整 SDK 內部行為,功能沒有變化。這種更新最適合「设了自動更新就不用管」,如果你是走 CDN edge path(https://static.line-scdn.net/liff/edge/2/sdk.js),會自動吃到新版;如果是 npm 使用者,記得手動更新一下:

bash
npm install @line/liff@2.29.1
# 或
yarn add @line/liff@2.29.1

雖然官方說功能沒變,但內部行為調整這種話,老實講我都會半信半疑地多測一輪回歸測試,你們也是吧?

七、LIFF 瀏覽器大改版:多分頁圖示退場,換成三顆點點

5 月 19 日這則跟 UI/UX 關係最大:從 LINE 26.7.0 版開始,LIFF 瀏覽器的標頭規格整個翻新。原本那顆代表「多分頁檢視」的按鈕圖示,換成了直式三個點的選單圖示;點下去也不再直接跳去分頁畫面,而是彈出一個下拉選單,裡面塞了全部分頁、重新整理、最小化瀏覽器、分享、加到主畫面、我的最愛、權限設定、關於此服務、回報問題等一長串選項。另外,已驗證 MINI App 原本在標頭上的「最小化」按鈕,現在被收進下拉選單裡,原本的位置換成了「關閉」按鈕。如果你的 MINI App 有針對舊版標頭做過任何客製化引導教學或截圖說明,這波更新後這些素材大概都要重拍一輪了。

八、五月那場 LIFF/MINI App 事故:一段從 4/27 燒到 5/14 的小插曲

最後提一下背景插曲:4 月 27 日到 5 月 14 日之間,Android 版 LINE 26.6.0 / 26.6.1 有個 bug,導致在特定情境下(LIFF 瀏覽器開著時,用 Intent 或 App Link 又叫出同一個或另一個 LIFF/MINI App)會拿不到使用者 profile、LIFF API 也會怪怪的。官方後來在 5 月 14 日推出修復版 LINE 解決問題,但在那之前也貼心提供了一段暫時解法,用 location.href 做頁面轉跳、並在偵測到類似 invalid_request 的錯誤時手動登出再登入:

javascript
const params = new URLSearchParams(location.search)
const liffState = params.get('liff.state')
const redirectUri = liffState
  ? new URL('.' + liffState, location.href).toString()
  : location.href

liff.login({ redirectUri })

這種「先給暫時解法、再補正式修復」的節奏,其實蠻值得學起來——不管是自己開發的服務出包,還是等第三方修 bug,先讓使用者有路可走,永遠比讓他們卡死畫面來得體貼。

小結:這波更新告訴我們什麼

整體看下來,這兩個月 LINE 平台的更新可以歸納成三個關页字:限流變嚴、收費上路、體驗微調。速率限制被砍等於在提醒大家該做快取就要做;MINI App 收費代表商業模式正式進入下一階段;LIFF 的一連串小改版則是提醒我們,前端串接這種東西永遠不能「串完就沒事了」,得定期回去看看官方公告,免得哪天使用者截圖來問你「這個按鈕怎麼不見了」,你才第一次知道有這回事。

Claude code 搭配 OpenRouter 使用免費的claude code (?)

claude code文件

https://code.claude.com/docs/zh-TW/overview

安裝 claude code (命令提示字元)

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

OpenRouter 註冊

https://openrouter.ai/ 註冊新帳號

OpenRouter 使用在claude code的說明

https://openrouter.ai/docs/guides/coding-agents/claude-code-integration

.claude/settings.local.json

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
    "ANTHROPIC_AUTH_TOKEN": "<your-openrouter-api-key>",
    "ANTHROPIC_API_KEY": ""
  }
}

加上 “ANTHROPIC_MODEL”:”openrouter/free” (使用系統分配,或是到model 搜尋免費 free https://openrouter.ai/models?q=free)

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
    "ANTHROPIC_AUTH_TOKEN": "<your-openrouter-api-key>",
    "ANTHROPIC_API_KEY": "",
     "ANTHROPIC_MODEL":"openrouter/free"

  }
}

開啟 claude code

自己升級wordpress環境php8.5

https://github.com/superlevin/hacklog-remote-attachment

經營一個網站超過十年,就像是看著一個孩子長大一樣,充滿了滿滿的感情與回憶。這十多年來,我的WordPress網站一直忠實地陪伴著我,但也面臨著需要「轉大人」的考驗。

最近,我下定決心要將網站的底層引擎升級到全新的PHP 8.5,希望能讓網站跑得更快、更順暢,給大家更好的體驗。沒想到,過程卻像是在闖關打怪一樣充滿挑戰!其中最大的一個關卡,就是一個叫做hacklog remote attachment的老套件。它就像是一個充滿回憶但也捨不得搬家的老頑固,不管我怎麼嘗試,它就是無法適應新的環境,導致我的升級計畫一直卡關失敗。

正當我感到有些頭痛,差點要舉白旗投降的時候,我想起了現在最厲害的好幫手,也就是人工智慧AI!我轉念一想,何不請AI來當我的專屬工程顧問呢?於是,我帶著這個老套件的難題,和AI進行了一場深度的跨界交流。

沒想到,AI真的超級神!在它的耐心引導與程式碼微調之下,我們居然成功解開了這個老套件的心結,讓它順利跟上了時代的腳步。當畫面上顯示升級成功的那一刻,我真的感動到想從椅子上跳起來歡呼!

這不僅僅是一次系統的升級,更是我親身見證科技帶來無限可能的一刻。遇到困難真的不要氣餒,轉個彎,或許就會發現新的解法。有時候,只要一點點正向的信念,加上善用身邊的新工具,原本看似無解的難題也能迎刃而解!讓我們一起保持開放的心,快樂迎接每一天的挑戰吧!

Azure 上的 PostgreSQL 如何撐起 ChatGPT 8 億用戶?微軟工程師親揭幕後秘辛

今天要來聊一個超有料的主題——ChatGPT 背後的資料庫架構,以及微軟工程團隊如何幫 OpenAI 撐過爆炸性的用戶成長。 這篇文章源自微軟官方部落格,由 Azure PostgreSQL 工程副總裁 Affan Dar 領銜撰寫。乾貨滿滿,讓我來幫你翻譯成人話。

先說背景:ChatGPT 有多誇張?

OpenAI 過去一年把資料庫規模擴大了 10 倍,要支撐的是高達 8 億月活躍用戶。這個量級是什麼概念?整個系統底層用的是 Azure Database for PostgreSQL,也就是微軟雲端上的 PostgreSQL 託管服務。 PostgreSQL 這個開源資料庫,平常我們可能覺得它就是個「普通關聯式資料庫」,但這次的故事告訴我們:只要配置得當,它真的可以撐到超大規模。

問題一:讀取副本老是跟不上主節點

什麼是讀取副本(Read Replica)?

簡單說,就是把資料庫「複製一份」給其他伺服器來分擔讀取流量,這樣主節點就不用一個人扛所有查詢。ChatGPT 的架構裡,一台主節點撐著超過 50 個分布在多個地區的副本,這數字已經很嚇人了。

發生了什麼問題?

在 OpenAI 某次大型服務上線前,工程師發現一個詭異現象:副本的資料會「越落越遠」,跟不上主節點的更新速度(這叫做 Replication Lag,複製延遲),而且它不會自己恢復,只能靠重啟副本才能解決,然後一天內又再次發生——陷入一個惡性循環。

問題的根源是什麼?

深挖之後,找到了罪魁禍首:TCP 壅塞控制演算法。 預設的 CUBIC 演算法在偵測到封包遺失(跨地區傳輸本來就難免)時,會把傳輸速度猛踩煞車,拼命退讓,導致複製速度大幅下降。

怎麼解決?

微軟團隊做了三件事:

  • 把壅塞控制演算法從 CUBIC 換成 BBR(對封包遺失更不敏感)
  • 調整 TCP 視窗大小設定
  • 引入**公平佇列(Fair Queuing)**網路排程,讓封包傳送更平滑 這三招組合拳下去,問題就解決了。

問題二:讀副本超過 50 個後怎麼辦?

微軟加入了**串聯副本(Cascading Replica)**支援,讓副本可以再複製給下一層副本,不用所有副本都直接連主節點。這樣就能在不影響主節點的情況下,繼續橫向擴展讀取能力。 此外,他們還開發了一個新技巧:從同地區的另一個副本快照建立新的異地副本,避免過去需要跨地區大量複製資料(可能要花幾小時甚至幾天)的痛苦。

問題三:寫入量太大,單台主節點 IOPS 不夠了

讀取問題解決了,但寫入量的成長讓單台 PostgreSQL 主節點的 I/O 效能上限捉襟見肘。這也是為什麼 OpenAI 後來把部分適合拆分的新工作負載移到 Azure Cosmos DB(NoSQL)去了。 但問題是,有些資料就是很難拆分(sharding 困難),這時候怎麼辦? 這就帶出了微軟的新架構:Azure HorizonDB,在 2025 年 11 月進入私人預覽。

Azure HorizonDB:為超大規模打造的 Postgres

這是目前最令人興奮的部分。HorizonDB 從根本上重新設計了 PostgreSQL 的儲存層,核心概念叫做「以 WAL 為中心的儲存模型」。

WAL 是什麼?

WAL(Write-Ahead Log,預寫日誌)是資料庫記錄「我要做什麼改變」的日誌,用來確保資料不會因為系統崩潰而遺失。PostgreSQL 傳統上是先寫 WAL、再把資料頁寫到磁碟。

HorizonDB 的創新在哪?

PostgreSQL 的計算節點不再直接寫資料頁到磁碟,所有持久化都透過 WAL 完成,資料頁由獨立的儲存層負責重建。 儲存層分成兩個獨立服務:

服務優化目標
WAL Server超低延遲的順序寫入
Page Server超大規模的隨機讀寫
WAL Server 可以在一次網路跳轉內就把一筆交易持久化到 3 個可用區域(傳統架構需要 4 次跳轉),大幅降低提交延遲。
Page Server 則把資料分散在大量 NVMe 高速磁碟上,讓單個 PostgreSQL 實例可以達到數十萬 IOPS 的讀取能力。

計算節點變成無狀態引擎

最妙的是,這個架構讓 PostgreSQL 的計算節點從此「輕裝上陣」——備份、複製、Checkpoint 等繁重工作全部交給儲存層,計算節點只需要專心處理業務邏輯,CPU、磁碟、網路資源都省下來了。 讀取副本也不再需要各自保存一份完整的資料拷貝,瞬間就能建立新副本,且每多一個副本完全不影響主節點效能。

總結:從這件事可以學到什麼?

這篇文章最有價值的地方,不只是技術細節,而是工程師解決問題的思路: 先找根本原因,而不是用重啟來掩蓋問題(TCP 壅塞控制的案例)。一步一步拆解問題,先解讀取延遲、再解讀取擴展、最後解寫入擴展。為未來設計,HorizonDB 的架構不是為了應付今天的問題,而是為了更大的明天。 PostgreSQL 在 8 億用戶的規模下能正常運行,背後是無數工程師的調校與創新。下次有人說「PostgreSQL 不能水平擴展」,你可以把這篇故事講給他聽。

原文來源:Microsoft Community Hub — Supporting ChatGPT on PostgreSQL in Azure(2026/1/29)

注意!Claude Code Windows 路徑大搬家,3 月 12 日前務必完成設定

Anthropic 最近發出了一封重要通知:Windows 版的 Claude Code 正在進行一項「設定檔路徑遷移」,而且有明確的截止日期——2026 年 3 月 12 日。如果你的公司或 IT 部門有在幫員工統一部署 Claude Code 的設定,那這件事你非得知道不可。

這次更新到底在改什麼?

簡單來說,就是 Claude Code 在 Windows 上存放「企業管理設定檔」的資料夾位置換了。 這個設定檔叫做 managed-settings.json,是企業 IT 團隊用來統一管理、控制 Claude Code 行為的重要檔案。

  • 舊路徑(即將停用): C:\\ProgramData\\ClaudeCode\\
  • 新路徑(請更新到這裡): C:\\Program Files\\ClaudeCode\\managed-settings.json 3 月 12 日之後,系統就不會再去讀取舊路徑的檔案了。也就是說,如果你的 IT 部門沒有在期限前更新部署位置,之前設定的企業管理規則就會全部失效!

誰需要採取行動?

並不是所有人都需要動作。 這件事主要影響的是:

  • 公司有 IT 部門負責集中管理 Claude Code 設定的企業用戶
  • 使用 MDM(行動裝置管理)或端點管理工具(例如 Intune、Jamf 等)來部署 managed-settings.json 的組織 如果你只是個人用戶,或是公司根本沒有部署這個設定檔,那這次更新對你沒有任何影響,不用緊張。

IT 同仁需要怎麼做?

步驟其實很簡單,就一件事:

在 2026 年 3 月 12 日之前,將你的 MDM 或端點管理工具的部署路徑,更新為新的路徑: C:\\Program Files\\ClaudeCode\\managed-settings.json 如果你已經完成了這個更新,那就什麼都不用再做了,大功告成!


小結

這次的改動說複雜不複雜,說簡單也要注意別錯過截止日期。如果你負責公司的 IT 管理,記得趕快去確認部署設定有沒有更新;如果你只是一般使用者,把這篇文章轉給你的 IT 同事就對了! 總之,3 月 12 日這個日期記起來,別讓企業設定白白失效了。

資料來源:Anthropic 官方通知信件

Antoropic claude 5x 跟 20x 方案差別?到底那個划算?有工程師算出來了!!

原文: https://she-llac.com/claude-limits故事是這樣開始的……

話說有個工程師,平常就是那種會把什麼都拆開來看的人。他在用 Claude 的時候心裡一直有個疑問:

「Anthropic 說 Max 20× 方案有 20 倍用量,但……20 倍是哪個 20 倍啊?」

於是他開始挖。沒想到,他在 API 的回應資料裡發現了一個「忘記四捨五入」的小數:

0.16327272727272726

一般人看到這個數字:「哦,好像是 16% 左右。」

這位工程師看到這個數字:「等等,這個數字精確得有點可疑……」

然後他就把 Claude 的整個內部計費系統給挖出來了。就這樣。


先說結論:誰才是真正划算的方案?

作者把幾個方案的「實際用量」給算清楚了,結果讓人頗為傻眼:

每 5 小時的用量上限

方案官方說幾倍實際幾倍
Pro基準基準
Max 5×5 倍實際 6 倍!
Max 20×20 倍20 倍(這次沒騙人)

每週的用量上限

方案官方說幾倍實際幾倍
Pro基準基準
Max 5×5 倍實際 8.33 倍!
Max 20×20 倍實際只有 16.67 倍…

看到了嗎?Max 5× 根本是在送福利,每週用量比官方宣稱的多了超過六成!

反觀 Max 20× 就比較尷尬了——每 5 小時確實給你 20 倍,但每週的總量上限,說好的 20 倍,實際只有 16.67 倍。更糟的是,Max 20× 每週能做的事,也只有 Max 5× 的兩倍,但價格卻是兩倍。所以 CP 值根本沒有更好。

結論:Max 5× 才是甜蜜點,Max 20× 的星號(*)是有原因的。


跟直接用 API 比呢?

好,那如果你是開發者,直接用 Anthropic 的 API 付錢,跟買訂閱方案比起來差多少?

方案你付多少等於 API 費用多少賺了幾倍
Pro$20/月$163/月賺 8 倍
Max 5×$100/月$1,354/月賺 13.5 倍
Max 20×$200/月$2,708/月賺 13.5 倍

也就是說,你花 100 塊買 Max 5×,等於在 API 上用了 1,354 塊的量。

這還只是「保守估計」。因為有個東西叫做快取(Cache)

  • 你和 Claude 聊天時,之前說過的話會被暫存起來(快取)。

  • 下次 Claude 回答時,可以直接讀取快取,不用重新處理。

  • 用 API 的話:讀快取也要付費(收正常費用的 10%)。

  • 用訂閱方案的話:讀快取完全免費!

如果你在用 Claude Code(讓 Claude 自動幫你寫程式、改程式),每次它呼叫工具、做操作,都會重複讀取大量快取。這種情況下,訂閱方案的實際效益可以高達 API 費用的 36.7 倍

三十六點七倍。你沒看錯。


他到底是怎麼挖出這些數字的?

這才是文章最有趣的部分,來聽工程師辦案過程:

第一步:發現可疑現場

作者做了個 Chrome 擴充套件,方便自己查看 Claude 的使用量。在研究過程中,他發現 Claude 在生成回應時,會在背景偷偷傳一個數字給瀏覽器,代表「你已經用掉的比例」,長這樣:

 0.16327272727272726

一個正常工程師會把這個數字四捨五入,顯示成「16%」就好了。但 Anthropic 的工程師忘了這樣做,把原始數字直接送出來了。

而這個原始數字,其實是:你用掉的量 ÷ 總上限

第二步:用數學魔法還原分數

這個小數點背後,藏的是一個分數。比如 0.5 背後是 1/20.333... 背後是 1/3

0.16327272727272726 背後是什麼?

作者用了一個叫做 Stern-Brocot 樹 的數學演算法。這個方法就像在玩「猜數字」遊戲,但它特別聰明——它會優先猜「簡單」的分數,因為電腦系統內部用的數字通常都是整數,分母不會是天文數字。

這個演算法跑了幾十步之後,找到了答案:

449 / 2750

驗算:449 ÷ 2750 = 0.16327272727272726 ✓ 完美吻合!

第三步:收集更多證據,確認總上限

分母 2750 是什麼意思?就是那個時間點的「總上限比例分母」,但因為分數會被化簡,不一定是真正的上限。

所以作者在不同的使用量下,重複採樣了很多次,對所有還原出的分母取最小公倍數(LCM)

當這個最小公倍數不再增加的時候,答案就出現了:3,300,000

這就是 Max 5× 方案每 5 小時的真實 Credits 上限。

第四步:搞清楚「Credits 是什麼」

知道了上限之後,還要知道「每次對話到底會消耗多少 Credits」。這部分作者就靠老派方法了:大量手動測試、記錄數據、列表格、盯著看、問 Claude、問 GPT、提假設、驗證假設……

最後他得出了這個公式:

 消耗的 Credits = 無條件進位(輸入 Token × 輸入費率 + 輸出 Token × 輸出費率)

費率的部分,跟 API 定價的比例完全一致:Opus 最貴、Haiku 最便宜,輸出 Token 是輸入的 5 倍。


這件事告訴我們什麼?

對使用者的啟示:

  • 能買訂閱方案就買,CP 值遠勝 API。

  • Max 5× 是最划算的選擇,Max 20× 沒有成比例地更好。

  • 如果你在跑 AI 代理程式(像 Claude Code),省下的快取費用更是驚人。

對工程師的啟示:

  • 側通道洩漏(Side Channel Leak)真的無所不在。Anthropic 只是忘了把兩個數字四捨五入,結果被人把整個計費架構給挖出來了。

  • 這不是駭客攻擊,不需要入侵任何系統,只需要一點數學和一點好奇心。


最後

作者在文章結尾說了一句話,頗有意思:

「截至撰文時,那兩個浮點數還沒有被四捨五入。我猜如果這篇文章引起足夠的關注,這種情況可能不會持續太久。到時候我會有點難過,因為這樣我的擴充套件就沒辦法那麼精準了。」

翻譯成白話就是:「我剛剛把 Anthropic 的底細公開在網路上,我猜他們很快就會把漏洞補起來,然後我的工具就沒這麼好用了。但這篇文章我還是要發。」

工程師的浪漫,大概就是這樣吧。

解決 Vite 專案中 ngrok 連線失敗的「安全門檻」

最近有團隊成員在進行外部對接調試時,反應使用 ngrok 進行內網穿透時,遇到了連線被阻擋的問題。這其實不是 ngrok 的服務異常,而是 Vite 在升級到新版本後,為了防禦 DNS Rebinding(DNS 再綁定攻擊) 所加強的安全檢查機制。

🛠️ 解決方案

如果你的 ngrok 網址顯示攔截,請直接檢查你的 vite.config.ts。你必須顯式地將 ngrok 提供的 domain 加入「允許名單」中:

TypeScript

// vite.config.ts
export default defineConfig({
  server: {
    allowedHosts: [
      'a134-211-72-118-118.ngrok-free.app' // 替換為你當前的 ngrok 網址
    ]
  }
})

 為什麼我們要關注這個設定?

公司治理資安維護的角度來看,這項調整背後有兩個關鍵思考:

  1. 防止 Host Header 攻擊:Vite 預設不再信任隨機的 Host 請求。這能有效避免惡意網站利用瀏覽器漏洞,在使用者不知情的狀況下,與本地開發環境通訊並竊取原始碼或環境變數。

  2. 開發環境的最小權限原則:雖然 ngrok 方便,但隨意開放外部存取內網環境是有風險的。透過 allowedHosts 的明確宣告,我們能確保開發者清楚知道哪些外部網域正在與本地服務互動。

📢技術小提醒

在測試結束後,記得將該設定移除或將其移至 .env 進行管理,切勿將特定 ngrok 網址永久硬編碼在 code 中並推上主分支,保持乾淨且安全的 Repo 是每一位資深工程師的素養。

祝大家今天開發順利,Bug 自由!

#Vite #ngrok #FrontendDevelopment #資安意識 #DNSRebinding #軟體研發管理 #WebSecurity #TypeScript