# 交接清单与项目状态

> 生成：2026-10-16（第 8 轮，最后一轮自动推进）
> 执行者：DeepSeek Harness（规划 + 真机验证 + 缺陷修复）
> 施工方：Trae CN（按 `queue\*.txt` 卡片施工）
> 工作目录：`D:\NX_AI`　规划包：`C:\Users\Administrator\Documents\deepseek-harness\default-workspace\UG-AI外挂规划`

---

## 一、一句话状态

**前四条目标（版本识别/桥接层/自动编程/本地记忆自优化）已在真机上跑通并有两道门禁守着；
唯一没做的是"云端服务"本身——它需要一台服务器和你的部署决定。**

---

## 二、目标达成度

| 目标要素 | 状态 | 关键证据 |
|---|---|---|
| ① 范例调研 + 长期规划 | ✅ | `00_总规划与范例调研.md`（8 家国产外挂 + 草莓CM + CloudNC + 记忆/自进化框架 + 风险合规）、`01_资产盘点`、`NX多版本技术可行性报告` |
| ② NX 版本自动识别与自由切换 | ✅ 真机验证 | 识别 NX2212/NX2412（装在 `E:\Program Files\Siemens\`）；进程级环境注入；`-AssertNoGlobalChange` 多次全过（**全局零污染**） |
| ③ NX Open/Journal 桥接层 | ✅ 真机验证 | 6 条通路全部打通（13–18 秒/次）；真实 5.9MB 零件可打开；**跨版本几何读取矩阵**（见下） |
| ④ AI 自动编程能力 | ✅ L1+L2 原型可跑 | 真实零件 → 选刀 → 参数 → 工序单 → **自动配钻头**；人工修正被精确复用；门禁 13/13 全绿 |
| ⑤ 云端长期记忆与自我优化闭环 | 🟡 **本地全通，云端未建** | 本地"存→取→生效"已验证 + 防退化门禁；**P1-06 云端服务仍是空的**（需服务器） |

---

## 三、真机验证过的能力（都可复现）

### 3.1 跨版本几何读取矩阵（本轮最硬的技术结论）

同一零件、同一脚本，两个 NX 版本对比：

| 指标 | NX2212 | NX2412 | 稳定？ |
|---|---|---|---|
| `list(part.Bodies)` 实体数 | **92** | **2** | ❌ **不稳定** |
| `body.GetFaces()` 面数 | 130 | 130 | ✅ |
| 面类型分布 | `{2:68,1:43,3:19}` | 同 | ✅ |
| **32 种孔径的直方图** | **逐字节一致** | **逐字节一致** | ✅ |
| 孔面计数 | 187 | 187 | ✅ |

**铁律（已写入任务书公共约束）**：判断几何特征只能用**几何量**（面/边/长度），
**禁止**用对象个数（实体数、特征数）。

### 3.2 孔径怎么取（文档里的写法全都不存在）

```
不存在：face.Radius / face.GetRadius() / edge.Radius / edge.GetCurveData()
        part.Faces / ufs.Modl.AskFaceData / body.GetBoundingBox()
正确：  圆边 GetLength() ÷ π = 直径     （实测 34.55751918948773 ÷ π = 11.0000000000 → φ11）
```
真实零件提取到：φ5.00×14、φ8.50×21、φ10.00×12、φ11.00×16、φ18.00×16、φ20.69×24 …

### 3.3 完整工序建议（真实零件 后盖铝板-LQD80-镜像-175电机.prt）

```
roughing   D12   S=2387.3  F=644.6   ap=4.8   ae=4.8    MRR=14.85
finishing  D8    S=5172.5  F=775.9   ap=0.3   ae=0.64   MRR=0.15
drilling   E5    S=4774.6  F=286.5   ap=2.5   ← φ5.00 自动匹配
drilling   E10   S=2387.3  F=143.2   ap=5.0   ← φ10.00 自动匹配
drilling   E6    S=3978.9  F=238.7   ap=3.0   ← φ6.00 自动匹配
其余 12 种孔径 → 如实报告"刀具库无匹配，最接近差 X mm，需备刀"
```

### 3.4 L2 学习闭环（"越用越准"的可测量证据）

```
基线（--no-learn）  roughing D12: ap=4.8  rpm=2387.3  source=SpeedFeedTable(钢件-粗铣-平底刀)
记录一次人工修正     ap_mm=3.0  rpm=2200   原因"45钢退火开粗震刀"
重新生成            roughing D12: ap=3.0  rpm=2200.0  source=human-corrected(99a5c952)
                    MRR 自动重算 14.85 → 9.28
对照组              finishing D8 未被污染
```
`feedback.py` 自测 **9/9**（含"换刀径/换工序/换材料都不误命中"——只做精确 key 匹配，宁可不用也不张冠李戴）。

### 3.5 产品入口（`NxLauncher.py --dry-run`，退出码 0）

```
探测到 2 个 NX：
  [0] NX2212  E:\Program Files\Siemens\NX2212
  [1] NX2412  E:\Program Files\Siemens\NX2412
--- 部署 ---  [DEPLOY] DRY → E:\Program Files\Siemens\NX2412\UGII\vendor\NX Copilot\startup
[DONE] 部署完成。 (DryRun)
```

---

## 四、两道门禁（本项目最值钱的资产）

```powershell
# ① 语法门禁：全项目 28 个 .py 的语法 + 缺 import + 非 raw 路径写法 + 多余 BOM
python D:\NX_AI\tools\check_py_syntax.py
#  当前：0 错误 0 预警

# ② 防退化评测门禁（改规则/数据/学习层后必跑）
python D:\NX_AI\tests\run_eval.py
#  当前：通过 13/13  已知未修 0  意外退化 0  漂移 0   （退出码 0）
python D:\NX_AI\tests\run_eval.py --strict-drift   # 发版/CI：把基线漂移也当失败
```

门禁本身也被验证过：
- **漂移检测真会报**：故意改掉基线里一个 rpm → 输出"漂移 1 处"及 old→new；恢复后归零
- **"已知未修"与"意外退化"分开记账**，前者不淹没后者（修好必须删记账条目）
- **新增的缺 import 检查当场抓出 `tempfile` 未导入**（见下）

---

## 五、本项目修掉的缺陷（全部有证据、全部留了备份）

| # | 缺陷 | 影响 | 修法 |
|---|---|---|---|
| 1 | **丝锥 Fz 被缩放**（M3 得 0.375 ≠ 螺距 0.5） | 上机**乱扣/断丝锥** | 悬伸降额改成"丝锥只降转速、绝不动进给"（红线 RL-002） |
| 2 | **精加工 Ap = 4.0mm**（铝件 6.4mm） | 一把刀报废 | 新增数据驱动红线 **RL-009**：精加工 Ap 是**绝对深度 0.1~0.3mm** |
| 3 | **`NxLauncher.py` 5 连缺陷** | 产品入口根本跑不起来 | ①非 raw docstring 的 `\U` ②`-Json` 当开关传 ③读 stdout 而脚本写文件 ④`Version`/`Root` 字段名不匹配 ⑤缺 `import tempfile` |
| 4 | 队列解析器**静默丢卡** | 2 张卡（FIX-02/04）被悄悄丢掉 | 标题格式不合法时**报警并退出码 1** |
| 5 | Python 文件**带 BOM** | 天真解析器把每个 .py 判成语法错 | 清理 + 门禁检查 |
| 6 | 同一模块**两处副本** | `sys.path` 遮蔽导致导入过期模块崩溃 | 删除重复 + 部署脚本不再通配符同步 .py + 加模块来源自检 |
| 7 | `propose_plan.py` 非 raw docstring 的 `\N` | 文件语法错误 | 加 `r` 前缀（与缺陷 3① 同类，出现两次 → 催生了语法门禁） |

---

## 六、仍然待办（按优先级）

### 6.1 需要你决策的 3 件事

1. **FIX-03 刀具数据 / RL-007 语义**（已有完整审计）
   - 事实：**43 把刀里 34 把（79%）都会触发 RL-007**，且刀具库**没有任何悬伸字段**
   - 结论：这是**语义错误**——`flute_length_mm`（切削刃长度）被当成"悬伸"算长径比
   - 三选一：**A** 补真实悬伸数据（最正确，需工艺员/刀具样本）／**B** RL-007 降为"刃长比提示"（建议先做，立刻消除 79% 噪声且不说假话）／**C** 按刃长口径重定阈值
2. **部署方式确认**：启动器把文件放进 `<NX>\UGII\vendor\NX Copilot\startup\`。这与"不设 UGII_VENDOR_DIR 全局变量"不冲突，但**是否用官方推荐方式加载**需要确认
3. **云端服务（P1-06）**：需要一台境内服务器 + 你的部署决定（TLS、按设备凭证、任务白名单、审计）。这是目标⑤唯一缺口

### 6.2 卡片进度

```
队列 29 张  |  已完成 16  |  待投喂 13
待投喂：FIX-01 FIX-02 FIX-03 FIX-04 P1-06 P1-07 P1-08 P2-01 P2-02 P2-03 P2-04 P2-05 P2-06
```
其中 **FIX-01 / FIX-02 / FIX-04 已由验收方修复**，卡已改成"复核 + 补单测 + 文档"。

### 6.3 投喂链路当前是停的

```
19:31:47 FEEDER start: 27 card(s)   ← 之后一行都没有
```
原因已修（Trae 更新后窗口标题变了，旧进程持有旧脚本），但**必须重启投喂器**：
关掉卡住的黑窗口 → 关掉 Trae 的"更新日志"窗口 → 点一下 Trae 聊天输入框 → 双击 `D:\NX_AI\tools\feeder_go.bat`。

---

## 七、两条路怎么选

| | A. 继续用 Trae CN 施工 | B. 让 DeepSeek Harness 继续 |
|---|---|---|
| 优势 | 消耗你 Trae 的余额；你在 IDE 里能看见过程 | **能直接在真机跑 NX 验证**；本轮 7 个缺陷都是这样查出来的 |
| 劣势 | 无法真机验证，只能按卡施工；投喂链路偶发卡死 | 不经 Trae，余额用不掉 |
| 建议 | **投喂器修好后跑 FIX-01/02/04 的收尾卡 + P2 系列**（这些是"写代码+补测试"，适合 Trae） | **需要真机验证或定位疑难缺陷时交给我**（P1-06 云端服务、FIX-03 落地、性能/兼容性排查） |

两种方式可以并行：Trae 写代码，我验收 + 出修复卡。

---

## 八、关键文件索引

| 内容 | 路径 |
|---|---|
| 总规划与范例调研 | `UG-AI外挂规划\00_总规划与范例调研.md` |
| 施工任务书（含公共约束/执行红线/跨版本铁律） | `UG-AI外挂规划\02_TraeCN施工任务书.md` |
| 修复卡（FIX-01~04） | `04_修复卡_自动编程管线实测.md`、`06_修复卡_评测门禁发现.md` |
| 本交接清单 | `08_交接清单与项目状态.md` |
| NX Open 跨版本兼容矩阵 | `D:\NX_AI\docs\NXOpen跨版本兼容矩阵.md` |
| FIX-02 / FIX-04 修复报告 | `D:\NX_AI\docs\FIX-02_修复报告.md`、`FIX-04_修复报告.md` |
| 门禁 | `D:\NX_AI\tests\run_eval.py`、`tools\check_py_syntax.py` |
| 门禁基线与记账 | `tests\golden\baseline.json`、`known_issues.json` |
| 学习层 | `D:\NX_AI\core\feedback.py` |
| 管线 | `D:\NX_AI\core\propose_plan.py`、`tools\model_facts.py`、`tools\hole_diameter.py` |
| 规则与数据 | `data\rules\ai_programming_rules_v2.json`（9 条红线）、`data\std\{tools,parameters,materials}.json` |
| 修复前备份 | `D:\NX_AI\backup\*.before_FIX*` |
| 产出物 | `D:\NX_AI\状态\artifacts\plan_*\`（工序单+process_plan.json） |

---

## 九、复现验证（三条命令）

```powershell
# 1) 版本识别 + 全局零污染
D:\NX_AI\core\nx_launch.ps1 -Version 2412 -Mode journal -Journal D:\NX_AI\tools\model_facts.py -AssertNoGlobalChange

# 2) 跨版本一致性（两版都跑，比较 body/faces/孔径）
D:\NX_AI\core\nx_launch.ps1 -Version 2212 -Mode journal -Journal D:\NX_AI\tools\hole_diameter.py

# 3) 工序建议 + 两道门禁
python D:\NX_AI\core\propose_plan.py --material P --material-name "45钢退火" --operation roughing,finishing
python D:\NX_AI\tools\check_py_syntax.py
python D:\NX_AI\tests\run_eval.py
```
