3.2 KiB
3.2 KiB
技能:对齐 LinuxCNC G 代码 (align-linuxcnc)
触发条件
目标:对标 LinuxCNC,分阶段完善 Web 版数控系统仿真的 WASM 程序,逐步补齐完整功能并严格测试。
近期重点:
- 刀补
- 坐标系
- 固定循环
- 五轴 / RTCP
- M428、M429、M430
- 子程序调用
实现约束:若 WASM 编译后涉及文件读写,可考虑使用 OPFS 满足文件处理需求。 继续进一步完善程序,步步为营。G代码语法,与linuxcnc一致。程序主要来源于linuxcnc项目中的源程序。功能和G代码与linuxcnc对标。
标准作业程序(S.O.P.)
严格遵循以下“分析-计划-实现-验证”循环,每一步都要遵循“最小变更原则”。
阶段 1:差异分析与目标选择
- 扫描当前代码:使用
grep或代码导航工具,在src/目录下寻找已实现的 G/M 代码处理逻辑。 - 对比 LinuxCNC 源码:查阅 LinuxCNC 官方仓库中对应的源码文件(如
src/emc/rs274ngc/rs274ngc_return.hh和interp_execute.cc等)。 - 找出一个差异点:从以下角度寻找一个最微小的差异:
- 数值解析:如科学计数法、前导零、特殊字符处理。
- 参数范围与处理:字参数(如 F、S、P 的值域)和表达式参数。
- 错误检查:缺少某个 LinuxCNC 已实现但本项目尚未实现的
CHK或CHKS校验逻辑。 - 模态状态:某个 G 代码组内部的状态切换不完全一致。
- 以书面形式明确目标:在回复的开始,用一句话清晰说明本次要修复的具体差异点。例如:“目标:对齐科学计数法解析行为。LinuxCNC 不允许
1e3,本项目当前会将其解析为1000,需修复为解析失败。”
阶段 2:编写测试(先写测试)
- 创建失败的测试:在
tests/或相应目录下,先编写一个能够清晰验证此行为的、预期会失败的测试用例。 - 运行测试以确认失败:执行
./test-native.sh,确保因为新测试而导致整体测试失败,这验证了测试的有效性。
阶段 3:实施代码修改(小步快跑)
- 定位源码:找到项目中对应该行为的实现位置。
- 参考 LinuxCNC 源码实现:严格模仿 LinuxCNC 源码中的数据结构、算法和函数调用方式来进行修改。
- 最小化修改:只改动实现该功能的最小必要代码行。严禁“顺便”重构无关代码。
- 保留接口一致性:确保修改后的函数签名、返回值和副作用与 LinuxCNC 源码中的对应实现完全一致。
阶段 4:验证与循环
- 运行本地测试:执行
./test-native.sh。如果失败,分析错误并修复,直到通过。 - 运行完整回归测试:执行
./test-linuxcnc-source-link.sh。如果失败,修复到通过为止。 - 记录与完成:在回复中简要报告:“差异点
[目标]已修复,测试全部通过。准备进行下一轮分析。” - 无条件循环:报告完成后,必须立即、自动地将思维跳转回阶段 1,并开始寻找下一个差异点。严禁在报告完成后停止,除非已达到 AGENTS.md 中定义的中断条件。