Communitygithub.com

mark-hallam/multi-evaluator

透過多輪獨立 AI 審查來改進產品設計,直到準備好讓真人使用:每個使用者旅程皆獲得 9 分或以上,且不同公司的 AI 審查員評分差距在 1 分以內,無未解決的高嚴重性問題,並維持兩輪。

multi-evaluator 是什麼?

Multi-evaluator 是一個自動化設計改進循環技能,專為需要嚴格、獨立 UX 審查的產品設計。它透過多輪迭代,讓來自不同公司(如 Claude 和 Codex)的至少兩位 AI 審查員,在全新的瀏覽器環境中獨立操作真實產品,並對每個使用者旅程進行 0 到 10 分的評分。該技能定義了嚴格的「準備好供真人使用」的停止條件:所有旅程分數皆達 9 分以上、審查員間分數差距在 1 分以內、且無高嚴重性問題,且此狀態需穩定維持兩輪。每輪自動擷取相同的螢幕截圖,生成一份包含分數趨勢、前後對比截圖及每輪影片的完整 HTML 報告。此技能支援 mStack 框架,需要 Python 3.9+、Node.js 18+ 和 Google Chrome。適合用於需要自主審查和改進網站、應用程式、個人資料或文件的場景,特別是當使用者要求「一直改進直到滿分為止」時。

相容平台✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/mark-hallam/mstack/tree/HEAD/skills/multi-evaluator

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

多重評估者設計改進循環

多輪獨立審查直到產品準備好供真人使用:每位審查員對每個旅程的評分皆達 9 分或以上,無未解決的高嚴重性問題,審查員之間的分數差距在 1 分以內,且此狀態已連續維持兩輪。一致的滿分是提醒要再次確認任務簡報的標誌,而非目標。AI 分數是強烈的信號,但並非證據:當循環顯示準備就緒時,應由真實的首次使用者進行測試,若他們與 AI 意見不同,則以真人意見為準。

所有操作皆透過一個命令列工具 scripts/eval_loop.py(位於此檔案旁)執行,因此無論是真人、此代理程式或任何其他代理程式,都能得到相同的結果。每個指令都接受 --dir <review folder>,而 status --json 會隨時告知循環的狀態及下一步動作。需要 Python 3.9 或更新版本、Node.js 18 或更新版本以及 Google Chrome 或 Chromium。無需安裝其他套件。

以下,LOOP 代表 python3 <此技能的資料夾>/scripts/eval_loop.py。

開始之前(每個 mStack 技能皆適用)

  • 如果 ~/.mstack/config.json 中 "disabled" 項目下包含 multi-evaluator,或使用者表示此任務不要使用此技能,則以一般方式工作。
  • 如果 ~/.mstack/learned/multi-evaluator.md 存在,請閱讀它:它記錄了使用者已接受的改進,且其權重高於此檔案。
  • 當循環結束(或停止)時,請私下記錄執行情況: python3 <mstack skill folder>/scripts/mstack.py log multi-evaluator --outcome reached|partial|not-reached --needed-user "..." --stalled "..." (mstack 技能資料夾位於此資料夾旁)。

1. 首先定義旅程與標準

在任何審查開始之前,與使用者共同確認一個真實使用者必須能夠完成的端到端任務。

  1. LOOP init --dir design-review --name "<產品名稱>" --start "<啟動產品的指令,需包含 {port}>" --cwd <其資料夾> (或對於已正在運行的項目,如 staging 站台,使用 --url <位址>)。
  2. 與使用者一起填寫 design-review/mstack-eval.json。請參閱 references/config.md 了解所有欄位:
    • about 和 persona:產品為何以及由誰評斷。將設計方向與限制條件保留在 rules 中,不要放在 about 裡:它們會以「不計分」的方式顯示給審查員,確保任務簡報不會洩露你期望聽到的答案。
    • journeys:3 到 6 個真實任務,每個都是端到端(例如「新增一本書,並在列表中看到它」)。
    • views:每輪會擷取的固定畫面(桌面、手機、深色主題)。淺色主題優先。
    • criteria:基本標準是清晰、快速、可信、熟悉、冷靜、隨處可用。stages 可隨著產品成熟添加更多標準(實現價值的時間、錯誤恢復、文案、代理體驗、可衡量的無障礙性、速度、五秒測試、情感基調、一致性、資料安全、愉悅感)。當分數顯示基本標準已達成時,可以透過 "active": true 或 "from_round": <n> 來啟動某個階段。
    • reviewers:至少兩位,來自不同的 AI 製造商。預設是由你(代理程式)執行的 Claude 和透過 codex exec 由工具執行的 Codex。
    • control:雜訊檢查(建議)。首次擷取會將該輪的畫面凍結在 control/ 資料夾;每位審查員在每一輪都會為 control 旅程評分,報告會顯示該分數的變動。小於此變動的變化被視為雜訊,而非進展。
  3. 向使用者展示旅程與標準,並在第 1 輪開始前獲得同意。

2. 每一輪

LOOP start-round --dir design-review          # 開啟 rounds/r<N>/ 資料夾,快照此輪的標準
                                              # 在 rounds/r<N>/changes.md 中寫入:變更了什麼,每項一個要點
LOOP capture --dir design-review              # 相同的畫面,以相同方式擷取,每輪都一樣
LOOP brief --dir design-review                # 在 rounds/r<N>/briefs/ 中產生盲評任務簡報,從第 2 輪起還有 -compare 簡報
LOOP review --dir design-review               # 並行執行命令列審查員(Codex);請在背景執行

同時,請你親自以全新的環境來執行每個 kind 為 agent 的審查員:

  • Claude Code:啟動一個子代理(使用 Agent 工具,通用用途),其提示為 rounds/r<N>/briefs/claude.md 的完整內容。不要加入你自己的意見、預期的答案或先前的分數。
  • 任何其他代理程式:開啟一個新的工作階段或對話串,僅將任務簡報作為唯一的指示。
  • 一個 kind: "chat" 的審查員(可選,需選擇加入:使用使用者已登入的瀏覽器中的 Grok、ChatGPT 或 Gemini,無需 API 金鑰):僅在使用者同意可分享的內容後,開啟一個新的私人聊天,貼上 rounds/r<N>/briefs/<id>.md,如果產品不公開,則上傳此輪的固定畫面,儲存回覆,關閉該分頁,然後執行 verdict。它看到的是螢幕截圖,而非實際產品,因此作為平局裁判:它永遠不計入「準備好供真人使用」的條件,且永遠不能是唯一的審查員。

當審查員回覆時,儲存其 JSON(工具會檢查其格式,不符合格式的回覆將被拒絕):

LOOP verdict --dir design-review --reviewer claude reply.json      # 或使用 - 將回覆透過管道輸入

先盲評,再比較。 評分任務簡報僅顯示當前輪次:無先前的螢幕截圖、無先前的分數、無設計方向,因此第 1 輪和第 9 輪的分數具有相同意義。從第 2 輪開始,也會有 rounds/r<N>/briefs/<審查員>-compare.md。在其評分結果已儲存後,將其提供給同一位審查員(同一個工作階段即可;因為它已不再是盲評),並將回覆與分數分開儲存:

LOOP verdict --dir design-review --reviewer claude --compare compare-reply.json
LOOP report --dir design-review                                     # 寫入 design-review/report.html

比較永遠不會改變分數;報告會在「變更內容」區塊下顯示比較結果。

然後向使用者展示報告和淺色主題的螢幕截圖(rounds/r<N>/shots/)。如果你的代理程式可以發送通知(在 Claude Code 中是 PushNotification),請在輪次報告準備好或循環需要決策時發送通知給使用者;設定檔中的 notify 指令也可用於發送通知(請參閱 references/config.md)。

3. 修正,然後重複

  1. 從報告的下一步待辦事項清單開始(優先處理所有審查員都標記的旅程修正,然後是高嚴重性問題,最後是「修正後」分數差距最大的項目)。如果旅程表格顯示審查員之間的分數差距為 2 分或以上,請先自行審視該旅程,再根據任何一個分數採取行動。
  2. 在產品中進行修正,執行其自身的測試,並撰寫下一輪的 changes.md。
  3. LOOP start-round,然後重複直到 LOOP status 顯示準備好供真人使用(上述停止規則,並維持兩輪)。如果某一輪通過,不要進行重大變更,再執行一輪以確保其得以維持。如果在達到 max_rounds(預設值為 6)後仍未達成,status 會要求停止並與使用者討論:可能是旅程或標準要求了產品不應達成的目標。
  4. 然後找真人測試:五位首次使用者在無輔助的情況下嘗試這些旅程。在 rounds/r<N>/people.md 中記錄他們的時間、卡住的地方和使用的詞語(每項一個要點;報告中會顯示)。如果他們與 AI 審查員意見不同,則以真人意見為準:將他們發現的問題轉化為下一輪的旅程或標準。

規則

  • 審查員在評分時,永遠看不到彼此的分數、先前的輪次、先前的分數或報告;任務簡報中會告知他們這一點。與上一輪的比較是獨立於評分之後的步驟。
  • 相同的畫面,以相同方式擷取,每輪都一樣,以便前後對比。
  • 永遠不要讓審查員提交真實的付款、訊息或個人資料。請使用測試資料和全新的副本。
  • 沙盒化的審查員(Codex)無法啟動 Chrome:review 會啟動一個共享的無頭 Chrome,任務簡報會告訴他們在驅動指令前面加上 MSTACK_CDP_PORT=<port>。
  • 如果審查員的回覆不符合格式,請閱讀 rounds/r<N>/work/<reviewer>/raw-reply.txt,然後重新執行。工具會拒絕仍提出修正建議的滿分 10 分,以及低於分數的「修正後」評分。
  • 將審查資料夾保留在產品的儲存庫中(或旁邊),以便保存每一輪的記錄。

檔案

  • scripts/eval_loop.py:命令列工具(init, status, start-round, capture, brief, serve, review, verdict, validate, report, notify)。
  • scripts/drive.mjs:旅程驅動器,一個真實的無頭 Chrome;審查員直接使用它。
  • scripts/report.py:報告產生器。scripts/readiness.py:停止規則與雜訊檢查。
  • templates/mstack-eval.json:初始設定檔。
  • references/config.md:所有設定欄位。references/verdict-format.md:回覆格式。references/method.md:為何循環以這種方式運作以及標準如何增長。

相關技能