![]()
作者 Nokka (นก-กา) | 2026 年 8 月 1 日
本文由 AI (deepseek-v4-flash:0731) 透過 Hermes Agent 撰寫
2026 年 7 月 30 日,OpenAI 宣布 GPT-5.6 系列大幅調價 [1]
此舉不只是單純降價,更是 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 是本次調價的核心 [1]
原價每百萬 token 為 $1.00/$6.00,現降至 $0.20/$1.20
等於降至原本的五分之一,輸入價格更是 Sol 的 1/25
更值得注意的是,Luna 仍保有工具呼叫(Tools)與多步驟處理能力
OpenAI 表示 Luna「速度快、成本最低」,卻仍能處理複雜任務 [2]
這不是廉價低效模型,而是專為企業實務設計的解決方案
Terra 從 $2.50/$15.00 降至 $2.00/$12.00 [1]
雖然沒有 Luna 亮眼,但 Terra 與 Sol 之間的價差拉大
Terra 成為「足夠好」的折衷選擇,適合大多數工作且價格親民
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 特別划算
費用提高至兩倍 ($0.40/$2.40) 後,仍比 Sol 的 Standard 模式 ($5.00/$30.00) 便宜
企業可同時享有速度與低成本
OpenAI 不只因競爭降價,更大幅優化後端系統 [2]:
OpenAI 利用 GPT-5.6 Sol 撰寫並調校 Production Kernel [2]
它還執行數百次實驗以提升 token 生成效率,並檢核訓練流程
這是令人印象深刻的「吃自己的狗食」(dogfooding)
OpenAI 正推動「不必每次都用最強模型」的觀念 [2]
依各階段複雜度選擇合適模型:
就像工程師挑工具 — 沒有人會用超級電腦來加總數字
依工作挑選模型,是控制成本的關鍵
OpenAI 推薦 Luna 的應用場景 [2]:
複雜且高需求的工作 — 可透過 Fast Mode 使用 Sol 來獲得速度
此次降價顯示 OpenAI 打出「量」牌 [1]
讓 AI 價格低到企業可大規模採用,不用擔心月底帳單
Luna 的輸入價格 $0.20/百萬 token,甚至比 GPT-4o mini 的輸出價格更低,但能力更強
此定價對 Anthropic、Google 及開源供應商都構成壓力
在我看來,Luna 如此低價代表我們能執行需多次呼叫 API 的 agentic workflow
成本已降至可接受範圍 — 這曾是 AI 投入生產的最大障礙
必須誠實說 — Luna 不是萬靈丹
需要深度推理或多層規劃的工作,仍應使用 Sol
若將 Luna 用於過於複雜的任務,可能得到較差結果,反而浪費更多時間修正
另一點需留意 — Fast Mode 收費為兩倍
若頻繁使用 Sol Fast Mode,帳單可能快速上升,應及早設定預算警示
OpenAI 正將戰場從「誰最強」轉為「誰最划算」
Luna 是此策略的主力武器 — 降價 80%、功能完整,並提供 Fast Mode 選擇
對台灣開發者與企業而言,這是廣泛導入 AI 的好時機
成本降低意味著「太貴而不敢試」的實驗,現在變成「值得一試」
若本文有幫助,請分享給對 AI 感興趣的朋友;若想持續追蹤 AI 新聞,歡迎訂閱
來源:
https://www.worldprogramming.org/posts/openai-gpt-56-luna-80-fast-mode-sol-ai-nqnqzz
![]()
我們為 smplkit 打造的應用基礎設施產品之一,是一個名為 Smpl Jobs 的 HTTP 工作排程器。當然,我們希望它在與其他工作排程器競爭時能表現優異,但我們想知道它在最重要的功能——準時發出 HTTP 請求——方面的實際表現如何。因此,我們決定找出答案。
測試概念很簡單:在整點發送請求到某個公開端點,並記錄請求到達的日期與時間。超過整點的毫秒數即為偏移量(skew):偏移量越低,表示排程器越「準時」。
雖然概念簡單,但要找到一個公開端點,讓排程器可以觸發,同時又能捕捉並儲存到達時間,其實並不容易。我們最終需要的是一個通用基準測試託管網站,能夠 POST JSON 訊息,用來識別基準測試、測試對象,並記錄請求到達的日期與時間。我們找不到符合需求的服務,因此自己建了一個。三週後,smplmark.org 上線,準備接受各排程器的測試。
我們建立基準測試,定義測試對象,然後將每個排程器設定為在 smplmark 的 measurement API 發出請求,並附上 JSON 酬載,識別基準測試、執行次數,以及正在測試的排程器 ID。smplmark 會記錄每次測量建立的日期與時間;另一個 skew 指標則由 created_at mod 3600000 衍生而來,代表超過整點的毫秒數。
每位參賽者皆使用免費方案(或接近免費方案):其中有幾個每月大約會向我們收取一美元的費用。部分原因是為了維持公平性;主要目的是將帳單維持在接近零的程度。
我們已知的測試方法有四個缺點:
60.1 分鐘,實際上會顯示為只晚了 6 秒。這是極端案例:唯一晚到足以接近這個邊界的參賽者是 GitHub Actions,而它們是以分鐘級的差距落後,而不是以秒為單位。這個模數計算也會反向作用:如果請求提早到達,會被記錄為接近一小時晚。但所有接近這個邊界的到達時間都屬於 GitHub Actions,而它們的不穩定性是顯而易見的(且有文件記載)。以下是目前的測試結果。以下圖片為固定快照,因此我們引用的數字會與其來源圖表並列;即時排行榜每小時更新一次,當你閱讀本文時,數字可能已經改變。我們從圖表中移除了 GitHub Actions,因為在其規模下,其他長條將無法顯示。
截至 7 月 31 日,整點過後的偏移量中位數(毫秒)。開啟即時排行榜查看最新數字與測試方法。
Posthook 最接近目標,中位數偏移量為 656 毫秒,緊隨其後的是 Runhooks 的 749 毫秒。QStash 與 Smpl Jobs 旗鼓相當,約為 1.5 秒;在其後,EasyCron、Google Cloud Scheduler 與 cron-job.org 皆穩定地在要求時間的約 4 到 8 秒 內觸發。
截至 7 月 31 日上午的四天到達記錄,每個到達時間一個點,已排除 GitHub Actions 以符合比例。
有趣的是,AWS EventBridge 幾乎總是準確地晚了 26.5 秒。我們記錄的每一次到達時間都落在幾百毫秒的範圍內;你可以根據它到底晚了多久來對錶。公平來說,EventBridge 的設計目的是在大規模下分發事件,而且它擅長這件事。
Cloudflare Workers 也持續延遲:通常在整點過後約 33 秒——雖然本週有幾次執行漂移到接近 51 秒。我們原本以為其請求可能不會離開自身網路的參賽者,仍然晚了 33 秒,因此對它們來說並沒有主場優勢。
截至 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 個現有工具。全部試過後,結果如下:
每個工具都做同一件事:發布文章。就這樣。也許拉取。也許驗證標籤。
與此同時,Dev.to API 有 40+ 個端點,包含分析、語意搜尋、機器學習驅動的內容概念、追隨者互動、趨勢追蹤,以及閱讀清單管理。沒有人在使用這些功能。
所以我建立了 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 |
在建立 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 呼叫很難,而是因為我希望用戶端從第一天起就具備生產等級:
第一版並沒有這些功能。它只是呼叫 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。
我修正了這個問題,要求同時擁有 title 與 published 鍵,並且只掃描已知的目錄(articles/、posts/、content/、drafts/)。雖然是小事,但想像一下不小心把 CONTRIBUTING.md 當成 Dev.to 文章發布出去。
如果重來我會做什麼改變
從 pull 指令開始,而不是 push。 Pull 會強迫您在建立資料模型之前先了解 API 回應格式。我先根據文件建立模型,之後發現真實回應不同時才修正。
從一開始就撰寫模擬測試。 我先寫完所有程式碼才寫測試。應該在撰寫用戶端方法時就同時撰寫 API 模擬回應。這樣就能立刻發現巢狀字典的問題。
在 v0.0.1 就包含速率限制器。 我一開始想著「晚點再加」。在真實測試的 30 分鐘內就遇到限制。應該從第一個 commit 就加入。
src/devpub/
api/ # 帶有速率限制與重試的 HTTP 用戶端
cli/ # Click 指令 + Rich 終端機輸出
core/ # 商業邏輯(文章、同步、驗證、設定)
Enter fullscreen mode
Exit fullscreen mode
關鍵決定:
$ pytest -v
57 passed in 1.08s
Enter fullscreen mode
Exit fullscreen mode
測試使用 respx 模擬 HTTP 層。CI 中沒有真實的 API 呼叫。涵蓋:
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
每個指令都回傳結構化輸出,會自動處理速率限制,並支援 --dry-run。AI 程式碼代理(Claude Code、Copilot、Cursor)可以將 devpub 作為其發布層。代理撰寫文章,devpub 驗證、推送並追蹤表現。初始設定後無需人工介入。
本專案目前處於 beta 階段。歡迎提交 PR。以下是一些需要協助的地方:
--graph 旗標已被接受但尚未實作請查看 issues 尋找標有 good first issue 的項目。
GitHub: github.com/simplynadaf/devpub
如果這節省了您的時間,請給 repo 按星。如果有東西壞了,請開 issue。如果您想要某個功能,請送 PR。
您目前的 Dev.to 工作流程是什麼?您是在瀏覽器編輯器中撰寫,還是已經有本地設定?想知道大家遇到的痛點是什麼。
由 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 提出了程式語言的理念,該語言:
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 年才出版)
回到 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 在人類登月前所構思的一樣
在 LISP 之前 — 程式設計師必須 100% 自己管理記憶體,每一行都要處理 malloc 與 free
LISP 創造了世界上第一個垃圾回收機制 — 其原始版本是 mark-and-sweep 演算法(由 MIT 學生 Daniel Edwards 實作)
如今 GC 已成為幾乎所有高階語言的預設機制 — Java、Python、JavaScript、Go、C#、Ruby 都延續並發展了這個概念
(lambda (x) (* x x))
Enter fullscreen mode
Exit fullscreen mode
LISP 讓函式成為 first-class citizen — 可以將函式當作參數傳遞、回傳函式、將函式存入變數,就像處理字串或整數一樣
這就是以下特性的源頭:
(x) => x * x(Brendan Eich 原本被 Netscape 聘請是要在瀏覽器中實作 Scheme — 但管理階層改變主意,要求語法像 Java)lambda x: x * x
Read-Eval-Print Loop — LISP 在 1960 年代創造了它
在那之前:撰寫程式碼 → 編譯 → 執行 → 除錯 → 重複
在那之後:輸入表達式 → 按下 enter → 立即看到結果
如今當你開啟 Python REPL(>>>)、Node.js console、Ruby IRB、Chrome DevTools、Rust Playground 或 Elixir IEx — 你正坐在與 60 年前 LISP 程式設計師相同的教室裡
'(+ 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」的概念出現在:
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 沒有勝出?
Paul Graham(Y Combinator 創辦人、LISP 鐵粉)在散文 “Beating the Averages” 中解釋道:
Graham 堅稱:
“Lisp is a language that was discovered, not invented.”
而 LISP 的批評者(包括曾經在生產環境使用後轉向其他語言的人)指出了 Graham 未提及的額外問題:
總結:沒有單一原因 — 這是語法差異 + 生錯時代 + 社群分裂 + 缺乏企業贊助(與 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 月 | ⚠️ 資料以撰寫當時為準
![]()
我是一位品牌策略師,不是開發者——但我執行的每個行銷活動,最後都會變成與某個工程團隊的對話。過去一年,這場對話已經轉變。以前談的是 meta tags 和 sitemaps。現在談的是網站是否能被 powering AI 答案的模型讀取。這裡是我實際會帶著開發團隊走的技術拆解。
這是大多數工程師已經熟悉的部分。可被爬取的 HTML、乾淨的 URL 結構、快速的 Core Web Vitals、有效的 schema.org 標記、正確的 sitemap.xml 和 robots.txt。基本機制並沒有太大改變——改變的是結構化資料現在承載的權重,因為這是 AEO 和 GEO 系統同樣依賴的標記。
這是關於將內容格式化,以便能直接被提取成精選摘要或語音/聊天答案。實際上,這代表:在區段前 1-2 句話中,直接給出針對隱含問題的自包含答案、真實的 FAQ schema(JSON-LD 中的 FAQPage,而非僅視覺樣式的手風琴元件),以及對應人們實際提問的標題結構,而非僅關鍵字字串。如果一個區段在脫離上下文獨立閱讀時無法被正確理解,就不會被挑選。
這是最新的一層,目標是大型語言模型而非傳統爬蟲——想想 AI Overviews、Perplexity、ChatGPT 的瀏覽模式。我看到幾個真正能產生影響的事項:在根目錄放置 llms.txt 檔案(仍是非正式、尚未被正式標準化的,但越來越受到尊重)、在每個頁面與每個第三方提及中保持關於實體的一致事實主張(NAP 一致性不再只是本地 SEO 的事,現在也是實體辨識的事),以及用平實語言陳述事物而非埋藏在行銷文案中——生成模型傾向於提取並引用區塊中最明確無誤的句子,因此模稜兩可的內容會讓你被略過。
三者之間的重疊比大多數團隊想像的還要大:乾淨的語意 HTML、結構化資料和明確無誤的寫作,同時服務這三種系統。我最常看到團隊過度投入的地方是追逐 GEO 特定技巧,卻連基本的 schema 標記都還是壞的。先把基礎修好。
好奇這裡的其他開發者如何處理 llms.txt 以及用於 AI 爬蟲可見度的結構化資料——有人已經把這當作建置的標準環節了嗎,還是仍處於實驗階段?
![]()
星期一早上,你打開專案,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
哪裡有問題?所有測試中重要的事都有問題:
測試應該要驗證的是你自己的程式碼,而不是其他人的伺服器是否健康。
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:: 正是下一步(劇透:它也免費提供 timeout 和 retry,但那是另一篇文章的話題)。
告訴我:你在測試中會 mock API,還是仍然每天祈禱 sandbox 不要出問題?👀
https://dev.to/denisgusto1/seu-teste-bate-na-api-de-verdade-um-dia-ela-vai-te-trair-4l97
![]()
針對 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 週,讓新奇感消退。
需要追蹤的指標(不只是轉換率)
僅看轉換率會掩蓋某一變體勝出或落敗的原因:
值得注意的常見發現:虛擬人像變體有時會顯示更高的參與度(更多訊息、更長的工作階段),但完成的潛在客戶率卻相似或更低,因為更豐富的互動需要更長時間才能到達真正的 CTA。僅看總體轉換率會完全錯過這一點。
實際的統計顯著性
在正確驗證前不要相信任何結果:
python
from scipy.stats import chi2_contingency
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 倍的溢價,這才是真正重要的比較,而這通常需要你自己執行。
總結
如果某平台(或你自己的開發)聲稱虛擬人像轉換率更好,舉證責任在於一個受控、具有足夠統計功效的測試——而不是展示影片或彙總的案例研究。妥善執行此測試所需的基礎設施(一致的後端、正確的指標、適當的統計檢定)並不難建立,在投入預算購買高階方案前值得先完成。
![]()
Ted 探討人工智慧如何在造福開發者的同時,也對作家構成潛在風險,強調平衡且合乎倫理的做法。
我們正處於一個人類創意與機器驅動創新之間的界線日益模糊的時代。人工智慧(AI)已經徹底改變了從醫療保健到金融等各個產業,而它對軟體開發的影響也不例外。但隨著 AI 在塑造我們的世界中扮演更重要的角色,我們必須同時認識到它的益處與潛在陷阱——特別是對站在這場科技演進最前線的作家與開發者而言。
為什麼這個議題現在如此重要?原因在於科技進步的加速腳步。我們正目睹 AI 生成的內容在各種平台上爆炸性成長,從新聞文章、社群媒體貼文到音樂與藝術皆然。這股趨勢引發了關於著作權、原創性,以及我們如何看待機器與人類所產生的創意作品價值的根本問題。
身為科技作家與 AI 發展的觀察者,我親眼見證了 AI 如何同時賦能開發者,卻也對作家構成重大挑戰。一方面,AI 驅動的工具簡化了編碼流程、促成資料驅動的決策,甚至協助內容生成。然而,這些益處往往伴隨著無法預見的後果——我們必須正視這些後果,以確保未來科技能補足而非削弱人類的創意。
讓我們來探討這枚硬幣的兩面:AI 如何同時造福開發者與作家,以及過度依賴機器驅動創新的風險。在一方面,AI 已證明是軟體開發領域的改變遊戲規則者。透過自動化重複性任務,AI 工具釋放了人力資源,讓開發者得以專注於更具策略性與高階的工作——使他們能夠投入複雜的問題解決與真正突破可能的創意專案。
對作家而言,AI 輔助的內容生成提供了令人興奮的前景:能夠以前所未有的速度與效率產出高品質文章與故事的可能性。AI 演算法可以分析大量資料、辨識模式,甚至建議吸引人的敘事——可能徹底改變我們消費與互動書寫內容的方式。
然而,這把雙面刃也顯露了較為黑暗的一面。日益依賴 AI 生成的內容,威脅到我們對人類創意與原創性所賦予的價值。當機器能夠以前所未有的速度產出高品質作品時,我們自然會質疑自己的寫作技能是否正在變得過時。此外,真正著作權與 AI 輔助創作之間的界線正日益模糊——這引發了對智慧財產權、真實性,以及究竟是什麼讓我們之所以為人的本質的擔憂。
現在是時候在擁抱 AI 驅動創新的益處與守護讓我們身為人類的獨特價值之間取得平衡。透過認識這枚硬幣的兩面——AI 如何幫助開發者打造更好的軟體,同時也對作家的生計構成風險——我們才能共同努力創造一個科技能補足而非削弱我們創意努力的未來格局。
這需要以合乎倫理的方式將 AI 融入日常生活,優先重視透明度、責任感以及人類價值的保存。它要求我們認清原創性、真實性,以及唯有人類才能帶到桌上的獨特觀點的重要性。
人工智慧對開發、作家生活與未來格局的影響是一個多面向的議題,需要我們共同關注。透過擁抱這種複雜性,並認清 AI 驅動創新所帶來的益處與風險,我們才能為一個更平衡、合乎倫理且以人為本的世界描繪路線——在這個世界中,科技是增強我們創意的工具,而非取代它。
是時候讓我們為塑造這個未來格局負起責任。作為作家、開發者以及科技產業的利害關係人,讓我們共同努力創造一個 AI 能補足人類努力、提升我們創意潛力,並保存那些讓我們獨一無二的人類價值的世界。
By Ted Rubin
![]()
研究人員發現咗接近 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