Files
cnc/.agents/skills/align-linuxcnc/SKILL.md
2026-05-23 17:36:24 +08:00

3.2 KiB
Raw Blame History

技能:对齐 LinuxCNC G 代码 (align-linuxcnc)

触发条件

目标:对标 LinuxCNC分阶段完善 Web 版数控系统仿真的 WASM 程序,逐步补齐完整功能并严格测试。

近期重点:

  • 刀补
  • 坐标系
  • 固定循环
  • 五轴 / RTCP
  • M428、M429、M430
  • 子程序调用

实现约束:若 WASM 编译后涉及文件读写,可考虑使用 OPFS 满足文件处理需求。 继续进一步完善程序步步为营。G代码语法与linuxcnc一致。程序主要来源于linuxcnc项目中的源程序。功能和G代码与linuxcnc对标。

标准作业程序S.O.P.

严格遵循以下“分析-计划-实现-验证”循环,每一步都要遵循“最小变更原则”。

阶段 1差异分析与目标选择

  1. 扫描当前代码:使用 grep 或代码导航工具,在 src/ 目录下寻找已实现的 G/M 代码处理逻辑。
  2. 对比 LinuxCNC 源码:查阅 LinuxCNC 官方仓库中对应的源码文件(如 src/emc/rs274ngc/rs274ngc_return.hhinterp_execute.cc 等)。
  3. 找出一个差异点:从以下角度寻找一个最微小的差异:
    • 数值解析:如科学计数法、前导零、特殊字符处理。
    • 参数范围与处理:字参数(如 F、S、P 的值域)和表达式参数。
    • 错误检查:缺少某个 LinuxCNC 已实现但本项目尚未实现的 CHKCHKS 校验逻辑。
    • 模态状态:某个 G 代码组内部的状态切换不完全一致。
  4. 以书面形式明确目标:在回复的开始,用一句话清晰说明本次要修复的具体差异点。例如:“目标对齐科学计数法解析行为。LinuxCNC 不允许 1e3,本项目当前会将其解析为 1000,需修复为解析失败。

阶段 2编写测试先写测试

  1. 创建失败的测试:在 tests/ 或相应目录下,先编写一个能够清晰验证此行为的、预期会失败的测试用例。
  2. 运行测试以确认失败:执行 ./test-native.sh,确保因为新测试而导致整体测试失败,这验证了测试的有效性。

阶段 3实施代码修改小步快跑

  1. 定位源码:找到项目中对应该行为的实现位置。
  2. 参考 LinuxCNC 源码实现:严格模仿 LinuxCNC 源码中的数据结构、算法和函数调用方式来进行修改。
  3. 最小化修改:只改动实现该功能的最小必要代码行。严禁“顺便”重构无关代码。
  4. 保留接口一致性:确保修改后的函数签名、返回值和副作用与 LinuxCNC 源码中的对应实现完全一致。

阶段 4验证与循环

  1. 运行本地测试:执行 ./test-native.sh。如果失败,分析错误并修复,直到通过。
  2. 运行完整回归测试:执行 ./test-linuxcnc-source-link.sh。如果失败,修复到通过为止。
  3. 记录与完成:在回复中简要报告:“差异点 [目标] 已修复,测试全部通过。准备进行下一轮分析。”
  4. 无条件循环:报告完成后,必须立即、自动地将思维跳转回阶段 1,并开始寻找下一个差异点。严禁在报告完成后停止,除非已达到 AGENTS.md 中定义的中断条件。