更新数控仿真工作区快照

This commit is contained in:
wangdequan
2026-05-23 17:33:17 +08:00
parent ab556b4c15
commit 7c813162e1
4 changed files with 88 additions and 2 deletions

View File

@@ -0,0 +1,44 @@
# 技能:对齐 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.hh``interp_execute.cc` 等)。
3. **找出一个差异点**:从以下角度寻找**一个**最微小的差异:
- **数值解析**:如科学计数法、前导零、特殊字符处理。
- **参数范围与处理**:字参数(如 F、S、P 的值域)和表达式参数。
- **错误检查**:缺少某个 LinuxCNC 已实现但本项目尚未实现的 `CHK``CHKS` 校验逻辑。
- **模态状态**:某个 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 中定义的中断条件。**

40
AGENTS.md Normal file
View File

@@ -0,0 +1,40 @@
# 项目核心目标与执行纲领
## 1. 唯一使命
本项目(位于 `CNC/` 目录)的唯一目标是**创建一个与 LinuxCNC 完全对标的 G 代码解释器**。
所有代码修改、测试、文档工作,都必须围绕“对齐 LinuxCNC 官方源码的行为”这一最高准则展开。
## 2. 自动连续工作流(步步为营)
- **主动循环**:在完成一个语法功能的修复/新增并成功通过所有测试后,**严禁等待**。必须立即、主动地执行以下循环:
1. 扫描项目,找出下一个与 LinuxCNC 源码有差异或尚未实现的功能点。
2. 开始新一轮的“分析-计划-实现-验证”循环。
- **小步快跑**:每次循环只聚焦于**一个**极小的语法差异点或功能点。例如:
- 修复一个 G 代码的参数解析行为。
- 添加一个缺失的错误检查逻辑。
- 调整一个 M 代码的副作用。
- **中断条件**:只有在以下情况才停止自动循环,并向用户报告:
- 遇到一个无法自行解决的编译错误或逻辑矛盾(需附上详细分析)。
- 扫描后发现项目行为已与 LinuxCNC 源码在所有已知功能上**完全一致**。
- 用户明确发出“停止”指令。
## 3. 代码行为准则
- **源码唯一真源**:当对 G/M 代码的行为有任何疑问时,以 LinuxCNC 项目(尤其是 `src/emc/rs274ngc/` 目录)中的 C 源码实现为最终唯一标准,而非文档描述或直觉。
- **严格对标**:行为必须与 LinuxCNC 一致,包括但不限于:
- 错误号(`Interp::error` 的数字)
- 错误发生时的程序状态(是否继续解析、是否写入输出文件)
- 数值解析规则(如:不允许科学计数法,禁止前导零过多等)。
- 模态状态变化规则。
## 4. 测试铁律
- **修改必有测试**:任何代码修改,都必须伴随至少一个用于验证该行为的自动化测试用例。
- **本地测试优先**:实现前,应优先编写一个能展示差异的、会失败的测试用例,然后再修改代码使其通过。
- **测试命令**:修改完成后,必须运行以下命令来验证:
- `./test-native.sh` (本地快速测试套件)
- `./test-linuxcnc-source-link.sh` (针对直接链接 LinuxCNC 后端的完整测试)
## 5. 环境与项目结构
- **主工作目录**:所有命令和执行都基于 `CNC/` 根目录。
- **关键目录**
- `src/emc/rs274ngc/`LinuxCNC 解释器核心源码所在,是对标的根本依据。
- `smoke_tests/``tests/`:存放对标测试用例的目录。
- `.agents/skills/`:存放自动化技能文件。

View File

@@ -10,3 +10,5 @@
实现约束:若 WASM 编译后涉及文件读写,可考虑使用 OPFS 满足文件处理需求。
继续进一步完善程序步步为营。G代码语法与linuxcnc一致。程序主要来源于linuxcnc项目中的源程序。功能和G代码与linuxcnc对标。
目标:对标 LinuxCNC分阶段完善 Web 版数控系统仿真的 WASM 程序逐步补齐完整功能并严格测试。继续进一步完善程序步步为营。G代码语法与linuxcnc一致。程序主要来源于linuxcnc项目中的源程序。功能和G代码与linuxcnc对标。

Submodule wasm-simulator updated: 63ecbb6577...ed4e674d1e