決策矩陣
加權決策矩陣將「我無法決定」轉化爲一個可辯護、可檢驗的數字——但這個數字的價值完全取決於其背後的標準、權重和研究。你的工作是思考(什麼重要、重要程度、每個選項實際表現如何),而不僅僅是填寫表格。最後的HTML報告只是做好這項思考的副產品,而不是練習的重點。
1. 確認這個決策是否適合此方法
此方法最適合 2-8 個離散選項 以及 幾個相互衝突的標準(更便宜 vs 更好、更快 vs 更安全)。在以下情況,它會大材小用或不合適:
- 實際上只有一個重要因素(「哪個更便宜」)——直接回答即可。
- 是「是/否」的決定,而非多選一。
- 選項空間基本上是無限的(例如,「我應該住哪裏」但還沒有候選清單)——先幫助對方縮小到一個短名單,然後 再對短名單運行矩陣。
如果適合,簡短說明並繼續進行——不要讓對方向你證明使用決策矩陣是合理的。
2. 一次性對話——不要逐項詢問
先問「決定是什麼」,然後「選項是什麼」,再問「你關心什麼」,最後逐個詢問每個標準的權重——這會把一個2分鐘的決定變成15條訊息的苦差事。一次性 詢問決定、選項和優先級的大致情況,並給出一個例子,讓對方知道如何輕鬆回答:
「你在決定什麼,有哪些選項,你最關心什麼——大致情況完全沒問題,我會幫你整理成清晰的比較。例如:『在 3 個工作機會中做選擇——Acme、Globex、以及現在的工作(Initech)。我最關心薪資、成長空間、以及通勤時間不要太長。』」
如果對方給出簡單的回答(只有選項,沒有優先級),也沒關係——直接進入步驟3,替對方提出優先級,而不是再次詢問。
3. 提出一份可編輯的草稿——標準、定義和權重一次到位
不要先收集標準,然後再分別收集權重。研究 此類 決定通常關注什麼(工作機會和公寓的標準不同),然後一次性返回一份完整的草稿——5-10 個標準,每個標準附帶一行定義和建議權重(1-10)——讓對方一次編輯完成,而不是從他們的空白頁面腦力激盪或逐個詢問。如果他們自己的列表超過 ~10 個,溫和地推動(仍在這一份草稿內,不要先請求許可)——合併或刪除那些彼此重複的標準。
讓對方用最簡單的方式回答——一個數字,或者只是「高/中/低」(大致對應 9/6/3)——並接受像「看起來不錯」或「刪除通勤,把薪資調到 10」這樣簡單的回覆。發送內容範例:
「以下是比較工作機會的草稿——可以編輯任何一行,添加/刪除一個,或者直接說『看起來不錯』:
標準 含義 重要性 (1-10) 薪資 總薪酬(薪水+獎金+股票),第一年 9 成長 在此職位中學習/成長的程度 8 通勤 典型工作日的門到門時間 6 穩定性 兩年後該職位/公司仍然存在的可能性 7 團隊與文化 人員和日常感受的好壞 7 有什麼要補充的嗎——比如健康保險,或者遠程辦公的靈活性?」
草稿確定後,有兩件事比人們預期的更重要:
- 保留每個標準的定義,不要讓它退化成一個裸標籤。「成長」是模糊的;「成長 = 我在這個職位的第一年能學到多少」纔是可評分的。沒有定義,你自己的評分會在不同選項之間不一致地漂移。
- 注意那些重複計算同一底層因素的標準(例如,「薪資」和「財務安全」通常會合併爲一個因素)——合併它們可以保持權重的誠實性。
4. 鎖定並繼續進行
通常一輪編輯就夠了——一旦對方確認(或沒有反對),將標準、定義和權重視爲鎖定,直接進入步驟5的研究。不要重新要求他們確認你已經展示過的數字;如果你以後需要更改某些內容(例如,某個標準無法評分),說明你要更改什麼以及爲什麼,而不是重新開放整個草稿供批准。
5. 研究併爲每個選項 × 標準的單元格評分(1-10)
這一步是真正的工作所在,也是AI助手能夠超越簡單模板的地方。對於每個單元格:
- 實際進行研究——在評分之前,使用搜索/工具查找相關的事實(價格、規格、評級、薪資數據、評論、政策)。不要憑感覺編造一個聽起來精確的數字。
- 在一個標準內一致地錨定評分尺度。 在評分第一個選項之前,決定 1 和 10 對 這個 標準意味着什麼(例如,「10 = 這些選項中最便宜的」或「10 = 滿足所有必備條件」),並在所有選項中保持這個錨點,以便分數具有可比性。在你的筆記中爲每個標準記錄一次這個錨點。
- 每個單元格提供一句理由,說明該數字背後的依據或來源。這個理由是報告可信的關鍵,並會在HTML報表的「原因」切換中顯示。
- 當你在猜測時要說明。 有些標準是主觀的(例如,「興奮度」、「直覺」)或缺乏文檔。根據對方自己陳述的判斷來評分,並在理由中標記這是主觀的/未經驗證的,而不是以虛假的精確度呈現。切勿捏造來源。
6. 計算加權總分
對於每個選項:weighted_score = Σ(weight_i × score_i) / Σ(weight_i),一個歸一化的 1-10 平均值。這使總分與輸入值保持在同一 1-10 尺度上,便於進行合理性檢查。
7. 首先輸出 Markdown 表格
在構建 HTML 之前,在聊天中將結果顯示爲 一個表格:選項作爲行,按最佳到最差排序;標準作爲列(僅顯示分數,以保持可讀性);以及一個最終的加權總分列。然後用 2-3 句話指出最佳選項、次佳選項,以及區分它們的最大單一因素——如果前兩名非常接近,以至於「贏家」實際上難以取決,則明確指出。
8. 構建交互式 HTML 報告
編寫一個符合以下架構的 JSON 數據文件,然後執行:
python3 scripts/build_report.py data.json report.html
這會將你的數據注入 assets/report_template.html 的引擎,並生成一個獨立的 report.html(無需服務器,除了一個 Google 字體外無外部資源——雙擊文件即可運行)。該腳本會驗證數據,如果缺少某項內容或超出範圍,會顯示具體的錯誤訊息。
資料架構
{
"meta": {
"title": "我應該租哪間公寓?",
"subtitle": "比較同個社區的 4 個房源",
"description": "一兩句簡短的上下文說明。顯示在標題下方。",
"direction": "ltr",
"credit": "決策矩陣由 <你的名字> 建立",
"credit_url": "https://github.com/mrachny/decision-matrix-skill"
},
"criteria": [
{ "id": "rent", "label": "月租金", "description": "10 = 四個中最便宜的,1 = 最貴的。", "weight": 9 }
],
"options": [
{ "id": "optA", "label": "Elm 街公寓", "included": true }
],
"scores": { "optA": { "rent": 7 } },
"notes": { "optA": { "rent": "₪5,200/月,四個中第二便宜(來源:房源列表)。" } }
}
meta.direction爲"ltr"或"rtl";省略則預設爲"ltr"。- 報告頁尾預設會顯示一行小的「使用決策矩陣生成」的署名。
meta.credit/credit_url可以覆蓋其文字/連結;如果對方明確不希望有署名行,則將meta.credit設爲false。 criteria[].description和notes是可選的,但強烈建議使用——它們會成爲報告中顯示的「原因」文字。沒有描述的標準或單元格只會顯示沒有理由,這對快速草稿來說可以,但會削弱報告的說服力。options[].included(預設true)設定報告的初始靜音狀態。- 每個分數必須是 1-10 之間的數字。構建腳本會檢查這一點,以及在寫入任何內容之前檢查
criteria/options/scores之間的 ID 一致性。
告訴對方文件的位置,以及它可以直接在任何瀏覽器中打開——權重和靜音切換會即時重新計算排名,不會發送任何資料到任何地方,除非對方保存文件,否則什麼也不會儲存。
9. 引導進行敏感性檢查
最後指出,報告的目的是用來玩味,而不僅僅是閱讀:如果切換掉感覺最不確定的標準或微調權重導致優勝者改變,這是一個真實的信號,表明決定很接近,值得更多思考(或者差異不重要,他們應該跟隨直覺 / 成本 / 哪個最容易反悔)。如果排名對這種干擾具有穩健性,那也是有用的信號。
參考文件
references/method.md——方法的背景知識,常見評分陷阱(相關標準、權重壓縮、錨定漂移),以及如何與對方討論平局。assets/report_template.html——報告引擎。你不應該需要手動編輯它;所有可自訂的內容都通過 JSON 數據文件傳遞。scripts/build_report.py——構建報告;按上述用法執行python3 scripts/build_report.py --help。examples/laptop-purchase.json——一個填充好的範例數據文件,如果你想在編寫自己的文件之前查看一個完整的例子。