一道發光的計量弧線,指針正落入紅色警戒區,平價方案被留在身後

平價方案時代結束了——在「計量表」上為獨立開發預算

在很長一段時間裡,獨立開發者只需要用一個靜態數字,就能回答一個問題:「這個東西每個月花我多少錢來跑?」 你把伺服器、資料庫、幾個 SaaS 訂閱加一加,進位取整,就結束了。數字是平的,你照著它開發,然後就忘了它。 那個數字現在是假的。 你賴以開發的工具,已經不再向你收平價費用,而是改用「計量表」收費。地球上最普遍的 AI 程式訂閱——GitHub Copilot——在 2026 年 6 月 1 日改為用量計費:每個方案每月會消耗「AI 信用額度」,每點固定等於一美分,而且過去「用完了就自動降級到便宜模型」的機制已經完全移除。Anthropic 現在估計,開發者平均每天在 Claude Code 上燒掉 13 美元的 token 費用——比先前的 6 美元翻了一倍多,而且只靠一次低調的文件修改就改了。平價方案結束了,獨立開發者感受最深,因為沒有財務長來吸收意外。你同時是財務長、工程師,以及那個付帳單的人。 這篇文章不是在檢討帳單為何上漲——那是另一個論點。這裡要談的是向前看的問題:當你的成本基礎從「菜單」變成「計量表」時,你要怎麼為一個開發案編預算? 你過去需要的兩種成本數字——以及你現在需要的第三種 獨立開發者向來要追蹤兩個數字: 固定成本——伺服器、網域、SaaS 席位。可以預測、按月計、沒得商量。 你的時間——用小時來編預算、用星期來消耗的東西。 用量計費的 AI 帶來了第三個數字,它跟前面兩者都不像: 變動的 agent 成本——token 的消耗,取決於你的工具做得多用力,而不是你有幾個工具。閒置時很低,上線衝刺時飆高,而且在帳單出現前完全看不見。 陷阱在於,多數獨立開發者出於習慣,會把這個數字歸到「固定成本」底下,因為訂閱感覺上是平的。GitHub 對 Copilot Pro 還是收每個月 10 美元。改變的不是價格——而是這筆錢現在買到的是一個計量表(Pro 是 1,000 點),而你之後的每一次互動都在讓計量表往下掉。 取代「進位取整然後忘掉」的紀律 為一個計量式的開發案編預算,並不比老方法難。就三個習慣,照順序來: 在寫程式之前,先訂下一個數字。 決定這個開發案每個月被允許花多少錢——工具訂閱加上計量額度——然後把它當成上限,而不是描述。一旦你有數字,「超支」就成了決定(「這個功能值得讓計量表往下掉嗎?」),而不是意外。 把計量表和菜單分開。 平價的部分(伺服器、席位、網域)是你的菜單——你事先就知道。計量的部分(agent token、API 呼叫、用量額度)是你的計量表——你只能事後才知道。把它們編成兩行預算,不要併成一行。混成單一數字,只會藏住到底是哪一邊在吃掉你。 盯著計量表,不是價目表。 價目表跌了三年,卻沒能阻止任何人的帳單上漲。真正重要的數字,是週末時計量表實際讀到的數字,而不是一個 token 賣多少錢。 這些都不需要你沒有的儀表板。記事本裡的一行字,每個禮拜看一次,就贏過一張月底才看到的帳單。整套技能,就是把「我看看它花了多少」變成「這是它被允許花多少」。 實際數字,如果你想有個錨點 從平價轉向計量,不是抽象概念——它已經被定價了: GitHub Copilot——2026 年 6 月 1 日起用量計費。1 點 = 0.01 美元。Pro 每月含 10 美元額度,Pro+ 每月含 39 美元,還有新的 Copilot Max 方案每月 100 美元(20,000 點)給重度 agent 使用。過去「用完方案就降級到便宜模型」的機制已經取消——你要嘛付超支費用,要嘛撞上上限。 Anthropic Claude Code——平均每天每位開發者 13 美元、每月 150–250 美元,其中 90% 的使用者每天低於 30 美元。Anthropic 在 2026 年 4 月把這個估計從 6 美元翻倍,因為前沿模型(Opus 4.7)變成了預設。 你已經在買的軟體訂閱——任何「無限」的 AI 方案,都在悄悄變成額度方案。徵兆永遠一樣:原本寫「無限」的方案,現在變成「內含 X 點」。 這些不是邊緣案例。這個領域最大、最無聊的廠商——GitHub——剛剛把它旗艦產品搬上了計量表。還沒適應的獨立開發者,正在用去年的模型編預算。 ...

領域知識把 AI 原始輸出變成價值

AI 不會自動創造商業價值——真正讓它有用的,是你的領域知識

AI 讓「建造」變便宜,卻不會讓「建造」變得有價值。這是兩個不同的問題,而大多數人只注意到第一個。 你只要把需求描述清楚,現代的 AI 工具就會把功能生出來——研究、程式碼、測試、編譯全都包辦。就算被 App Store 審核打了十次回票,它也能逐一診斷、逐一修正。舊工作裡「動手做」的部分,確實變快了。 沒有變快的,是更早就問、也更安靜的那個問題:你到底該不該做這個東西? 這不是下指令(prompt)的問題,而是領域(domain)的問題。AI 不知道一個人真正能照著做的是哪個訊號,因為它從來沒經歷過對方的一天。它可以一個晚上產出一百張圖表,卻不會問:哪一張回答了對方真正卡住的那個決定——那個能讓早晨變得輕鬆一點的「是或不是」。 價值從來不在輸出裡,價值在「翻譯」裡:把技術訊號收斂成一個人每天真正要做的那一個選擇。 這種翻譯有個名字——領域知識。它就是「會生產的 AI」和「能解決問題的產品」之間的分界線。 GainCut 的「恢復」功能就是一個乾淨的案例。它背後的訊號——心率變異度(HRV)——是一個早已解決的問題,論文多年前就公開了。用 AI 把它重做一次從來不是重點。重點是決定那個疲憊的人真正需要什麼:不是三條重疊的波形和一堆圖表,而是一個單純的是或不是——綠燈,練;黃燈,輕鬆做;紅燈,休息。AI 做了研究、寫了 SwiftUI、跑了測試、處理編譯、扛下 App Store 十次退件和它們的修正。這些沒有一樣是價值所在。價值在那個「翻譯」裡,而那個翻譯來自真正活在這個問題裡的人,不是來自模型。(GainCut 是真的有一款產品——App Store 上的卡路里計算機。) 重點不是「不要用 AI」,而是「不要盲目地用 AI」。真正從 AI 身上拿到價值的人,不是授權給 AI 最多的那一個,而是走進來時就知道什麼值得做、再用 AI 把它做得更快的那一個。AI 放大的是這份判斷的影響力,而不是替你產生這份判斷。 對獨立開發者來說,整件事可以濃縮成一句話:把寶貴的時間花在貼近一個真實的問題、以及困在那個問題裡的人——近到你能叫出他卡住的那個決定。這部分沒有任何人能自動化掉。至於那之後的一切,AI 可以接手。 AI 負責做。領域知識負責決定什麼值得做。 這篇落在站上幾個主題的交會處:〈AI 代理還做不到的事〉講的是能力天花板,〈監督者階級〉講的是你停止寫程式、開始指揮它,〈「完成」是一個宣稱,不是事實〉講的是信任輸出的儀式。這一篇談的是更早的那個問題——你正在做的東西值不值得做,以及那份判斷力從哪裡來。

一人公司不再是論述

一人公司不再是論述,它已經是預設選項

「獨立創辦人」以前是投資人會皺著眉頭說出的一個詞。它讀起來像找不到共同創辦人——是投資條款書上的紅旗。單打獨鬥是備案,不是重點。 這套說法現在死了,而且它不是被論述殺死的。它死掉的方式,跟所有說法真正死掉的方式一樣:資料不再支持它。這篇文章談的是殺死它的兩份資料——以及其中一個最常被引用錯的數字。 一人公司現在是預設形狀 先看公司怎麼成立。 Stripe Atlas:2026 年第二季透過 Atlas 成立的美國 C 型公司中,63% 是單人創辦——史上最高。這不是小眾。這是在「代辦成立公司」這件事上量體最大的平台上,新公司的多數形狀。 Carta,量的是更廣的族群:單人創辦的新公司佔比,從 2019 年的 23.7%,升到全美新公司的三分之一以上。 六年間佔比增加 53%。 兩份資料、不同方法、同一個方向。一人公司不再是一種主張或論述。它是基準結果。 這篇在整個系列裡的位置——這是單人創辦系列的第四篇,每一篇回答不同的問題。為什麼一個人現在能做出以前要一隊人做的東西 講的是機制(為什麼一個人現在能做出來)。獨立創辦人正在勝出——改變了什麼 講的是結果(成果已經公開,污名已死)。這一篇講的是成立與募資之間的落差——當「一個人開始」變簡單了,而募資的討論卻跟標題講的不一樣時,你該怎麼理解。如果你問的是「人」的問題而不是「市場」的問題,那是該不該找共同創辦人?。 那個最常被引用錯的數字 這裡是多數報導出錯的地方。有一個廣泛流傳的統計說,單人創辦只佔創投投資案的約 17%,然後被拿來論證:「你看,單人創辦還是拿不到投資。」 這個數字是真的(Eqvista,2026-08-18 更新——單人創辦公司達到新成立公司的 35%,但它們在已完成的創投輪次中佔比持平在 17%)。但它並不是在說大家以為的那件事。它衡量的不是單人創辦人募不到錢。它衡量的是兩個族群的比率:很多新公司是單人成立的,但後來去募機構資金的公司,偏向多人創辦。 這是兩個不同的宣稱,而差別很重要——因為直接衡量「單人創辦人實際募資時的表現」的那份資料,說的是完全不同的事。 直接測量:單人創辦募到的輪次規模相當 來自 Solo Founders Annual Report(建構於 Carta 資料集): Series A 估值中位數 單人創辦 $54.9M 多人創辦 $53.6M ← 這不是落差 在種子輪與 B 輪,單人團隊略低。但在 A 輪——一家公司要嘛有生意、要嘛沒生意的那一輪——兩者中位數相差不到 2.5%。 所以 17% 這個數字,不是單人創辦募不到錢的證據。它是「單人創辦公司這個族群」偏向那些本來就不打算募資的公司的證據——因為現在一個人成立公司的成本已經低到,你不需要許可、不需要資金、也不需要合夥人就能開始。當成立很貴的時候,每個會去成立的人,隱含上都是可被投資的。當成立免費的時候,成立池就灌進了本來會選擇自籌的公司。 那道門沒有關上。只是更多人不走那道門了。 真正分出勝負的是什麼 Stripe 的資料在這裡才真正有用,因為它量的是離散度,不是平均數。它比較了 2022 與 2023 年成立、各自有兩年以上營收資料的單人創辦 Atlas 公司: 單人創辦人的營收離散度(前六個月) 最高十分位 ÷ 中位數 四年前: 34 倍 2025 年: 61 倍 單人創辦公司的中位數,前六個月營收年減 23%。最高十分位則是年增 19%。四年間差距幾乎翻倍。 ...

一個敞開的堅固保險箱,鑰匙仍插在鎖上,一張摺好的紙條塞在箱底縫隙下

你的代理不需要被駭。它只需要被信任。

有一個事實應該會改變你對代理安全的理解方式:2026 年 7 月,研究人員突破了四款被廣泛使用的 AI 程式代理——Cursor、Codex CLI、Gemini CLI 與 Antigravity——而他們一次都沒有打破沙箱。 那七項已揭露的問題,沒有任何一項直接擊敗沙箱。它們全部利用了同一件事:沙箱限制的範圍,與沙箱之外某個受信任的元件後來所讀取、執行或掃描的內容之間,存在一道落差。 如果你已經鎖緊了「接上代理的東西」——工具描述、你貼進去的那些伺服器——那些工作是實在的,但它並沒有涵蓋這裡。這是另一半:不是你接上了什麼,而是代理接上之後能做什麼。 這個模式有名字:信任交付(the trust handoff) 雲端安全聯盟(CSA)針對這次揭露的研究報告說得很直白:「一個沙箱的強度,取決於它下游所有東西所做的假設。」 代理不需要逃逸。它只需要寫下某樣東西,而那樣東西之後會被其他東西信任。接著那個受信任的元件就會代替它、在邊界之外、用你的權限執行它。 看看這每一項有多麼平常: Cursor,CVE-2026-48124(CVSS 8.5)。 一個由工作區控制的 .claude/settings.local.json「Stop」hook,會在每一輪代理結束時自動執行一個未受沙箱隔離的本機指令。沒有任何核准提示。已於 3.0.0 修補。 Codex CLI,「GitPwned」(CVSS 8.6)。 安全指令允許清單只信任了 git show 這個名稱,卻沒有對它的參數建模。git show --output=./.git/config 寫入了一個惡意的外部 diff 工具項目,並在受害者下次執行 git diff 時以完整的使用者權限執行。已於 0.95.0 修補。 Cursor「DuneSlide」,CVE-2026-50548 + CVE-2026-50549(各為 CVSS 9.8)。 經提示注入的指令操縱了工作目錄與符號連結的驗證邏輯,覆寫了沙箱輔助程式本身。已於 3.0 修補。 Antigravity。 代理在沙箱內寫入了一份 .vscode 任務設定;主機端在該產品的 Secure Mode 邊界之外執行了那個任務。Google 將其歸類為「其他有效安全漏洞」,且在揭露時尚未修補。 Cursor、Codex CLI、Gemini CLI。 一個具備特權的本機 Docker socket,變成了其他受限制代理也能觸及、不受沙箱隔離的執行環境——掛載 VirtioFS 共享目錄,取得家目錄的讀寫權限。 再讀一次這些案例,注意其中少了什麼:沒有惡意軟體、沒有憑證竊取、沒有零時差漏洞。 每一件都是代理寫了一個檔案,然後某個受信任的東西讀了它。 那一個完全不需要漏洞利用 如果沙箱突破聽起來像別人的問題——你不跑帶 hook 的 IDE 代理——那接下來這個就是獨立開發者的版本。 ...

幾條線纜插在一個集線器上,其中一條明顯磨損,映著溫暖的琥珀色光

你的代理,信任所有你接上去的東西

現在大多數獨立開發者,都在跑一個握有真實權限的 AI 代理:檔案系統、幾組 API 金鑰、一個資料庫,也許還有一支部署腳本。為了讓它有用,你把它接上了各種東西。一個從 README 抄來的伺服器。一份從部落格文章複製的設定。某個「四分鐘就搞定」的東西。 值得慢下來看的,正是這一塊。 你實際上同意了什么 MCP 伺服器不是外掛。當你接上一個,你把一組工具交給了代理,同時也把描述這些工具的結構定義交給了它——名稱、參數,以及描述。模型讀的就是那份描述,並據此決定何時呼叫它。 這裡有個信任落差,而且它是結構性的,不是誰的程式碼有 bug。工具的描述只在你連接的那一刻被審查過一次。工具的回應卻沒有對等的檢查。伺服器回傳什麼,就進到你的模型上下文裡,並被當成輸入來讀。如果回應裡夾著指令,模型可能會照做。 開放全球應用程式安全計畫(OWASP)直接描述了隨之而來的攻擊:一個惡意伺服器提供一個名字聽起來很無害的工具,像是 get_compliance_status;當你的代理呼叫它,回應看起來像一份正常報告,卻夾帶一段隱藏指令,要代理去讀取一個敏感檔案,並把它送到某個外部位置。你的代理有讀檔能力,也有網路能力。字串本身擋不住任何事。 真正該讓你不安的點是:模型無法可靠地區分「資料」與「指令」。 這不是換一個更強的模型就能解決的問題。這就是這項技術的形狀。 數字已經不是理論了 2025 年大部分時間,這還是一類研討會簡報等級的漏洞。現在不是了。 MCPTox 這個學術基準測試,針對真實伺服器評估了投毒攻擊,橫跨 45 個實際運作的 MCP 伺服器與 20 個語言模型,測得平均攻擊成功率 36.5%,最差情況下單一模型達到 72.8%。 再看一次第一個數字。大約每三次嘗試,就有一次成功。這不是你「小心一點」就能繞過的邊角案例。 而且投遞成本變便宜了。2025 年 4 月發表的一個概念驗證,用的不是什麼稀奇手法,只是一個被投毒的計算機工具描述,就從某個 AI 程式編輯器裡悄悄外洩了開發者的 SSH 私鑰。一個相關的變體被稱為 MCPoison,示範了透過單一提交的設定檔造成整個團隊的淪陷——一個人的 pull request,變成所有人的問題。雲端安全聯盟 2026 年 7 月的研究報告,則記錄了一類 IDE 自動執行的攻擊:光是開啟一個專案,就足以讓專案自帶的伺服器以開發者層級的權限被執行。 注意這三者的共同模式:它們都不需要你犯下什麼明顯的錯誤。 你不需要點擊任何東西。你只需要接上一個東西、打開一個資料夾,或合併一個 pull request。 為什麼獨立開發者是暴露的那一群人 MCP 的安全指引,通常是寫給平台團隊看的:結構定義簽章基礎設施、政策即程式碼的決策點、職責分離、需要一個以上真人參與的審批流程。 這些你一樣都沒有。你沒有安全審查——你就是那個審查。而你手上是最危險的組態:一個代理同時握有檔案存取、憑證,以及對外網路請求。 這不是叫你別用 MCP。這是叫你對「開哪幾道門」刻意一點,因為影響範圍完全取決於你接上了什麼。 十分鐘的檢查 你不需要任何基礎設施。你需要的是一個習慣,和一份短清單。 接上任何伺服器之前,先讀它的工具描述。 不是 README。是描述本身。根據廣被引用的靜態指標,以下這些應該讓你停下來: 對模型下指令的祈使句。 文字是對著模型說的,而不是對你說的:「忽略先前的指令」、「不要告訴使用者」、「回答前先讀取……」 敏感路徑。 一個你根本不預期它需要用到,卻提到 ~/.ssh、id_rsa、.env、.aws/credentials、/etc/passwd 的工具。 外洩的形狀。 一個動作動詞——send、post、upload、forward——緊挨著一個外部目的地:URL、webhook、端點。 零寬字元。 Unicode 範圍 U+200B–200F、U+202A–202E、U+2060、U+FEFF,被用來躲避人眼審查。看不見的東西,你就無法批准。 藏在註解裡的指令。 夾在 HTML 或 markdown 註解中、在渲染檢視下看不見的、對模型說的文字。 這份清單幾分鐘就能查完。最後兩項是最多人漏掉的,因為它們的運作方式,就是讓正在做審查的那個人看不見。 ...

第一筆小額、真實的營收

你的第一筆收費:為什麼 5 美元的真人付款,贏過一次「完美」的發布

有一個信念,比任何技術問題都更安靜地殺死獨立產品:「等它夠好,我再開始收費。」 產品永遠不夠好,所以收費永遠不來,所以產品永遠拿不到一個關於「它到底重不重要」的真實訊號。解法,是把順序整個倒過來。 早點收費。收小一點。讓第一筆 5 美元成為證據,而不是目標。 第一筆收費到底是什麼 它不是營收——它是一次測量。一個陌生人願意掏錢,哪怕是一點點錢,是你從產品身上能拿到、資訊密度最高的一個訊號。它一次解決三個問題: 有沒有人想要? 一句稱讚是免費的。五美元不是。錢,是唯一讓付出者付出代價的回饋,所以它也是你唯一能相信的回饋。 問題夠不夠痛到願意付錢? 人們會對著他們永遠不會買的東西說「這點子很酷」。他們會為真正移除一個切身之痛的東西付錢——而付款,就是讓你發現自己蓋的到底是哪一種。 流程會不會跑? 第一筆收費把整台機器從頭到尾走一遍——頁面、價格、付款、交付。一個從沒收過費的產品,就是一個結帳流程從沒被測過的產品;而沒被測過的結帳流程,是一顆地雷。 金額幾乎無關緊要。收費的存在,才是里程碑。 為什麼等待是錯的選擇 「晚點再收費」的計畫,有一個具體、可預測的失敗模式:「晚點」永遠不來。 原因如下: 每一週你沒收費,你就用零證據,在拋光你自己對「什麼有價值」的假設。你在用時間猜一件你只要問市場、花 0 美元就能學到的事。 產品會漂移。少了「大家到底會為什麼付錢」這個定錨訊號,你就會蓋一堆沒人要的功能,因為沒有訊號指著他們本來會要的那些。 賭注會越滾越大。你等越久,「發布」就得承擔越多沉沒時間,於是發布變得更重、更晚、更可能失望。 早點收費不是貪婪。它是去風險——在蓋更多之前,用最便宜的方式搞清楚自己是不是在蓋對的東西。 怎樣替第一個東西定價 第一個價格的工作是被付款,不是有獲利。所以為轉換定價,不是為價值定價: 收得比東西值得的少,而且明說。 「上市價,之後會漲」是誠實的,而且會轉換。你不是在打折價值,你是在為驗證定價。 訂一個小到不用想的數字。 對一個消費型工具,那就是一杯咖啡——5 美元。重點不是營收,是沒人需要猶豫。你要讓那個「好」是自動的。 把付款變成最短的路。 一顆按鈕、一個價格、一件你清楚的獲得。在「想要」和「已付款」之間的每一個欄位或選擇,都是一個讓人走掉的地方。 之後可以漲價——而且你該漲,一旦訊號顯示大家想要。但第一個價格的工作是存在並被付款,不是正確。 第一筆 5 美元解鎖了什麼 在那第一筆收費之後,一切都變了,而且沒有一件是關於那五美元: 你有一個不是你的使用者。 一個付費客戶問更好的問題、回報真的 bug、帶來下一個人。那就是飛輪開始轉了。 你有一個數字可以拿出來。 「大家會為這個付錢」從此是一個事實,不是希望。這是「我在蓋東西」跟「我有一個產品」之間的差別。 你知道下一半該蓋什麼。 第一個付費者總會以某種方式,告訴你他原本真正想要的是什麼。那就是你的路線圖,用五美元換來的。 這是每週出貨系統裡面的營收那一半——先出小貨,然後收小費。而且它跟怎麼拿到第一批用戶搭配:要收費,你得先讓某個人看過這東西。 Sources Carta——《Solo Founders Report 2025》:較早達到營收的獨立創辦公司,存活與擴張的比率,高於延後變現的那些。 「早收費即驗證」的框架,呼應標準的精實/顧客開發實務(Ries,「到底有沒有人真的想要」先於規模化),套用在獨立出貨、創辦人獨自承擔延遲成本的處境上。

在下班之後蓋東西,在生活照樣進行的同時

晚上與週末的出貨系統(在生活照樣進行的同時蓋東西)

建議永遠是「全部押上」。辭職、破釜沉舟、全力投入。但多數人做不到——而且多數做得到的人,在跳崖前,也還是需要那座橋。所以這裡是一套比較不浪漫、卻有用得多的系統:在晚上與週末、在時間的夾縫裡出貨,讓行事曆來扛大樑。 誠實的行事曆數學 副業不是死於缺少熱情。它死於缺少穩定出現的時間。所以第一步既殘酷又清楚:去數實際的小時數。 一份全職加上通勤,多數人平日只剩 1 到 2 個可用小時,週末每天 4 到 8 個。那不是「沒多少」。那是一週 10 到 15 個真實小時——綽綽有餘,但前提是你守住它。 敵人不是小時數太少。是那些沒被認領的小時,漏進滑手機、雜事、和「我明天再開始」。一個沒有名字的行事曆時段,就是一個會消失的時段。 所以:提前挑好你的小時、把它寫下來、把它當成一場不能取消的會議。兩個平日晚間加一個週末早晨,就是 8 到 12 個受保護的小時——一個認真的專案,用零錢般的時間跑起來。 精力優先於戰術 如果你到場時已經累了,那些小時幫不上忙。所以系統先最佳化精力,因為專注的一小時,勝過疲憊的三小時: 把難事放在場次的一開頭。 你坐下的那一瞬,就是大腦最清醒的那一瞬。把需要思考的任務放在那時,而不是那些深夜做起來也簡單的雜務。 先出貨,再拋光,永遠如此。 「完成」花的精力比「漂亮」少,而且它讓每週出貨系統繼續轉。完美主義,是兼職建造者真的付不起的一種精力稅。 守住連勝,而不是產出。 一場出貨了點小東西的兩小時,勝過一個燒掉你一個月的大週末。持續會複利,強度不會。 讓它活下去的那一條規則 系統以一種特定的方式失敗:先爆發,接著某一週被跳過,再來「我不做這個了」。對策是一條小到不可能違反的規則: 永遠不要讓空窗變成兩週。 一週不順很正常——人生難免。但當你連續錯過兩週,這個專案就統計上離死很近了,因為動能消失了,而重啟的罪惡感,比一場的成本還要重。所以規則不是「絕不失誤」。是「絕不連續失誤兩次」。那是一條你真的守得住的規則,也是副業跑好幾年、跟跑一個月之間的差別。 為什麼夾縫就夠了 兼職蓋東西違反直覺的真相是:這個限制本身是個功能。兼職建造者無法過度開發、無法鍍金、無法追逐每一個閃亮的功能——因為沒有那麼多小時。同樣一筆看起來像劣勢的預算,正悄悄地在強制執行那份自制(出小貨、常出貨、能用就停),那是全職建造者得靠意志力假裝出來的東西。 你的晚上與週末,不是你建造者職涯的起點——它們是肌肉真正成形的地方。新手入門會告訴你從哪裡開始;這套系統,是你在開始之後怎樣繼續走下去。而這份時間預算,也正是讓一人公司在它成為你唯一的公司之前,先變得可能的原因。 Sources Carta——《Solo Founders Report 2025》:獨立創辦公司有相當比例,起於創辦人另有正職時的副業;存活率偏好持續的兼職迭代,勝過全力衝刺。 標準的習慣養成證據(如「不要斷鏈」/絕不連錯兩次的框架),說明為何一條「最低保護間隔」的規則,長期下來勝過一條「強度」規則。

一件做到一半、被放進世界的東西

先發布半成品:回饋,是唯一真正有用的編輯

本能是等。做完它、拋光它、讓它在別人看到之前變「好」。問題是,「好」是一個沒有外人眼光就永遠追不到的移動目標——於是你關起門來一直磨,東西永遠不發布。 解方很彆扭,但它有效:刻意發布半成品,讓真實的回饋,幫你完成那些你一個人做不來的編輯。 為什麼「關門做到完成」是個陷阱 關起門來拋光有兩個隱藏成本,它們通常不會出現在任何時間表上: 你在跟自己來回改。 唯一在評斷作品的人,是離它最近的人——而那正是最不該評斷的人。你看不到讓陌生人困惑的地方,因為那些是你寫的;你聽不到被漏掉的步驟,因為你早就知道了。 新奇感衰減的時鐘在走。 一件東西擱置越久沒做完,你就越不想做完它。這就是第三週之牆最純粹的樣貌:出貨的能量,撐不過你執意保留在「開始」與「被看見」之間的距離。 「好到可以給人看」是一個真實的里程碑,而且它比「完成」早非常多到來。把達到它當成發布點,而不是中點。 回饋到底買到了什麼 當你給人看一件半成品,你拿到的回饋不是打分數——它是一張地圖。它告訴你三件你一個人永遠學不到的事: 哪個方向是錯的。 一個陌生人在十秒內看穿的死路,你會因為捨不得沉沒成本而辯護一整個月。 哪裡真的令人困惑。 你以為顯而易見的那一步,偏偏是沒人跟上的那一點。你自己永遠找不到——它對你是隱形的。 到底有沒有人想要。 最有價值的回饋,是沉默之後緊接著一句平淡的疑問:「這是要幹嘛?」這是最便宜的市場測試,代價只是一份半成品的草稿。 每一項都是一個在你掏光全部成本之前,先被挖出來的棄坑風險。這就是提早發布的整套經濟學:東西還便宜好改的時候,回饋才便宜。 精確的動作 挑最小的可發布切片。 不是功能,是切片——一個別人看了能反應的東西。一個 landing page、一個畫面、一段把論點講清楚的段落。 給一個真人看,不是丟進人群。 大聲向群眾發布是表演;給一個真的會回的人看才是編輯。一個誠實的讀者,勝過一百個沉默的曝光。 問一個具體的問題。 不要問「你覺得如何?」——那會招來客套。問「哪裡看不懂?」或「你會為這個付錢嗎?」尖銳的問題,得到尖銳的答案。 發布修改版,不是辯論。 拿走最重要的一條回饋、改進去、再發布一次。這個迴圈就是產品。 為什麼這贏過關門拋光 老實說:你發布的半成品,會比你想像中「完成的東西」差。那沒關係,因為想像中完成的東西有一個缺陷——它是想像的。真的東西,發布並反覆修改後,就存在了;而存在,才是複利賴以運轉的基礎(見每週出貨一個小東西的迴圈——這裡就是把那套系統,用在單次發布而不是每週節奏上)。 完美主義不是品質標準。它是偽裝成品質標準的拖延機制。提早發布、公開修改的建造者,不是比你粗心——他們只是在跑一個更緊的回饋迴圈,而贏的是這個迴圈。 這是每週出貨系統裡「先出貨、再修改」的那一半——也是餵養第三週之牆的那種完美主義的解藥。 Sources Carta——《Solo Founders Report 2025》:獨立創辦人的持續存在(新創的 36%),與更快的上市時間及迭代節奏呈正相關,而非更久的發布前拋光。 Ericsson——刻意練習文獻:技能來自頻繁、回饋豐富的迭代,而非長時間的私下打磨;提早發布就是把這套原則,套用在產品而非只有練習上。

一張凌亂的工作檯,檯面上放著一個小小的括號,壓在一份列印出來的技術日誌上,後面是一支放大鏡

你的 AI 助手以平凡的方式出錯,這反而是好消息

助手回報成功了。工作「完成了」。接著你流程裡的下一步收到一片空,然後你花了整個晚上追這個謎團。 這裡有個大多數獨立開發者得付出代價才想通的解放性真相:你的代理人失敗幾乎從來不戲劇性——它們是機械性的,而機械性就意味著可以診斷。 問題只是少了一個右括號。解法只是讀了日誌裡的一個數字。這裡面沒有天才——而那正是好消息本身。 「無法理解」的失敗,是一則神話 當助手做錯事,直覺會讓我們去抓那些大解釋:模型產生幻覺、提示詞太模糊、模型「還不夠好」。於是你重寫提示詞、換模型、買更貴的級別。 與此同時,真正的失敗從頭到尾都躺在一行日誌裡,沒人去碰。 代理失敗的模式,絕大多數是那種不光彩的類型: 一個 JSON 欄位少了一個右括號,所以根本無效。 一個權限範圍少開了一層。 一個環境變數從頭到尾沒進到 shell。 一個檔案從錯誤的目錄讀取,所以它靜靜地拿到空字串。 一個「if」永遠不分支,因為條件拿字串去跟數字比較。 這些全都不需要更好的模型。其中任何一個,都對願意讀輸出、而不是讀摘要的人顯而易見。 為什麼人們跳過診斷 悲劇在於:診斷看起來像工作,感覺起來卻像什麼都沒做。讀日誌不是一個令人滿足的故事。「我換了更聰明的模型,然後就好了」是一個故事。「我找到一個漏掉的括號」不是——所以沒人拿它炫耀,而換模型的迷信就因此活了下來。 但那兩分鐘的日誌,是獨立團隊裡報酬率最高的習慣。這跟我們那篇談〈「完成」驗證儀式〉(done-is-a-claim)是同一套紀律——那篇靠強迫你「親眼見證輸出」來抓住失敗;這篇則是在失敗發生之後把它找出來。同時它也是〈認識你的代理模式〉(agent patterns)的另一面:模式告訴你失敗藏在哪裡,日誌告訴你究竟壞了什麼。 診斷紀律 當助手「離奇地失敗」,忍住把調查範圍放大的衝動。反過來,把它縮小。 先重現,再推論。 用完全相同的輸入重跑一次。如果每一次都以同樣的方式失敗,它就是確定性的——這代表問題在輸入、設定或接線,不在模型。非確定性(每次跑出不同的錯誤答案)才是模型本身、或它的 temperature 該被懷疑的唯一情況。 讀更原始的輸出,而不是診斷。 助手會樂於給你一個自信滿滿的、關於它自己失敗的解釋——而那個解釋往往是另一則穿上白袍的幻覺。跳過它。看它收到的輸入、它呼叫的工具、以及回傳的原始位元組。真相在 payload 裡,不在道歉裡。 找出錯得最小的那一個數字。 一個計數、一個 exit code、一個狀態、一個時間戳。找到現實與助手假設分岔的那一個點,你就找到了根本原因。代理的錯誤以驚人的規律性坍縮成一行。 修邊界,而不是修行為。 一旦看清,解法通常是一條規則或一道檢查,而不是更長的提示詞。「每次解析 JSON 並在格式錯誤時大聲失敗」,勝過「更努力地輸出合法 JSON」。你是在強化系統,不是在哀求它。 平凡失敗帶來的平靜 這種心態改變了獨立開發者的睡眠品質。「離奇」的失敗是焦慮——一個可能藏在任何地方的未知數。機械性的失敗是一個「已知的未知」,而已知的未知,是十分鐘的工作。 你不再伸手去換模型、而是伸手去讀日誌的那一天,你的助手就不再神秘,而是像你自己的程式碼一樣可讀。兩者的壞法一模一樣:一次一行,攤在眼前,等著你去讀。 你的助手沒有離奇地失敗。它以平凡的方式失敗。去讀那一行。 來源 Hacker News 與 Indie Hackers(2025–2026)上的多篇代理事故檢討。 反覆出現的特徵:代理回報成功,而底層動作卻以機械性的原因失敗(漏掉的括號、權限錯誤、空環境變數、錯誤的工作目錄);這些失敗都是確定性的,並且在原始工具輸出裡可見,而不是在摘要裡。 代理可靠性與錯誤分類學文獻。 工具使用與反思的失敗模式(Zheng 等人,《AgentErrorTaxonomy》,arXiv:2509.25370)記錄了代理在被要求「自我回報」時如何捏造解釋;解藥是檢查實際執行的動作,而非代理的事後說法。 持續整合與可觀測性實務。 找出那一個分歧的計數、exit code 或狀態、作為根本原因錨點的紀律,正是 CI 系統所形式化的「找出錯的那一個數字」——日誌是真相,敘事是臆測。

一台手機躺在工作檯上,螢幕裂了一條縫,旁邊是一部亮著模擬器畫面的筆電

你的模擬器在騙你:真機才能暴露的事

模擬器說它沒問題。手機當機了。 那道落差——從綠燈測試到磚頭手機——正是「在裝置上運作的軟體」真正被打造出來的地方。而這道落差幾乎沒人寫:活下來的人忙著出貨沒空寫部落格,而寫「我打造了一個 AI 語音玩意」的人,多半停在那個只跑在模擬器上的 demo。 這篇談的是模擬器之所以騙你的那些具體、物理的原因,還有為什麼在真機上出貨,是一門跟「通過測試」不一樣的手藝。 第一個謊言:模擬器無法重現的當機 把語音介面接上一個語言模型很快。一個 WebSocket、一個開放協定、一點壓縮音訊,一個週末就有一個會說話的 demo。在模擬器上一切正常,因為模擬器不是手機,它是你的筆電穿著手機的戲服。 然後你把它裝到真機上、按下按鈕,跑出一個執行緒斷言的當機:一段本該在主執行緒執行的程式,卻在即時音訊回呼上被叫用。模擬器永遠不會丟出這個錯誤,因為它根本沒跑一顆帶有即時排程器的真實音訊引擎。 解法只有一行註記,把那段 closure 標記為可安全用於該執行緒。就一行。但找到它,需要去符號化裝置的當機日誌,一路讀到音訊 tap 內部的那個 messenger。一旦知道該往哪看,解法是簡單的;難的是知道怎麼看。而只有模擬器願意帶你去的地方,你才看得到。 第二個謊言:什麼都沒發生,也沒有報錯 接著是回音迴圈:助理一說話,它自己的輸出就被麥克風收走,再轉錄成胡言亂語。解法不是補丁,而是架構:麥克風與語音播放必須共用同一顆音訊引擎,並以伺服器的回合界線來把關。 「顯而易見」的設計——第二顆專屬引擎、乾淨的關注點分離——反而才是 bug。兩顆引擎爭奪同一個音訊 session,結果是回覆解碼了卻沒聲音,麥克風也聽不到接下來的追問。同時發生,而且完全不當機。 模擬器也無法重現這個,因為它不像真機的作業系統那樣強制執行音訊 session 的獨佔。症狀是「什麼都沒發生」——這是最難察覺的 bug,因為沒有錯誤訊息,只有一片沉默。 第三個謊言:本來好好的,突然就不行 接著是藍牙。接上無線耳機後,App 開始抖動、掉音;「解法」是一個能乾淨收音、卻把語音播得幾乎聽不見的音訊 session 模式。這種取捨只存在於有真實音訊路由的實體硬體上。然後是進入背景:切走、切回來,App 就「不再收聽」了,因為作業系統搶走了 session,並在 App 暫停時掛起 socket。每一種都是一類只會在真機上遇到的 bug,只要一次拆掉重連,就會在任何自動化執行裡隱形。 「在裝置上」作為一門手藝,到底意味什麼 教訓不是「模擬器沒用」。對那 90% 與硬體無關的邏輯,它不可或缺。真正的教訓是:那最後的 10%——碰觸即時音訊、藍牙、背景生命週期的部分——無法用代理來測試。 它們只能靠出貨到真機、讀當機日誌、並且相信硬體告訴你的話勝過測試套件宣稱的結果,才找得到。 這是在真機面前還能存活的紀律: 能 mock 的就 mock,不能的就出貨。 按住說話的狀態機,用 mock 的 socket 與麥克風做單元測試:十幾條測試,沒有真實音訊、沒有網路。音訊引擎本身無法 mock,所以它被出貨,然後被盯著看。 相信裝置日誌,不是測試執行。 裝置的當機日誌是地面真相;模擬器通過是假設。兩者相衝突時,永遠是裝置贏。 「在我機器上明明可以」是行動開發最危險的一句話。 你的機器是模擬器。顧客的機器是口袋裡那支手機,戴著耳機,正走進一個訊號死角。 對獨立開發者而言,真正重要的區別是:一個只跑在模擬器上的 demo,是假設;一個經得起真實硬體考驗的東西,是你可以推理的事實。那道落差,寬得足以成為「週末專案」與「值得出貨的東西」之間的全部差異。 來源 Apple 開發者文件,即時音訊。 安裝在音訊引擎上的 tap,是在即時音訊執行緒上被叫用,而非主執行緒;造成執行緒斷言當機的隔離假設,是並行的產物,在模擬器中不存在。 Apple 開發者文件,音訊 session 分類與模式。 Session 的擁有權在真機上是獨佔的;第二顆引擎在已被擁有的 session 上啟動,是有紀錄的「無聲或音訊飢餓」成因,也是「解碼了卻沒聲音」的根源。 開放原始碼的語音助理協定生態系。 成熟、MIT 授權的語音協定參考實作(不少擁有數萬顆 GitHub 星)展示了協定本身與一層免費的客戶端。客戶端本身沒有商業護城河;可遷移的技能是「在裝置上的加固」,不是協定。 這篇是〈完成了是一個主張〉(done-is-a-claim)的裝置端姊妹篇。後者談的是驗證儀式:相信自己的眼睛,勝過代理的一句話。那篇談的是你該信任誰;這篇談的是你該信任什麼:硬體,勝過模擬。