# NXAI 项目记忆总览（云端 agent 专用）

> 本文件是给云服务器上的 agent / QQ 机器人看的**索引与事实基线**。
> 拿到本文件 = 拿到整个项目的坐标。所有路径都是服务器可读的绝对路径或在 `/C:/nxai-cloud/` 下。

最后更新：2026-10-20 19:00（本机）

---

## 一、这个东西是什么

UG/NX 全版本 AI 外挂（NX Copilot）：
- **独立外挂软件**，不是 NX 插件（用户明确要求，NX 内不放业务逻辑）
- 自动识别本机全部 NX 版本、可切换、断网可用
- 两个 exe：`NXAI.exe`（安装/升级/授权）+ `NXAI工作台.exe`（日常 GUI）
- 已放弃：机床仿真（无许可）、NX 内部菜单插件（方向不符）

## 二、云服务器上的文件在哪

根目录：`/C:/nxai-cloud/`

```
memory/    经验、项目记忆（本文件就在这）
inbox/     云端 -> 本地 的任务（QQ 指令落这里）
outbox/    本地 -> 云端 的成果，按类别分子目录 + index.json
archive/   历史备份
updates/   安装包与 latest.json（/v1/update/latest 已在用）
```

`outbox/index.json` 是**唯一权威清单**，结构：
```json
{"files":[{"path":"/C:/nxai-cloud/outbox/<cat>/<name>","cat":"templates","size":205861,
           "sha256":"...","mtime":...,"ts":"..."}], "updated_at":"...", "keep":{...}}
```

当前 outbox 类别与内容（2026-10-20 19:00，共 60 条，5.5 MB）：
```
nc/          A01_粗 / A02_半精 / A03_精 .nc（三阶段程序示例）
prt/         准备_7-17_*.prt（带刀具/工序/刀路的副本）
templates/   NXAI_工序模板.prt（11 道工序）、NXAI_刀具库.prt（20 把刀）
posts/       Fanuc_general_3A/4A/5A 三套（.cdl/.def/.pui/.tcl）+ MANIFEST.json
data/        tools.json(48刀) materials.json material_families.json
             cutting_params.json template_defs.json tapping_speed.json parameters.json
docs/        使用手册、经验总结、状态台账、模板参数表等
reports/     eval_report、py_syntax_report、各矩阵探测结果、P*_done.json 卡记录
```

## 三、关键数据文件（本机 D:\NX_AI\data\std\）

| 文件 | 内容 |
|---|---|
| `tools.json` | 刀具库，48 条；模板用的 20 把带 T1–T20 |
| `materials.json` | 材料 + 别名（6061-T6/06Cr19Ni10/1.2311/NAK80/DC11 都能解析） |
| `material_families.json` | 7 族：AL/ST/STH/SS/HRC/CI/TI，含 vc/fz/ap_D/ae_D 区间与 source |
| `cutting_params.json` | 11 模板 × 6 材料类 × {rpm,feed,ap,ae,vc,fz} |
| `template_defs.json` | 11 个模板定义（参数、策略、区域类型） |
| `tapping_speed.json` | 攻牙参数；N 组 vc=12.5 m/min（用户车间值，禁止改） |

## 四、模板与刀具库（成果核心）

本机：`D:\NX_AI\nx_templates\`
```
NXAI_工序模板.prt   205,861 B   11 道预置工序
NXAI_刀具库.prt      97,004 B   20 把刀，T1–T20 唯一，holder BT40-ER32 全引用
```

11 个模板：TPL_FACE / TPL_SIDE / TPL_POCKET_R / TPL_POCKET_S / TPL_POCKET_F /
TPL_ZLEVEL / TPL_DRILL / TPL_TAP / TPL_HOLEMILL / TPL_THREAD / TPL_SURFACE

**已验证事实（可从 .prt 读回）**：
- 8 个铣类模板进刀全部 = **helical（螺旋）**，FACE/SIDE/ZLEVEL 各 4 处（init_open/init_closed/openarea/closedarea）Type=3
- 步距间/层间转移 = direct；抬刀策略 lift_each_level=False、retract_to_clearance_each=False
- 避空 2mm；最小刀长 60mm；holder 引用 BT40-ER32；干涉检查 True
- 余量：粗 0.2 / 半精 0.05 / 精 0（或手动）

## 五、后处理（三套法那科双转台）

本机：`D:\NX_AI\nx_post_lib\fanuc_dual_table\{Fanuc_general_3A,4A,5A}\`

**四轴 A 轴正确设置（来自可用的 4A 样本，务必遵守）**：
```
mom_kin_4th_axis_leader  "A"
mom_kin_4th_axis_vector  1, 0, 0
mom_kin_4th_axis_plane   "YZ"        ← 绕 X 的 A 轴必须 YZ；写成 ZX 则 NX 永不出 A（踩过）
mom_kin_4th_axis_type    "Table"
min/max limit            -360 / 360
mom_kin_machine_type     "5_axis_dual_table"
```
已知失败路径：Post Builder 2012 产出的 def/tcl 在 NX2412 上可能"不能打开模板文件"；
启动器注入 `UGII_CAM_POST_DIR` 会导致 NX 读坏表、后处理对话框弹错（已移除注入）；
注册走 `tools\install_post.bat`（管理员，先备份 template_post.dat）。

## 六、工艺规则（用户定的，必须遵守）

1. **螺旋进刀**：所有铣类必须 Helical，无例外；工序类型不支持就换类型，不许退直线。
2. **层间斜进刀**：层间 = ramp（角 1–3°，重叠 0.5–1.0mm，不抬刀），防止每层扎刀与空程。
3. **安全高度** = 毛坯最高面（或该工序区域最高面）Z + 8.0mm，不是绝对 Z=8。
4. **刀号 T1–T20**：顺序分配、唯一、T=H=D；严禁 T0/H00。
5. **三阶段**：
   - 模式 A（无公差要求）：粗（粗刀）+ 同工序内「增加精加工刀路」（精刀）→ 2 个程序
   - 模式 B（有公差要求，勾选半精）：粗（粗刀）→ 半精（精刀，留 0.05）→ **必须 M01 + 测量** →
     精（同一把精刀）→ 3 个程序；半精与精同刀但分开做
6. **单段 ≤60 分钟**：超时按 Z 层分段，段间重叠 1–2mm，段末 M01 + 注释。
7. **刀具阶梯**：大余量先 T20/D20，按零件尺寸逐级 ×0.65 下降到 D4 清角。
8. **加工区域**：单个平面一工序一面；腔体必须内壁+底面**整体选中**（保余量一致、无接刀痕）。

## 七、材料与参数（参考区间，单位 Vc m/min）

```
AL  铝       200–500   （6061 粗 D12: S=8620.9 F=2047.5）
ST  碳钢软态  100–180
STH 预硬钢    70–120
SS  不锈钢    40–120    （304 粗 D12: S=1667.3 F=221.5，约为铝的 1/5 转、1/9 进给）
HRC 淬硬钢    30–80
CI  铸铁      100–200
TI  钛/高温   30–60
```
攻牙：N 组 vc=12.5 → M8(螺距1.25) = 497.4 rpm / F 621.7（用户车间值，优先于厂商表）

## 八、本机与云端分工

| 能力 | 云服务器 | 本机 D:\NX_AI |
|---|---|---|
| 文件/数据/记忆 | ✅ | ✅ |
| 跑 NX 出刀路、后处理、探测几何 | ❌ 无 NX 许可 | ✅ 只能在这 |
| 解析 NC、算时间、生成报告 | ✅ | ✅ |
| QQ 消息收发 | ✅（Hermes gateway） | ❌ |

云端常驻：`C:\HermesAgent`（Nous Research 开源 agent 框架，MIT，含 gateway/cron/skills/plugins）、
`C:\nxai-cloud`（我们这套，仅 /v1/update 已实现）、nginx、MySQL(3306)、8000/8001/8765/8790 服务。
**服务器只有 2GB 内存**：新增服务 RSS ≤40MB、串行、轮询 ≥30s、服务器侧禁用 pandas/numpy/matplotlib。

## 九、卡进度（P10 系列）

已完成：P10-01（过期检测）、P10-02（9 种工序，2/9 出刀路）、P10-03（一键准备）、
P10-04（工序单编辑器）、P10-05（三阶段拆程序）、P10-06（材料分族）、
P10-07B（11 模板）、P10-07C（刀具/材料/参数三库）、P10-07F（刀具库 20 把）、P10-07G（螺旋进刀全通过）

在做/待做：P10-07G2（铣孔螺旋 + done.json）、P10-08（刀路自检+预览+层间斜进刀+安全高度）、
P10-10（后处理接入）、P10-11（本地↔Hermes↔QQ）、P10-12（Hermes nx_bridge）、
P10-13（2GB 内存预算）、P10-14（迁移准备）

已暂停：P10-07（全自动选面，改模板式）、P10-07D（刀具/工序编辑）、P10-07E（模板扩到 19 个）

## 十、踩过的坑（按代价排序）

1. **facts 过期** → 换零件出旧单，已加"重新探测 + 过期检测"
2. **零件路径写错** → 点按钮没反应（File.Exists 静默退出），已加日志红字
3. **建刀具不保存** → cam_build_local 默认不保存，工作台没传 --save-as，全丢
4. **刀号 T0** → NC 里 T0/H00，上机报警
5. **整实体选几何** → Append([body]) 导致刀路空；应按区域选面
6. **A 轴 plane 写错** → 写 ZX 永不出 A，正确是 YZ
7. **PowerShell here-string 嵌套 @'** → 提前结束，语法崩
8. **`.py` 存成 GBK** → 中文报 SyntaxError（必须 UTF-8）
9. **杀进程匹配到自己** → `CommandLine -like '*trae_feeder*'` 自杀，须排除 $PID
10. **Trae 焦点** → 投喂前必须确认前台是 Trae，否则会粘到别的程序（投喂器有保护）

## 十一、怎么取文件（给 QQ 机器人 / 云端 agent）

服务器上的 agent 直接读文件即可：
```
1) 读 /C:/nxai-cloud/outbox/index.json  → 得到全部文件清单与类别
2) 按需读 /C:/nxai-cloud/outbox/<cat>/<name>
3) 或读本文件 /C:/nxai-cloud/memory/00_项目记忆总览.md 了解背景
```
若是"远程 HTTP 取"（机器人发链接），需先把文件放到 nginx 可服务目录
（`C:\wwwroot\`）或实现 `/v1/files/get`——**当前 HTTP 文件接口尚未实现（404）**，
P10-11/P10-12 负责补齐。现阶段可靠通道是 SFTP + 服务器本地文件读取。

## 十二、红线

- 不改 `E:\Program Files\Siemens\NX*` 官方文件
- 不改 `C:\HermesAgent` 核心代码（只按 plugins/tools/skills 扩展点）
- 不把密码/token 写进 D:\NX_AI 明文
- 云端永不尝试跑 NX
- 不伪造数据：刀路长度、余量、engage 类型必须从 .prt 读回
