3D自动Fabrik 是做什么的?
编排器用于 mcp-cura(网格 → 切片 → G 代码)和 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 就绪、忙还是 已关闭?cura_policy_info和moonraker_policy_info——了解活动限制 (温度上限、审批模式、只读开关),然后再计划变更操作。moonraker_server_info——确认 Klipper 处于ready状态,而不是shutdown或正忙于另一个作业。- 与用户确定计划:哪台打印机、哪种耗材、哪个 喷嘴、哪种质量、哪个文件、多少份、在热床上的位置。 不要猜测。
如果某个服务器缺失或无法连接,请说明情况并引导用户查看
references/troubleshooting.md。不要编辑配置文件、安装软件包或运行任何 --force 操作来使检查通过。
管道
逐步进行。在每个阶段后简要报告,并在需要门控时暂停等待用户。
阶段 0——规划。 用一段话总结作业(文件、打印机、 耗材、喷嘴、配置文件、份数、放置位置)。获得批准。
阶段 1——导入。 使用在已配置的导入根目录(默认为 ~/Downloads、~/Documents、~/Desktop、
~/models)下的绝对路径调用 cura_artifact_import——或者对于不在根目录内的文件,使用 base64 data 参数。根目录限制的是文件系统路径;data 路径是服务器自身支持的、用于客户端提供字节的通道,并非绕过方式,也不需要更改策略。如果路径导入被拒绝,则通过 data 重新导入相同的字节(内容寻址会返回相同的工件 ID),而不是将作业降级为“我帮不上忙”。记录返回的
artifact_id——后续每一步都需要引用它。
阶段 2——检查与修复。 执行 cura_mesh_inspect(以毫米为单位的边界、
三角形数量、水密性、体积、退化三角形)。然后,根据需要:
- 方向/放置/缩放 →
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 代码审查。 对切片返回的 G 代码工件:
cura_gcode_inspect——预估时间、耗材、层数、Z 范围、最高 温度、可疑命令。cura_gcode_verify——危险命令、温度 vs 本地策略、 缺少加热器关闭/步进电机停用/元数据。- 如果缺少某些内容,
cura_gcode_prepare会创建一个新的工件,其中包含 一个安全的关闭序列(或完整的结束序列)。当你使用它时,请将 新的工件 ID 传递下去——原始内容保持不变。
然后向用户显示摘要——时间、耗材、最高温度、 验证结果——并在阶段 6 之前获得明确确认。这是 最后一个成本低廉的中止机会。
阶段 6——传输至打印机。 G 代码工件必须存在于打印机的
gcodes 根目录中。MCP 服务器不提供上传工具;支持
的路径是:
cura_artifact_export导出到一个打印机可读取的导出根目录(打印机监视的挂载 共享/USB),或者- 用户自行将文件复制到那里(Web 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 代码的操作。说明情况并停止。