PyLabRobot 0.2.1 物料处理设备自动化指南泵、加热振荡器、温控、离心机与存储的安全编程实践【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills本文是 scientific-agent-skills 仓库中 material-handling 参考文档 的深度展开版本。它聚焦 PyLabRobot 0.2.1 中会真正产生物理运动、压力、热量或储能的一类设备——泵、加热/振荡器、温度控制器、离心机与存储/孵育单元——给出经核验的稳定前端 API、过时命名辨析、完整安全核验清单并结合本仓库的inspect_backends.py源码与测试证明零连接检查的实现原理。读完本文你将能区分稳定前端方法与已被废弃的旧签名为每类设备写出不触发任何物理动作的离线代码并通过无连接检查工具验证当前环境中 0.2.1 API 表面是否完整。为什么物料处理需要单独对待在 PyLabRobot 的架构里前端frontend负责校验与记录标准操作后端backend负责把操作翻译给具体设备族资源树resource tree提供几何与状态。相比 liquid-handling.md 中讨论的移液操作物料处理设备的每次 API 调用都可能产生物理运动、压力、热量或储能——泵转动、加热器升温、振荡器摇晃、离心机高速旋转、存储单元启闭舱门。因此本 skill 的核心原则是文中的代码片段只标识 API绝不连接设备。这份参考文档于2026-07-23对照PyLabRobot 0.2.1PyPI 发布 2026-03-23见 SKILL.md 的 Verified snapshot逐项核验与/dev/、仓库main分支描述的未发布工作严格划清界限。支持级别标签Full / Mostly / Basic / WIP全部取自 stable 版 supported-machines 页面其定义如下见 hardware-backends.mdWIP开发中Basics/Basic核心功能已集成并有文档Mostly大部分能力可用但存在已知缺失命令Full上游认为至少 90% 的硬件/固件能力有完整文档支持。这些标签不代表特定固件、附件、电脑、传输方式或协议已验证通过。泵Pumps稳定导入与方法0.2.1 中经核验的稳定导入仅包含一个前端与一个稳定后端导出from pylabrobot.pumps import MasterflexBackend, PumpPump上经核验的稳定方法run_revolutions(num_revolutions) run_continuously(speed) run_for_duration(speed, duration) halt()过时 API 辨析halt()才是泵的运动命令文档明确列出以下过时方法不可作为 0.2.1 通用前端使用作为泵送命令的start、stop、pump_volume以及calibrate(duration..., speed..., volume...)。其中的关键区分是stop()属于机器生命周期machine lifecycle方法用于关闭整个设备实例halt()才是泵送运动pump-motion的停止命令。把stop()当作停泵来用是旧示例中最常见的错误之一。后端与支持设备MasterflexBackend(com_port)是传输相关的后端不能在设计/发现阶段实例化它——它需要真实的串口参数仅用于经授权的实机连接。stable 支持表中被标记为Full的设备族包括Cole-Parmer Masterflex L/S 系列列出的型号Agrowtek Pump Array。泵送安全清单在经单独授权的运行开始前必须人工核验以下各项文档逐条列出硬件识别精确的泵/泵头/管路型号、材质、内径、方向、挤压件occlusion、接头、阀门、夹具与目的地校准关系命令速度/转数/时间与实际输送体积之间的校准关系须针对当前流体、管路老化程度、背压与温度重新确认——时间/速度命令不等于实测体积管路与残液预充/排空路径、气泡、虹吸、死体积、残留体积、最大压力/流速、泄漏围堵与废液容量兼容性化学/生物兼容性、交叉污染控制、管路更换策略异常行为可触达的停止装置以及断连、超时或部分输送时的安全行为。如需闭环确认文档要求记录校准数据与其不确定度并使用经过验证的秤或流量传感器——永远不要用跑了多久代替送了多少体积。加热振荡器与振荡器Heater shakers and shakers稳定导入与命名陷阱from pylabrobot.heating_shaking import ( HamiltonHeaterShakerBackend, HeaterShaker, InhecoThermoshakeBackend, ) from pylabrobot.shaking import Shaker这里有一个极易踩中的命名陷阱稳定的类名是InhecoThermoshakeBackendThermoshake中是小写s而不是过时的InhecoThermoShakeBackend。导入旧名称会在 0.2.1 中直接失败。经核验的方法set_temperature(temperature, passiveFalse) get_temperature() shake(speed, durationNone, **backend_kwargs) stop_shaking(**backend_kwargs) lock_plate(**backend_kwargs) unlock_plate(**backend_kwargs)注意set_temperature(temperature, passiveFalse)中passive参数的含义与后端相关。旧名称set_shake_rate和set_temperature(None)不是0.2.1 的核验签名。文档特别警告不要用零值或None来代替关闭/冷却——除非对应后端文档明确支持否则应使用设备页面上规定的降温/失活方式。构造要求HeaterShaker的构造需要name、尺寸、backend 以及一个child_location板位位置。后端构造本身也是设备拓扑相关的HamiltonHeaterShakerBackend(index, interface)InhecoThermoshakeBackend(index, control_box)二者都要求经批准共享的接口/控制器shared interfaces/controllers不能凭空捏造参数。支持设备清单全部 FullInheco Thermoshake 与 Thermoshake ACOpentrons ThermoshakeHamilton Heater ShakerQInstruments BioShake加热/振荡安全确认板兼容性、质量与平衡、盖/密封、锁定机制、冷凝、溅漏围堵、轨道/速度限制、热限制、升温/平衡时间、传感器校准与安全解锁温度。振荡过程中绝不解锁或移动板。把设定点setpoint视为命令而非结果——请求的温度不证明样品已达到该温度。温度控制器Temperature controllers稳定前端导入from pylabrobot.temperature_controlling import TemperatureController经核验方法set_temperature(temperature, passiveFalse) get_temperature() deactivate()注意这里的关闭方法是deactivate()与加热振荡器体系不同。稳定支持包括Inheco CPACFullOpentrons Temperature ModuleMostly在完整 stable 表中。实操核验项主动制冷、冷凝控制、板/适配器接触、设定点范围、升温速率、传感器位置、过冲overshoot以及样品温度与模块温度的差异——模块显示的温度不代表孔内液体已达到相同温度。离心机Centrifuges稳定导入与方法from pylabrobot.centrifuge import Access2Backend, Centrifuge, VSpinBackend经核验前端方法open_door() close_door() lock_door() unlock_door() spin(g, duration, **backend_kwargs)核心 API 变化用 RCF 而不是 RPM稳定方法接受相对离心力spin(g, duration, ...)而不是过时的speed...RPM 参数。把 RPM 换算为 RCF 需要正确的转子半径rotor radius——文档警告永远不要猜测该半径。如果你手上只有 RPM 规格必须先拿到该型号转子的准确半径再换算否则实际离心力可能完全错误。后端与支持设备Agilent VSpinMostlyAgilent VSpin Access2 LoaderFull。后端构造为设备特定形式VSpinBackend(device_idNone)与Access2Backend(device_id, timeout60)。在真实脚本中不要使用占位 ID。MicroSpin未发布 API 的警示当前 changelog 把 HighRes Biosolutions MicroSpin 列在Unreleased部分。虽然开发分支main可能已经暴露MicroSpin但它不是0.2.1 稳定 API不得在钉住版本的示例中导入。这正是本 skill 反复强调stable 与 main 分离的典型例证。离心机安全要求人工核验转子/吊桶/适配器型号、板额定值、方向、平衡、最大 RCF、时长、加速/减速曲线、盖/门互锁、装载位置、间隙、维护与应急程序。转子旋转期间绝不打开/解锁门也不要仅仅为了测试连接而发出运动命令。超时或断连时假设转子可能仍在转动直到物理上确认安全为止。存储/孵育Storage/incubationstable 设备清单包含多个 Thermo Fisher/Heraeus Cytomat 型号Full以及 Inheco Incubator Shaker/SCILAMostly。关键约束其 API 是型号特定的不要照搬过时的通用示例——例如from pylabrobot.incubation import Incubator必须在钉住的 wheel 中确认该符号确实存在后再使用。存储移动需要显式的板身份、插槽映射、占用状态、门/舱口/互锁状态、朝向、环境设定点以及中断交接interrupted handoff的恢复流程。文档特别强调软件记录的占用状态不是物理探测——追踪器只是记账无法证明某块板真的在那个位置。多设备编排Multi-device orchestration不要因为前端是 async 就随意对硬件操作使用gather()并发。安全并发要求经批准的工作单元互锁workcell interlocks和一个拥有以下职责的调度器设备与板状态碰撞区与转移所有权门/托盘/吊桶/锁的前置条件超时、重试、幂等性与部分完成处理紧急停止与重启/对账行为。文档给出推荐的默认顺序这是任何实机协议上线前的标准递进流程离线验证清单manifest与转移计划生成不可执行的仿真计划在有条件时仅使用软件前端software-only frontends演练与操作员逐项审查每次交接handoff为精确的实机协议取得显式确认在场地规程下逐台设备、逐次移动完成调试commissioning。无连接检查No-connection inspection参考文档提供了一个不构造任何设备、不调用setup()的检查命令python3 skills/pylabrobot/scripts/inspect_backends.py \ --expected-version 0.2.1 --strict源码级原理检查到底做了什么本仓库的 inspect_backends.py 完整实现了这个零连接检查。其核心设计保证对应 test_clis.py 中test_backend_inspector_never_connects与test_all_help_paths_are_dependency_free两个测试的断言导入是惰性的只有完成参数解析后才导入固定的允许列表类零实例化检查过程创建 0 个后端实例报告中显式输出backend_instances_created: 0不调用setup()任何方法都不会触发设备初始化无传输访问报告显式声明serial_usb_network_access: False、connection_attempted: False签名检查通过inspect.signature()读取类签名通过hasattr()探测声明的方法是否存在。其中与本文主题直接相关的部分位于method_mapinspect_backends.py它把每类物料处理设备的稳定方法集合固定下来method_map: dict[str, tuple[type[Any], tuple[str, ...]]] { Pump: (Pump, (setup, stop, run_for_duration, run_continuously, halt)), HeaterShaker: ( HeaterShaker, (setup, stop, set_temperature, shake, stop_shaking), ), Shaker: (Shaker, (setup, stop, shake, stop_shaking)), TemperatureController: ( TemperatureController, (setup, stop, set_temperature, get_temperature, deactivate), ), Centrifuge: ( Centrifuge, (setup, stop, open_door, close_door, lock_door, spin), ), }对照参考文档可以发现两者完全一致Pump核验run_for_duration/run_continuously/haltCentrifuge核验open_door/close_door/lock_door/spin注意这里正是spin而非过时的speed参数TemperatureController核验deactivate()而非set_temperature(None)。也就是说运行这条命令就等于自动化执行了参考文档中稳定方法一节的核对工作。--strict模式下如果 PyLabRobot 未安装、版本不匹配或任一符号导入失败命令以退出码 4 失败并输出 JSON 报告。--expected-version参数强制使用X.Y.Z数值格式由VERSION_RE校验默认值0.2.1定义在 _common.py。一个重要边界hardware-backends.md 同样强调方法存在hasattr为 True不等于该型号实现了此操作——某些后端会故意抛出NotImplementedError。此检查只验证 API 表面不验证硬件能力。版本与证据边界本文所有 API 均以 PyLabRobot0.2.1wheel 与v0.2.1tag日期 2026-03-23为准。参考文档的 Sources 部分核验日期为2026-07-23依据是 stable 版 supported-machines 页面、stable 版泵/加热振荡/离心机指南与 API 文档、v0.2.1源码 tag 以及 changelog 的Unreleased部分。在仓库内可对照的本地证据包括SKILL.md版本快照、可复现安装命令uv pip install PyLabRobot0.2.1与非协商硬件边界六大人工确认项hardware-backends.md支持级别定义与 stable/development 分离原则inspect_backends.py无连接检查实现test_clis.py验证检查器从不建立连接、帮助路径零依赖analytical-equipment.md配套的酶标仪与天平类分析设备的并行安全清单。结语把能写和能跑分开物料处理设备的共同规律是每一个 API 调用都可能产生真实世界的后果。PyLabRobot 0.2.1 在前端统一了操作语义但后端是否支持、参数如何解析、物理行为如何全部依赖具体型号。最佳实践可以概括为三步离线验证用inspect_backends.py --expected-version 0.2.1 --strict确认当前环境的稳定 API 表面软件演练用LiquidHandlerChatterboxBackend等软件后端在追踪器上推进计划状态绝不把仿真计划因改一个环境变量/配置就变成实机后端人工门禁任何实机运行前按本文每节的安全清单逐项人工核验一次只调试一台设备、一次只移动一个步骤并保留校准记录与不确定性。记住三句安全格言时间/速度命令不等于实测体积设定点命令不等于样品已达该温度软件记账不等于物理探测。遵守这些边界PyLabRobot 0.2.1 的物料处理前端就能在受控的离线工作流中被安全地开发、审查与验证。【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考