OpenAI 降價 GPT-5.6 Luna 80% 開放 Fast Mode 給 Sol — AI 價格戰新局

Back
Category : News



OpenAI 降價 GPT-5.6 Luna 80% 開放 Fast Mode 給 Sol — AI 價格戰新局

作者 Nokka (นก-กา) | 2026 年 8 月 1 日

本文由 AI (deepseek-v4-flash:0731) 透過 Hermes Agent 撰寫

2026 年 7 月 30 日,OpenAI 宣布 GPT-5.6 系列大幅調價 [1]

  • Luna 降價 80%
  • Terra 降價 20%
  • Sol 開放 Fast Mode 最快提升 2.5 倍

此舉不只是單純降價,更是 AI 價格戰的新布局



新價格 — 誰獲益最大

Standard 模式每百萬 token 價格:

模型 輸入 輸出 調整幅度
GPT-5.6 Sol $5.00 $30.00 維持原價
GPT-5.6 Terra $2.00 $12.00 降價 20%
GPT-5.6 Luna $0.20 $1.20 降價 80%



Luna — 降至原本五分之一的亮眼之星

Luna 是本次調價的核心 [1]

原價每百萬 token 為 $1.00/$6.00,現降至 $0.20/$1.20

等於降至原本的五分之一,輸入價格更是 Sol 的 1/25

更值得注意的是,Luna 仍保有工具呼叫(Tools)與多步驟處理能力

OpenAI 表示 Luna「速度快、成本最低」,卻仍能處理複雜任務 [2]

這不是廉價低效模型,而是專為企業實務設計的解決方案



Terra — 低調降價 20%

Terra 從 $2.50/$15.00 降至 $2.00/$12.00 [1]

雖然沒有 Luna 亮眼,但 Terra 與 Sol 之間的價差拉大

Terra 成為「足夠好」的折衷選擇,適合大多數工作且價格親民



Fast Mode — 速度成為高級服務

OpenAI 將原 Priority Processing 更名為「Fast Mode」[1]

現已涵蓋 Sol、Terra 與 Luna,費用為 Standard 的兩倍,但速度最快可提升 2.5 倍:

模型 Standard Fast Mode
GPT-5.6 Sol $5.00 / $30.00 $10.00 / $60.00
GPT-5.6 Terra $2.00 / $12.00 $4.00 / $24.00
GPT-5.6 Luna $0.20 / $1.20 $0.40 / $2.40



無需修改任何一行程式碼

原先使用 priority 標籤的 API key 將自動切換至 Fast Mode [1]

OpenAI 仍支援 service_tier: "priority"

這是開發者夢寐以求的零阻力遷移



Luna Fast Mode — 仍比 Sol Standard 便宜

Luna 的 Fast Mode 特別划算

費用提高至兩倍 ($0.40/$2.40) 後,仍比 Sol 的 Standard 模式 ($5.00/$30.00) 便宜

企業可同時享有速度與低成本



降價背後 — 不只是價格戰,更是效率提升

OpenAI 不只因競爭降價,更大幅優化後端系統 [2]:

  • 調校 Production Kernel — 服務成本降低約 20%,token 生成效率提升 15% 以上
  • 優化 Inference 系統 — 不增加硬體即可加快 token 生成
  • 改善 Context 管理 — 減少重複運算
  • 調整 Routing — 提升硬體使用效益



OpenAI 以 Sol 自行優化系統

OpenAI 利用 GPT-5.6 Sol 撰寫並調校 Production Kernel [2]

它還執行數百次實驗以提升 token 生成效率,並檢核訓練流程

這是令人印象深刻的「吃自己的狗食」(dogfooding)



依工作選擇模型 — 新哲學

OpenAI 正推動「不必每次都用最強模型」的觀念 [2]

依各階段複雜度選擇合適模型:

  • GPT-5.6 Sol — 分析難題、規劃、決策
  • GPT-5.6 Luna — 依規格撰寫程式碼、執行測試、驗證結果

就像工程師挑工具 — 沒有人會用超級電腦來加總數字

依工作挑選模型,是控制成本的關鍵



實際使用案例

OpenAI 推薦 Luna 的應用場景 [2]:

  • 大量文件分析
  • 客戶對話分類
  • 高量自動化作業
  • 兼顧速度與成本的軟體開發

複雜且高需求的工作 — 可透過 Fast Mode 使用 Sol 來獲得速度



對 AI 市場的影響

此次降價顯示 OpenAI 打出「量」牌 [1]

讓 AI 價格低到企業可大規模採用,不用擔心月底帳單

Luna 的輸入價格 $0.20/百萬 token,甚至比 GPT-4o mini 的輸出價格更低,但能力更強

此定價對 Anthropic、Google 及開源供應商都構成壓力



我的觀點 — Agentic Workflow 的轉捩點

在我看來,Luna 如此低價代表我們能執行需多次呼叫 API 的 agentic workflow

成本已降至可接受範圍 — 這曾是 AI 投入生產的最大障礙



注意事項 — 便宜不代表適合所有工作

必須誠實說 — Luna 不是萬靈丹

需要深度推理或多層規劃的工作,仍應使用 Sol

若將 Luna 用於過於複雜的任務,可能得到較差結果,反而浪費更多時間修正

另一點需留意 — Fast Mode 收費為兩倍

若頻繁使用 Sol Fast Mode,帳單可能快速上升,應及早設定預算警示



總結

OpenAI 正將戰場從「誰最強」轉為「誰最划算」

Luna 是此策略的主力武器 — 降價 80%、功能完整,並提供 Fast Mode 選擇

對台灣開發者與企業而言,這是廣泛導入 AI 的好時機

成本降低意味著「太貴而不敢試」的實驗,現在變成「值得一試」

若本文有幫助,請分享給對 AI 感興趣的朋友;若想持續追蹤 AI 新聞,歡迎訂閱


來源:

  1. OpenAI Platform Pricing — 2026 年 7 月 30 日最新價格
  2. iMoD — OpenAI 大降 GPT-5.6 Luna 價格高達 80% — 2026 年 7 月 30 日

https://dev.to/sarantoon/openai-ldraakhaa-gpt-56-luna-80-epid-fast-mode-aih-sol-ekmaihmkhngsngkhraamraakhaa-ai-1b3c

https://www.worldprogramming.org/posts/openai-gpt-56-luna-80-fast-mode-sol-ai-nqnqzz


封面圖片:哪些工作排程器能準時觸發?我們測試了十款。

Mike Gorman

我們為 smplkit 打造的應用基礎設施產品之一,是一個名為 Smpl Jobs 的 HTTP 工作排程器。當然,我們希望它在與其他工作排程器競爭時能表現優異,但我們想知道它在最重要的功能——準時發出 HTTP 請求——方面的實際表現如何。因此,我們決定找出答案。



參賽者



測試設定

測試概念很簡單:在整點發送請求到某個公開端點,並記錄請求到達的日期與時間。超過整點的毫秒數即為偏移量(skew):偏移量越低,表示排程器越「準時」。

雖然概念簡單,但要找到一個公開端點,讓排程器可以觸發,同時又能捕捉並儲存到達時間,其實並不容易。我們最終需要的是一個通用基準測試託管網站,能夠 POST JSON 訊息,用來識別基準測試、測試對象,並記錄請求到達的日期與時間。我們找不到符合需求的服務,因此自己建了一個。三週後,smplmark.org 上線,準備接受各排程器的測試。

我們建立基準測試,定義測試對象,然後將每個排程器設定為在 smplmark 的 measurement API 發出請求,並附上 JSON 酬載,識別基準測試、執行次數,以及正在測試的排程器 ID。smplmark 會記錄每次測量建立的日期與時間;另一個 skew 指標則由 created_at mod 3600000 衍生而來,代表超過整點的毫秒數。

每位參賽者皆使用免費方案(或接近免費方案):其中有幾個每月大約會向我們收取一美元的費用。部分原因是為了維持公平性;主要目的是將帳單維持在接近零的程度。

為什麼我建立 smplmark.org



幾個缺點

我們已知的測試方法有四個缺點:

  1. 偏移量是以小時為模數計算,因此如果排程器剛好晚了 60.1 分鐘,實際上會顯示為只晚了 6 秒。這是極端案例:唯一晚到足以接近這個邊界的參賽者是 GitHub Actions,而它們是以分鐘級的差距落後,而不是以秒為單位。這個模數計算也會反向作用:如果請求提早到達,會被記錄為接近一小時晚。但所有接近這個邊界的到達時間都屬於 GitHub Actions,而它們的不穩定性是顯而易見的(且有文件記載)。
  2. 端點位於美國東部,因此在美國西部或歐洲執行的排程器會比美國東部的排程器多負擔網路延遲。但這只有幾毫秒;排程器的引擎本身才是主要影響因素。
  3. smplmark.org 本身運行在 Cloudflare 上,因此 Cloudflare Workers 可能享有主場優勢;它的請求可能從未離開 Cloudflare 的網路。
  4. 偏移量依賴 smplmark 的時鐘。smplmark 運行在 Cloudflare 上,其時鐘與 NTP 同步;我們沒有獨立驗證這些時鐘。如果時鐘發生偏移,每個測試對象都會偏移相同的量——排序會維持不變,但絕對數值不會。排程器自身的時鐘不會被校正:當你的時鐘顯示到達時間時才觸發,這正是我們要測量的內容。



排行榜

以下是目前的測試結果。以下圖片為固定快照,因此我們引用的數字會與其來源圖表並列;即時排行榜每小時更新一次,當你閱讀本文時,數字可能已經改變。我們從圖表中移除了 GitHub Actions,因為在其規模下,其他長條將無法顯示。

即時長條圖:以毫秒為單位的排程器偏移量中位數,每個排程器一條長條,由低到高排序,已排除 GitHub Actions 以符合比例

截至 7 月 31 日,整點過後的偏移量中位數(毫秒)。開啟即時排行榜查看最新數字與測試方法。



數據說明

Posthook 最接近目標,中位數偏移量為 656 毫秒,緊隨其後的是 Runhooks 的 749 毫秒。QStash 與 Smpl Jobs 旗鼓相當,約為 1.5 秒;在其後,EasyCron、Google Cloud Scheduler 與 cron-job.org 皆穩定地在要求時間的約 4 到 8 秒 內觸發。

排程器偏移量折線圖:每條線代表一個排程器(已排除 GitHub Actions 以符合比例):最緊密的線條緊貼零值,數條線位於標記上方數秒,一條平坦線位於約 26,500 毫秒,另一條線則維持在約 33,000 毫秒,最後幾小時跳升至約 51,000 毫秒

截至 7 月 31 日上午的四天到達記錄,每個到達時間一個點,已排除 GitHub Actions 以符合比例。

有趣的是,AWS EventBridge 幾乎總是準確地晚了 26.5 秒。我們記錄的每一次到達時間都落在幾百毫秒的範圍內;你可以根據它到底晚了多久來對錶。公平來說,EventBridge 的設計目的是在大規模下分發事件,而且它擅長這件事。

Cloudflare Workers 也持續延遲:通常在整點過後約 33 秒——雖然本週有幾次執行漂移到接近 51 秒。我們原本以為其請求可能不會離開自身網路的參賽者,仍然晚了 33 秒,因此對它們來說並沒有主場優勢。

排程器偏移量統計表(毫秒):平均值、中位數、最小值、最大值、p95、p99 以及每次執行的次數,每個排程器依中位數排序

截至 7 月 31 日,包含 GitHub Actions 在內的所有排程器的最小值、最大值與百分位數。單位仍為毫秒。

GitHub Actions 的中位數偏移量約為 27 分鐘,這已經是寬鬆的估計。超過一半的時間,GitHub Actions 甚至沒有觸發。公平來說,GitHub 已經告訴你這件事:排定的工作流程文件說明為「盡力而為」,在負載高時會延遲或被丟棄。他們沒有錯。你不必只相信我們的話:[我們使用的 workflow 是公開的(https://github.com/smplkit/benchmarks/actions/workflows/cron-skew.yml),而 GitHub 自己的執行記錄就在其 Actions 分頁上——包括那些工作流程根本沒有執行的每小時空白。



我們不是第一名——我們可以接受

當我們看到自己排程器的數字持續晚約 1.5 秒時,我們分析了程式碼,看看有沒有優化的空間。我們曾考慮讓它提早一點啟動;如果我們總是晚 1.5 秒,為什麼不提早 1.4 秒啟動呢?但我們並非「總是」晚 1.5 秒。「提早啟動」的策略導致我們有時會提早幾毫秒觸發,我們認為這可能比晚 1.5 秒還要「糟糕」。因此,我們取消了提早啟動的設定,決定讓結果自然呈現。我們會繼續努力改善我們的數字,但在此同時,只有 Posthook 最差的一次執行比我們最差的一次執行還要差,所以情況還算不錯。



但不要只相信我們的話

我知道,我知道。一個由 smplkit 建立的基準測試,結果託管在 smplkit 建立的網站上,恰好顯示 Smpl Jobs 是「準時」工作排程器中的佼佼者之一。我們知道這看起來如何。但這正是我們建立 smplmark.org 的原因。世界上任何人都可以建立帳戶
並做我們所做的事。如果需要協助,請寄信至 [email protected]



你應該在意嗎?

任何能在預定時間的幾秒內觸發的工作排程器,對大多數團隊來說可能就足夠了。我們測試的 10 個排程器中有 9 個會在預定時間的 60 秒 內觸發,其中 7 個會在 10 秒 內觸發。但如果追求最準時的執行,Posthook、Runhooks、Smpl Jobs 與 QStash 通常都會在要求時間的幾秒內觸發。

但「準時到秒」只是考量之一。如果你在意回應擷取、執行歷史、時區、重試政策與 SDK,請查看 2026 年最佳 cron 工作服務

https://dev.to/smplkit/which-job-schedulers-fire-on-time-we-tested-ten-e42

https://www.worldprogramming.org/posts/which-job-schedulers-fire-on-time-we-tested-ten-hzeagj

最近我尋找一個可以在終端機管理 Dev.to 文章的 CLI 工具。我每月撰寫 4-5 篇文章,會強迫症式追蹤分析數據,並希望有基於 git 的工作流程。

我找到了 9 個現有工具。全部試過後,結果如下:

  • devto-cli (Node): 最後一次提交是 2 年前。安裝時就壞掉。
  • dev-to-git (Node): 只能同步到本地。無法推回。
  • slinkity: 已棄置。
  • forem-cli: 40+ 個端點中只實作了 3 個。

每個工具都做同一件事:發布文章。就這樣。也許拉取。也許驗證標籤。

與此同時,Dev.to API 有 40+ 個端點,包含分析、語意搜尋、機器學習驅動的內容概念、追隨者互動、趨勢追蹤,以及閱讀清單管理。沒有人在使用這些功能。

所以我建立了 devpub



目錄




devpub 的功能(其他工具沒有的)

# 基本功能(每個工具都做)
devpub push -f articles/my-post.md
devpub pull

# 在終端機查看分析數據
devpub stats
# Views: 246.5K | Reactions: 4.4K | Comments: 402 | Followers: 18.9K

# 完整儀表板與熱門文章
devpub dashboard

# AI 驅動的搜尋(語意,而非關鍵字)
devpub search "building serverless apps" --semantic

# 現在正在流行的內容
devpub trends

# 發布前先找出問題
devpub validate

Enter fullscreen mode

Exit fullscreen mode

差異不在於單一功能,而在於涵蓋範圍。以下是比較表:

功能 devpub 其他工具
發布/更新文章 Yes Yes
將文章拉取到本地 Yes Some
分析數據(7 個端點) Yes No
語意搜尋 Yes No
趨勢發現 Yes No
文章驗證 Yes No
速率限制(30 req/30s) Yes No
失敗重試機制 Yes No
Concepts API(機器學習主題) Yes No



我在 Dev.to API 中發現的功能

在建立 devpub 的過程中,我發現了幾個沒有明顯文件記載的 API 端點:

1. 語意搜尋 — Dev.to 有一個完整的基於嵌入的搜尋系統,使用 Gemini 嵌入(768 維向量)搭配 pgvector。您可以依據意義搜尋文章,而非僅靠關鍵字。該端點會回傳餘弦相似度分數。

2. Concepts API — 這些是機器學習生成的話題分類,附帶每日指標:頁面瀏覽量、反應、評論、人氣分數。比手動標籤強大得多。

3. V1 Accept Header — V1 API 需要 Accept: application/vnd.forem.api-v1+json。若無此標頭,您會收到 V0 的回應。我在任何競爭對手的程式碼中都沒看到這一點被提及。

4. 巢狀分析回應 — 分析端點回傳巢狀物件,例如 {"page_views": {"total": 246454, "average_read_time_in_seconds": 306}},而非扁平整數。我檢查過的每個工具要麼不使用分析,要麼會在這種結構上出錯。




建置故事(實際發生的事)

我用一天的時間建立了 devpub 的核心。從星期一下午 2 點開始,晚上就有了可運作的 CLI。以下是真實的時間軸:

第 1-2 小時:研究

在寫任何程式碼之前,我分析了 9 個競爭工具。下載、閱讀它們的原始碼,整理每個工具使用了哪些 API 端點。發現最「完整」的工具涵蓋了 40+ 個端點中的 12 個。大多數只涵蓋 3-5 個。

然後我閱讀了整個 Forem API 文件。不是大家都會看的摘要頁面,而是完整的 V1 規格。這就是我找到語意搜尋、概念,以及其他工具都不知道存在的分析端點的地方。

第 3 小時:搭建骨架

pyproject.toml、src 佈局、Click CLI 入口點。雖然無聊,但我花了 15 分鐘就讓 devpub --help 運作。這裡的關鍵決定是:使用 httpx 而非 requests。httpx 提供連線池、適當的逾時設定,以及日後切換到 async 的選項,而不需要改變介面。

第 4-5 小時:API 用戶端

這是我花最多時間的地方。不是因為 HTTP 呼叫很難,而是因為我希望用戶端從第一天起就具備生產等級:

  • 真正有效的速率限制(滑動視窗,而非單純的睡眠計時器)
  • 針對 429 與 5xx 錯誤的指數退避重試
  • 適當的錯誤訊息,而非堆疊追蹤

第一版並沒有這些功能。它只是呼叫 raise_for_status() 並對使用者丟出難看的 httpx.HTTPStatusError 例外。我在測試時發現了這個問題,當我拉取自己的 86 篇文章,在第 30 篇時遇到速率限制。整個程式就崩潰了。

第 6 小時:使用我的真實帳號測試

這就是有趣的地方。我第一次呼叫 devpub stats 時發生崩潰:

TypeError: '>=' not supported between instances of 'dict' and 'int'

Enter fullscreen mode

Exit fullscreen mode

原來分析端點回傳 {"page_views": {"total": 246454}},而不是 {"page_views": 246454}。巢狀字典。現有工具都無法正確處理,因為現有工具都不使用分析功能。

健康檢查端點也讓我驚訝。在 V1 API(帶有 Accept 標頭)中,/health_checks/app 需要驗證。若無標頭,會回傳 401。所以我將健康檢查改為呼叫 /users/me

第 7 小時:push –all 的驚嚇

在測試期間,push --all 差點把我的 README.md 發布到 Dev.to。原本的邏輯是:找到任何在 frontmatter 中有 title.md 檔案就推送。我的 README 有帶 title 的 YAML frontmatter。

我修正了這個問題,要求同時擁有 titlepublished 鍵,並且只掃描已知的目錄(articles/posts/content/drafts/)。雖然是小事,但想像一下不小心把 CONTRIBUTING.md 當成 Dev.to 文章發布出去。

如果重來我會做什麼改變

  1. 從 pull 指令開始,而不是 push。 Pull 會強迫您在建立資料模型之前先了解 API 回應格式。我先根據文件建立模型,之後發現真實回應不同時才修正。

  2. 從一開始就撰寫模擬測試。 我先寫完所有程式碼才寫測試。應該在撰寫用戶端方法時就同時撰寫 API 模擬回應。這樣就能立刻發現巢狀字典的問題。

  3. 在 v0.0.1 就包含速率限制器。 我一開始想著「晚點再加」。在真實測試的 30 分鐘內就遇到限制。應該從第一個 commit 就加入。




架構(給貢獻者)

src/devpub/
  api/        # 帶有速率限制與重試的 HTTP 用戶端
  cli/        # Click 指令 + Rich 終端機輸出  
  core/       # 商業邏輯(文章、同步、驗證、設定)

Enter fullscreen mode

Exit fullscreen mode

關鍵決定:

  • Python + Click + Rich — 大多數貢獻者熟悉,終端機使用者體驗佳
  • httpx — 支援 async,內建逾時處理
  • 滑動視窗速率限制器 — 每 30 秒 30 個請求,自動睡眠
  • 3 次指數退避重試 — 處理 429 與 5xx 錯誤而不崩潰
  • 基於 frontmatter 的追蹤 — 文章 ID 儲存在您的 markdown 檔案中,無需資料庫



57 個測試,全部通過

$ pytest -v
57 passed in 1.08s

Enter fullscreen mode

Exit fullscreen mode

測試使用 respx 模擬 HTTP 層。CI 中沒有真實的 API 呼叫。涵蓋:

  • API 用戶端(所有端點、錯誤碼、重試)
  • 文章模型(frontmatter 往返、slug 生成、標籤解析)
  • 同步邏輯(推送新文章、更新現有文章、dry run、錯誤處理)
  • 驗證(標題長度、標籤數量、正文檢查、canonical URL)



試用

pip install devpub
export DEVPUB_API_KEY=your_key_here
devpub doctor

Enter fullscreen mode

Exit fullscreen mode

或從原始碼安裝:

git clone https://github.com/simplynadaf/devpub.git
cd devpub
pip install -e .

Enter fullscreen mode

Exit fullscreen mode

在以下網址取得您的 API 金鑰:https://dev.to/settings/extensions




與 AI 代理相容

每個指令都回傳結構化輸出,會自動處理速率限制,並支援 --dry-run。AI 程式碼代理(Claude Code、Copilot、Cursor)可以將 devpub 作為其發布層。代理撰寫文章,devpub 驗證、推送並追蹤表現。初始設定後無需人工介入。




貢獻

本專案目前處於 beta 階段。歡迎提交 PR。以下是一些需要協助的地方:

  • 效能:pull 指令會對每篇文章發出一次 API 呼叫。可以批次處理嗎?
  • 圖片重寫:推送時應將相對路徑轉換為 GitHub raw URL
  • 終端機圖表--graph 旗標已被接受但尚未實作
  • Hashnode 配接器:跨平台發布的骨架已就緒,需要實作

請查看 issues 尋找標有 good first issue 的項目。


GitHub: github.com/simplynadaf/devpub

如果這節省了您的時間,請給 repo 按星。如果有東西壞了,請開 issue。如果您想要某個功能,請送 PR。

您目前的 Dev.to 工作流程是什麼?您是在瀏覽器編輯器中撰寫,還是已經有本地設定?想知道大家遇到的痛點是什麼。


📺 在 YouTube 觀看完整示範


Sarvar Nadaf 建立 – Cloud Architect
追蹤我: Dev.to | GitHub | YouTube | LinkedIn

https://dev.to/sarvar_04/introducing-devpub-open-source-devto-cli-tool-49jf

https://www.worldprogramming.org/posts/introducing-devpub-open-source-devto-cli-tool-u9wdgq

你每天撰寫 if-else
你在終端機執行程式碼然後 REPL 回應你
你在 Python 使用 lambda、在 JavaScript 使用 arrow function、在 Rust 使用 closure

— 這一切 都源自 LISP 語言

而最令人驚訝的是… LISP 從一開始就從未被 planned 成為一門程式語言



改變世界的單一紙頁

1958 — John McCarthy 在 MIT 開始發展 LISP 的概念
1960 年 4 月 — 32 歲的 McCarthy 在 Communications of the ACM (vol. 3, 頁 184-195) 發表論文

“Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I”

在這篇 12 頁的論文中,McCarthy 提出了程式語言的理念,該語言:

  • 處理符號 (symbols) 而非僅處理數字
  • 使用遞迴作為控制流程,而非使用 loop
  • 將 function 視為 first-class citizen — 可以像資料一樣傳遞

McCarthy 將其寫成 數學理論 — 並無打算實作

但在論文發表前 — 1958-59 年間,研究生 Steve Russell 閱讀了手稿

“I told him, ‘Steve, why don’t you program this eval?’ and he said to me, ‘Oh, I misread what you meant. I thought you meant I should implement the interpreter.'”

— John McCarthy, ACM interview

這位學生 為老師的理論撰寫了解釋器 — LISP 語言就此誕生

Russell 撰寫的第一版程式碼只花了 2-3 天(完整的 LISP 1.5 Programmer’s Manual 則在之後的 1962 年才出版)



LISP 所創造的事物(以及我們每天都在使用它們)



1. if-then-else

回到 1958 年 — 大多數語言只有 GOTO 與類似 assembly 的 branch

McCarthy 創造了 cond(條件表達式)— 這就是我們今天在幾乎所有語言中看到的 if-else 之起源

(cond ((< x 0) 'negative)
      ((= x 0) 'zero)
      (t 'positive))

Enter fullscreen mode

Exit fullscreen mode

C、Java、Python、JavaScript、Go、Rust — 這些語言全都繼承了這份遺產。所有現代語言的條件分支,其結構都與 McCarthy 在人類登月前所構思的一樣



2. Garbage Collection

在 LISP 之前 — 程式設計師必須 100% 自己管理記憶體,每一行都要處理 mallocfree

LISP 創造了世界上第一個垃圾回收機制 — 其原始版本是 mark-and-sweep 演算法(由 MIT 學生 Daniel Edwards 實作)

如今 GC 已成為幾乎所有高階語言的預設機制 — Java、Python、JavaScript、Go、C#、Ruby 都延續並發展了這個概念



3. Lambda — 函式即資料

(lambda (x) (* x x))

Enter fullscreen mode

Exit fullscreen mode

LISP 讓函式成為 first-class citizen — 可以將函式當作參數傳遞、回傳函式、將函式存入變數,就像處理字串或整數一樣

這就是以下特性的源頭:

  • JavaScript — arrow function (x) => x * x(Brendan Eich 原本被 Netscape 聘請是要在瀏覽器中實作 Scheme — 但管理階層改變主意,要求語法像 Java)
  • Pythonlambda x: x * x
  • Ruby — blocks、procs、lambdas(Matz 曾說 “Ruby was a Lisp originally, in theory”)
  • Java — lambda expressions(Java 8,2014 年 — 花了 19 年才追上)
  • C++ — lambda(C++11)



4. REPL — 「與語言對話」的哲學

Read-Eval-Print Loop — LISP 在 1960 年代創造了它

在那之前:撰寫程式碼 → 編譯 → 執行 → 除錯 → 重複
在那之後:輸入表達式 → 按下 enter → 立即看到結果

如今當你開啟 Python REPL(>>>)、Node.js console、Ruby IRB、Chrome DevTools、Rust Playground 或 Elixir IEx — 你正坐在與 60 年前 LISP 程式設計師相同的教室裡



5. Homoiconicity — 程式碼 = 資料

'(+ 1 2)          ; ← 這是一個 list
(eval '(+ 1 2))   ; ← 這是執行該 list 的程式碼

Enter fullscreen mode

Exit fullscreen mode

LISP 是用… LISP 本身撰寫的 — 程式碼與資料使用相同的結構(S-expression)

這代表 程式可以修改自己 — 無需使用 parser 來分離 AST,也無需撰寫 transformer

這是程式語言中最強大的 macro system 之基礎

沒有任何語言能像 LISP 一樣完整實現 — 但「code as data」的概念出現在:

  • Elixir — macro(接收 AST,回傳 AST)
  • Julia — macro + multiple dispatch(”We want a language that’s homoiconic, with true macros like Lisp” — Julia manifesto, 2012)
  • Rust — macro system(proc macro)
  • Clojure — macro(Clojure 本質上就是 LISP 的方言)



來自 LISP 的遺產

LISP (1958)
├── Scheme (1975) — minimalist, lexical scoping
│   ├── JavaScript (1995) — Brendan Eich 原本打算在瀏覽器中實作類似 Scheme 的語言
│   │   └── arrow functions, closure, first-class functions
│   └── Racket (1995) — 用於教學與研究的語言
├── Common Lisp (1984) — 工業級、實用導向
│   └── Emacs Lisp (1985) — 編輯器腳本語言 (GNU Emacs)
├── Clojure (2007) — 跑在 JVM 上的 LISP,預設不可變
│   └── 點燃了企業界的功能式程式設計熱潮
└── Python, Ruby, Elixir, Julia, Rust, Swift — 每種語言都採用並調整了 LISP 的概念

Enter fullscreen mode

Exit fullscreen mode



為什麼 LISP 今天不是主流語言

儘管它創造了我們幾乎所有正在使用的創新 — 為什麼 LISP 沒有勝出?

Paul Graham(Y Combinator 創辦人、LISP 鐵粉)在散文 “Beating the Averages” 中解釋道:

  1. 語法與其他語言完全不同 — 滿滿的括號讓人卻步
  2. 早期缺乏標準函式庫 — Common Lisp 在 1984 年才挽救,但已經太晚
  3. AI Winter — LISP 與 AI 研究緊密結合;當 AI 經費消失,LISP 也隨之消失
  4. 工具鏈 — 編譯器慢、IDE 差(與 90 年代的 Visual Studio 相比)

Graham 堅稱:

“Lisp is a language that was discovered, not invented.”

而 LISP 的批評者(包括曾經在生產環境使用後轉向其他語言的人)指出了 Graham 未提及的額外問題:

  1. 大型系統中的動態型別 — 重構困難、編譯器能捕捉的錯誤較少、在數十萬行程式碼的專案中除錯耗時
  2. 直到 2000 年代的效能 — 在 SBCL 和 Chez Scheme 出現之前,LISP runtime 在當時的硬體上遠比 C/C++ 慢,尤其在數值運算方面
  3. 碎片化 — Common Lisp 與 Scheme 從未達成共識;社群四分五裂而非團結力量

總結:沒有單一原因 — 這是語法差異 + 生錯時代 + 社群分裂 + 缺乏企業贊助(與 Sun 全力支持 Java、Microsoft 全力支持 C# 形成對比)的 完美風暴



看不見的遺產

這篇文章並非要告訴你「你應該去寫 LISP」

但每當你:

numbers = [1, 2, 3]
squared = list(map(lambda x: x * x, numbers))

Enter fullscreen mode

Exit fullscreen mode

const result = data
  .filter(x => x.active)
  .map(x => x.value);

Enter fullscreen mode

Exit fullscreen mode

let squared: Vec<_> = numbers.iter().map(|x| x * x).collect();

Enter fullscreen mode

Exit fullscreen mode

— 你其實正在不知不覺中撰寫 LISP




延伸閱讀


📅 2026 年 8 月 | ⚠️ 資料以撰寫當時為準

https://dev.to/gophernment/lisp-phaasaa-67-piikn-thiiyangmiichiiwityuuainthukphaasaathiikhunekhiiyn-1cfe

https://www.worldprogramming.org/posts/lisp-67-7mxpbu

我是一位品牌策略師,不是開發者——但我執行的每個行銷活動,最後都會變成與某個工程團隊的對話。過去一年,這場對話已經轉變。以前談的是 meta tags 和 sitemaps。現在談的是網站是否能被 powering AI 答案的模型讀取。這裡是我實際會帶著開發團隊走的技術拆解。



SEO(搜尋引擎優化)

這是大多數工程師已經熟悉的部分。可被爬取的 HTML、乾淨的 URL 結構、快速的 Core Web Vitals、有效的 schema.org 標記、正確的 sitemap.xml 和 robots.txt。基本機制並沒有太大改變——改變的是結構化資料現在承載的權重,因為這是 AEO 和 GEO 系統同樣依賴的標記。



AEO(答案引擎優化)

這是關於將內容格式化,以便能直接被提取成精選摘要或語音/聊天答案。實際上,這代表:在區段前 1-2 句話中,直接給出針對隱含問題的自包含答案、真實的 FAQ schema(JSON-LD 中的 FAQPage,而非僅視覺樣式的手風琴元件),以及對應人們實際提問的標題結構,而非僅關鍵字字串。如果一個區段在脫離上下文獨立閱讀時無法被正確理解,就不會被挑選。



GEO(生成式引擎優化)

這是最新的一層,目標是大型語言模型而非傳統爬蟲——想想 AI Overviews、Perplexity、ChatGPT 的瀏覽模式。我看到幾個真正能產生影響的事項:在根目錄放置 llms.txt 檔案(仍是非正式、尚未被正式標準化的,但越來越受到尊重)、在每個頁面與每個第三方提及中保持關於實體的一致事實主張(NAP 一致性不再只是本地 SEO 的事,現在也是實體辨識的事),以及用平實語言陳述事物而非埋藏在行銷文案中——生成模型傾向於提取並引用區塊中最明確無誤的句子,因此模稜兩可的內容會讓你被略過。



它們的重疊之處

三者之間的重疊比大多數團隊想像的還要大:乾淨的語意 HTML、結構化資料和明確無誤的寫作,同時服務這三種系統。我最常看到團隊過度投入的地方是追逐 GEO 特定技巧,卻連基本的 schema 標記都還是壞的。先把基礎修好。

好奇這裡的其他開發者如何處理 llms.txt 以及用於 AI 爬蟲可見度的結構化資料——有人已經把這當作建置的標準環節了嗎,還是仍處於實驗階段?

https://dev.to/anoop_krishnava_46e07af8/seo-aeo-geo-a-technical-breakdown-for-developers-building-for-search-and-ai-answers-2f3d

https://www.worldprogramming.org/posts/seo-aeo-geo-a-technical-breakdown-for-developers-building-for-search-and-ai-answers-t2ga7w

Denis Augusto



測試壞掉了。而且不是你的錯。

星期一早上,你打開專案,CI 顯示紅燈。

你從上週五之後就沒動過任何東西。打開 log:與支付 API 的整合測試失敗。Timeout。

他們的 gateway 在凌晨 3 點發生不穩定。你的程式碼完美無缺。即便如此,build 還是紅燈,部署卡住,現在你得花半小時證明問題不是出在你身上。

有遇過這種情況嗎?依賴外部 API 的測試就是這樣:速度慢、不穩定,而且因為不是你的原因而壞掉。還有更糟的情境 — 真的去打支付 API 的測試,每次執行 php artisan test 就會在 sandbox 實際發動 30 筆收款,直到 gateway 覺得可疑而封鎖你。



問題:你的測試不應該認識網際網路

看看這個測試。看起來還算合理,對吧?

public function test_busca_o_cep(): void
{
    // isso bate no ViaCEP de VERDADE, toda vez que o teste roda
    $endereco = $this->service->buscarCep('01001000');

    $this->assertEquals('São Paulo', $endereco['cidade']);
}

Enter fullscreen mode

Exit fullscreen mode

哪裡有問題?所有測試中重要的事都有問題:

  • 速度慢 — 每個測試都要等待網路的來回。
  • 不穩定 — API 掛掉、變慢或改變回應,就會讓你的測試壞掉,但你的程式碼根本沒變。
  • 危險 — 如果是會收費、寄 email 或建立訂單的 API,你每次執行就是在真正執行這些動作。
  • 沒有控制權 — 要怎麼測試「當 API 回傳 500 錯誤時會發生什麼事」?你無法讓它在指定時間壞掉。

測試應該要驗證的是你自己的程式碼,而不是其他人的伺服器是否健康。



解決方案:Http::fake() 攔截一切

現在來到這個故事的 $pedido->restore() 部分。如果你使用 Laravel 的 HTTP Client(Http::get()Http::post()…),一行程式碼就能解決:

use IlluminateSupportFacadesHttp;

public function test_busca_o_cep(): void
{
    // A partir daqui, NENHUMA requisição sai de verdade.
    // Você diz o que cada URL deve responder.
    Http::fake([
        'viacep.com.br/*' => Http::response([
            'localidade' => 'São Paulo',
            'uf'         => 'SP',
        ], 200),
    ]);

    $endereco = $this->service->buscarCep('01001000');

    $this->assertEquals('São Paulo', $endereco['cidade']);
}

Enter fullscreen mode

Exit fullscreen mode

搞定。 Http::fake()攔截請求並回傳你指定的回應,完全不碰網路。測試可以在離線狀態下以毫秒級速度執行,而且每次結果都相同。你現在主宰了 API 的行為。



實際上該怎麼使用

fake() 非常有彈性。以下是你會經常使用到的幾種情境:

// Fingir QUALQUER requisição como 200 vazio (o mais simples)
Http::fake();

// Respostas diferentes por URL
Http::fake([
    'github.com/*'  => Http::response(['plano' => 'pro'], 200),
    'viacep.com.br/*' => Http::response('', 404), // simula CEP não achado
]);

// Simular a API fora do ar (erro 500) — o caminho que ninguém testa
Http::fake([
    'gateway.com/*' => Http::response('Erro interno', 500),
]);

Enter fullscreen mode

Exit fullscreen mode

注意最後一個:現在你可以測試失敗路徑了。「如果 gateway 回傳 500,我的應用程式是顯示友善訊息,還是直接在使用者面前崩潰?」如果沒有 fake(),你永遠無法回答這個問題。



光模擬還不夠:確認你送出的內容是正確的

這裡就是區分「真正測試」與「只是假裝」的陷阱所在。

模擬回應並不能保證你正確地組裝了請求。有沒有傳認證 header?有沒有把值放在正確的欄位?Http::assertSent() 可以檢查這些:

Http::fake();

$this->service->cobrar(valor: 150, cartao: 'tok_abc');

Http::assertSent(function (Request $request) {
    return $request->url() === 'https://gateway.com/charges'
        && $request->hasHeader('Authorization')
        && $request['amount'] === 150;
});

Enter fullscreen mode

Exit fullscreen mode

現在測試同時保證了兩邊:你正確地送出了該送的內容,而且正確地回應了收到的結果。



額外好處:禁止真實請求溜出去

有一個很陰險的細節。如果你忘記為某個 URL 設定 fake,請求就會真的發出去 — 而你根本不會發現那個測試仍然依賴網路。

preventStrayRequests() 可以把這扇門關起來:

Http::preventStrayRequests();

Http::fake([
    'gateway.com/*' => Http::response('ok'),
]);

Http::get('https://gateway.com/charges'); // ok, tá fakeado
Http::get('https://outra-api.com');        // 💥 lança exceção na hora

Enter fullscreen mode

Exit fullscreen mode

任何沒有對應 fake 的請求都會立刻拋出例外,而不是悄悄地跑到網路上。把這行放到你測試套件的 setUp() 裡,就能安心睡覺了。



在你關閉分頁之前

黃金法則:測試不應該和外面的世界對話。它應該快速且可預測地驗證你的程式碼。與 API 的真實對話,請留給獨立的整合測試,偶爾執行就好 — 而不是每次 commit 都跑。

一個重要細節:這只有在你使用 Laravel 的 HTTP Client(Http::)時才有效。如果你還是直接使用 Guzzle 或 cURL,fake() 就無法作用 — 而改用 Http:: 正是下一步(劇透:它也免費提供 timeoutretry,但那是另一篇文章的話題)。

告訴我:你在測試中會 mock API,還是仍然每天祈禱 sandbox 不要出問題?👀

https://dev.to/denisgusto1/seu-teste-bate-na-api-de-verdade-um-dia-ela-vai-te-trair-4l97

https://www.worldprogramming.org/posts/seu-teste-bate-na-api-de-verdade-um-dia-ela-vai-te-trair-lc1m6i


Cover image for How to Actually A/B Test AI Avatar vs. Text Chat Conversion (A Technical Approach)

Алексей Невостребов

針對 AI 虛擬人像領域常見的說法——語音/影片虛擬人像比純文字聊天轉換率更好——背後卻缺乏嚴謹的測試。如果你正在開發或嵌入這類 widget,以下是一種實際測量方法,而不是盲目相信廠商案例研究。

為什麼這比一般 A/B 測試更困難

標準 A/B 測試只替換一個變數(例如按鈕顏色、標題),其他所有條件保持不變。虛擬人像與文字聊天並非如此乾淨——你同時改變了互動模式、回應延遲預期以及視覺版面配置。你需要隔離真正重要的變數:語音/影片的存在是否能獨立於底層對話品質來提升轉換率?

更乾淨的實驗設定
javascript
// Pseudocode for variant assignment
function assignVariant(sessionId) {
const hash = hashSessionId(sessionId);
return hash % 2 === 0 ? ‘avatar’ : ‘text’;
}

兩種變體都必須保持不變的關鍵控制條件:

使用相同的 LLM 後端與提示詞/知識庫——對話邏輯不應不同,僅呈現層不同
使用相同的潛在客戶表單與 CTA 位置——不要讓除了虛擬人像與文字之外的 UI 差異干擾結果
使用相同的流量來源——如果流量組成不同,需依取得管道分群,因為付費與自然流量訪客的轉換行為本來就不同,與聊天 UI 無關
評估前的最低樣本數——新奇效應是真實存在的;只跑 3 天會高估虛擬人像的提升效果。至少跑 2-3 週,讓新奇感消退。
需要追蹤的指標(不只是轉換率)

僅看轉換率會掩蓋某一變體勝出或落敗的原因:

  • session_start_to_first_message(參與摩擦)
  • message_count_per_session(互動深度)
  • time_to_form_completion(虛擬人像/影片會增加延遲——這是花費時間還是獲得時間?)
  • bounce_rate_before_first_response
  • lead_quality_score(如果你能評分下游結果——垃圾潛在客戶並非真正的轉換)

值得注意的常見發現:虛擬人像變體有時會顯示更高的參與度(更多訊息、更長的工作階段),但完成的潛在客戶率卻相似或更低,因為更豐富的互動需要更長時間才能到達真正的 CTA。僅看總體轉換率會完全錯過這一點。

實際的統計顯著性

在正確驗證前不要相信任何結果:

python
from scipy.stats import chi2_contingency



conversions: [avatar_conversions, avatar_total, text_conversions, text_total]

contingency_table = [
[avatar_conversions, avatar_total – avatar_conversions],
[text_conversions, text_total – text_conversions]
]
chi2, p_value, dof, expected = chi2_contingency(contingency_table)

在典型中小企業流量規模(每月幾百次工作階段)下,你通常無法在合理的測試期間達到統計顯著性——值得在執行測試前先計算所需的樣本大小,而不是事後,以避免過度解讀噪音。

為什麼廠商案例研究無法取代此方法

虛擬人像平台發佈的案例研究幾乎都將「虛擬人像」與「完全沒有聊天 widget」比較——這比「虛擬人像與同等文字聊天機器人」容易得多。如果你正在決定是否要為語音/影片支付比文字高 2-3 倍的溢價,這才是真正重要的比較,而這通常需要你自己執行。

總結

如果某平台(或你自己的開發)聲稱虛擬人像轉換率更好,舉證責任在於一個受控、具有足夠統計功效的測試——而不是展示影片或彙總的案例研究。妥善執行此測試所需的基礎設施(一致的後端、正確的指標、適當的統計檢定)並不難建立,在投入預算購買高階方案前值得先完成。

https://dev.to/__d34ca/how-to-actually-ab-test-ai-avatar-vs-text-chat-conversion-a-technical-approach-p44

https://www.worldprogramming.org/posts/how-to-actually-ab-test-ai-avatar-vs-text-chat-conversion-a-technical-approach-ogllt5


Cover image for The Impact of AI on Development, Writers' Lives and the Future Landscape: An Essay by Ted Rubin

Theodore Rubin

Ted 探討人工智慧如何在造福開發者的同時,也對作家構成潛在風險,強調平衡且合乎倫理的做法。



強而有力的開頭

我們正處於一個人類創意與機器驅動創新之間的界線日益模糊的時代。人工智慧(AI)已經徹底改變了從醫療保健到金融等各個產業,而它對軟體開發的影響也不例外。但隨著 AI 在塑造我們的世界中扮演更重要的角色,我們必須同時認識到它的益處與潛在陷阱——特別是對站在這場科技演進最前線的作家與開發者而言。



背景脈絡

為什麼這個議題現在如此重要?原因在於科技進步的加速腳步。我們正目睹 AI 生成的內容在各種平台上爆炸性成長,從新聞文章、社群媒體貼文到音樂與藝術皆然。這股趨勢引發了關於著作權、原創性,以及我們如何看待機器與人類所產生的創意作品價值的根本問題。

身為科技作家與 AI 發展的觀察者,我親眼見證了 AI 如何同時賦能開發者,卻也對作家構成重大挑戰。一方面,AI 驅動的工具簡化了編碼流程、促成資料驅動的決策,甚至協助內容生成。然而,這些益處往往伴隨著無法預見的後果——我們必須正視這些後果,以確保未來科技能補足而非削弱人類的創意。



AI 的雙面刃

讓我們來探討這枚硬幣的兩面:AI 如何同時造福開發者與作家,以及過度依賴機器驅動創新的風險。在一方面,AI 已證明是軟體開發領域的改變遊戲規則者。透過自動化重複性任務,AI 工具釋放了人力資源,讓開發者得以專注於更具策略性與高階的工作——使他們能夠投入複雜的問題解決與真正突破可能的創意專案。

對作家而言,AI 輔助的內容生成提供了令人興奮的前景:能夠以前所未有的速度與效率產出高品質文章與故事的可能性。AI 演算法可以分析大量資料、辨識模式,甚至建議吸引人的敘事——可能徹底改變我們消費與互動書寫內容的方式。

然而,這把雙面刃也顯露了較為黑暗的一面。日益依賴 AI 生成的內容,威脅到我們對人類創意與原創性所賦予的價值。當機器能夠以前所未有的速度產出高品質作品時,我們自然會質疑自己的寫作技能是否正在變得過時。此外,真正著作權與 AI 輔助創作之間的界線正日益模糊——這引發了對智慧財產權、真實性,以及究竟是什麼讓我們之所以為人的本質的擔憂。



呼籲平衡

現在是時候在擁抱 AI 驅動創新的益處與守護讓我們身為人類的獨特價值之間取得平衡。透過認識這枚硬幣的兩面——AI 如何幫助開發者打造更好的軟體,同時也對作家的生計構成風險——我們才能共同努力創造一個科技能補足而非削弱我們創意努力的未來格局。

這需要以合乎倫理的方式將 AI 融入日常生活,優先重視透明度、責任感以及人類價值的保存。它要求我們認清原創性、真實性,以及唯有人類才能帶到桌上的獨特觀點的重要性。



這意味著什麼

人工智慧對開發、作家生活與未來格局的影響是一個多面向的議題,需要我們共同關注。透過擁抱這種複雜性,並認清 AI 驅動創新所帶來的益處與風險,我們才能為一個更平衡、合乎倫理且以人為本的世界描繪路線——在這個世界中,科技是增強我們創意的工具,而非取代它。

是時候讓我們為塑造這個未來格局負起責任。作為作家、開發者以及科技產業的利害關係人,讓我們共同努力創造一個 AI 能補足人類努力、提升我們創意潛力,並保存那些讓我們獨一無二的人類價值的世界。


By Ted Rubin

https://dev.to/currentlyted/the-impact-of-ai-on-development-writers-lives-and-the-future-landscape-an-essay-by-ted-rubin-1n97

https://www.worldprogramming.org/posts/the-impact-of-ai-on-development-writers-lives-and-the-future-landscape-an-essay-by-ted-rubin-itno9j

研究人員發現咗接近 7,600 個惡意 GitHub 儲存庫,其中超過 800 個扮成 AI skills 或 MCP 伺服器,嚟散布 SmartLoader 惡意程式。
呢個叫做 FakeGit 嘅行動,用咗抄襲項目、相似開發者帳戶、同埋有說服力嘅 README 嚟誘騙用戶下載惡意 ZIP 檔。
小心啲呀,千祈唔好隨便下載嚟歷不明嘅 GitHub 項目!
https://thehackernews.com/2026/07/fakegit-campaign-uses-7600-github.html

Unity 今日宣布 Unity 7 嘅發展藍圖,呢個新版本會建基於 Unity 6 嘅相同架構,但會帶來更多改進同新工具俾開發者。
最勁係升級過程唔使重新建置,所有項目、技能同代碼都可以順暢帶入新一代。
Unity 7 預計喺 2026 年 12 月進入早期 beta 測試,正式發佈就係 2027 年年初左右。
公司強調呢個更新途徑可以避免中斷開發流程,團隊可以安心採用新功能。
更多詳情可以睇返呢個來源:https://www.gamedeveloper.com/programming/unity-unveils-unity-7-roadmap-with-update-path-that-won-t-break-your-build