2026-04-25 活動快照 snapshot · 數字為當時狀態,最新統計見 BIM_MCP 知識站
Revit MCP Study Group

MCP 功能開發
五月小聚

Claude Community GDG Taipei GenAI Stars 2026 GAI Conf

從工具堆砌到模組化架構
Skill / Domain / Tools 三層協作系統

Date
2026.05.23 (Sat)
Format
Hybrid — Zoom + 小樹屋
Duration
90 min
Open Source
我還沒部署,請點我
五月小聚報名 QR Code
我還沒有報名,但我超級想參加(預約五月小聚席次)
五月小聚 2026.05.23 (Sat)
💰 線上 500 / 現場 200 / 首次 4,800(含歷次回放)
📝 分享筆記到社群即免費 | ⏰ 5/20 23:59 截止
↓ SCROLL
為什麼你需要參加

這不是一堂 AI 應用課程。
這是一套已上線、已驗證的建築專業知識系統——
我們把設計作業中的步驟與流程,變成 AI 可以執行的標準按鈕。

🔥
防火安全
防火時效 · 走廊寬度 · 外牆開口
44 個 Domain · 6 個工具
🌫️
排煙檢討
排煙窗有效面積 · 無開口樓層
44 個 Domain · 7 個工具
📐
法規檢討
採光比 · 容積率 · 停車位數量
44 個 Domain · 5 個工具
🏛️
立面設計
帷幕牆排列 · 立面面板生成
44 個 Domain · 6 個工具
📏
標註放樣
自動標註 · 詳圖同步 · 視圖裁剪
44 個 Domain · 4 個工具
🔍
資料查核
三階段查詢 · 元素上色 · 牆壁方向
44 個 Domain · 8 個工具
📊
數量管理
明細表建立 · Excel 匯出 · 圖紙管理
44 個 Domain · 3 個工具
系統性檢討
QA 六階段 · MEP 接頭 · 管帽安裝
44 個 Domain · 5 個工具
NEW 🪜
樓梯法規
級高級深 · 淨高 · 無障礙樓梯
44 個 Domain · 4 個工具
FIELD NOTES · NO. 02 · 2026-04-21

Karpathy 的 LLM Wiki
剛好是我們在做的事

2026 年初,Karpathy 提出讓 LLM 長期維護會自我交叉引用、偵測矛盾的 markdown 知識庫。
本專案已落地:三層 log 防線、Anthropic-compliant frontmatter、/handoff session 交接機制

✓ 研討完成 · 建議的四招已全部落地 · 6 個 commit 已推送到 main
閱讀完整導讀(~18 min)
原文:karpathy / gist  ·  鏡像:shuotao / REVIT_MCP_study

讓我們先把系統更新

在開始複習之前,先確保你的環境是最新的。
以下 8 步驟,從同步原始碼到開啟 AI 對話,一次完成。

1

🔍確認上游最新版本

到上游原始 repo 確認是否有新的 commit。

打開 github.com/shuotao/REVIT_MCP_study 確認最新狀態
2

🔄Sync Fork首次需設定 upstream

在你自己的 fork 頁面按 Sync fork 按鈕,或用指令同步:

git fetch upstream && git merge upstream/main
3

⬇️Pull 到本機

把同步後的最新內容拉到你的電腦。

git pull
4

📦編譯 MCP Server每次更新都要做

重新安裝套件並編譯 TypeScript → JavaScript。
請在終端機逐行輸入以下 3 行指令:

cd C:\Users\你的使用者名稱\Desktop\REVIT_MCP_study\MCP-Server npm install npm run build

⚠️ 路徑要換成你自己的!例如使用者名稱是 Admin 就打 cd C:\Users\Admin\Desktop\REVIT_MCP_study\MCP-Server
這是終端機指令,在 VS Code Terminal / PowerShell / Git Bash 都可以執行。
Gemini CLI 是對話介面,請另開終端機或叫 Gemini 幫你執行。

5

⚙️檢查 MCP Server 設定檔路徑路徑沒變可跳過

確認 args 裡的路徑指向你實際的 build/index.js 位置。
路徑錯誤是最常見的連線失敗原因。

Claude Desktop %APPDATA%\Claude\claude_desktop_config.json
Gemini CLI %USERPROFILE%\.gemini\settings.json
VS Code Copilot .vscode/mcp.json(專案根目錄)
Claude Code(CLI) .mcp.json(專案根目錄)或執行 claude mcp add revit-mcp --scope project -- node "路徑/build/index.js"
6

🔨編譯 Revit Add-in每次更新都要做

你現在應該還在 MCP-Server 資料夾裡,先回上一層再進 MCP:

cd ..\MCP dotnet build -c Release.R24 RevitMCP.csproj

版本號改成你的 Revit 版本 — R22=2022, R23=2023, R24=2024, R25=2025, R26=2026
或在 AI 對話中輸入:/build-revit --all(一次編譯全部版本)

7

📂部署 DLL 到 Revit

先關掉 Revit!然後在終端機逐行輸入(版本號改成你的):

mkdir "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP" -Force Copy-Item ".\bin\Release.R24\RevitMCP.dll" "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP\" -Force

你應該還在上一步的 MCP 資料夾裡,所以路徑用 .\bin\ 就好。
把兩行的 2024 和 R24 都換成你的版本號。
或在 AI 對話中輸入:/deploy-addon --version 2024

🚀開始使用

打開 Revit → 點擊 Add-in 面板的 RevitMCP 按鈕(啟動 WebSocket port 8964)
→ 回到 AI Client 用自然語言下指令,例如「幫我查 3 樓所有房間」。

Section 1 — 回顧與複習

1-1 MCP Architecture
1-1
MCP 是什麼

AI 長出了手——透過 MCP 協議,語言模型可以直接操作 Revit,而不只是聊天。

1-2 Three Components
1-2
三個元件裝在哪裡

MCP Server、Revit Add-in、AI Client 設定檔——三個東西的路徑搞錯是最常見的部署問題。

1-3 Evolution
1-3
三次迭代的演進

從 25 個工具到 86 個(snapshot 2026-05-12,4/25 為 82 個),從零 Skill 到 19 個,從只支援 Revit 2024 到 2022-2026 全版本。

1-4
斜線指令總覽

8 個斜線指令,覆蓋從知識記錄、品質驗證到 session 交接的完整開發週期。點擊白色圓點跳到實作說明。

/domain 成功流程 → SOP 文件
所有人

你花了很多時間跟 AI 討論一個應用情境,經過無數次錯誤和修正的迭代,終於找到正確的流程。你期待這份知識能在下一次被精準使用、避開所有雷區。請在完成後使用 /domain,它會把這次的成功經驗固化成 SOP,讓你和團隊永遠不用重來。

/lessons 踩坑經驗 → 高階規則
所有人

你踩了一個坑,花了兩小時才發現「中文版 Revit 的參數名稱跟英文版不一樣」。你不希望下一個人再浪費兩小時。打 /lessons,把這條經驗寫進共用知識庫,從此所有人都會被提醒。

/dev-guide 開發前準備指引
開發者

你正準備動手寫一個新工具,但你不確定前人踩過哪些坑、架構規則是什麼、跨版本要注意什麼。打 /dev-guide,它會在你寫第一行程式碼之前,把所有該知道的事情攤在你面前。

/qaqc 六階段品質驗證
開發者

你改了一些東西,但不確定有沒有弄壞別的地方。打 /qaqc,它會像體檢一樣掃描整個專案——六個階段(新增 Phase 6 Content Quality Lint 驗證 domain frontmatter)、三十多項檢查,每個問題都附修復步驟。安心交付。

/build-revit 一鍵編譯(2022-2026)
開發者(Windows)

你改完了 C# 程式碼,但每次都要查 dotnet build 後面該接什麼版本號。打 /build-revit,它會問你要哪個版本,或者 --all 一次全編。不用再記指令。

/deploy-addon 部署 DLL 到 Revit
開發者(Windows)

Build 完了,但你總是忘記 DLL 要複製到哪個隱藏資料夾。打 /deploy-addon,它知道正確的路徑,一秒部署完成。再也不用翻 AppData。

/review 審查 CLAUDE.md 品質
Maintainer

CLAUDE.md 不知不覺已經 300 多行了,你擔心裡面有過時的路徑或重複的規則。打 /review,它會幫你審計整份文件,告訴你哪些該刪、哪些該更新。

/handoff Session 交接(跨機器 / 跨 AI)NEW
所有人

重要 session 告一段落(多主題研討完成、MVP 落地、或你明天要換電腦繼續)。打 /handoff,它會產出 session-summary 五段落(完成/對齊概念/Pending/拒絕選項/起手式)到 log/YYYY-MM.md。下次任何 AI 在任何機器啟動都能直接接上,不用你重講脈絡。

Section 2 — 問題的發現與釐清

2-1 Inverse
2-1
工具越多,AI 越笨

86 個工具定義 = 每輪對話都佔用 context 的固定成本。工具越多,AI 選錯的機率越高。

2-2 With vs Without
2-2
規範寫了,但 AI 不讀

沒有 Domain 引導的 AI 會漏掉「天花板下 80cm 有效帶」這種法規關鍵,產出比不檢查還危險的結果。

2-3 Collision
2-3
多人貢獻,同一扇門

每加一個新功能,都要改同兩個檔案。三個人同時加功能?三個人擠同一扇門——撞在一起是必然的。

那 Skill 到底解決了什麼?

2-4 Kitchen vs Recipe
2-4
MCP ≠ Skill:廚房與食譜

社群在爭論「Skill 會不會取代 MCP」。答案是不會——MCP 是廚房(給 AI 能力),Skill 是食譜(給 AI 知識)。兩者缺一不可。

2-5 Progressive Disclosure
2-5
漸進式揭露:三層載入

Skill 真正解決的問題不是減少工具,而是讓「何時載入什麼知識」變得有彈性。L1 永遠載入(~100 tokens),L2 觸發時載入(<5K),L3 按需讀取(無上限)。

2-6 Before vs After
2-6
Before vs After

我們專案的實測:啟動 token 從 ~9,800 降到 ~3,500(−64%)。社群案例更誇張——Richard Seroter 實測 MCP + Skill 比純 MCP 減少 87% token。

2-7 On-Demand Orchestration
2-7
按需調度

三個問題的答案不是「模組化」——Domain 早就模組化了。真正的答案是:Skill 讓驅動工具的編排邏輯從「永遠佔用」變成「按需調度」。

Section 3 — Architecture V2

3-1 Three Layers
3-1
三層模組架構

Skill 告訴 AI「何時+如何」(WHEN+HOW)→ Domain 提供「該知道什麼」(WHAT TO KNOW)→ Tools 執行「該做什麼」(WHAT TO DO)。每層按需載入,不常駐。

3-2 Skill Trigger
3-2
Skill:觸發層

一個 Markdown 檔案,用關鍵字把使用者的問題路由到正確的 Domain 工作流程。

3-3 Claude vs Gemini
3-3
CLAUDE.md vs GEMINI.md

不同 AI Client 的觸發方式不同,但 Domain 和 Tools 是共用的——不同入口,同一目的地。

3-44 Domain Recipe
3-4
Domain:知識層

你的專業知識 SOP——法規依據、判定步驟、要呼叫哪些工具,全部寫在一份 Markdown 裡。

3-5 Shared Knowledge
3-5
為什麼 Domain 要獨立存在

Anthropic 假設每個 Skill 的知識是獨立的。但在 BIM 裡,防火法規同時被消防檢查、走廊分析、建築合規三個 Skill 引用。Domain 存在,是因為知識是共用的。你的貢獻就在這裡。

3-6 Profile Filter
3-6
Profile:角色篩選

設定一行 MCP_PROFILE,結構工程師只看 20 個工具,不再被 86 個不相關的工具淹沒。

Section 4 — 部署更新 + 錯誤排除

4-1 Sync
4-1
同步最新版

四個指令把你的 Fork 更新到最新的 Architecture V2。

4-2 Build
4-2
重新 Build

兩個 Build 指令——npm run build(MCP Server)+ dotnet build(Revit Add-in)。

4-3 Troubleshoot
4-3
常見錯誤排除

五個最常見的問題和解法——從 Addin 重複載入到 Port 連線失敗。

Section 5 — 貢獻者實作指引

5-1 Pyramid
5-1
三種貢獻層級

不會寫程式也能貢獻——Level 1 只需要 Markdown,而且是最有價值的貢獻。

5-2 Level 1 Demo
5-2
Level 1 示範:停車場檢討

把你腦中的法規知識寫成 Domain 文件 + Skill 觸發定義,AI 就能按你的標準來做。

5-3 Submit Pipeline
5-3
提交流程

Fork → Branch → 只 add 你的檔案 → Commit → PR。千萬不要 git add 全部。

Section 7 — Claude Code 速查表

7-1
Claude Code 速查表

Anthropic 官方工具的完整參考:鍵盤快捷鍵、Slash 指令、MCP、Hooks、Agents、SDK、CI/CD。
基礎篇 + 進階篇,隨時查閱。

基礎篇
快捷鍵 / 指令 / MCP
Hooks / 權限 / Agents
進階篇
CLI 參數 / Thinking
SDK / CI/CD / 企業功能
打開完整速查表 →
v2.1.81 | 資料來源:Anthropic 官方文件 + 社群研究

Section 8 — 未來方向

6-1 Status
6-1
目前進行中

Issue #16:13 個工具的 TypeScript 端已完成,C# 端由 Alex 進行跨版本修正中。
更新 2026-05-12:Issue #16 已 close,PR #17 合並。當前 9 OPEN PR 進度詳見 GitHub PR 清單

6-2 Future
6-2
未來方向

更多法規模組、自動偵測專案類型、Excel/PDF 送審報告匯出。

🔥 防火安全系統

Skill:fire-safety-check

涵蓋 Domain

呼叫的 MCP 工具

工具用途
query_elements_with_filter依防火時效參數篩選牆體
get_category_fields取得防火時效參數名稱
get_field_values列出所有時效等級
override_element_graphics依等級上色(紅/黃/綠)
check_exterior_wall_openings自動計算開口與地界線距離
clear_element_override清除舊上色

已修正

§45 第四、五款已補入:排氣口距境界線 ≥ 2m、窗臺高度 H-2/D-3/F-3 ≥ 1.1m / 十層以上 ≥ 1.2m,已更新至 exterior-wall-opening-check.md

Issue #20(已關閉)

🌫️ 排煙檢討系統

Skill:smoke-exhaust

涵蓋 Domain

呼叫的 MCP 工具

工具用途
check_smoke_exhaust_windows有效面積檢核 + 自動上色四方位
check_floor_effective_openings無開口樓層判定(消防§4)
create_section_view建立檢討剖面
create_detail_lines天花板線 / 有效帶線
create_filled_region有效帶色塊
create_text_note統計摘要標註
export_smoke_review_excel五工作表 Excel 報告(含 §101 補充檢討)

已修正

§101 排風量 + 中央監控已整合:排風機 ≥ 120 m³/min(靜態提醒)、中央管理室偵測(半自動),已整合至 C# partial class + domain + Excel Sheet 5。

Issue #19(已關閉)

📐 法規檢討系統

Skill:building-compliance + parking-check

涵蓋 Domain

呼叫的 MCP 工具

工具用途
get_room_daylight_info採光面積 / 居室面積比
get_rooms_by_level取得樓層房間清單
query_elements_with_filter篩選停車位族群
override_element_graphics標示不合規項目
get_field_values停車位類型分佈統計

已修正

§41 天窗/遮蔽出處已標註daylight-area-check.md 天窗 3 倍、遮蔽 70% 規則已加「出處待確認」標註,可能來自地方自治條例或設計手冊。

Issue #20(已關閉)

停車位條號已修正:§60-1 → §60(車位尺寸)、§61(車道寬度)、§62(樓層淨高),已更新 docs/0328的課程討論.md

Issue #21(已關閉)

🏛️ 立面設計系統

Skill:curtain-wall + facade-generation

涵蓋 Domain

呼叫的 MCP 工具

工具用途
get_curtain_wall_info取得 Grid 結構與面板分佈
get_curtain_panel_types列出可用面板類型
create_curtain_panel_type建立自訂面板(HEX 色彩)
apply_panel_pattern矩陣排列套用
create_facade_panel單片 DirectShape 面板
create_facade_from_analysis批次整面立面

📏 標註放樣系統

Skill:auto-dimension + detail-component-sync + dependent-view-crop

涵蓋 Domain

呼叫的 MCP 工具

工具用途
create_dimension建立尺寸標註
query_walls_by_location牆體位置查詢(標註定位)
get_all_grids網格線座標(裁剪邊界)
get_all_views視圖清單(母視圖選擇)

🔍 資料查核系統

Skill:element-query + element-coloring + wall-orientation-check

涵蓋 Domain

呼叫的 MCP 工具

工具用途
get_active_schemaPhase 1:探索品類
get_category_fieldsPhase 2:對齊參數名稱
get_field_valuesPhase 2.5:值分佈
query_elements_with_filterPhase 3:多條件篩選
override_element_graphics結果視覺化上色
clear_element_override清除舊覆寫
unjoin_wall_joins上色前取消接合
rejoin_wall_joins上色後恢復接合

📊 數量管理系統

Skill:sheet-management(明細表部分規劃中)

涵蓋 Domain

呼叫的 MCP 工具

工具用途
create_view_schedule建立明細表(指定品類 + 欄位)
export_smoke_review_excelExcel 多工作表匯出(排煙範例)
get_all_views視圖 / 圖紙清單管理

✅ 系統性檢討

Skill:qa-review(MEP 工具已上線)

涵蓋 Domain

呼叫的 MCP 工具

工具用途
get_selected_elements取得選取元素資訊
get_connector_infoMEP 接頭座標 / 連接狀態
add_pipe_cap管端安裝管帽 / 法蘭
get_element_info元素詳細參數檢查
get_project_info專案基本資訊驗證

🪜 樓梯法規檢討系統 NEW

Domain:stair-compliance-check

涵蓋法規

呼叫的 MCP 工具

工具用途
check_stair_headroom樓梯淨高自動檢測 + 上色標示
get_stair_actual_width扣除扶手後實際淨寬
create_stair_section_view建立樓梯剖面檢討視圖
create_stair_text_note_with_leader自動標註檢討結果(含引線)

MCP 是什麼

完整架構流程

你(使用者)
  ↓ 自然語言,例如「幫我查 3 樓所有房間」
AI Client(Claude Desktop / Gemini CLI / VS Code Copilot)
  ↓ MCP Protocol (stdio)
MCP Server(Node.js,跑在你的電腦上)
  ↓ WebSocket (port 8964)
Revit Add-in(C# 外掛)
  ↓ Revit API
Revit 執行操作 → 結果回傳 → AI 用自然語言告訴你

三個要裝的東西

  1. AI Client — 你跟 AI 講話的介面(Claude Desktop、Gemini CLI、VS Code 都可以)
  2. MCP Server — 翻譯官,把 AI 的請求轉成 Revit 聽得懂的格式
  3. Revit Add-in — 裝在 Revit 裡面的外掛,實際執行操作

重要:三個東西都跑在你自己的電腦上,模型不會上傳到雲端。

三個元件的安裝路徑

1. MCP Server(Node.js)

就是你 clone 下來的專案裡面的 MCP-Server 資料夾:

<你 clone 的位置>\REVIT_MCP_study\MCP-Server\
  ├── src\         ← TypeScript 原始碼
  ├── build\       ← 編譯後的 JS(AI Client 指向這裡)
  └── package.json

編譯指令:

cd MCP-Server
npm install
npm run build

2. Revit Add-in(C# DLL)

部署到 Revit 的 Addins 資料夾(AppData 是隱藏資料夾,在檔案總管輸入 %APPDATA%):

C:\Users\你的名字\AppData\Roaming\Autodesk\Revit\Addins\2024\
  ├── RevitMCP.addin          ← 告訴 Revit 有這個外掛
  └── RevitMCP\
      └── RevitMCP.dll        ← 外掛本體

⚠️ 只能有一個 .addin 檔案。如果看到 RevitMCP.2024.addin 要刪掉,否則 Revit 載入兩次。

3. AI Client 設定檔

AI Client設定檔位置備註
Claude Desktop%APPDATA%\Claude\claude_desktop_config.json改完重開 Claude
Gemini CLI%USERPROFILE%\.gemini\settings.json不用重開
VS Code Copilot.vscode/mcp.json放在專案根目錄
Claude Code(CLI).mcp.json放在專案根目錄,或用 claude mcp add 指令

設定內容(四個 Client 格式相同):

{
  "mcpServers": {
    "revit-mcp": {
      "command": "node",
      "args": ["<你的完整路徑>/REVIT_MCP_study/MCP-Server/build/index.js"]
    }
  }
}

⚠️ 請把 <你的完整路徑> 換成你實際 clone 的位置,例如:

路徑用正斜線 /,不要用反斜線 \。路徑錯誤是最常見的連線失敗原因。

三次迭代演進

項目第一次(1月)第二次(2月)現在(3月)
MCP 工具數~25~3755
Domain 文件31023
Skills0017
Revit 版本2024 only2024 only2022-2026
建構方式.2024.csproj同左統一 RevitMCP.csproj
AI ClientClaude Desktop+ Gemini CLI+ VS Code Copilot
社群 PR026(#11~#16)

本次四個關鍵變化

  1. Skills 出現 — 19 個 Skill,自動觸發對應 Domain
  2. 工具模組化 — 拆成 15 個模組 + Profile 角色篩選
  3. 跨版本支援 — Revit 2022 到 2026
  4. 社群貢獻爆發 — 帷幕牆、排煙窗、明細表等新功能

工具越多,AI 越笨

Token 數字

項目Token 成本
86 個工具定義~25,800 tokens
CLAUDE.md 全文~5,000 tokens
每輪固定成本~30,800 tokens
如果到 100 個工具~35,000 tokens

為什麼這是問題

規範寫了,但 AI 不讀

沒有 Domain 引導的情況

AI 自己猜排煙窗計算方式:

有 Domain 引導的情況

Domain 文件寫著:

根本原因

AI 不會主動去翻 domain/ 資料夾。需要觸發機制(Claude 的 .claude/skills/ 或 Gemini 的 .gemini/skills/)來引導它讀取對應的 Domain 文件。

多人貢獻的衝突問題

為什麼加一個功能要改兩個地方?

延續廚房的比喻——每加一道新菜,你必須同時做兩件事:

角色比喻實際檔案
第一件 在菜單上加一道菜 告訴 AI「有這個工具、要傳什麼參數」 revit-tools.ts(MCP Server 端)
第二件 教廚師怎麼做這道菜 寫 Revit 操作的實際程式碼 CommandExecutor.cs(Revit 端)

少了任一邊都不行:只加菜單 → AI 點了菜但廚房不會做;只教廚師 → 菜會做但菜單上沒有,AI 永遠不會點。

真實案例

Alex 同時開發帷幕牆和排煙窗,兩個功能都要改這兩個檔案。結果:

根本原因

所有功能都擠在同兩個檔案裡。不管加什麼新菜,都在同一本菜單、同一本手冊裡加。三個人同時加?三個人搶同一支筆寫同一頁。

(這個「菜單 + 廚師」的架構會在 3-1 三層架構裡完整展開——到時你會看到完整的資料流。)

MCP ≠ Skill:官方定義與比喻

MCP Tools 是什麼

"Tools are designed to be model-controlled, meaning that the language model can discover and invoke tools automatically."

(工具被設計為模型控制的,意即語言模型可以自動發現並調用工具。)

MCP Specification: Tools

Agent Skill 是什麼

"Skills load on-demand and eliminate the need to repeatedly provide the same guidance across multiple conversations."

(技能按需載入,消除了在多次對話中重複提供相同指引的需要。)

Anthropic: Agent Skills Overview

關鍵區別

維度MCP ToolAgent Skill
角色能力層(DO)— 廚房知識層(KNOW)— 食譜
控制者LLM 自動選擇關鍵字觸發 → 按需載入
粒度單一原子操作多步驟工作流編排
需要基礎設施是(Server process)否(純檔案)

Anthropic 官方:互補,不是取代

"We'll also explore how Skills can complement Model Context Protocol (MCP) servers by teaching agents more complex workflows that involve external tools and software."

(我們也將探討 Skill 如何補充 MCP 伺服器,透過教導 Agent 涉及外部工具的更複雜工作流程。)

Anthropic Engineering Blog

"Skills describe the workflow. MCP provides the runner... Saying Skills killed MCP is like saying GitHub Actions killed Bash."

(Skill 描述工作流程。MCP 提供執行器……說 Skill 殺死了 MCP,就像說 GitHub Actions 殺死了 Bash。)

Block/Goose Team

以本專案為例

漸進式揭露(Progressive Disclosure)

"Progressive disclosure ensures only relevant content occupies the context window at any given time."

(漸進式揭露確保在任何時刻,只有相關內容佔用上下文窗口。)

Anthropic: Agent Skills Overview

三層載入機制

層級何時載入Token 成本內容
L1: Metadata永遠(啟動時)~100 tokens/skillname + description
L2: Instructions觸發時< 5,000 tokensSKILL.md 完整內容
L3: Resources按需無上限scripts / references / domain

本質是什麼?

這等於一種不需要 embedding 的 context-level RAG

差別在於:傳統 RAG 用 vector similarity 檢索,Skill 用 LLM 自身的語意理解決定是否載入。

Before vs After:具體數據

本專案實測

項目Before(全塞 CLAUDE.md)After(Skill 拆出)
專案設定~3,000 tokens~3,000 tokens
觸發關鍵字表~800 tokens~500 tokens
17 個編排邏輯~6,000 tokens(常駐)~0 tokens(按需)
啟動 context 總計~9,800 tokens~3,500 tokens

社群案例

"An agent using MCP + Skills consumed 39,622 tokens across 5 turns, versus 328,083 tokens across 29 turns with MCP alone — an 87% reduction."

(使用 MCP + Skills 的 Agent 在 5 回合中消耗 39,622 tokens,而僅使用 MCP 則在 29 回合中消耗 328,083 tokens — 減少 87%。)

Richard Seroter, 2026

瘦的是什麼?

不是 Domain(它一直都是拆開的),而是「編排邏輯」。過去 17 個工作流的 tool 調用順序和約束條件全部塞在 CLAUDE.md 裡常駐。現在搬進各自的 SKILL.md,只在觸發時載入。

按需調度(On-Demand Orchestration)

為什麼「模組化」不夠精確?

Domain 檔案從第一天就是模組化的——每個 .md 獨立存在。但即使 Domain 已拆開,「用哪些 tool、什麼順序呼叫」這層編排邏輯過去只能寫在 CLAUDE.md 裡,因為沒有其他地方可以放它。

Skill 提供的就是「其他地方」

"Skills use progressive disclosure to manage context efficiently: (1) Discovery — agents load only the name and description... (2) Activation — the agent reads the full SKILL.md instructions into context. (3) Execution — the agent follows the instructions, optionally loading referenced files."

(技能使用漸進式揭露高效管理上下文:(1) 發現 — Agent 只載入名稱和描述… (2) 啟動 — Agent 將完整的 SKILL.md 指令讀入上下文。(3) 執行 — Agent 遵循指令,按需載入參考檔案。)

Agent Skills Specification

一句話總結

Domain 解決「知識放哪裡」,Skill 解決「編排邏輯放哪裡」。
Skill 不是減少工具,是讓驅動工具的規範在暫存的可被調度性變成有彈性。

三層模組架構:每層的角色

使用者: 「幫我檢查排煙窗」
         │
         ▼
┌─ Layer 1: Skill ── WHEN + HOW ────┐
│  角色:告訴 AI 何時啟動、怎麼做    │
│  description 裡有「排煙」關鍵字     │
│  → 指示 AI 讀取 Domain             │
│  成本:~100 tokens(metadata 常駐) │
│        < 5K tokens(觸發時載入)    │
└──────────────┬─────────────────────┘
               ▼
┌─ Layer 2: Domain ── WHAT TO KNOW ─┐
│  角色:提供領域知識 SOP             │
│  法規判定流程 + 步驟 + 工具名稱     │
│  成本:~1500 tokens(由 Skill 引用)│
└──────────────┬─────────────────────┘
               ▼
┌─ Layer 3: MCP Tools ── WHAT TO DO ┐
│  角色:執行操作(Revit API 調用)   │
│  預建工具,AI 帶參數呼叫           │
│  成本:~2000 tokens(該模組的工具) │
└────────────────────────────────────┘

三個比喻(同一件事)

比喻SkillDomainTools
廚房食譜目錄食譜步驟廚房設備
醫院掛號台(分流)看診 SOP醫療器材
RAGIndex(語意匹配)Retrieval(chunk)Execution

關鍵差異:不是三層「結構」,是三層「載入時機」

三層架構的價值不在於把東西分成三個資料夾(Domain 從第一天就是獨立的),而是每層有不同的載入時機——Skill metadata 常駐,Skill body 觸發時載入,Domain 被引用時載入。這就是 2-5 講的「漸進式揭露」在架構上的實現。

回到 2-3 的問題:為什麼兩個檔案?

還記得 2-3 講的「加一道菜要改兩個地方」嗎?現在你可以看到它們在架構裡的位置了:

AI Client(你)
  ↓ 自然語言
MCP Server ← revit-tools.ts 住在這裡(菜單)
  ↓ WebSocket
Revit Add-in ← CommandExecutor.cs 住在這裡(廚師)
  ↓ Transaction
Revit 模型

所以「菜單」和「廚師」其實是架構裡不同層的東西——一個在 MCP Server(Node.js),一個在 Revit Add-in(C#)。它們透過 WebSocket 通訊。加一個新工具,兩邊都要加對應的程式碼。

Skill 和 Domain 完全不涉及這兩個檔案——它們是純 Markdown,定義「怎麼用」而不是「怎麼做」。所以老師們貢獻 Domain 知識時,完全不用碰程式碼。

Skill:觸發層

Skill 檔案長什麼樣

---
name: fire-safety-check
description: "消防安全檢討:防火時效視覺化、走廊防火分析、
  外牆開口距離檢討。觸發條件:防火、耐燃、fire rating、
  走廊、corridor、Article 45、Article 110。
  工具:override_element_graphics、
  check_exterior_wall_openings。"
---

# 消防安全檢討

## Sub-Workflows          ← 結構標頭用英文(照官方規範)
### 1. 防火時效視覺化      ← 子標頭用中文(內容描述)
1. `get_category_fields` 查詢牆體 → 找到防火時效參數名稱
2. `get_field_values` → 列出所有時效等級
3. `query_elements_with_filter` → 依時效等級篩選牆體
4. `override_element_graphics` → 套用對應顏色

Skill 放在哪裡

你的專案/
├── .claude/
│   └── skills/                    ← 所有 Skill 在這裡
│       ├── fire-safety-check/
│       │   └── SKILL.md           ← 一個 Skill = 一個資料夾 + SKILL.md
│       ├── building-compliance/
│       │   └── SKILL.md
│       ├── element-query/
│       │   └── SKILL.md
│       └── ... 共 19 個

路徑:.claude/skills/

重要限制

語言規則

Skill 的撰寫遵循「結構英文、內容中文」原則:

重要限制

Claude Code 和 Gemini CLI 都有原生 Skills 機制。Claude Code 放在 .claude/skills/,Gemini CLI 放在 .gemini/skills/,格式都是 SKILL.md。我們用 CLAUDE.md + GEMINI.md 建立統一的指向規範,讓不同入口都能導向同一套 Domain。詳見下一頁 3-3。

CLAUDE.md vs GEMINI.md

不同 AI Client 的知識來源

Claude CodeGemini CLIVS Code Copilot
行為指引CLAUDE.mdGEMINI.md.github/copilot-instructions.md
觸發機制.claude/skills/SKILL.md.gemini/skills/SKILL.mdinstructions 引導
Domain 文件共用 domain/共用 domain/共用 domain/
MCP Tools共用共用共用

統一指向規範

CLAUDE.md 和 GEMINI.md 各自定義行為指引,但都指向同一套 Domain 文件和 MCP Tools。這是「不同入口、同一目的地」的設計。

機制Claude CodeGemini CLI
Skills 目錄.claude/skills/SKILL.md.gemini/skills/SKILL.md
行為指引CLAUDE.mdGEMINI.md
Skills 發現方式名稱+描述注入系統提示名稱+描述注入系統提示(官方文件

一句話:兩個平台都有原生 Skills 支援,我們用 CLAUDE.md + GEMINI.md 建立統一的指向規範,確保不同 AI Client 都能導向同一套 Domain 和 Tools。

Domain:知識層

Domain 檔案結構

  1. 觸發條件 — 什麼情況下讀這份文件
  2. 法規依據 — 引用的條文標準
  3. 檢討步驟 — step by step 流程
  4. 呼叫的工具 — 明確列出 MCP 工具名稱

現有 44 個 Domain 文件 + 1 reference(snapshot 2026-05-12)

位置:domain/

domain/
├── smoke-exhaust-review.md       ← 排煙窗(§101)
├── fire-rating-check.md          ← 防火時效
├── corridor-analysis-protocol.md ← 走廊寬度
├── daylight-area-check.md        ← 採光(§41)
├── floor-area-review.md          ← 容積率
├── parking-clearance-check.md    ← 停車場淨空
├── curtain-wall-pattern.md       ← 帷幕牆
├── qa-checklist.md               ← QA 驗證
├── mep-csa-clash-detection.md    ← MEP/CSA 碰撞偵測(5/12 新增至表)
├── pdf-export-comparison.md      ← PDF 輸出 6 路徑決策(5/12 新增)
├── mechanical-part-doc.md        ← 機械組件出圖 SOP(5/12 新增)
├── mep-extension-guide.md        ← pyRevit 大神研究指南(5/12 新增)
├── references/building-code-tw.md ← 台灣建築法規條號(5/12 新串入工作流)
└── ... 共 35 個 + 1 reference

最重要的是第 4 點——明確寫出工具名稱。AI 就不會自己亂寫 API 呼叫,而是使用預建工具。

斜線指令快捷
/domain — 把剛才成功的工作流程自動轉成 Domain SOP 文件
/lessons — 把踩到的坑記錄為高階規則,追加到 lessons.md

情境:你剛用 AI 完成了一個法規檢討流程,覺得步驟很好用?立刻打 /domain 就能把它固化成 SOP,下次再做就不用從頭來。遇到一個坑?打 /lessons 記下來,團隊所有人都不會再踩。

為什麼 Domain 要獨立於 Skill

Anthropic 的模型 vs 我們的模型

Anthropic 官方本專案
知識放哪Skill 內部的 references/獨立的 domain/
知識與 Skill 的關係1:1(綁定在 Skill 裡面)N:N(多個 Skill 共用同一份知識)
適合場景每個 Skill 的知識不重疊BIM 法規被多個工作流共用

真實案例:防火法規被三個 Skill 引用

domain/fire-rating-check.md(一份知識)
    ├── 被 /fire-safety-check 引用(防火時效視覺化)
    ├── 被 /building-compliance 引用(法規檢討)
    └── 被 /element-coloring 引用(依防火等級上色)

如果搬進 Skill 內部:
    fire-safety-check/references/fire-rating.md   ← 複製一
    building-compliance/references/fire-rating.md  ← 複製二
    element-coloring/references/fire-rating.md     ← 複製三
    → 法規更新時要改三個地方,忘改一個就不一致

Domain 不是 Skill 的低階版本

DomainSkill
角色知識(法規、SOP、步驟)編排(何時觸發、用什麼順序呼叫工具)
載入方式被 Skill 引用時才讀取metadata 永遠在 system prompt
誰來寫任何老師(只需要 Markdown)Maintainer(需要理解工具編排)
需要升級嗎大多數不需要

對老師的意義

你寫一份 Domain,所有引用它的 Skill 都自動具備你的專業知識。
你不需要懂 Skill 怎麼寫、工具怎麼用、程式碼怎麼改。

Profile 角色篩選

可用的 Profile

Profile載入模組工具數適合
full(預設)全部~55什麼都要
architect基礎+牆+房間+帷幕牆+視覺化+明細表~35建築師
mep基礎+MEP+排煙窗+明細表+視覺化~25機電工程師
structural基礎+牆/結構+視覺化~20結構工程師
fire-safety基礎+房間+排煙窗+視覺化~25消防審查

設定方式

在 AI Client 設定檔加一行 env

{
  "mcpServers": {
    "revit-mcp": {
      "command": "node",
      "args": ["<你的完整路徑>/REVIT_MCP_study/MCP-Server/build/index.js"],
      "env": {
        "MCP_PROFILE": "architect"
      }
    }
  }
}

不設定就是 full,跟以前一樣。Claude / Gemini / VS Code 都支援這個設定。

同步最新版

Step 1:設定 upstream(只做一次)

cd <你 clone 的位置>\REVIT_MCP_study
git remote -v
git remote add upstream https://github.com/shuotao/REVIT_MCP_study.git

Step 2:拉取並同步

git fetch upstream
git checkout main
git rebase upstream/main
git push origin main --force-with-lease

Step 3:確認成功

git log --oneline -5
# 應該看到 "Architecture V2" 相關 commit

如果 rebase 衝突

# 安全方式:放棄 rebase 重來
git rebase --abort
git reset --hard upstream/main
git push origin main --force-with-lease

⚠️ reset --hard 會丟棄你在 main 上的本地修改。如果有重要修改請先 git stash

重新 Build

MCP Server(Node.js)

cd MCP-Server
npm install
npm run build

需要 Node.js 18 以上。確認:node --version

Revit Add-in(C#)

cd MCP
dotnet build -c Release.R24 RevitMCP.csproj

版本對照:R22=2022, R23=2023, R24=2024, R25=2025, R26=2026

部署 DLL

build 完成後,setup.ps1/deploy-addon 會自動部署到正確路徑。
如需手動部署:

# 先關掉 Revit!版本號改成你的(例如 R24 對應 2024)
Copy-Item "bin\Release.R24\RevitMCP.dll" `
  "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP\" -Force

或用自動腳本:

..\scripts\install-addon.ps1
斜線指令快捷
/build-revit — 在 Claude Code 中直接編譯,支援 --version 2024--all
/deploy-addon — 自動部署 DLL 到正確的 Addins 路徑(Windows only)

情境:每次改完 C# 程式碼後,用這兩個指令一鍵完成 Build + 部署,不用記指令。

常見錯誤排除

問題 1:Revit 載入兩次 MCP 面板

原因:有兩個 .addin 檔案

# 查看
Get-ChildItem "$env:APPDATA\Autodesk\Revit\Addins\2024\*RevitMCP*"

# 刪除舊的
Remove-Item "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP.2024.addin"

問題 2:dotnet build MSB1011 錯誤

原因:資料夾有多個 .csproj

# ❌ dotnet build -c Release.R24
# ✅ dotnet build -c Release.R24 RevitMCP.csproj

問題 3:MCP Server 連不上

  1. Revit 有開嗎?MCP 面板有按「啟動」嗎?
  2. Port 一致嗎?預設 8964
  3. 如果你改了 port,AI Client 設定要加:
    "env": { "REVIT_MCP_PORT": "11111" }

問題 4:NotImplementedException

帷幕牆和排煙窗共 13 個工具的 C# 端還是 stub。等 Issue #16 完成後就能用。其他 42 個工具正常。
更新(2026-05-12):Issue #16 已合並(PR #17, 2026-03-18),帷幕牆 + 排煙窗 C# 實作完成。當前 86 個工具全部正常運作。若仍遇到 NotImplementedException,請開新 issue 報告。

問題 5:npm run build 失敗

node --version  # 需要 v18+
npm --version   # 需要 v8+

下載:https://nodejs.org(LTS 版本)

斜線指令快捷
/qaqc — 一鍵執行六階段品質驗證(檔案結構→交叉參照→建構設定→Build→部署→內容 Lint

情境:不確定自己的環境有沒有問題?跑一次 /qaqc 就能全面體檢,每個 FAIL 項目都會附上修復步驟。

三種貢獻層級

Level 1:Domain + Skill(不需要程式能力)

把你的專業工作流程寫成 SOP(Markdown 文件)。這是最有價值的貢獻——程式碼我們可以寫,但法規和實務經驗只有你有。

Level 2:工具定義(需要 TypeScript/JSON)

定義新工具的參數格式(schema),放在 MCP-Server/src/tools/

Level 3:C# 實作(需要 C# + Revit API)

MCP/Core/Commands/ 建立 partial class,實作 Revit API 操作。

Level 1 示範:停車場檢討

檔案 1:Domain 文件

位置:domain/parking-clearance-check.md

# 停車場淨空檢討

## 觸發條件
使用者提到:停車場、停車位、車道寬度、parking

## 法規依據
- 建築技術規則設計施工編 §60-1
- 標準小型車位:寬 2.5m × 深 5.5m
- 無障礙車位:寬 3.5m × 深 5.5m
- 車道寬度:單車道 ≥ 3.5m、雙車道 ≥ 5.5m

## 檢討步驟
1. 呼叫 get_rooms_by_level 找出停車場空間
2. 呼叫 query_elements_with_filter 篩選停車位族群
3. 讀取每個車位的寬度和深度參數
4. 比對法規尺寸標準
5. 不合規 → override_element_graphics 標示紅色
6. 合規 → 標示綠色
7. 匯總報告

檔案 2:Skill 觸發定義

位置:.claude/skills/parking-check/SKILL.md

---
name: parking-check
description: "停車場檢討:停車位淨空高度檢查與數量分類統計。
  觸發條件:停車場、停車位、車道寬度、parking、淨空。
  工具:get_rooms_by_level、query_elements_with_filter、
  override_element_graphics。"
---

# 停車場檢討

執行前請先讀取 domain/parking-clearance-check.md。

## Sub-Workflows               ← 英文結構標頭
### 1. 停車位淨空高度檢查       ← 中文子標頭
1. 確認目標樓層(通常 B1F、B2F)
2. `query_elements_with_filter` 篩選 Parking 類別元素
3. 計算每個車位上方淨空
4. `override_element_graphics` 標示不合格車位

就這兩個檔案。你不需要寫任何程式碼。

其實你可以更快
/domain — 你不一定要手寫 Domain 文件。如果你剛在 AI 對話中完成了一個工作流程,直接打 /domain,AI 會自動從對話中萃取步驟、工具清單,幫你生成標準格式的 SOP 文件。

情境:你跟 AI 說「幫我檢查停車場車位淨空」,AI 幫你做完了,結果很滿意。這時候打 /domain,它就會把剛才的流程自動變成 domain/parking-clearance-check.md

提交流程

Git 操作步驟

# 1. 確保最新版
cd <你 clone 的位置>\REVIT_MCP_study
git fetch upstream && git checkout main && git rebase upstream/main

# 2. 建立工作分支
git checkout -b add/parking-check

# 3. 建立你的檔案(用任何文字編輯器)
# domain/parking-clearance-check.md
# .claude/skills/parking-check/skill.md

# 4. 只 add 你的檔案(重要!不要用 git add .)
git add domain/parking-clearance-check.md
git add .claude/skills/parking-check/skill.md

# 5. commit
git commit -m "[Domain] 新增停車場淨空檢討工作流程"

# 6. push 到你的 fork
git push origin add/parking-check

# 7. 到 GitHub 點 "New Pull Request"

⚠️ 不要做的事

不會 Git?

沒關係!把寫好的檔案傳給 maintainer(Email / Line / GitHub Issue 貼內容)。重點是你的知識,不是 Git 操作。

提交前記得
/lessons — 開發過程中踩到坑?提交 PR 前先用 /lessons 記錄下來,讓後面的人不用再踩。

情境:你在寫 Domain 時發現「Revit 的某個參數名稱在中文版和英文版不一樣」——這就是一條 lesson,值得記下來。

目前進行中

📅 更新於 2026-05-12 — 距 4/25 已過 17 天,新增 4 個 domain SOP / 4 個 MCP 工具 / 1 reference 串入工作流

項目負責狀態
Issue #16:帷幕牆+排煙窗 C# 實作Alex✅ 已完成
Issue #18:lessons.md 觸發機制maintainer✅ 已完成(/dev-guide)
Domain → Skill 全面升級maintainer✅ 已完成(19 個 Skill)
CONTRIBUTING.md 更新maintainer規劃中
Issue #41:building-code-tw 串入工作流maintainer✅ 已完成(commit 897cac8, 3 Skills 加 references)
PR #42/#43:Loader/Core 熱重載架構ChimingLu🔁 build R24/R25/R26 全 PASS,等 owner 開 Revit 2024 人工驗證 Core 重載按鈕
PR #30:lesleyliuke 17+ Skills 套餐lesleyliuke💬 已建 preview/lesley-pr30-snapshot 鏡像,待作者選 6 group 拆分方式
PR #36:finish-legend MCP 工具916kevin-gif💬 退回,等作者補 ~900 行 C# 實作
Issue #45:analyze_floor_slopesyunchen-kt💬 fork 已有 commit `2b9750aa`,等作者開 PR
thank.md:致謝靜默貢獻者maintainer✅ 已完成(SEven777-a 結構穿梁 / taiwanbanana 重命名 / Poison-sam Roslyn)

追蹤連結:GitHub Issues

給開發者的指令
/dev-guide — 開發新工具前的完整準備指引:讀取踩坑經驗、確認工具能力邊界、跨版本相容規則、架構規則

情境:你想幫專案加一個新的法規檢討工具?先打 /dev-guide,它會帶你完成所有開發前的準備工作,確保你不會重蹈前人的覆轍。完成後用 /qaqc 做品質驗證。

未來方向

更多法規模組

這些全部都是 Level 1 貢獻。

自動偵測專案類型

Revit 連線時自動回報專案內容 → MCP Server 自動設定 Profile → 不用手動設 MCP_PROFILE

Excel / PDF 報告匯出

排煙窗已有 Excel,計劃擴展到防火時效、採光、QA 檢核 → 直接拿去送審。

第一次部署?跟著做就好

不需要懂程式、不需要懂 Git。
從零開始,把 Revit MCP 裝到你的電腦上。

1

用 Git Clone 把專案複製到你的電腦

Clone 是 Git 的「複製」功能。用 clone 而不是下載 ZIP,
以後專案更新時才能用 git pull 一鍵同步最新版。

基本版(推薦新手):
1. 點開 github.com/shuotao/REVIT_MCP_study
2. 點綠色的 <> Code 按鈕
3. 複製 HTTPS 網址
4. 開啟終端機(按 Win + X → 選「終端」或「PowerShell」)
5. 逐行貼上以下指令(每行貼完按 Enter):
cd Desktop git clone https://github.com/shuotao/REVIT_MCP_study.git

沒有 Git? 前往 git-scm.com 下載安裝,一路按 Next 即可。

進階版(想貢獻程式碼): 先在 GitHub 頁面右上角按 Fork,再 clone 你自己的 fork。
這樣未來可以提交 Pull Request 回饋給專案。

2

雙擊 setup.bat 開始自動安裝

打開桌面上的 REVIT_MCP_study 資料夾,找到 scripts 資料夾,裡面有一個 setup.bat
雙擊它。 就這樣。不需要管理員權限。

它會自動幫你:
• 檢查電腦有沒有 Node.js → 沒有就自動安裝
• 檢查電腦有沒有 .NET SDK → 沒有就自動安裝
• 編譯 MCP Server(AI 跟 Revit 之間的翻譯官)
• 讓你選 Revit 版本 → 自動編譯 + 部署
• 自動設定 AI 客戶端(Claude Desktop / Gemini CLI / VS Code)

畫面會出現一個黑色視窗,跑完大約 3-5 分鐘。
選 Revit 版本時:上下方向鍵 移動、空白鍵 勾選/取消、Enter 確認。

或者讓 AI 幫你跑
AI

用任何 AI 工具執行一行指令

如果你已經有 VS Code / Gemini CLI / Claude Code 等 AI 工具,
直接貼上這行指令,AI 會幫你完成所有步驟:

powershell -ExecutionPolicy Bypass -File scripts/setup.ps1 -NonInteractive -RevitVersions "2024"

點擊上方指令即可複製。把 2024 改成你的 Revit 版本(2022/2023/2024/2025/2026)。
多版本用逗號:"2024,2025"

3

打開 Revit,啟動 MCP 服務

安裝完成後,關閉 Revit(如果有開的話),重新打開。

1. 開啟 Revit → 載入任意專案
2. 上方功能列找到 MCP Tools 面板
3. 點擊 MCP 服務 (開/關) 按鈕
4. 看到「WebSocket 伺服器已啟動」就成功了

開始用自然語言控制 Revit

打開你的 AI 工具,直接用中文跟它說你要做什麼。

你:幫我查 3 樓所有房間的面積
AI:已查詢完成,3F 共 12 間房間,總面積 486.3 m²...

你:把面積小於 20 平方的房間標紅色
AI:已將 3 間房間標記為紅色...

支援的 AI 工具:Claude Desktop / Gemini CLI / VS Code Copilot / Google Antigravity
setup.bat 已經幫你設定好了,直接開啟就能用。

遇到問題?

重新跑一次 setup.bat — 已完成的步驟會自動跳過
或到 GitHub Issues 回報

NEXT MEETUP

五月小聚

2026.05.23 (Sat)
立即報名五月小聚

💰 線上 500 / 現場 200 / 首次 4,800(含歷次回放)
📝 分享筆記到社群即免費 | ⏰ 5/20 23:59 截止

五月小聚報名 QR Code
掃描 QR Code
搶先預約五月席次

持續擴充法規模組(綠建築、無障礙、結構)
Profile 自動偵測 + 送審報告匯出
你的專業,就是下一個按鈕。

抽選下次分享者

貼上本次參加者名單(每行一位),抽出 3 位