本指南背後的 Skill:Viktor - Software Architect AI Skill。它掌握你目前已在執行的內容、你無法變更的內容,以及你已經做出的決策,因此提供的選項會根據你的實際系統篩選,而不是建立在一片空白場地上 - $19,一次付款,永久擁有。
查看 Viktor Skill →架構是一份清單,列出你已經決定將無法做到的事情。模型只能告訴你某個設計能做什麼。它並不是在欺騙:它學習的資料,是由描述可運作系統的人撰寫的,而且那些系統的規模大到值得寫下來;沒有人會發表文章介紹那個依然運作良好的無聊單體。因此,產出的內容總是綠地開發,總是追求最大化 - 是你想像中處於尖峰狀態的系統,位於一片空白場地上,卻省略了那些遭排除在外的限制。
同一個原因造成的兩種失敗
幾乎每個沒有幫助的架構答案,都可以追溯到同一件事:語料庫是由曾經遇到那個有趣問題的人,撰寫有關那個問題的內容。
它是在一片空白的場地上設計的。真正的架構幾乎從來不是綠地開發,而是對既有系統進行變更;系統由現有的人員維護,並且連接著一些你不被允許碰觸的事物。你要求一份設計,得到的卻是一份假設這些限制全都不存在的設計,而這個領域最昂貴的錯誤,不是選錯資料庫 - 而是設計時把某項限制當成不存在。
它是為尖峰而設計的。事件驅動、每個網域一個服務、每對元件之間都有一個佇列,底層使用 Kubernetes。這些做法並沒有錯。它們只是那些確實需要這些架構的組織所留下的記錄,而那些不需要這些架構也運作良好的公司,不會留下相關記錄。因此,文獻的平均值會變成一套為比你更大的公司打造的架構。
兩者都能修正,但都不是靠針對設計提出更好的問題來修正。你必須改變模型被允許假設的事情。
方框才是簡單的部分
你要求一份架構,得到的就是方框和箭頭。方框幾乎不費力:一個只做一件明確事情的服務,是已經解決的問題,每個人都能想像得到。
所有難度都在箭頭上。 兩個方框之間的箭頭,代表這兩件事可以互相通訊,但圖表從未為這個主張提供依據。這次呼叫是同步的嗎?如果是,呼叫端在等待那兩百毫秒時要做什麼?失敗時會發生什麼事 - 重試?如果重試,這項操作具備冪等性嗎?還是重試會讓信用卡被扣款兩次?逾時設定是多少?逾時後會發生什麼事?順序重要嗎?有任何機制能保證順序嗎?如果這支箭頭中斷一小時,哪些功能仍在運作,哪些不會?
圖表對上述問題一個也回答不了,而模型無論如何都會產生一張漂亮的圖,因為圖表是一種體裁,而且它讀過成千上萬張。仔細追問箭頭,設計通常就會改變。它通常會重新合併成更少的方塊,而這才是正確結果。
它真正擅長的事
建立故障空間。「這可能出錯的所有方式是什麼」是一個召回率問題,必須涵蓋大量的事後檢討、事故報告和以慘痛經驗換來的討論串,而這正是這些工具的用途。它會找出那個你原本要到八個月後在正式環境中才會發現的故障模式。
它做不到的是替你排列優先順序,因為排序需要考慮你的流量、團隊、容忍度和資金。如此一來,分工就很清楚:它產生清單,你負責排序。任何告訴你它能替你排序的人,都是在推銷某種東西。
提示 1 - 這片領域並非空白
在模型知道目前已存在的內容之前,這個頁面上的其他內容都無法運作。請誠實回答,包括那些令人尷尬的部分。
提示 2 - 功能封鎖清單
模型從不會主動提及的部分,也是實際需要做決策的部分。
這裡包含真正能帶來差異的內容:你已經在執行的項目、不允許變更的內容,以及你已經做出的決策。每次在空白聊天中重新輸入真實限制,正是大多數人放棄並接受綠地方案的原因,而新的工作階段也會欣然否定你上個月同意的架構。
檢視 Viktor - Software Architect AI Skill →提示 3 - 盤問箭頭
提示 4 - 為十分之一的規模設計
你將投入的最有用的一小時。它會區分承載負荷的複雜性與理想化的複雜性,而答案往往令人不舒服。
提示 5 - 故障空間,接著你會對其排序
提示 6 - 我們實際上要如何到達那裡
綠地設計會跳過這一點,而真正的成本就在這裡。沒有遷移路徑的目標架構只是一個願望。
它會斷言但其實無法知道的兩件事
效能數據。當被問到一個設計能處理每秒多少請求,或延遲會是多少時,它會給出一個數字。它根本不知道。這些數字取決於你的硬體、資料形狀、查詢模式和存取分布,而取得它們的唯一方法就是測量。把它提供的任何吞吐量、延遲或容量數字都視為佔位符,並在該數字應該出現的地方安排負載測試。
目前版本、限制與定價。服務配額、託管資料庫限制、執行個體大小、雲端供應商收費方式、哪些版本淘汰了哪些功能。這些全都會變動,而模型是根據它上次看到的內容回答。請在做決定的當天,從供應商自己的最新文件中取得每一項資訊,因為建立在過時配額上的架構,是一個在一年後、最糟糕的時刻失敗的設計。
失敗的地方
| 失敗 | 會發生什麼事 | 該怎麼處理 |
|---|---|---|
| 預設為綠地開發 | 假設一片空白、沒有舊系統,也沒有任何禁止你碰觸的事物的設計 | 在提出任何要求之前,先描述目前實際運行的內容,包括令人尷尬的部分 |
| 針對峰值設計 | 一家曾遇到這個有趣問題並撰文說明的公司的架構 | 以十分之一的負載請求相同的系統,然後比較 |
| 只有能力,沒有排除項目 | 設計能實現什麼,卻對你所放棄的內容隻字不提 | 先要求列出排除清單,沒有排除項目的選項應視為可疑 |
| 漂亮的圖表 | 方塊與箭頭圖中,每個棘手問題都藏在箭頭裡,卻沒有任何解答 | 逐一盤問每條箭頭。合併兩個方塊也是有效結果 |
| 捏造的效能 | 一個每秒請求數或延遲數字,背後卻沒有任何依據 | 把每個數字都視為負載測試的佔位符 |
| 過時的平台資訊 | 配額、限制、執行個體類型與價格,都是它上次看到時的資訊 | 當天查閱供應商文件,而且每一項都要查 |
| 沒有遷移路徑 | 只有目標設計,卻沒有考慮系統仍在運作時要如何抵達那裡 | 要求步驟各自都能獨立交付,而且你可以在任何一步停止 |
| 被要求時才會排序 | 當被問到哪個失敗最重要時,它會回答,但沒有任何你的數據作為依據 | 讓它產生空間。由你負責排序 |
如何安裝 Viktor Skill?
下載內容是一個 ZIP,SKILL.md 位於壓縮檔根目錄,而不是巢狀資料夾內 - 上傳失敗通常就是因為資料夾結構不正確。在 Claude 桌面應用程式中,開啟自訂 → Skills,上傳 ZIP 並將其切換為啟用。
Skills 需要啟用程式碼執行功能,位置在 設定 → 功能。Anthropic 的說明中心目前將 Skills 列於 Free、Pro、Max、Team 和 Enterprise 方案,而其 Academy 教學則列出 Pro、Max、Team 和 Enterprise - 因此如果你使用免費方案,請查看自己帳戶中的「設定 → 功能」,不要全盤採信任一頁面的說法。完整操作流程請參閱Skills 安裝指南。
在 ChatGPT 或 Gemini 中不需要上傳步驟:開啟 SKILL.md,複製內容,然後貼到自訂指示中。你會失去自動觸發功能,但保留這套方法。
這適合哪些人?
想要一位會提出反駁的思考夥伴的架構師與資深工程師、做出超出自身職級薪資範圍設計決策的技術主管,以及在承諾採用某種做法前決定如何建構產品的創辦人。它可在 Claude、ChatGPT 或任何 AI 聊天工具中運作。
工程職能各自拆分為獨立的 Skills,每個售價 $19,下載一次即可:
- Dante - 技術主管 - 同樣的決策再往下一層,團隊必須在那裡執行
- Oleg - 資料庫工程師 - 大多數真正不可逆的選擇所在之處
- Rami - DevOps 工程師 - 每個遷移步驟都仰賴的部署與回滾流程
- Mira - QA 工程師 - 將失敗空間轉化為你真正會測試的內容
- Tariq - 雲端遷移工程師 - 設計不斷與之衝突的平台限制
- Kael - 網路安全分析師 - 那些源於某人意圖而非運氣不佳的失效模式
總結:
架構是一份你選擇不再具備哪些能力的清單,而模型只會描述能力,因為語料庫是由那些值得發表其有趣問題的人所撰寫。在它提出任何建議前,告訴它目前已經在運行什麼、哪些部分無法變更,以及由誰負責建置。要求它先說明排除的可能性,再說明啟用的可能性;如果某個選項完全沒有缺點,就應將其視為警訊,而不是建議。忽略方框,檢視每一條箭頭,因為失敗、排序、冪等性和影響範圍都發生在那裡 - 並且要願意將兩個方框重新合併為一個。以十分之一的負載設計相同系統,以找出哪些複雜性是不可或缺的。讓它產生完整的失敗空間,再自行進行排序。並要求它展示遷移路徑,以你可以隨時停止的步驟呈現,因為沒有通往目標設計的路徑,就只是一種願望。針對你的實際限制和過往決策,並在不同工作階段之間保留脈絡,請參考 Viktor - 軟體架構師 AI Skill(19 美元)。可在 Claude、ChatGPT 和任何 AI 聊天工具中使用,並提供 30 天退款保證。
Viktor - 軟體架構師 AI Skill
在提出任何建議前,先詢問目前已經在運行什麼;討論設計時,先說明它排除了哪些可能性,而不是它能啟用什麼;檢視箭頭所代表的關係,而不是畫方框;並以你可以隨時停止的步驟展示遷移路徑。無需訂閱。永久屬於你。
KissMySkills 是一個提供 2,000 多個 AI 技能、80 多個 prompt 套件、75 多個 代理,以及適用於 Claude、ChatGPT 和任何 AI 聊天工具的免費工具的市集。