3d-auto-fabrik 是做什麼的?
mcp-cura(網格 → 切片 → G-code)與 mcp-moonraker (印表機狀態 → 列印)的編排器。這兩個伺服器刻意互不知曉: mcp-cura 從不接觸印表機,而 mcp-moonraker 從不進行切片。 此技能即是銜接兩者的膠水。檔案僅能透過明確、需經核准的交接程序在兩者之間移動。
不可協商的規則——在接觸硬體前請先閱讀
這些規則的存在是因為 3D 印表機是一個加熱器、一個馬達和一個尖銳噴嘴的結合體。 這種摩擦正是其設計的重點。
- 切勿代表使用者確認已準備好的高風險動作。
moonraker_print_start、moonraker_print_cancel、moonraker_run_macro、cura_artifact_export、moonraker_file_delete和相關工具會先傳回一個核准提示。 你的工作是清楚且誠實地呈現該提示,然後等待。只有在使用者明確核准(在聊天中,或透過在頻外執行mcp-moonraker approve <id>/mcp-cura approve <id>)之後, 你才能呼叫對應的*_confirm_action工具。切勿發明、重複使用或改寫核准 ID 或確認短語。 - 切勿為了「幫忙」而跳過驗證。 在任何列印前必須執行
cura_gcode_verify; 在任何印表機操作前必須執行moonraker_verify_connection; 在任何傳輸後必須執行moonraker_files_list+moonraker_file_metadata。 moonraker_emergency_stop是唯一無需閘門控制的槓桿。 僅在「當下」發生物理上的錯誤狀況時使用(冒煙、異音、噴嘴刮擦零件、軸碰撞)。 對於非緊急情況的「停止加熱」,請使用moonraker_turn_off_heaters——此操作可逆且無需閘門控制。- 遵守本地安全政策。 溫度上限、唯讀模式、
allow_raw_gcode、allow_host_admin是由使用者特意設定的。 如果某個工具拒絕執行,請轉達該拒絕訊息及其原因。請勿重新表述呼叫、啟用該標誌,或尋找另一個執行相同功能的工具。 - 有疑問時,停下並提問。 暫停的印表機浪費一點電;錯誤的列印浪費數小時和線材;繞過閘門可能導致房屋燒毀。 使用者隨時都可聯繫——請提問。
預飛檢查——每次接觸硬體的會話
mcp-cura doctor和mcp-moonraker doctor(本機、唯讀診斷)。moonraker_verify_connection——已連線?延遲如何?Klipper 狀態為 ready、busy 或 shut down?cura_policy_info和moonraker_policy_info——在計畫任何變更前,了解當前啟用的限制(溫度上限、核准模式、唯讀開關)。moonraker_server_info——確認 Klipper 狀態是ready,而非shutdown或忙於其他工作。- 與使用者確定計畫:哪台印表機、哪種線材、哪個噴嘴、哪種品質、哪個檔案、多少份數、在熱床上的位置。 請勿猜測。
如果某個伺服器缺失或無法連線,請說明情況,並引導使用者查閱 references/troubleshooting.md。
請勿為了讓檢查通過而編輯設定檔、安裝套件或使用 --force 執行任何操作。
工作流程
逐步進行。每個階段結束後簡短回報,並在需要閘門控制時暫停等待使用者確認。
階段 0 —— 計畫。 用一段話總結該工作(檔案、印表機、線材、噴嘴、設定檔、份數、擺放位置)。獲得使用者首肯後再繼續。
階段 1 —— 匯入。 使用 cura_artifact_import,路徑為已設定匯入根目錄下的絕對路徑(預設為 ~/Downloads、~/Documents、~/Desktop、~/models)——若非位於根目錄下,則使用 base64 data 參數。
根目錄限制了「檔案系統路徑」;data 路徑是伺服器自身用於接收用戶端提供位元組資料的支援通道,並非繞過手段,也無需變更政策。
如果路徑匯入被拒絕,請改用 data 重新匯入相同的位元組資料(內容定址會傳回相同的工件 ID),而不是將任務降級為「我無法協助」。
記錄回傳的 artifact_id——後續每個步驟都會參考它。
階段 2 —— 檢查與修復。 執行 cura_mesh_inspect(邊界尺寸 (mm)、三角面數、水密性、體積、退化三角面)。然後,根據需要:
- 方向 / 擺放 / 縮放 →
cura_mesh_transform(縮放 → 旋轉 → 平移,然後center_on_bed) - 非封閉或粗糙表面 → 使用
voxel_size參數執行cura_mesh_remesh,或 使用cura_mesh_offset來膨脹/收縮封閉網格 - 多個零件一起列印 →
cura_mesh_merge(三角湯)或cura_mesh_boolean(真正的聯集/差集——基於體素) - 三角面過多 → 設定
target_triangles目標執行cura_mesh_decimate
每次修復後再次檢查,並引用結果的數值。中等風險的網格操作受政策閘門控制但無需核准;話雖如此,還是要向使用者展示變更了什麼。
階段 3 —— 解析並驗證設定檔。 使用 cura_profile_list 尋找設定定義和品質設定檔,然後執行 cura_profile_resolve
(定義 + 品質 + 線材 + 變體 + 用途)。閱讀警告訊息:Cura 無法評估的表達式、嚴重的溫度違規。
接著執行 cura_profile_verify——在切片之前,錯誤必須為零。
如果非零,請修正設定檔(或選擇另一個)並說明原因。切勿在驗證未通過的情況下進行切片。
階段 4 —— 切片。 cura_slice(model_artifact_ids=[…], definition, quality, material, variant, intent, overrides?, name, wait=true, wait_timeout_secs)。
遵守 max_concurrent_jobs(預設為 2)。使用 cura_slice_status 輪詢;
短時間工作可使用 cura_slice_wait;僅對佇列中/執行中的工作使用 cura_slice_cancel。
如果切片失敗,cura_slice_status 會攜帶引擎日誌尾部——請引用實際的錯誤訊息。
階段 5 —— G-code 審查。 針對切片回傳的 G-code 工件:
cura_gcode_inspect——預估時間、線材用量、層數、Z 軸範圍、最高溫度、可疑指令。cura_gcode_verify——危險指令、溫度 vs. 本地政策、缺少加熱器關閉 / 步進馬達停用 / 中繼資料。- 如果有缺少的項目,
cura_gcode_prepare會建立一個「新」工件,其中包含安全關閉序列(或完整的結束序列)。 當你使用它時,請將「新」工件的 ID 繼續往後傳遞——原始工件保持不變。
然後向「使用者展示摘要」——時間、線材、最高溫度、驗證結果——並在進入階段 6 之前獲得明確確認。 這是中止列印的最後一個低成本機會。
階段 6 —— 傳輸到印表機。 G-code 工件必須存在於印表機的 gcodes 根目錄中。
MCP 伺服器並未暴露上傳工具;支援的路徑如下:
cura_artifact_export將工件匯出到印表機可以讀取的匯出根目錄(印表機監控的掛載共享/USB),或者- 使用者自行將檔案複製到該處(透過網頁 UI、SCP、共享),或者
- 如果——且只有在——使用者明確要求時,才使用 Moonraker HTTP 上傳端點作為一次性的操作,並清楚地記錄在案。
在觸碰印表機之前,請確認檔案已送達:
moonraker_files_list(根目錄 gcodes)和 moonraker_file_metadata——
預估時間和線材用量應與 Cura 輸出相符。
階段 7 —— 列印。 在執行 moonraker_print_start 之前:
moonraker_printer_status顯示 Klipper 已就緒且空閒,而非關閉或忙碌;moonraker_temperatures顯示合理的環境讀數。- 熱床已清空、正確的列印板、正確的線材已載入、門已關閉——請詢問使用者;你無法看到這些。
- 使用者確認確切的檔案名稱。
moonraker_print_start會準備一個高風險動作;轉達核准提示並等待核准,然後使用該短語和acknowledge=true參數執行moonraker_confirm_action。
在列印期間:輪詢 moonraker_printer_status 和 moonraker_temperatures;
當某些情況看起來不對勁時,使用 moonraker_camera_snapshot 進行目視檢查;
當指令失敗時使用 moonraker_gcode_history。
如需暫停列印進行檢查,請使用 moonraker_print_pause → 檢查 → moonraker_print_resume。
如需中止,請使用 moonraker_print_cancel(高風險,需雙重確認)——僅在使用者要求時。
列印結束後,moonraker_print_history 會記錄結果。
列印後。 加熱器應已關閉(結束序列會執行此操作——透過 moonraker_temperatures 驗證)。
提醒使用者清空列印板。如果使用者想要清除工件,請列出它們(cura_artifact_list)並在獲得明確確認後才刪除——cura_artifact_delete 屬於高風險操作。
核准一覽
核准模式(in_band、out_of_band、both)是在各伺服器的 [approval] 區段中設定的。
在每種模式下,一個已準備的動作 = 一個 approval_id = 一個具有短 TTL(預設 120 秒)的單次使用確認短語。
從 prepare 呼叫中儲存的工具和參數才是實際執行的內容;提供給 *_confirm_action 的參數僅供裝飾用。
*_pending_approvals 會重新列出等待中的項目;moonraker_cancel_approval / mcp-cura deny <id> 會在動作執行前使其失效。
完整協定:references/safety-approvals.md
快速參考——更多資訊的閱讀位置
- references/pipeline.md——擴展的階段逐步說明,包含範例對話
- references/mcp-cura-tools.md——所有 32 個 mcp-cura 工具:風險、閘門、引數
- references/mcp-moonraker-tools.md——所有 49 個 mcp-moonraker 工具,同樣說明
- references/safety-approvals.md——核准模式、拒絕規則、緊急處理
- references/troubleshooting.md——doctor 輸出、常見失敗、修正方法
- scripts/check-setup.sh——驗證兩個伺服器是否已安裝且可達
安裝及平台相關的 MCP/技能註冊資訊位於儲存庫文件(docs/platforms.md)中,而非此技能文件內——當使用者詢問設定時,請載入那些文件。
何時不應使用此技能
手動起草或修復 CAD/STL 幾何圖形(應使用建模工具)、編輯 printer.cfg 或 Klipper 包含檔案(主機管理和設定寫入預設為關閉——且應保持關閉)、或任何涉及主機重啟、韌體重啟或使用者未明確啟用的原始 G-code 操作。遇到這些情況,請說明並停止。